iocage

iocage

iocage установка/настройка хоста и jail на FreeBSD
(это не будет работать в текущем виде на FreeNAS, ждем ваши патчи ;)

Использует модуль iocage для ansible из
https://github.com/fractalcells/ansible-iocage
(встроенный в библиотеку роли)

Добавляет созданные хосты в инвентарь (add_host) с переменной iocage_host,
заполненной именем хоста inventory_hostname и группой iojails.

Переменные роли

(в defaults/main.yml)

  • iocage_zpool (zroot):
    ZFS пул для iocage

  • iocage_fetch_args ({}):
    аргументы, которые будут переданы в iocage fetch
    пример: "-s ftp.local -d pub/FreeBSD/releases"

  • jail_list ([]):
    список словарей jail для создания на хосте, см. ниже

  • myjail (''):
    если определено, запустить только этот jail из jail_list (ничего, если не найдено)

  • myjails([]):
    то же, что и myjail, но для более чем одного :)

  • iocage_components (none):
    если определено, установить только эти компоненты

  • iocage_enable_ssh (True):
    Включить SSH в новых jail

  • iocage_release (uname -r):
    Необходимая версия

  • jail_init_role ():
    Роль для импорта, чтобы инициализировать новый jail

  • iocage_use_pkg (True):
    Установит iocage из пакетов или из git, если False

Переменные для каждого jail

(в vars/jail.yml)

  • name (нет по умолчанию, обязательно): уникальный идентификатор на хосте

  • hostname (''): сгенерированный UUID, если пусто

  • ip4 (''): IPv4 адрес(а), тот же формат, что и у iocage: [ifaceN|]192.0.2.1[/24][,[ifaceN|]192.0.2.1[/24][,…]]

    • если передано 'iface|', IP будет добавлен к интерфейсу при запуске jail
    • если маска не указана, IP будет /32
  • ip6 (''): IPv6… то же самое, что и выше. (но маска по умолчанию /128, не /32 ;-P)

  • resolver ('auto'): содержимое resolv.conf для jail, с ';' вместо новых строк
    (iocage скопирует содержимое хоста при запуске jail, если пусто)

  • properties ({}):
    Словарь для любых свойств jail iocage

  • authkeys (/root/.ssh/authorized_keys):
    Файл для копирования как /root/.ssh/authorized_keys в jail

Логика resolver=auto

resolver будет автоматически заполняться в зависимости от переменных search_domains и resolvers
(здесь они находятся в group_vars/all.yml). Это выберет домен(ы) поиска и резолверы,
в зависимости от IP-адресов jail.

# если ip находится в 'network', 'domain' добавляется
search_domains:
  - { network: '192.0.2.0/24', domain: 'our.example.net' }
  - { network: '198.51.100.0/24', domain: 'ryd.example.org' }
  - { network: '2001:0DB8:fe43::/32', domain: 'ipv6.example.org' }
  - { network: '0.0.0.0/0', domain: 'example.com' }

# если ip находится в 'network', 'ip' добавляется к резолверам
resolvers:
  - { network: '192.0.2.0/24', ip: 192.0.2.1 }
  - { network: '198.51.100.0/24', ip: 192.0.2.1 }
  - { network: '2001:0DB8:fe43::/56', ip: 2001:0DB8::1 }
  - { network: '0.0.0.0/0', ip: 8.8.8.8 }
  - { network: '::/0', ip: 2620:0:ccc::2 }

Примеры плейбуков:

Хост jail с двумя jail:

- hosts: realmachine
  roles:
    - criecm.iocage
  vars:
    jail_list:
      - { name: myfirstjail, hostname: myfirstjail.example.org, ip4_addr: 'bge0|198.51.100.0' }
      - { name: mysecjail, hostname: mysecjail.example.org, ip4_addr: 'bge0|198.51.100.8' }

Фрагмент плейбука для создания/регистрации jail перед работой с ним:

- hosts: realmachine
  roles:
    - criecm.iocage
  vars:
    # здесь jail_list может быть в inventory/host_vars/realmachine.yml
    myjail: myfirstjail

- hosts: myfirstjail
  roles:
    - criecm.apache
  […]

Модуль ansible-iocage

обновление из исходников:

git subtree pull -P roles/criecm.iocage/library/src/iocage https://github.com/criecm/ansible-iocage.git master

О проекте

iocage jail management for FreeBSD

Установить
ansible-galaxy install criecm/ansible-role-iocage
Лицензия
Unknown
Загрузки
175
Владелец
Direction des Systèmes d'Information