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 . |