CSR Geomatics Server Setup » History » Version 1
Giulio Di Anastasio, 03/05/2021 11:17
1 | 1 | Giulio Di Anastasio | h1. CSR Server Setup |
---|---|---|---|
2 | 1 | Giulio Di Anastasio | |
3 | 1 | Giulio Di Anastasio | |
4 | 1 | Giulio Di Anastasio | A dedicated server has been setup in CSR, for hosting the software and database. |
5 | 1 | Giulio Di Anastasio | |
6 | 1 | Giulio Di Anastasio | Here below, technical information about the setup. |
7 | 1 | Giulio Di Anastasio | |
8 | 1 | Giulio Di Anastasio | |
9 | 1 | Giulio Di Anastasio | dream.csr.av (192.168.0.12) |
10 | 1 | Giulio Di Anastasio | |
11 | 1 | Giulio Di Anastasio | - Debian 9 |
12 | 1 | Giulio Di Anastasio | - Xen hypervisor |
13 | 1 | Giulio Di Anastasio | - libvirt for the orchestration of VMs |
14 | 1 | Giulio Di Anastasio | - management with ansible |
15 | 1 | Giulio Di Anastasio | |
16 | 1 | Giulio Di Anastasio | |
17 | 1 | Giulio Di Anastasio | h2. Dom0 |
18 | 1 | Giulio Di Anastasio | |
19 | 1 | Giulio Di Anastasio | h3. Installation |
20 | 1 | Giulio Di Anastasio | |
21 | 1 | Giulio Di Anastasio | Found minor issues with the installation (eg. issues with HDDs, Dell EFI boot). |
22 | 1 | Giulio Di Anastasio | This document starts from a working Debian Xen server. |
23 | 1 | Giulio Di Anastasio | |
24 | 1 | Giulio Di Anastasio | -Installed on a mirror of 2*2TB drives with btrfs.- |
25 | 1 | Giulio Di Anastasio | |
26 | 1 | Giulio Di Anastasio | Update (see #7156): re-installed the OS on /dev/sdc2, ext4, without RAID/LVM. |
27 | 1 | Giulio Di Anastasio | |
28 | 1 | Giulio Di Anastasio | h3. Storage for domUs |
29 | 1 | Giulio Di Anastasio | |
30 | 1 | Giulio Di Anastasio | A LVM dream.csr has been created for the domUs. |
31 | 1 | Giulio Di Anastasio | |
32 | 1 | Giulio Di Anastasio | |
33 | 1 | Giulio Di Anastasio | h3. Networking |
34 | 1 | Giulio Di Anastasio | |
35 | 1 | Giulio Di Anastasio | With systemd.networkd: bridge "br0" to the physical ethernet. |
36 | 1 | Giulio Di Anastasio | |
37 | 1 | Giulio Di Anastasio | h3. Create a VM |
38 | 1 | Giulio Di Anastasio | |
39 | 1 | Giulio Di Anastasio | Adjust the parameters from: |
40 | 1 | Giulio Di Anastasio | |
41 | 1 | Giulio Di Anastasio | <pre> |
42 | 1 | Giulio Di Anastasio | export vm_name=infra.csr.av |
43 | 1 | Giulio Di Anastasio | export vm_ip_addr=172.16.0.3 |
44 | 1 | Giulio Di Anastasio | export vm_password=foobar |
45 | 1 | Giulio Di Anastasio | </pre> |
46 | 1 | Giulio Di Anastasio | |
47 | 1 | Giulio Di Anastasio | Create the domU: |
48 | 1 | Giulio Di Anastasio | |
49 | 1 | Giulio Di Anastasio | <pre> |
50 | 1 | Giulio Di Anastasio | root@dream:~# xen-create-image --broadcast=172.16.0.255 --dist=stretch --fs=ext4 --gateway=172.16.0.1 --hostname ${vm_name} --ip=${vm_ip_addr} --lvm=dream.csr --maxmem=512M --memory=256M --mirror=http://ftp.de.debian.org/debian/ --netmask=255.255.255.0 --password=${vm_password} --size=10G --swap=1G --vcpus=1 --bridge=br0 |
51 | 1 | Giulio Di Anastasio | </pre> |
52 | 1 | Giulio Di Anastasio | |
53 | 1 | Giulio Di Anastasio | Note that IP address will be set in the VM, and the vm_ip_addr isn't actually used. |
54 | 1 | Giulio Di Anastasio | |
55 | 1 | Giulio Di Anastasio | h2. DomUs |
56 | 1 | Giulio Di Anastasio | |
57 | 1 | Giulio Di Anastasio | h3. Migrate XL to libvirt |
58 | 1 | Giulio Di Anastasio | |
59 | 1 | Giulio Di Anastasio | After creation using xen-create-image, migrate the definition of the domU to libvirt: |
60 | 1 | Giulio Di Anastasio | |
61 | 1 | Giulio Di Anastasio | <pre> |
62 | 1 | Giulio Di Anastasio | virsh -c xen:/// domxml-from-native xen-xm /etc/xen/${vm_name}.cfg > /tmp/${vm_name}.xml |
63 | 1 | Giulio Di Anastasio | virsh define /tmp/${vm_name}.xml |
64 | 1 | Giulio Di Anastasio | </pre> |
65 | 1 | Giulio Di Anastasio | |
66 | 1 | Giulio Di Anastasio | |
67 | 1 | Giulio Di Anastasio | From this point onward, one can log out from the dom0's console and use virsh or "Virtual Machine Manager" from your computer to administer the VM, eg: |
68 | 1 | Giulio Di Anastasio | |
69 | 1 | Giulio Di Anastasio | * Set "Auto start" on dom0 boot |
70 | 1 | Giulio Di Anastasio | * Set memory limits, etc |
71 | 1 | Giulio Di Anastasio | |
72 | 1 | Giulio Di Anastasio | h3. Start the domU |
73 | 1 | Giulio Di Anastasio | |
74 | 1 | Giulio Di Anastasio | Use "Virtual Machine Manager" or the command: |
75 | 1 | Giulio Di Anastasio | |
76 | 1 | Giulio Di Anastasio | <pre> |
77 | 1 | Giulio Di Anastasio | virsh -c xen+ssh://root@dream.csr.av/ start ${vm_name} |
78 | 1 | Giulio Di Anastasio | </pre> |
79 | 1 | Giulio Di Anastasio | |
80 | 1 | Giulio Di Anastasio | |
81 | 1 | Giulio Di Anastasio | h3. To do in a libvirt shell |
82 | 1 | Giulio Di Anastasio | |
83 | 1 | Giulio Di Anastasio | Start a libvirt shell, with "Virtual Machine Manager" or with the command: |
84 | 1 | Giulio Di Anastasio | |
85 | 1 | Giulio Di Anastasio | <pre> |
86 | 1 | Giulio Di Anastasio | virsh -c xen+ssh://root@dream.csr.av/ console ${vm_name} |
87 | 1 | Giulio Di Anastasio | </pre> |
88 | 1 | Giulio Di Anastasio | |
89 | 1 | Giulio Di Anastasio | Log in as root in the libvirt console. |
90 | 1 | Giulio Di Anastasio | |
91 | 1 | Giulio Di Anastasio | |
92 | 1 | Giulio Di Anastasio | h4. Network config |
93 | 1 | Giulio Di Anastasio | |
94 | 1 | Giulio Di Anastasio | Add @/etc/systemd/network/50-wired.network@ (adjust the IP): |
95 | 1 | Giulio Di Anastasio | |
96 | 1 | Giulio Di Anastasio | <pre> |
97 | 1 | Giulio Di Anastasio | [Match] |
98 | 1 | Giulio Di Anastasio | Name=eth0 |
99 | 1 | Giulio Di Anastasio | |
100 | 1 | Giulio Di Anastasio | [Network] |
101 | 1 | Giulio Di Anastasio | Address=192.168.0.14/24 |
102 | 1 | Giulio Di Anastasio | Gateway=192.168.0.10 |
103 | 1 | Giulio Di Anastasio | DNS=192.168.0.10 |
104 | 1 | Giulio Di Anastasio | </pre> |
105 | 1 | Giulio Di Anastasio | |
106 | 1 | Giulio Di Anastasio | Then: |
107 | 1 | Giulio Di Anastasio | <pre> |
108 | 1 | Giulio Di Anastasio | systemctl enable --now systemd-networkd.socket |
109 | 1 | Giulio Di Anastasio | systemctl enable --now systemd-networkd.service |
110 | 1 | Giulio Di Anastasio | systemctl disable --now networking.service |
111 | 1 | Giulio Di Anastasio | </pre> |
112 | 1 | Giulio Di Anastasio | |
113 | 1 | Giulio Di Anastasio | h4. Post-install ssh config |
114 | 1 | Giulio Di Anastasio | |
115 | 1 | Giulio Di Anastasio | Allow ssh root login with password in @/etc/ssh/sshd_config@: |
116 | 1 | Giulio Di Anastasio | |
117 | 1 | Giulio Di Anastasio | <pre> |
118 | 1 | Giulio Di Anastasio | sed -i -e 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config |
119 | 1 | Giulio Di Anastasio | systemctl restart ssh.service |
120 | 1 | Giulio Di Anastasio | </pre> |
121 | 1 | Giulio Di Anastasio | |
122 | 1 | Giulio Di Anastasio | From this point onwards, one can close the console session opened via @libvirt@. |
123 | 1 | Giulio Di Anastasio | |
124 | 1 | Giulio Di Anastasio | h3. DNS |
125 | 1 | Giulio Di Anastasio | |
126 | 1 | Giulio Di Anastasio | Log in to the local DNS server with: |
127 | 1 | Giulio Di Anastasio | |
128 | 1 | Giulio Di Anastasio | <pre> |
129 | 1 | Giulio Di Anastasio | ssh root@infra.csr.av |
130 | 1 | Giulio Di Anastasio | </pre> |
131 | 1 | Giulio Di Anastasio | |
132 | 1 | Giulio Di Anastasio | Update the 2 files in @/etc/bind/zones@ (@zones/db.csr.av@ @zones/db.192.168.0@) and reload the DNS with: |
133 | 1 | Giulio Di Anastasio | <pre> |
134 | 1 | Giulio Di Anastasio | rndc reload |
135 | 1 | Giulio Di Anastasio | </pre> |
136 | 1 | Giulio Di Anastasio | |
137 | 1 | Giulio Di Anastasio | h3. DNS |
138 | 1 | Giulio Di Anastasio | |
139 | 1 | Giulio Di Anastasio | Log in to the local DNS server, *update the 2 files in @/etc/bind9/zones@*, and run: |
140 | 1 | Giulio Di Anastasio | <pre> |
141 | 1 | Giulio Di Anastasio | rndc reload |
142 | 1 | Giulio Di Anastasio | </pre> |
143 | 1 | Giulio Di Anastasio | |
144 | 1 | Giulio Di Anastasio | h3. Allow yourself to log in easily with your ssh key |
145 | 1 | Giulio Di Anastasio | |
146 | 1 | Giulio Di Anastasio | Copy your ssh key to the domU: run from your own computer: |
147 | 1 | Giulio Di Anastasio | <pre> |
148 | 1 | Giulio Di Anastasio | ssh-copy-id root@${ip_addr} |
149 | 1 | Giulio Di Anastasio | </pre> |
150 | 1 | Giulio Di Anastasio | |
151 | 1 | Giulio Di Anastasio | |
152 | 1 | Giulio Di Anastasio | h2. Ansible |
153 | 1 | Giulio Di Anastasio | |
154 | 1 | Giulio Di Anastasio | Using the Ansible project developed in Blue Light: https://redmine.bluelightav.org/projects/ansible |
155 | 1 | Giulio Di Anastasio | |
156 | 1 | Giulio Di Anastasio | h3. Prepare the host |
157 | 1 | Giulio Di Anastasio | |
158 | 1 | Giulio Di Anastasio | Install Python |
159 | 1 | Giulio Di Anastasio | |
160 | 1 | Giulio Di Anastasio | <pre> |
161 | 1 | Giulio Di Anastasio | apt install -y python |
162 | 1 | Giulio Di Anastasio | </pre> |
163 | 1 | Giulio Di Anastasio | |
164 | 1 | Giulio Di Anastasio | |
165 | 1 | Giulio Di Anastasio | h2. Database |
166 | 1 | Giulio Di Anastasio | |
167 | 1 | Giulio Di Anastasio | The Postgis database runs on its specific domU (gisdb.csr.av, 192.168.0.18). |
168 | 1 | Giulio Di Anastasio | |
169 | 1 | Giulio Di Anastasio | h3. Installation |
170 | 1 | Giulio Di Anastasio | |
171 | 1 | Giulio Di Anastasio | After installing the Postgis package (eg. assign the "postgis" Ansible's role), follow up to [[Db-support]] |
172 | 1 | Giulio Di Anastasio | |
173 | 1 | Giulio Di Anastasio | |
174 | 1 | Giulio Di Anastasio | h2. Jupyter |
175 | 1 | Giulio Di Anastasio | |
176 | 1 | Giulio Di Anastasio | The Jupyter server runs on its specific domU (jupyter.csr.av, 192.168.0.19). |
177 | 1 | Giulio Di Anastasio | |
178 | 1 | Giulio Di Anastasio | h3. Installation |
179 | 1 | Giulio Di Anastasio | |
180 | 1 | Giulio Di Anastasio | See #6990 . |