ansible-koji/roles/koji_bootstrap/tasks/main.yaml
Rénich Bon Ćirić f14c01da0b
feat: Mejorar la configuración y seguridad de Koji
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.
2025-11-22 11:52:50 -06:00

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"