LXD Centos7 install
Версия от 18:37, 10 апреля 2017; Sol (обсуждение | вклад)
LXD is a container "hypervisor" and a new user experience for LXC.
Specifically, it's made of three components:
- A system-wide daemon (lxd)
- A command line client (lxc)
- An OpenStack Nova plugin (nova-compute-lxd)
Some of the biggest features of LXD are:
- Secure by design (unprivileged containers, resource restrictions and much more)
- Scalable (from containers on your laptop to thousand of compute nodes)
- Intuitive (simple, clear API and crisp command line experience)
- Image based (no more distribution templates, only good, trusted images)
- Live migration
Установка
Так как дистрибютив Centos 7 не имеет официальной поддердки LXD для установки мы будем использовать rpm пакеты из Fedora 25 и исходники из git. Таким образом мы получим последнюю версию LXD.
Для установки предлагаю использовать следующий скрипт, в идеале он сделает все сам, но возможно понадобится ручная помощь.
#!/bin/sh
USER_ADDED_TO_LXD_GROUP="${USER}"
sudo yum install wget -y
# LXD/LXC uses lxc-xxx pakcage.
F=https://dl.fedoraproject.org/pub/fedora/linux/releases/25
L=${F}/Everything/source/tree/Packages/l
wget -q ${L}/lxc-2.0.5-1.fc25.src.rpm
sudo yum install -y epel-release rpmdevtools rpm-build graphviz yum-utils.noarch
sudo yum-builddep -y lxc-2.0.5-1.fc25.src.rpm
rpmbuild --rebuild lxc-2.0.5-1.fc25.src.rpm
# Install package.
# shellcheck disable=SC2046
sudo yum localinstall -y \
$(find ~/rpmbuild/RPMS -type f -a ! -name "*debuginfo*")
# Install LXD/LXC.
sudo adduser --system lxd --home /var/lib/lxd/ --shell /bin/false
sudo addgroup --system lxd
sudo mkdir -p /var/log/lxd
sudo chown root:lxd /var/log/lxd
sudo yum install -y git golang sqlite-devel dnsmasq squashfs-tools
export GOPATH=${HOME}/go
export PATH=${GOPATH}/bin/:${PATH}
go get -v -x -tags libsqlite3 \
github.com/lxc/lxd/lxc \
github.com/lxc/lxd/lxd
sudo cp "${GOPATH}"/bin/* /usr/bin/
# Create systemd service and socket.
sudo su -c '
cat <<EOF > /usr/lib/systemd/system/lxd.service
[Unit]
Description=LXD - main daemon
After=network.target
Requires=network.target lxd.socket
Documentation=man:lxd(1)
[Service]
EnvironmentFile=-/etc/environment
ExecStart=/usr/bin/lxd --group lxd --logfile=/var/log/lxd/lxd.log
ExecStartPost=/usr/bin/lxd waitready --timeout=600
KillMode=process
TimeoutStartSec=600
TimeoutStopSec=40
Restart=on-failure
LimitNOFILE=infinity
LimitNPROC=infinity
[Install]
Also=lxd.socket
EOF
'
sudo su -c '
cat <<EOF > /usr/lib/systemd/system/lxd.socket
[Unit]
Description=LXD - unix socket
Documentation=man:lxd(1)
[Socket]
ListenStream=/var/lib/lxd/unix.socket
SocketGroup=lxd
SocketMode=0660
Service=lxd.service
[Install]
WantedBy=sockets.target
EOF
'
# Run LXD for initialization.
sudo systemctl --system daemon-reload
sudo systemctl enable lxd
sudo systemctl start lxd
# Initialize LXD.
cat <<EOF | sudo lxd init
yes
default
dir
no
yes
yes
lxdbr0
auto
auto
EOF
# Running container needs user_namespace.enable=1.
sudo yum install -y grub2-tools
. /etc/default/grub
V="$GRUB_CMDLINE_LINUX user_namespace.enable=1"
sudo sed -e "s;^GRUB_CMDLINE_LINUX=.*;GRUB_CMDLINE_LINUX=\"$V\";g" \
-i /etc/default/grub
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
# Add user to lxd for running lxc command without privilege.
sudo gpasswd -a "${USER_ADDED_TO_LXD_GROUP}" lxd
# Reboot.
sudo reboot
Действия скрипта:
- Скачивание и пересборка пакета LXC с репозиториев Fedora 25 под Centos 7;
- Установка пересобраного LXC;
- Создание необходимых пользователей, груп, каталогов;
- Установка LXD;
- Содание systemd сервисов;
- Инициализация LXD;
- Добавление необходимых параметров ядра, перезапись конфига grub;
- Пререзагрузка.
После всего вам удет доступен LXD с полным функционалом.