79 lines
2.7 KiB
YAML
79 lines
2.7 KiB
YAML
---
|
|
- name: Финальное развертывание Unprivileged LXC (ZFS + VLAN)
|
|
hosts: localhost
|
|
connection: local
|
|
become: yes
|
|
gather_facts: no
|
|
vars:
|
|
# Базовый конфиг (ID маппинг согласно вашему /etc/subuid)
|
|
base_lxc_conf: |
|
|
lxc.include = /usr/share/lxc/config/common.conf
|
|
lxc.include = /usr/share/lxc/config/debian.common.conf
|
|
lxc.arch = x86_64
|
|
# Маппинг для безопасного root (хост: 1,000,000 -> контейнер: 0)
|
|
lxc.idmap = u 0 1000000 65536
|
|
lxc.idmap = g 0 1000000 65536
|
|
# Сетевой интерфейс
|
|
lxc.net.0.type = veth
|
|
lxc.net.0.link = br0
|
|
lxc.net.0.flags = up
|
|
lxc.net.0.name = eth0
|
|
|
|
tasks:
|
|
- name: 1. Мгновенный клон из обновленного шаблона
|
|
shell: "zfs clone pool/lxc/template-debian12@snap0 pool/lxc/{{ item }}"
|
|
loop: [ 'bit-srv-prn', 'mail-bit-it-ru' ]
|
|
|
|
- name: 2. Настройка Legacy Mountpoint (важно для ZFS + LXC)
|
|
shell: "zfs set mountpoint=legacy pool/lxc/{{ item }}"
|
|
loop: [ 'bit-srv-prn', 'mail-bit-it-ru' ]
|
|
|
|
- name: 3. Подготовка директорий контейнеров
|
|
file:
|
|
path: "/var/lib/lxc/{{ item }}"
|
|
state: directory
|
|
loop: [ 'bit-srv-prn', 'mail-bit-it-ru' ]
|
|
|
|
- name: 4. Права на внешние данные почты (UID 1000000)
|
|
file:
|
|
path: /pool/bit-mail-data
|
|
owner: "1000000"
|
|
group: "1000000"
|
|
state: directory
|
|
recurse: yes
|
|
|
|
- name: 5. Запись конфига ПРИНТЕР (VLAN 30)
|
|
copy:
|
|
dest: /var/lib/lxc/bit-srv-prn/config
|
|
content: |
|
|
{{ base_lxc_conf }}
|
|
lxc.uts.name = bit-srv-prn
|
|
lxc.rootfs.path = zfs:pool/lxc/bit-srv-prn
|
|
lxc.net.0.veth.vlan.id = 30
|
|
|
|
- name: 6. Запись конфига ПОЧТА (VLAN 60 + Mount)
|
|
copy:
|
|
dest: /var/lib/lxc/mail-bit-it-ru/config
|
|
content: |
|
|
{{ base_lxc_conf }}
|
|
lxc.uts.name = mail-bit-it-ru
|
|
lxc.rootfs.path = zfs:pool/lxc/mail-bit-it-ru
|
|
lxc.net.0.veth.vlan.id = 60
|
|
lxc.mount.entry = /pool/bit-mail-data var/mail none bind,create=dir 0 0
|
|
|
|
- name: 7. Запуск контейнеров
|
|
shell: "lxc-start -n {{ item }} -d"
|
|
loop: [ 'bit-srv-prn', 'mail-bit-it-ru' ]
|
|
|
|
- name: 8. Проверка статуса (ждем загрузку)
|
|
pause:
|
|
seconds: 5
|
|
|
|
- name: 9. Итоговая таблица
|
|
shell: "lxc-ls -f"
|
|
register: lxc_final
|
|
|
|
- name: Результат
|
|
debug:
|
|
msg: "{{ lxc_final.stdout_lines }}"
|