diff options
| author | Jan Tuomi <jan@jantuomi.fi> | 2026-07-27 13:54:09 +0300 |
|---|---|---|
| committer | Jan Tuomi <jan@jantuomi.fi> | 2026-07-27 13:54:09 +0300 |
| commit | 73202ab15e3ff44678cbb646b69d647441303c55 (patch) | |
| tree | 6526000bf32192350d2d9c8284cf5db5b020955b /roles/host/tasks | |
| parent | b1e6c3bff6c3d71a95b2261a077b22f90b166799 (diff) | |
Restructure after 15.1 update
Diffstat (limited to 'roles/host/tasks')
| -rw-r--r-- | roles/host/tasks/main.yml | 182 | ||||
| -rw-r--r-- | roles/host/tasks/poudriere.yml | 93 | ||||
| -rw-r--r-- | roles/host/tasks/userland.yml | 2 |
3 files changed, 140 insertions, 137 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" diff --git a/roles/host/tasks/poudriere.yml b/roles/host/tasks/poudriere.yml new file mode 100644 index 0000000..83098b7 --- /dev/null +++ b/roles/host/tasks/poudriere.yml @@ -0,0 +1,93 @@ +# 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-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: 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" + +# 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://{{ poudriere_repo_ip }}/packages", + enabled: no + } + dest: /usr/local/etc/pkg/repos/poudriere.conf + owner: root + group: wheel + mode: "0644" diff --git a/roles/host/tasks/userland.yml b/roles/host/tasks/userland.yml index 59de0dd..535b6d5 100644 --- a/roles/host/tasks/userland.yml +++ b/roles/host/tasks/userland.yml @@ -44,7 +44,7 @@ create: true - name: Update userland - shell: "freebsd-update -b /usr/local/jails/templates/{{ userland }}/ fetch install" + shell: "freebsd-update -b /usr/local/jails/templates/{{ userland }}/ --currently-running {{ userland }} fetch install" - name: Disable syslogd lineinfile: |
