LXD Centos7 install

Материал из Webko Wiki
Версия от 18:37, 10 апреля 2017; Sol (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Containers.png

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 с полным функционалом.

Источник