Тем временем я нашел причину.
Таким образом, Ansible будет обычно генерировать сценарий Python (2.x )для выполнения на удаленной машине с помощью любого метода подключения, настроенного для любого конкретного хоста.
Увы, Python является обязательным условием модуля apt
. Модуль raw
, по-видимому, не имеет этого ограничения, и поэтому его можно использовать для установки предварительных условий, необходимых для запуска задач Ansible на удаленных хостах (), используя команды dpkg
и apt-get
непосредственно на удаленном хосте. система. Кстати, модуль shell
имеет точно такое же ограничение, а модуль raw
— нет. Я хотел бы, чтобы это было упомянуто немного более явно в документации.
В этом случае словарь результатов содержит ключ с именем module_stderr
со следующим значением:module_stderr": "/bin/sh: 1: /usr/bin/python: not found\n
. Сделайте его видимым, увеличив уровень детализации при вызове ansible-playbook
.
Теперь, когда я знаю, что происходит, это предложение из документации модуля raw
имеет гораздо больше смысла:
This module does not require python on the remote system, much like the script module.
Я не нашел этого раньше, потому что инкрементально запускал свой плейбук, поэтому пакет python
уже был установлен, когда я подумал про себя: "Почему бы не использовать модуль apt
?"
# Dont lock yourself out. Allow SSH access to this server
iptables -I INPUT -p tcp -s 192.168.2.3 --dport 22 -j ACCEPT
# Then allow VNC
iptables -I INPUT -p tcp -s 192.168.2.3 --dport 5900 -j ACCEPT
# And finally block anything else
iptables -A INPUT -p tcp ! -s 192.168.2.3 -j DROP