--- # ============================================================================ # 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: root group: root mode: "0755" - name: Find ansible-galaxy binary on host ansible.builtin.shell: cmd: "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.command: cmd: > {{ ansible_galaxy_bin.stdout }} collection install {{ item.name }}{% if item.version is defined %}:{{ item.version }}{% endif %} -p {{ semaphore_collections_dir }} --force loop: "{{ semaphore_ansible_collections }}" loop_control: label: "{{ item.name }}" changed_when: true