我试图让包装商ansible供应商使用用户名和密码,但是由于认证步骤失败,具有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
,但我不希望它使用我真的只是希望它使用用户名和密码登录。
答案 0 :(得分:4)
从ansible
预配器文档的顶部开始:
ansible Packer设置程序运行Ansible剧本。动态地 创建一个配置为使用SSH的Ansible清单文件,运行SSH 服务器,执行ansible-playbook,并通过 SSH服务器连接到Packer所配置的计算机。
注意:任务中定义的任何
remote_user
都将被忽略。打包机将 为此总是与json配置中给定的用户连接 供应商。
ansible
预配器无法实现您要执行的操作。但是您可以通过使用shell-local
预配器运行ansible来实现您尝试做的事情。
(要获取在Ansible清单中使用的VM的IP地址,您可以遵循我在this post中提出的一般模式。)