criecm.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)
: iocage用のZFSプールiocage_fetch_args ({})
:iocage fetch
に渡す引数 例: "-s ftp.local -d pub/FreeBSD/releases"jail_list ([])
ホスト上で作成するjailの辞書のリスト、以下を参照myjail ('')
定義されている場合、jail_list
からこのjailのみを実行(見つからなければなし)myjails([])
myjailと同じですが、複数指定可能 :)iocage_components (none)
- リスト 定義されている場合、これらのコンポーネントのみをインストールiocage_enable_ssh (True)
新しいjailでSSHを有効にするiocage_release (uname -r)
必要なリリースjail_init_role ()
新しいjailを初期化するためにインポートされるロールiocage_use_pkg (True)
パッケージからiocageをインストールするか、Falseの場合はgitからインストール
Jailごとの変数
(vars/jail.yml内)
name
(デフォルトなし、必須): ヒューマンアイデンティファイア、ホスト内でユニークhostname
(''): 空の場合は生成されたUUIDip4
(''): IPv4アドレス、iocageと同じ形式: [ifaceN|]192.0.2.1[/24][,[ifaceN|]192.0.2.1[/24][,…]]- 'iface|'が前に付いている場合、IPはjail起動時にインターフェースに追加されます
- マスクが指定されていない場合、IPは/32に設定されます
ip6
( ''): IPv6… 上記と同じ(ただしデフォルトマスクは/128です)resolver
('auto'): jailのためのresolv.confの内容、改行の代わりに';'を使用 (空の場合、iocageはホストのものをjail起動時にコピーします)properties
({}): iocage jailの利用可能な任意のプロパティ用の辞書authkeys (/root/.ssh/authorized_keys)
jail内の/root/.ssh/authorized_keysにコピーするファイル
resolver=autoのロジック
resolver
はsearch_domains
とresolvers
変数に基づいて自動的に設定されます
(ここにはgroup_vars/all.yml
にあります)。これにより、jailのIPアドレスに応じて検索ドメインとリゾルバが選択されます。
# 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に追加されます
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 }
例のプレイブック:
2つのjailを持つjailhost:
- 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