Являясь большим фанатом данной системы виртуализации, решил поделиться несколько иным способом установки.
Если кратко, то Proxmox это система виртуализации на KVM, которая ещё умеет управляться с контейнерами LXC. Также имеется возможность кластеризации(для некоммерческой версии ограничение около 8 нод). Умеет работать с Ceph, ZFS. Если подробно, то советую почитать вики или посмотреть ютуб.
Дело в том, что ProxmoxVE можно установить при помощи образа, который предоставляется на скачивание, но тогда вам вряд ли будут доступны варинты разбивки с использованием soft-raid для Linux и прочие извращения(если что-то некритичное по производительности — почему нет?). Отдельное спасибо товарищу @merlin_vrn за знакомство с Proxmox, и Alex Filimonov за помощь с Ansible.
Существует вариант, когда вы сами ставите Debian актуальной версии именно так как вы хотите, а уже дальше устанавливаете ProxmoxVE как некую надстройку, которая вам заменяет ядро, linux-firmware, lvm, устанавливает свой репозиторий и уже отчасти перестаёт быть Debian. В этом случае у вас гораздо больше пространства для свободы(к примеру, недавно я ставил по сети Debian через liveusb Archlinux используя debootstrap).
Процедура установки Proxmox описана в вики.
Ещё один плюс Proxmox в том, что после установки вы получите отличную, а главное актульную документацию на том же веб-сервере, что и сама управлялка. Доступна документация по ссылке
Сначала я думал написать статью с использованием Preseed, который бы использовался для изначальной установки Debian, но поразмыслив я понял, что вариантов установки может быть огромная масса и установить Debian уж всем по силам. Итак, полагаем, что сам Debian Stretch(stable на данный момент) у вас уже установлен, сеть настроена статикой, работает sshd и вы уже прокинули ключ через ssh-copy-id. Так же, представим, что у вас уже есть некий опыт работы с Ansible.
В Ansible имеется ansible-galaxy, в котором достаточно просто найти уже готовые роли под ваши нужны, или же просто почитать как и что пишут другие люди. В Ansible-galaxy можно выполнять вход через github-аккаунт и далее уже шарить определённые репозитории. Подробнее о том, как это делать написано тут.
Я создал роль и пошарил её в ansible-galaxy. Теперь мы её можем легко установить, используя команду:
Соответственно теперь мы можем пользоваться этой ролью:
Создадим файл hosts для Ansible, который будет нашим Inventory:
Теперь можем запускать:
Результат:
Если кратенько, то плейбук делает всё тоже самое, что описано в вики, но не ставит openiscsi(он много ошибок пишет, если не настроен). + конфигурирует сеть, используя bridge-utils(для старта хватит, вы можете легко переопределить на openvswitch, если надо). Так же удаляются стандартные ядра и ребутается сервер.
Из интересного меня немного застопорило то, как удалить старые ядра и перезагрузить сервер, но покопавшись в документации dpkg и Ansible я нашёл выход:
В удалении текущего ядра нет ничего криминального (хотя будет выдано предупреждение, если вы делаете это локально), так как Proxmox предоставляет своё ядро и заменяет достаточно много стандартных программ на программы из своего репозитория.
Где-то в середине плейбука target-хост будет перезагружен, Ansible дождётся (будет ждать 2400 секунд, проверяя каждые 10 доступность) когда нода опять будет жива, и потом сконфигурирует journald и chrony. Далее установит пару утилит и на этом всё, вас будет ждать готовый Proxmox.
Если кратко, то Proxmox это система виртуализации на KVM, которая ещё умеет управляться с контейнерами LXC. Также имеется возможность кластеризации(для некоммерческой версии ограничение около 8 нод). Умеет работать с Ceph, ZFS. Если подробно, то советую почитать вики или посмотреть ютуб.
Варианты установки
Дело в том, что ProxmoxVE можно установить при помощи образа, который предоставляется на скачивание, но тогда вам вряд ли будут доступны варинты разбивки с использованием soft-raid для Linux и прочие извращения(если что-то некритичное по производительности — почему нет?). Отдельное спасибо товарищу @merlin_vrn за знакомство с Proxmox, и Alex Filimonov за помощь с Ansible.
Существует вариант, когда вы сами ставите Debian актуальной версии именно так как вы хотите, а уже дальше устанавливаете ProxmoxVE как некую надстройку, которая вам заменяет ядро, linux-firmware, lvm, устанавливает свой репозиторий и уже отчасти перестаёт быть Debian. В этом случае у вас гораздо больше пространства для свободы(к примеру, недавно я ставил по сети Debian через liveusb Archlinux используя debootstrap).
Процедура установки Proxmox описана в вики.
Ещё один плюс Proxmox в том, что после установки вы получите отличную, а главное актульную документацию на том же веб-сервере, что и сама управлялка. Доступна документация по ссылке
https://ip_or_domain/pve-docs/pve-admin-guide.html
Сначала я думал написать статью с использованием Preseed, который бы использовался для изначальной установки Debian, но поразмыслив я понял, что вариантов установки может быть огромная масса и установить Debian уж всем по силам. Итак, полагаем, что сам Debian Stretch(stable на данный момент) у вас уже установлен, сеть настроена статикой, работает sshd и вы уже прокинули ключ через ssh-copy-id. Так же, представим, что у вас уже есть некий опыт работы с Ansible.
Использование Ansible
В Ansible имеется ansible-galaxy, в котором достаточно просто найти уже готовые роли под ваши нужны, или же просто почитать как и что пишут другие люди. В Ansible-galaxy можно выполнять вход через github-аккаунт и далее уже шарить определённые репозитории. Подробнее о том, как это делать написано тут.
Я создал роль и пошарил её в ansible-galaxy. Теперь мы её можем легко установить, используя команду:
ansible-galaxy install tenhishadow.pve_on_debian
Соответственно теперь мы можем пользоваться этой ролью:
# ls -l /etc/ansible/roles/tenhishadow.pve_on_debian/ итого 68 drwxr-xr-x. 2 root root 4096 ноя 16 22:46 defaults drwxr-xr-x. 2 root root 4096 ноя 16 22:46 handlers -rw-rw-r--. 1 root root 35147 ноя 16 22:45 LICENSE drwxr-xr-x. 2 root root 4096 ноя 16 22:46 meta -rw-rw-r--. 1 root root 1916 ноя 16 22:45 README.md drwxr-xr-x. 2 root root 4096 ноя 16 22:46 tasks drwxr-xr-x. 2 root root 4096 ноя 16 22:46 templates drwxr-xr-x. 2 root root 4096 ноя 16 22:46 tests drwxr-xr-x. 2 root root 4096 ноя 16 22:46 vars
Создадим файл hosts для Ansible, который будет нашим Inventory:
[proxmox_target] 192.168.102.51
Теперь можем запускать:
# ansible-playbook -i hosts testplaybook.yml
Результат:
PLAY [proxmox_target] * TASK [Gathering Facts] * ok: [192.168.102.51] TASK [tenhishadow.pve_on_debian : set hostname for the system] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : modify /etc/hosts] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : check standart repos] * changed: [192.168.102.51] => (item=deb http://security.debian.org/ stretch/updates main contrib non-free) changed: [192.168.102.51] => (item=deb-src http://security.debian.org/ stretch/updates main contrib non-free) changed: [192.168.102.51] => (item=deb http://mirror.yandex.ru/debian/ stretch main contrib non-free) changed: [192.168.102.51] => (item=deb-src http://mirror.yandex.ru/debian/ stretch main contrib non-free) changed: [192.168.102.51] => (item=deb http://mirror.yandex.ru/debian/ stretch-updates main contrib non-free) changed: [192.168.102.51] => (item=deb-src http://mirror.yandex.ru/debian/ stretch-updates main contrib non-free) TASK [tenhishadow.pve_on_debian : add pve repository key] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : add pve-no-subscription repo] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : update system] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : install proxmox packages] * changed: [192.168.102.51] => (item=[u'proxmox-ve', u'postfix', u'bridge-utils']) TASK [tenhishadow.pve_on_debian : remove os prober to prevent injuring VMs] * changed: [192.168.102.51] => (item=[u'os-prober']) TASK [tenhishadow.pve_on_debian : search for standard kernels] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : remove standart kernels] * changed: [192.168.102.51] => (item=[u'linux-image-4.9.0-4-amd64', u'linux-image-amd64']) TASK [tenhishadow.pve_on_debian : configure network from template] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : rebooting the server] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : waiting for server to come back] * k: [192.168.102.51 -> localhost] TASK [tenhishadow.pve_on_debian : remove enterprise repo] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : install several packages] * changed: [192.168.102.51] => (item=chrony) changed: [192.168.102.51] => (item=htop) ok: [192.168.102.51] => (item=telnet) changed: [192.168.102.51] => (item=nmap) changed: [192.168.102.51] => (item=screen) changed: [192.168.102.51] => (item=tcpdump) changed: [192.168.102.51] => (item=iptraf) changed: [192.168.102.51] => (item=sudo) ok: [192.168.102.51] => (item=bridge-utils) TASK [tenhishadow.pve_on_debian : set timezone] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : generate locales] * ok: [192.168.102.51] => (item=en_US.UTF-8) changed: [192.168.102.51] => (item=ru_RU.UTF-8) TASK [tenhishadow.pve_on_debian : configure chrony] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : start and enable chrony] * ok: [192.168.102.51] TASK [tenhishadow.pve_on_debian : configure journald] * changed: [192.168.102.51] RUNNING HANDLER [tenhishadow.pve_on_debian : restart networking] * changed: [192.168.102.51] RUNNING HANDLER [tenhishadow.pve_on_debian : restart chrony] * changed: [192.168.102.51] RUNNING HANDLER [tenhishadow.pve_on_debian : restart journald] * changed: [192.168.102.51] PLAY RECAP * 192.168.102.51 : ok=24 changed=21 unreachable=0 failed=0
Если кратенько, то плейбук делает всё тоже самое, что описано в вики, но не ставит openiscsi(он много ошибок пишет, если не настроен). + конфигурирует сеть, используя bridge-utils(для старта хватит, вы можете легко переопределить на openvswitch, если надо). Так же удаляются стандартные ядра и ребутается сервер.
Из интересного меня немного застопорило то, как удалить старые ядра и перезагрузить сервер, но покопавшись в документации dpkg и Ansible я нашёл выход:
- name: search for standard kernels shell: "$( which dpkg ) --get-selections linux-image* | $( which grep ) -i install | $(which awk) '{print $1}'" args: executable: /bin/bash register: standart_kernels_installed - name: remove standart kernels apt: name: "{{ item }}" state: absent with_items: "{{ standart_kernels_installed.stdout_lines|default([]) }}" - name: rebooting the server shell: nohup bash -c "sleep 2s && reboot" & async: 0 poll: 0 ignore_errors: yes register: reboot tags: reboot - name: waiting for server to come back local_action: wait_for host={{ proxmox_ip }} state=started when: reboot.changed async: 2400 poll: 10 tags: reboot
В удалении текущего ядра нет ничего криминального (хотя будет выдано предупреждение, если вы делаете это локально), так как Proxmox предоставляет своё ядро и заменяет достаточно много стандартных программ на программы из своего репозитория.
Где-то в середине плейбука target-хост будет перезагружен, Ansible дождётся (будет ждать 2400 секунд, проверяя каждые 10 доступность) когда нода опять будет жива, и потом сконфигурирует journald и chrony. Далее установит пару утилит и на этом всё, вас будет ждать готовый Proxmox.
