«Не удалось импортировать требуемую библиотеку Python (брандмауэр)», используя Venv с коллекциями Galaxy внутри нееPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 «Не удалось импортировать требуемую библиотеку Python (брандмауэр)», используя Venv с коллекциями Galaxy внутри нее

Сообщение Anonymous »

У меня есть Ansible Playbook, используя роль, которая должна выполнять некоторые основные задачи настройки Linux. /li>
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
Когда я устанавливаю коллекции по всему миру (читать:/usr/share/...), задача работает просто отлично. Но мне нужна автономная среда, которая не сломается, когда кто-то обновляет что-то глобальное. ): < /p>

Код: Выделить всё

- 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
Затем он работает, Но почему? Хост один и тот же, используемые версии Python также идентичны. Это даже применимо к Венвом сейчас, потому что Python в Venv был установлен из того же источника (ISO ISO установка ОС).
также, когда коллекции установлены в /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 ? Это было бы неоптимально. < /P>
Может ли кто-нибудь подтвердить мое предположение? Если это так, можно ли изменить локальный подключение, чтобы вести себя как SSH Connect (например, использовать Python из $ path)?

Подробнее здесь: https://stackoverflow.com/questions/794 ... v-with-gal
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»