Host dir was owned by root (0755), blocking writes from uid=1001 inside the container. Set owner to semaphore_container_uid=1001 so podman exec can write collections into the bind-mount.
39 lines
1.5 KiB
YAML
39 lines
1.5 KiB
YAML
---
|
|
# ============================================================================
|
|
# Install Ansible collections into a host-side directory that is
|
|
# bind-mounted into the Semaphore container at the Ansible collections
|
|
# path (/home/semaphore/.ansible/collections).
|
|
#
|
|
# This persists collections across container restarts/rebuilds without
|
|
# baking them into the image. Add new collections to
|
|
# semaphore_ansible_collections in defaults/main.yml.
|
|
# ============================================================================
|
|
|
|
- name: Ensure Ansible collections directory exists on host
|
|
ansible.builtin.file:
|
|
path: "{{ semaphore_collections_dir }}"
|
|
state: directory
|
|
owner: "{{ semaphore_container_uid }}"
|
|
group: root
|
|
mode: "0755"
|
|
|
|
- name: Find ansible-galaxy binary inside Semaphore container
|
|
ansible.builtin.shell:
|
|
cmd: "podman exec {{ semaphore_container_name }} find /opt/semaphore/apps/ansible -name ansible-galaxy -type f | sort -V | tail -1"
|
|
register: ansible_galaxy_bin
|
|
changed_when: false
|
|
failed_when: ansible_galaxy_bin.stdout == ""
|
|
|
|
- name: Install Ansible collections into host collections directory
|
|
ansible.builtin.shell:
|
|
cmd: >
|
|
podman exec {{ semaphore_container_name }}
|
|
{{ ansible_galaxy_bin.stdout }} collection install
|
|
{{ item.name }}{% if item.version is defined %}:{{ item.version }}{% endif %}
|
|
-p /opt/ansible-collections
|
|
--force
|
|
loop: "{{ semaphore_ansible_collections }}"
|
|
loop_control:
|
|
label: "{{ item.name }}"
|
|
changed_when: true
|