Ansible 2.14 < /li>
anansible.posix 1.5.4 (жесткая зависимость) < /li>
Python 3.9 < /li>
Ансибильный контроллер и цель одинаковы; Соединение локально. < /li>
< /ul>
Все работало нормально, пока я не начал использовать виртуальную среду Python, с целью инкапсулировать все зависимости, включая Ansible-Galaxy Коллекции. Я установил ansible_collections_path =/home/ansible/ansible-oracle/.venv/lib/collections , чтобы указать на Venv.
В тот момент, когда я удалил все эти коллекции из/usr. /share , одна часть этой пейзажиры выполнялась с следующей ошибкой:
Код: Выделить всё
fatal: [host01]: FAILED! => changed=false
msg: Failed to import the required Python library (firewall) on host01's Python /home/ansible/ansible-oracle/.venv/bin/python3.9. Please read the module documentation and install it in the appropriate location. If the required library is installed, but Ansible is using the wrong Python interpreter, please consult the documentation on ansible_python_interpreter. Version 0.2.11 or newer required (0.3.9 or newer for offline operations)
< /code>
Странная вещь в том, что в The Playbook используются другие коллекции галактик (например, сообщество. General), которые отлично справляются. Единственная задача, которая разбивается, - это то, что с ansible.posix.firewalld
Playbook настолько проста, как это:
Код: Выделить всё
- hosts: "{{ hostgroup | default('all') }}"
become: yes
roles:
- basic-linux
< /code>
А вот задача, вызывая ошибку: < /p>
- name: allow connections on oracle database default port
ansible.posix.firewalld:
port: 1521/tcp
permanent: true
immediate: true
state: enabled
< /code>
Проверьте возможное несоответствие версии: < /p>
$ ansible --version | grep "python version"
python version = 3.9.19 (main, Aug 23 2024, 00:00:00) [GCC 11.5.0 20240719 (Red Hat 11.5.0-2.0.1)] (/usr/bin/python3)
$ python --version
Python 3.9.19
$ /usr/bin/python --version
Python 3.9.19
Код: Выделить всё
- name: allow connections on oracle database default port
ansible.posix.firewalld:
port: 1521/tcp
permanent: true
immediate: true
state: enabled
vars:
ansible_python_interpreter: /usr/bin/python
также, когда коллекции установлены в /usr /share, они все равно будут использовать Та же версия Python, или нет? И почему только ansible.posix.firewalld затронут, но не сообщество. General.*? Я рассмотрел то, что мог найти, но никогда не было подходящего объяснения моей конкретной проблемы. То есть: момент, который ansible_python_interpreter:/usr/bin/python устанавливается вместо python3 по умолчанию, он работает.
:
Я предполагаю, что это связано с тем, что соединение хоста определяется как «локальный»: < /p>
---
all:
children:
test:
hosts:
host01:
ansible_host: local
ansible_connection: local
< /code>
, когда я меняю подключение к SSH, оно также работает без указанной ошибки. Настройки используются во время работы в контексте target ? Это было бы неоптимально.
может кто-нибудь подтвердить мое предположение?
Подробнее здесь: https://stackoverflow.com/questions/794 ... v-with-gal