Как добавить один или несколько путей к пути поиска Ansible (для файлов или шаблонов)?
В моем случае я монтирую свой код Ansible внутри контейнера Docker под /ansible/playbook/
, В этом каталоге вы увидите roles
, inventories
Я хотел бы смонтировать другой каталог, который содержит некоторые файлы RPM.
В Ansible у меня есть этот код:
---
- name: copy ZooKeeper rpm file
copy:
src: zookeeper-3.4.13-1.x86_64.rpm
dest: /tmp
- name: install ZooKeeper rpm package
yum:
name: /tmp/zookeeper-3.4.13-1.x86_64.rpm
state: present
Проблема в том, что ZooKeeper не существует ни в одном из путей поиска по умолчанию:
Could not find or access 'zookeeper-3.4.13-1.x86_64.rpm'
Searched in:
/ansible/playbook/roles/kafka/files/zookeeper-3.4.13-1.x86_64.rpm
/ansible/playbook/roles/kafka/zookeeper-3.4.13-1.x86_64.rpm
/ansible/playbook/roles/kafka/tasks/files/zookeeper-3.4.13-1.x86_64.rpm
/ansible/playbook/roles/kafka/tasks/zookeeper-3.4.13-1.x86_64.rpm
/ansible/playbook/files/zookeeper-3.4.13-1.x86_64.rpm
/ansible/playbook/zookeeper-3.4.13-1.x86_64.rpm
Как я могу добавить дополнительные пути поиска в этот список, например:
/ansible/rpms/zookeeper-3.4.13-1.x86_64.rpm//
Я не хочу жестко закодировать абсолютные пути (если это работает) в коде Ansible. Я хотел бы предоставить что-то вроде: ANSIBLE_EXTRA_SEARCH_PATH
,
Как я могу это сделать?
PS: я не могу создать символическую ссылку на мой каталог RPM внутри уже смонтированного /ansible/playbook
потому что Docker увидит его и плохую ссылку (не сможет прочитать его, потому что целевой каталог, содержащий RPM-файлы, не является частью файловой системы контейнера Docker.)
1 ответ
Вариант будет
- поместите число оборотов в any_path
- ссылка any_path на /ansible/playbook/rpms
- используйте src: rpms/zookeeper-3.4.13-1.x86_64.rpm
Вы можете использовать поиск со списком путей и first_found
запрос:
- name: install ZooKeeper rpm package
yum:
name: "{{ item }}/zookeeper-3.4.13-1.x86_64.rpm"
state: present
loop: "{{ query('first_found', { 'paths': mypaths}) }}"
vars:
mypaths: ['/tmp', '/opt/other_location/somedir/', '/rpms']
Дополнительная информация на https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html.