Project

General

Profile

CSR Geomatics Server Setup » History » Version 5

Giulio Di Anastasio, 03/05/2021 11:43

1 3 Giulio Di Anastasio
h1. %{color:BLUE}  CSR Geomatics 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 3 Giulio Di Anastasio
h2. %{color:BLUE}  Dom0%
18 1 Giulio Di Anastasio
19 3 Giulio Di Anastasio
h3. %{color:BLUE}  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 3 Giulio Di Anastasio
h3. %{color:BLUE}  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 3 Giulio Di Anastasio
h3. %{color:BLUE}  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 3 Giulio Di Anastasio
h3. %{color:BLUE}  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 3 Giulio Di Anastasio
h2. %{color:BLUE}  DomUs%
56 1 Giulio Di Anastasio
57 3 Giulio Di Anastasio
h3. %{color:BLUE}  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 3 Giulio Di Anastasio
h3. %{color:BLUE}  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 3 Giulio Di Anastasio
h3. %{color:BLUE}  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 3 Giulio Di Anastasio
h4. %{color:BLUE}  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 3 Giulio Di Anastasio
h4. %{color:BLUE}  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 3 Giulio Di Anastasio
h3. %{color:BLUE}  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 3 Giulio Di Anastasio
h3. %{color:BLUE}  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 3 Giulio Di Anastasio
h3. %{color:BLUE}  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 3 Giulio Di Anastasio
h2. %{color:BLUE}  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 5 Giulio Di Anastasio
h2. %{color:BLUE}  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 3 Giulio Di Anastasio
h3. %{color:BLUE}  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 3 Giulio Di Anastasio
h2. %{color:BLUE}  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 3 Giulio Di Anastasio
h3. %{color:BLUE}  Installation%
179 1 Giulio Di Anastasio
180 1 Giulio Di Anastasio
See #6990 .