Este commit introduce varias mejoras en los roles de Ansible para Koji: - **Rol koji_hub:** - Se reemplazó `lineinfile` con una plantilla completa para `hub.conf` para mejorar la legibilidad y mantenibilidad. - Se aseguró la instalación del paquete `python3-koji-hub-plugins` para soportar el plugin `echo`. - Se eliminó una tarea `blockinfile` redundante que duplicaba la configuración de la base de datos en `hub.conf`. - Se rehabilitó el plugin `echo` en `hub.conf` después de asegurar su disponibilidad. - **Rol postgresql:** - Se modificó la configuración de `pg_hba.conf` para iterar correctamente sobre todos los hosts en el grupo `kojihub`, asegurando que todas las instancias del hub puedan conectarse a la base de datos. - **Rol dist_git:** - Se implementó el etiquetado persistente de contextos SELinux para los directorios de `dist-git` usando `semanage fcontext` y `restorecon`, asegurando que los contextos persistan tras reetiquetados del sistema de archivos. - **Rol common:** - Se mejoró la seguridad en la generación de claves GPG usando un archivo temporal para el script por lotes, el cual se elimina de forma segura después de la generación de la clave. - **Configuración Global:** - Se introdujo la variable `koji_source_script_path` en `vars/default.yaml` para centralizar la ruta del script `mxos-get-sources.bash`, eliminando rutas hardcodeadas en `kojid_allowed_scms` y las tareas de `kojid`. - **Documentación:** - Se actualizó `docs/instalación.rst` para reflejar los cambios en la configuración de Dist-Git, plugins y variables.
149 lines
7.1 KiB
YAML
149 lines
7.1 KiB
YAML
---
|
|
- name: Add kojira user
|
|
ansible.builtin.command: "sudo -u {{ koji_admin_user }} koji --config={{ koji_hub_admin_user_koji_dir }}/config add-user kojira"
|
|
register: koji_bootstrap_add_user_result
|
|
changed_when: "'User added' in koji_bootstrap_add_user_result.stdout"
|
|
failed_when: "koji_bootstrap_add_user_result.rc != 0 and 'already exists' not in koji_bootstrap_add_user_result.stderr"
|
|
|
|
- name: Grant repo permission to kojira user
|
|
ansible.builtin.command: >
|
|
sudo -u {{ koji_admin_user }} koji
|
|
--config={{ koji_hub_admin_user_koji_dir }}/config
|
|
grant-permission repo kojira
|
|
register: koji_bootstrap_grant_permission_result
|
|
changed_when: "'Permission granted' in koji_bootstrap_grant_permission_result.stdout"
|
|
failed_when: "koji_bootstrap_grant_permission_result.rc != 0 and 'already has permission' not in koji_bootstrap_grant_permission_result.stderr"
|
|
|
|
- name: Create main build tag
|
|
ansible.builtin.command: >
|
|
sudo -u {{ koji_admin_user }} koji
|
|
--config={{ koji_hub_admin_user_koji_dir }}/config
|
|
add-tag --arches x86_64 {{ koji_build_tag }}
|
|
register: koji_bootstrap_add_tag_result
|
|
changed_when: "'Tag created' in koji_bootstrap_add_tag_result.stdout"
|
|
failed_when: "koji_bootstrap_add_tag_result.rc != 0 and 'already exists' not in koji_bootstrap_add_tag_result.stderr"
|
|
|
|
- name: Create x86_64 build tag
|
|
ansible.builtin.command: >
|
|
sudo -u {{ koji_admin_user }} koji
|
|
--config={{ koji_hub_admin_user_koji_dir }}/config
|
|
add-tag --parent {{ koji_build_tag }} --arches x86_64 {{ koji_build_tag }}-build
|
|
register: koji_bootstrap_add_arch_tag_result
|
|
changed_when: "'Tag created' in koji_bootstrap_add_arch_tag_result.stdout"
|
|
failed_when: "koji_bootstrap_add_arch_tag_result.rc != 0 and 'already exists' not in koji_bootstrap_add_arch_tag_result.stderr"
|
|
|
|
- name: Enable automatic build NVR bumping
|
|
ansible.builtin.command: >
|
|
sudo -u {{ koji_admin_user }} koji
|
|
--config={{ koji_hub_admin_user_koji_dir }}/config
|
|
edit-tag --extra autorelease=1 {{ koji_build_tag }}-build
|
|
register: koji_bootstrap_edit_tag_result
|
|
changed_when: "'Tag updated' in koji_bootstrap_edit_tag_result.stdout"
|
|
failed_when: "koji_bootstrap_edit_tag_result.rc != 0 and 'tag not found' not in koji_bootstrap_edit_tag_result.stderr"
|
|
|
|
- name: Create build target
|
|
ansible.builtin.command: >
|
|
sudo -u {{ koji_admin_user }} koji
|
|
--config={{ koji_hub_admin_user_koji_dir }}/config
|
|
add-target {{ koji_build_tag }} {{ koji_build_tag }}-build
|
|
register: koji_bootstrap_add_target_result
|
|
changed_when: "'Target created' in koji_bootstrap_add_target_result.stdout"
|
|
failed_when: "koji_bootstrap_add_target_result.rc != 0 and 'already exists' not in koji_bootstrap_add_target_result.stderr"
|
|
|
|
- name: Add CentOS Stream 10 BaseOS external repository
|
|
ansible.builtin.command: >
|
|
sudo -u {{ koji_admin_user }} koji
|
|
--config={{ koji_hub_admin_user_koji_dir }}/config
|
|
add-external-repo -t {{ koji_build_tag }}-build centos-stream-10-baseos
|
|
https://mirror.stream.centos.org/10-stream/BaseOS/x86_64/os/
|
|
register: koji_bootstrap_add_baseos_repo_result
|
|
changed_when: "'External repository created' in koji_bootstrap_add_baseos_repo_result.stdout"
|
|
failed_when: "koji_bootstrap_add_baseos_repo_result.rc != 0 and 'already exists' not in koji_bootstrap_add_baseos_repo_result.stderr"
|
|
|
|
- name: Add CentOS Stream 10 AppStream external repository
|
|
ansible.builtin.command: >
|
|
sudo -u {{ koji_admin_user }} koji
|
|
--config={{ koji_hub_admin_user_koji_dir }}/config
|
|
add-external-repo -t {{ koji_build_tag }}-build centos-stream-10-appstream
|
|
https://mirror.stream.centos.org/10-stream/AppStream/x86_64/os/
|
|
register: koji_bootstrap_add_appstream_repo_result
|
|
changed_when: "'External repository created' in koji_bootstrap_add_appstream_repo_result.stdout"
|
|
failed_when: "koji_bootstrap_add_appstream_repo_result.rc != 0 and 'already exists' not in koji_bootstrap_add_appstream_repo_result.stderr"
|
|
|
|
- name: Add CentOS Stream 10 EPEL external repository
|
|
ansible.builtin.command: >
|
|
sudo -u {{ koji_admin_user }} koji
|
|
--config={{ koji_hub_admin_user_koji_dir }}/config
|
|
add-external-repo -t {{ koji_build_tag }}-build centos-stream-10-epel
|
|
https://mirror.facebook.net/fedora/epel/10/Everything/x86_64/
|
|
register: koji_bootstrap_add_epel_repo_result
|
|
changed_when: "'External repository created' in koji_bootstrap_add_epel_repo_result.stdout"
|
|
failed_when: "koji_bootstrap_add_epel_repo_result.rc != 0 and 'already exists' not in koji_bootstrap_add_epel_repo_result.stderr"
|
|
|
|
- name: Download repomd.xml from CentOS Stream 10 build repo
|
|
ansible.builtin.get_url:
|
|
url: https://kojihub.stream.centos.org/kojifiles/repos/c10s-build/latest/x86_64/repodata/repomd.xml
|
|
dest: /tmp/c10s-repomd.xml
|
|
|
|
- name: Extract comps.xml path
|
|
ansible.builtin.shell: grep 'comps.xml"' /tmp/c10s-repomd.xml | head -n 1 | sed -e 's/.*href="//' -e 's/".*//'
|
|
register: comps_path
|
|
changed_when: false
|
|
|
|
- name: Download comps.xml
|
|
ansible.builtin.get_url:
|
|
url: "https://kojihub.stream.centos.org/kojifiles/repos/c10s-build/latest/x86_64/{{ comps_path.stdout }}"
|
|
dest: /tmp/c10s-comps.xml
|
|
|
|
- name: Import comps groups
|
|
ansible.builtin.command: >
|
|
sudo -u {{ koji_admin_user }} koji
|
|
--config={{ koji_hub_admin_user_koji_dir }}/config
|
|
import-comps /tmp/c10s-comps.xml {{ koji_build_tag }}-build
|
|
register: koji_bootstrap_import_comps_result
|
|
changed_when: "'Groups imported' in koji_bootstrap_import_comps_result.stdout"
|
|
|
|
- name: Add Koji builder hosts
|
|
ansible.builtin.include_tasks: add_host.yaml
|
|
loop: "{{ groups['kojibuilders'] }}"
|
|
|
|
- name: Restart httpd on kojihub to apply Koji changes
|
|
ansible.builtin.service:
|
|
name: httpd
|
|
state: restarted
|
|
delegate_to: "{{ groups['kojihub'][0] }}"
|
|
run_once: true
|
|
|
|
- name: Add Koji builder hosts to createrepo channel
|
|
ansible.builtin.command: >
|
|
sudo -u {{ koji_admin_user }} koji
|
|
--config={{ koji_hub_admin_user_koji_dir }}/config
|
|
add-host-to-channel {{ item }} createrepo
|
|
loop: "{{ groups['kojibuilders'] }}"
|
|
register: koji_bootstrap_add_host_to_channel_result
|
|
changed_when: "'Host added to channel' in koji_bootstrap_add_host_to_channel_result.stdout"
|
|
failed_when: "koji_bootstrap_add_host_to_channel_result.rc != 0 and 'is already subscribed' not in koji_bootstrap_add_host_to_channel_result.stderr"
|
|
|
|
- name: Set Koji builder host capacity
|
|
ansible.builtin.command: >
|
|
sudo -u {{ koji_admin_user }} koji
|
|
--config={{ koji_hub_admin_user_koji_dir }}/config
|
|
edit-host --capacity={{ kojid_max_jobs }} {{ item }}
|
|
loop: "{{ groups['kojibuilders'] }}"
|
|
changed_when: true
|
|
|
|
- name: Regenerate repo
|
|
ansible.builtin.command: >
|
|
sudo -u {{ koji_admin_user }} koji
|
|
--config={{ koji_hub_admin_user_koji_dir }}/config
|
|
regen-repo {{ koji_build_tag }}
|
|
changed_when: false
|
|
|
|
- name: Create builder user
|
|
ansible.builtin.command: >
|
|
sudo -u {{ koji_admin_user }} koji
|
|
--config={{ koji_hub_admin_user_koji_dir }}/config
|
|
add-user builder
|
|
register: koji_bootstrap_add_builder_user_result
|
|
changed_when: "'User added' in koji_bootstrap_add_builder_user_result.stdout"
|
|
failed_when: "koji_bootstrap_add_builder_user_result.rc != 0 and 'already exists' not in koji_bootstrap_add_builder_user_result.stderr"
|