diff options
Diffstat (limited to 'roles/host/tasks/main.yml')
| -rw-r--r-- | roles/host/tasks/main.yml | 182 |
1 files changed, 46 insertions, 136 deletions
diff --git a/roles/host/tasks/main.yml b/roles/host/tasks/main.yml index 4bcdfdd..86e33cf 100644 --- a/roles/host/tasks/main.yml +++ b/roles/host/tasks/main.yml @@ -14,7 +14,7 @@ - name: Set FreeBSD version fact set_fact: - poudriere_freebsd_version: "{{ _freebsd_version_result.stdout }}" + poudriere_freebsd_version: "{{ _freebsd_version_result.stdout | regex_replace('-p[0-9]+$', '') }}" - name: Disable resolvconf copy: @@ -110,13 +110,6 @@ group: wheel mode: "0755" -- name: Deploy poudriere-start-build script - template: - src: usr_local_bin_poudriere_start_build.sh.j2 - dest: /usr/local/bin/poudriere-start-build - owner: root - group: wheel - mode: "0755" - name: Check if quarterly ports tree exists stat: @@ -135,113 +128,6 @@ - name: Download custom ports overlay shell: /usr/local/bin/update-ports custom when: _custom_exists.stdout == "" - -# Poudriere setup -- name: Deploy poudriere.conf - template: - src: usr_local_etc_poudriere.conf.j2 - dest: /usr/local/etc/poudriere.conf - owner: root - group: wheel - mode: "0644" - vars: - pkg_abi: "FreeBSD:{{ poudriere_freebsd_version.split('.')[0] }}:{{ arch.split('/')[1] }}" - -- name: Create distfiles directory - file: - path: /usr/local/poudriere/distfiles - state: directory - owner: root - group: wheel - mode: "0755" - -- name: Check if poudriere jail exists - shell: poudriere jail -l -n | grep -q "^poudriere_build$" - failed_when: false - changed_when: false - register: _poudriere_jail_exists - -- name: Create poudriere jail - shell: poudriere jail -c -j poudriere_build -v {{ poudriere_freebsd_version }} -m tar=/usr/local/jails/media/{{ poudriere_freebsd_version }}-base.txz - when: _poudriere_jail_exists.rc != 0 - -- name: Check if poudriere quarterly ports tree is registered - shell: poudriere ports -l -n | grep -q "^quarterly$" - failed_when: false - changed_when: false - register: _poudriere_quarterly_exists - -- name: Register quarterly ports tree with poudriere - shell: poudriere ports -c -p quarterly -m null -M /usr/ports/quarterly - when: _poudriere_quarterly_exists.rc != 0 - -- name: Check if poudriere custom overlay is registered - shell: poudriere ports -l -n | grep -q "^custom$" - failed_when: false - changed_when: false - register: _poudriere_custom_exists - -- name: Register custom overlay with poudriere - shell: poudriere ports -c -p custom -m null -M /usr/ports/custom - when: _poudriere_custom_exists.rc != 0 - -- name: Deploy poudriere package list - template: - src: usr_local_etc_poudriere_pkglist.j2 - dest: /usr/local/etc/poudriere-pkglist - owner: root - group: wheel - mode: "0644" - -- name: Deploy poudriere build make.conf - template: - src: poudriere_build_make.conf.j2 - dest: /usr/local/etc/poudriere.d/poudriere_build-make.conf - owner: root - group: wheel - mode: "0644" - -# Repo validation gate -- name: Check if poudriere repo has packages - stat: - path: "/usr/local/poudriere/data/packages/poudriere_build-quarterly/meta.pkg" - register: _poudriere_repo - -- name: "*** POUDRIERE REPO NOT READY ***" - fail: - msg: | - ════════════════════════════════════════════════════════════════ - POUDRIERE REPOSITORY NOT READY - ════════════════════════════════════════════════════════════════ - The local package repository has not been built yet. - Run the following command on the host to build packages: - - poudriere bulk -j poudriere_build -p quarterly -O custom -f /usr/local/etc/poudriere-pkglist - - Then re-run this playbook. - ════════════════════════════════════════════════════════════════ - when: not _poudriere_repo.stat.exists - -# Configure local repo -- name: Create pkg repos directory - file: - path: /usr/local/etc/pkg/repos - state: directory - owner: root - group: wheel - mode: "0755" - -- name: Deploy local poudriere repo config - copy: - content: | - poudriere: { - url: "http://{{ jail_lan_cidr | ipv4_nth(21 + jail_lan_offset | int) }}/packages", - enabled: no - } - dest: /usr/local/etc/pkg/repos/poudriere.conf - owner: root - group: wheel - mode: "0644" - name: Discover jail directories find: paths: "{{ playbook_dir }}/roles/jails" @@ -284,27 +170,6 @@ loop_control: label: "{{ item.name }}" -- name: Install custom packages from poudriere - shell: "pkg install -y -r poudriere pylogsentinel" - register: _custom_pkg - changed_when: "'Number of packages to be installed' in _custom_pkg.stdout" - -- name: Deploy pylogsentinel.conf - template: - src: usr_local_etc_pylogsentinel.conf.j2 - dest: /usr/local/etc/pylogsentinel.conf - owner: root - group: wheel - mode: "0644" - -- name: Deploy pylogsentinel-batch-email.sh - template: - src: usr_local_bin_pylogsentinel-batch-email.sh.j2 - dest: /usr/local/bin/pylogsentinel-batch-email.sh - owner: root - group: wheel - mode: "0755" - - name: Create storage group group: name: storage @@ -372,3 +237,48 @@ group: wheel mode: "0644" notify: Restart cron + +- name: Set up poudriere + include_tasks: poudriere.yml + +# Repo validation gate +- name: Check if poudriere repo has packages + stat: + path: "/usr/local/poudriere/data/packages/poudriere_build-quarterly/meta" + register: _poudriere_repo + +- name: "*** POUDRIERE REPO NOT READY ***" + fail: + msg: | + ════════════════════════════════════════════════════════════════ + POUDRIERE REPOSITORY NOT READY + ════════════════════════════════════════════════════════════════ + The local package repository has not been built yet. + Run the following command on the host to build packages: + + poudriere bulk -j poudriere_build -p quarterly -O custom -f /usr/local/etc/poudriere-pkglist + + Then re-run this playbook. + ════════════════════════════════════════════════════════════════ + when: not _poudriere_repo.stat.exists + +- name: Install custom packages from poudriere + shell: "pkg install -y -r poudriere pylogsentinel" + register: _custom_pkg + changed_when: "'Number of packages to be installed' in _custom_pkg.stdout" + +- name: Deploy pylogsentinel.conf + template: + src: usr_local_etc_pylogsentinel.conf.j2 + dest: /usr/local/etc/pylogsentinel.conf + owner: root + group: wheel + mode: "0644" + +- name: Deploy pylogsentinel-batch-email.sh + template: + src: usr_local_bin_pylogsentinel-batch-email.sh.j2 + dest: /usr/local/bin/pylogsentinel-batch-email.sh + owner: root + group: wheel + mode: "0755" |
