В моем случае я монтирую свой 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.)