Возможно с упаковщиком
Я пытаюсь заставить упаковщиков ansible Provider использовать имя пользователя и пароль, но конфигурация с ansible продолжает останавливаться, потому что этап аутентификации завершается неудачно.
Вот мой скрипт Packer Ansible.
{
"type": "ansible",
"user": "pi",
"playbook_file": "playbook.yml",
"extra_arguments": [
"--extra-vars",
"ansible_python_interpreter=/usr/bin/python3",
"--extra-vars",
"ansible_user=pi",
"--extra-vars",
"ansible_ssh_pass=raspberry",
"-vvv"
]
}
Я полная потеря, почему это не работает.
Выход, где он застревает, выглядит следующим образом.
armpi: ==> arm-image: Executing Ansible: ansible-playbook --extra-vars packer_build_name=arm-image packer_builder_type=arm-image -i /tmp/packer-provisioner-ansible288108417 playbook.yml -e ansible_ssh_private_key_file=/tmp/ansible-key528332842 --extra-vars ansible_python_interpreter=/usr/bin/python3 --extra-vars ansible_ssh_user=pi --extra-vars ansible_ssh_pass=raspberry -vvv
похоже, что он пытается использовать ansible_ssh_private_key_file=/tmp/ansible-key528332842
но я не хочу использовать это, я действительно хочу, чтобы он вошел с именем пользователя и паролем.
1 ответ
С вершины ansible
Поставочная документация:
Поставщик ansible Packer запускает книги воспроизведения Ansible. Он динамически создает файл инвентаризации Ansible, настроенный для использования SSH, запускает сервер SSH, запускает ansible-playbook и маршалы Ansible воспроизводят через сервер SSH на машину, предоставляемую Packer.
Примечание: любой
remote_user
определенные в задачах будут игнорироваться. Packer всегда будет связываться с пользователем, указанным в конфиге json для этого провайдера.
То, что вы пытаетесь сделать, невозможно с ansible
Provisioner. Но вы можете достичь того, что вы пытаетесь сделать, запустив ansible с помощью shell-local
Provisioner.
(Чтобы получить IP-адрес виртуальной машины для использования в инвентаризации Ansible, вы можете следовать общей схеме, которую я рекомендую в этом посте.)