--- title: Mise En Containeurs description: Il s'agit de prendre les serveurs phyiques et de les mettre en containeurs LXC. published: true date: 2022-07-20T05:33:35.690Z tags: editor: markdown dateCreated: 2022-07-15T12:34:08.620Z --- # Mise en containeurs [/fr/acts/digital/changes/misesencontaineurs](/fr/acts/digital/changes/misesencontaineurs) L'objectif est de mettre les serveurs actuels virtuels dans des containteurs d'un serveur plus gros. - [ ] Ikoulac - [ ] Contabob - [ ] Contaboa - [ ] Contaboc - [ ] Linodea - [ ] Hetznerc - [ ] Contabod - [ ] Hetznerb - [ ] Ikoulag ## Considérations techniques https://discuss.linuxcontainers.org/t/howto-use-lxd-p2c/3574 https://blog.simos.info/how-to-compile-lxd-p2c-to-migrate-physical-servers-to-lxd-containers/ https://linuxcontainers.org/lxd/docs/latest/installing/ ``` apt install sqlite3 aptitude install -y build-essential acl libacl1-dev libcap-dev liblxc1 \ libsqlite3-dev libudev-dev libuv1-dev attr autoconf automake \ dnsmasq-base git golang libacl1-dev libcap-dev libtool libudev-dev liblz4-dev \ libuv1-dev make pkg-config rsync squashfs-tools tar tcl xz-utils ebtables \ lxc-dev cd /root git clone https://github.com/canonical/raft.git cd raft autoreconf -i ./configure make sudo make install cd .. export CGO_CFLAGS="-I/deps/raft/include/ -I/deps/dqlite/include/" export CGO_LDFLAGS="-L/deps/raft/.libs -L/deps/dqlite/.libs/" export LD_LIBRARY_PATH="/deps/raft/.libs/:/deps/dqlite/.libs/" export CGO_LDFLAGS_ALLOW="(-Wl,-wrap,pthread_create)|(-Wl,-z,now)" ``` ```bash wget https://github.com/lxc/lxd/archive/refs/heads/master.zip unzip master.zip cd lxd-master/ aptitude update aptitude -y upgrade apt install -y build-essential acl libacl1-dev libcap-dev liblxc1 liblxc-dev \ libsqlite3-dev libudev-dev libuv1-dev libdqlite-dev attr autoconf automake \ dnsmasq-base git golang libacl1-dev libcap-dev libtool libudev-dev liblz4-dev \ libuv1-dev make pkg-config rsync squashfs-tools tar tcl xz-utils ebtables \ go-dqlite golang-github-canonical-go-dqlite-dev aptitude install -y build-essential acl libacl1-dev libcap-dev liblxc1 \ libsqlite3-dev libudev-dev libuv1-dev attr autoconf automake \ dnsmasq-base git golang libacl1-dev libcap-dev libtool libudev-dev liblz4-dev \ libuv1-dev make pkg-config rsync squashfs-tools tar tcl xz-utils ebtables \ aptitude install -y lxc-dev libdqlite-dev go-dqlite golang-github-canonical-go-dqlite-dev wget https://github.com/lxc/lxd/archive/refs/heads/master.zip unzip master.zip cd lxd-master/ make deps echo 'export CGO_CFLAGS="-I/root/go/deps/raft/include/ -I/root/go/deps/dqlite/include/"' >> /root/.bashrc echo 'export CGO_LDFLAGS="-L/root/go/deps/raft/.libs -L/root/go/deps/dqlite/.libs/"' >> /root/.bashrc echo 'export LD_LIBRARY_PATH="/root/go/deps/raft/.libs/:/root/go/deps/dqlite/.libs/"' >> /root/.bashrc echo 'export CGO_LDFLAGS_ALLOW="(-Wl,-wrap,pthread_create)|(-Wl,-z,now)"' >> /root/.bashrc source /root/.bashrc make echo 'export PATH="${PATH}:$(go env GOPATH)/bin"' >> /root/.bashrc echo 'export LD_LIBRARY_PATH="$(go env GOPATH)/deps/dqlite/.libs/:$(go env GOPATH)/deps/raft/.libs/:${LD_LIBRARY_PATH}"' >> /root/.bashrc source /root/.bashrc root@contabob:~/lxd-master# lxd-migrate Please provide LXD server URL: https://ikoulaf.appgv.com:8443 Certificate fingerprint: 7843bcb8cb... ok (y/n)? y 1) Use a certificate token 2) Use an existing TLS authentication certificate 3) Generate a temporary TLS authentication certificate Please pick an authentication mechanism above: 3 Your temporary certificate is: -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- It is recommended to have this certificate be manually added to LXD through `lxc config trust add` on the target server. Alternatively you could use a pre-defined trust password to add it remotely (use of a trust password can be a security issue). Would you like to use a trust password? [default=no]: Press ENTER after the certificate was added to the remote server: Remote LXD server: Hostname: ikoulaf Version: 5.3 Would you like to create a container (1) or virtual-machine (2)?: 1 Name of the new instance: contabob Please provide the path to a root filesystem: / Do you want to add additional filesystem mounts? [default=no]: Instance to be created: Name: contabob Project: default Type: container Source: / Additional overrides can be applied at this stage: 1) Begin the migration with the above configuration 2) Override profile list 3) Set additional configuration options 4) Change instance storage pool or volume size 5) Change instance network Please pick one of the options above [default=1]: Transferring instance: contabob: 1.39GB (6.05MB/s) ``` ```bash dnf makecache --refresh dnf config-manager --set-enabled powertools dnf install epel-release epel-next-release dnf update wget https://github.com/lxc/lxd/archive/refs/heads/master.zip unzip master.zip cd lxd-master/ dnf install acl attr autoconf automake dnsmasq git golang libacl-devel libcap-devel lxc-libs lxc-devel sqlite-devel libtool libudev-devel lz4-devel libuv make pkg-config rsync squashfs-tools tar tcl xz ebtables make deps export CGO_CFLAGS="-I/root/go/deps/raft/include/ -I/root/go/deps/dqlite/include/" export CGO_LDFLAGS="-L/root/go/deps/raft/.libs -L/root/go/deps/dqlite/.libs/" export LD_LIBRARY_PATH="/root/go/deps/raft/.libs/:/root/go/deps/dqlite/.libs/" export CGO_LDFLAGS_ALLOW="(-Wl,-wrap,pthread_create)|(-Wl,-z,now)" source /root/.bashrc cd /root wget https://go.dev/dl/go1.18.1.linux-amd64.tar.gz tar -C /usr/local -xzf go1.18.1.linux-amd64.tar.gz echo 'export PATH=$PATH:/usr/local/go/bin' >> /etc/profile source /root/.bashrc cd /root/lxd-master make echo 'export PATH="${PATH}:$(go env GOPATH)/bin"' >> /root/.bashrc echo 'export LD_LIBRARY_PATH="$(go env GOPATH)/deps/dqlite/.libs/:$(go env GOPATH)/deps/raft/.libs/:${LD_LIBRARY_PATH}"' >> /root/.bashrc source /root/.bashrc firewall-cmd --zone=public --add-port=8443/tcp --permanent systemctl reload firewalld vi ../tempcert lxc config trust add /root/tempcert ```