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 пул для iocageiocage_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 в новых jailiocage_release (uname -r)
:
Необходимая версияjail_init_role ()
:
Роль для импорта, чтобы инициализировать новый jailiocage_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 iocageauthkeys (/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
ansible-galaxy install criecm/ansible-role-iocage