.. _example_501: 501 iocage host --------------- .. contents:: :local: :depth: 2 .. index:: single: postinstall; Example 501 .. index:: single: role vbotka.freebsd.postinstall; Example 501 .. index:: single: vbotka.freebsd.postinstall; Example 501 .. index:: single: network; Example 501 .. index:: single: role vbotka.freebsd.network; Example 501 .. index:: single: vbotka.freebsd.network; Example 501 .. index:: single: pf; Example 501 .. index:: single: role vbotka.freebsd.pf; Example 501 .. index:: single: vbotka.freebsd.pf; Example 501 .. index:: single: ZFS; Example 501 .. index:: single: role vbotka.freebsd.zfs; Example 501 .. index:: single: vbotka.freebsd.zfs; Example 501 .. index:: single: community.general.zfs; Example 501 .. index:: single: community.general.zfs_facts; Example 501 .. index:: single: community.general.zpool; Example 501 .. index:: single: community.general.zpool_facts; Example 501 .. index:: single: module community.general.zfs; Example 501 .. index:: single: module community.general.zfs_facts; Example 501 .. index:: single: module community.general.zpool; Example 501 .. index:: single: module community.general.zpool_facts; Example 501 .. index:: single: iocage activate; Example 501 .. index:: single: activate iocage; Example 501 .. index:: single: .login_conf; Example 501 .. index:: single: /boot/loader.conf; Example 501 Use case ^^^^^^^^ Configure iocage host. Tree ^^^^ :: shell > tree . . ├── ansible.cfg ├── group_vars │ └── all │ └── iocage.yml ├── host_vars │ └── iocage_04 │ ├── iocage.yml │ ├── loader.yml │ ├── login.yml │ ├── network.yml │ ├── packages.yml │ ├── pf.yml │ └── zfs.yml ├── iocage.ini ├── pb-all.yml ├── pb-iocage.yml ├── pb-loader.yml ├── pb-login.yml ├── pb-network.yml ├── pb-packages.yml ├── pb-pf.yml └── pb-zfs.yml Synopsis ^^^^^^^^ At the managed node ``iocage_04``: * configure ``/home/admin/.login_conf`` * install packages * configure ``/boot/loader.conf`` * configure network * configure ``pf`` * create ZFS pool ``iocage`` * activate iocage pool ``iocage`` * fetch release * test ``iocage`` sanity. Requirements ^^^^^^^^^^^^ Roles: * `vbotka.freebsd.iocage`_ * `vbotka.freebsd.network`_ * `vbotka.freebsd.pf`_ * `vbotka.freebsd.postinstall`_ * `vbotka.freebsd.zfs`_ Notes ^^^^^ * The role `vbotka.freebsd.postinstall`_ is used to: * configure ``/home/admin/.login_conf`` * install packages * configure ``/boot/loader.conf`` .. seealso:: * Forum `pf and bridge`_ * `man if_bridge`_ * `Changing how I use IP address with FreeBSD's vnet`_ ansible.cfg ^^^^^^^^^^^ .. literalinclude:: ansible.cfg :language: ini Inventory iocage.ini ^^^^^^^^^^^^^^^^^^^^ .. literalinclude:: iocage.ini :language: ini group_vars ^^^^^^^^^^ .. literalinclude:: group_vars/all/iocage.yml :language: yaml :caption: host_vars ^^^^^^^^^ .. literalinclude:: host_vars/iocage_04/loader.yml :language: yaml :caption: .. literalinclude:: host_vars/iocage_04/login.yml :language: yaml :caption: .. literalinclude:: host_vars/iocage_04/network.yml :language: yaml :caption: .. literalinclude:: host_vars/iocage_04/packages.yml :language: yaml :caption: .. literalinclude:: host_vars/iocage_04/pf.yml :language: yaml :caption: .. literalinclude:: host_vars/iocage_04/zfs.yml :language: yaml :caption: .. note:: Destroy the GPT tables on the disks you want to create the pool from. For example, :: [iocage_04]# gpart destroy -F ada2 [iocage_04]# gpart destroy -F ada3 Otherwise, you'll see the bellow complains in the dmesg :: GEOM: ada2: the primary GPT table is corrupt or invalid. GEOM: ada2: using the secondary instead -- recovery strongly advised. GEOM: ada3: the primary GPT table is corrupt or invalid. GEOM: ada3: using the secondary instead -- recovery strongly advised. There is no reason for any GPT tables if the whole disks are used by a pool :: [iocage_04]# zpool status iocage pool: iocage state: ONLINE config: NAME STATE READ WRITE CKSUM iocage ONLINE 0 0 0 ada2 ONLINE 0 0 0 ada3 ONLINE 0 0 0 errors: No known data errors .. literalinclude:: host_vars/iocage_04/iocage.yml :language: yaml :caption: Playbooks ^^^^^^^^^ .. literalinclude:: pb-login.yml :language: yaml :caption: .. literalinclude:: pb-packages.yml :language: yaml :caption: .. literalinclude:: pb-loader.yml :language: yaml :caption: .. literalinclude:: pb-network.yml :language: yaml :caption: .. literalinclude:: pb-pf.yml :language: yaml :caption: .. literalinclude:: pb-zfs.yml :language: yaml :caption: .. literalinclude:: pb-iocage.yml :language: yaml :caption: Playbooks' outputs ^^^^^^^^^^^^^^^^^^ Configure /home/admin/.login_conf """"""""""""""""""""""""""""""""" .. code-block:: console (env) > ansible-playbook pb-login.yml -i iocage.ini .. literalinclude:: out/out-01.txt :language: yaml :force: Install packages """""""""""""""" .. code-block:: console (env) > ansible-playbook pb-packages.yml -i iocage.ini .. literalinclude:: out/out-02.txt :language: yaml :force: .. _example_501_loader: Configure /boot/loader.conf """"""""""""""""""""""""""" .. code-block:: console (env) > ansible-playbook pb-loader.yml -i iocage.ini .. literalinclude:: out/out-03.txt :language: yaml :force: .. note:: Reboot if you see this message :: [MESSAGE] Reboot to activate configuration in /boot/loader.conf Configure network """"""""""""""""" .. code-block:: console (env) > ansible-playbook pb-network.yml -i iocage.ini .. literalinclude:: out/out-04.txt :language: yaml :force: Configure pf """""""""""" .. code-block:: console (env) > ansible-playbook pb-pf.yml -i iocage.ini .. literalinclude:: out/out-05.txt :language: yaml :force: Configure ZFS """"""""""""" .. code-block:: console (env) > ansible-playbook pb-zfs.yml -i iocage.ini .. literalinclude:: out/out-06.txt :language: yaml :force: .. seealso:: Module community.general.zpool :ref:`example_400_known_issues`. Activate iocage """"""""""""""" .. code-block:: console (env) > ansible-playbook pb-iocage.yml -i iocage.ini \ -t freebsd_iocage_activate -e freebsd_iocage_activate=true \ -e freebsd_iocage_debug=true .. literalinclude:: out/out-07.txt :language: yaml :force: Fetch release """"""""""""" .. note:: This example is not updated to the current release and serves a demonstration purpose only. .. literalinclude:: out/out-08.txt :language: console Sanity iocage """"""""""""" .. code-block:: console (env) > ansible-playbook pb-iocage.yml -i iocage.ini -t freebsd_iocage_sanity .. literalinclude:: out/out-09.txt :language: yaml :force: All playbooks ^^^^^^^^^^^^^ .. literalinclude:: pb-all.yml :language: yaml :caption: All playbooks output ^^^^^^^^^^^^^^^^^^^^ .. code-block:: console (env) > ANSIBLE_DISPLAY_OK_HOSTS=false ansible-playbook pb-all.yml -i iocage.ini .. literalinclude:: out/out-10.txt :language: yaml :force: .. _vbotka.freebsd.iocage: https://galaxy.ansible.com/ui/repo/published/vbotka/freebsd/content/role/iocage/ .. _vbotka.freebsd.network: https://galaxy.ansible.com/ui/repo/published/vbotka/freebsd/content/role/network/ .. _vbotka.freebsd.pf: https://galaxy.ansible.com/ui/repo/published/vbotka/freebsd/content/role/pf/ .. _vbotka.freebsd.zfs: https://galaxy.ansible.com/ui/repo/published/vbotka/freebsd/content/role/zfs/ .. _vbotka.freebsd.postinstall: https://galaxy.ansible.com/ui/repo/published/vbotka/freebsd/content/role/postinstall/ .. _community.general.zpool: https://docs.ansible.com/ansible/devel/collections/community/general/zpool_module.html .. _pf and bridge: https://forums.freebsd.org/threads/pf-and-bridge-4.77952/ .. _man if_bridge: https://man.freebsd.org/cgi/man.cgi?query=if_bridge .. _Changing how I use IP address with FreeBSD's vnet: https://dan.langille.org/2023/08/14/changing-how-i-use-ip-address-with-freebsds-vnet-so-ipv6-works/