--- # Copyright (c) Ansible Project # GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) # SPDX-License-Identifier: GPL-3.0-or-later # # Instructions for setting up a jail # https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/jails-ezjail.html # - name: Setup cloned interfaces lineinfile: dest: /etc/rc.conf regexp: ^cloned_interfaces=lo1 line: cloned_interfaces=lo1 - name: Activate cloned interfaces command: "service netif cloneup" changed_when: false - name: Add nat rule for cloned interfaces copy: dest: /etc/pf.conf content: | nat on {{ ansible_default_ipv4.interface }} from 127.0.1.0/24 -> {{ ansible_default_ipv4.interface }}:0 validate: "pfctl -nf %s" - name: Start pf firewall service: name: pf state: started enabled: yes - name: Install ezjail pkgng: name: ezjail - name: Configure ezjail to use http when: ansible_distribution_version is version('11.01', '>') lineinfile: dest: /usr/local/etc/ezjail.conf regexp: ^ezjail_ftphost line: ezjail_ftphost=http://ftp.freebsd.org - name: Configure ezjail to use archive for old freebsd releases when: ansible_distribution_version is version('11.01', '<=') lineinfile: dest: /usr/local/etc/ezjail.conf regexp: ^ezjail_ftphost line: ezjail_ftphost=http://ftp-archive.freebsd.org - name: Start ezjail ignore_errors: yes service: name: ezjail state: started enabled: yes - name: Redirect logs depending on verbosity set_fact: pkgng_jail_log_redirect: "2>&1 | tee -a /tmp/ezjail.log {{ '> /dev/null' if ansible_verbosity < 2 else '' }}" - name: Has ezjail register: ezjail_base_jail stat: path: /usr/jails/basejail - name: Setup ezjail base when: not ezjail_base_jail.stat.exists shell: "ezjail-admin install {{ pkgng_jail_log_redirect }}" changed_when: false - name: Has testjail register: ezjail_test_jail stat: path: /usr/jails/testjail - name: Create testjail when: not ezjail_test_jail.stat.exists shell: "ezjail-admin create testjail 'lo1|127.0.1.1' {{ pkgng_jail_log_redirect }}" changed_when: false - name: Configure testjail to use Cloudflare DNS lineinfile: dest: /usr/jails/testjail/etc/resolv.conf regexp: "^nameserver[[:blank:]]+{{ item }}$" line: "nameserver {{ item }}" create: yes loop: - "1.1.1.1" - "1.0.0.1" - name: Is testjail running shell: "jls | grep testjail" changed_when: false failed_when: false register: is_testjail_up - name: Start testjail when: is_testjail_up.rc == 1 command: "ezjail-admin start testjail"