2022-07-15 14:34:11 +02:00
|
|
|
---
|
|
|
|
title: Mise En Containeurs
|
|
|
|
description: Il s'agit de prendre les serveurs phyiques et de les mettre en containeurs LXC.
|
|
|
|
published: true
|
2022-07-20 07:37:21 +02:00
|
|
|
date: 2022-07-20T05:37:19.453Z
|
2022-07-15 14:34:11 +02:00
|
|
|
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.
|
|
|
|
|
2022-07-20 07:31:59 +02:00
|
|
|
- [ ] Contabob
|
|
|
|
- [ ] Contaboa
|
|
|
|
- [ ] Contaboc
|
2022-07-20 07:33:37 +02:00
|
|
|
- [ ] Linodea
|
2022-07-20 07:37:21 +02:00
|
|
|
- [ ] Hetznera
|
|
|
|
- [ ] Hetznerb
|
2022-07-20 07:33:37 +02:00
|
|
|
- [ ] Hetznerc
|
|
|
|
- [ ] Contabod
|
2022-07-20 07:37:21 +02:00
|
|
|
- [ ] Ikoulac
|
|
|
|
- [ ] Ikoulaf
|
2022-07-20 07:33:37 +02:00
|
|
|
- [ ] Ikoulag
|
2022-07-20 07:37:21 +02:00
|
|
|
- [ ] Ionosa
|
|
|
|
- [ ] Ionosb
|
|
|
|
- [ ] ContaboBlockStorage
|
2022-07-20 07:28:59 +02:00
|
|
|
|
|
|
|
## Considérations techniques
|
|
|
|
|
2022-07-15 14:34:11 +02:00
|
|
|
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
|
|
|
|
```
|