在使用’ansible-local’ provisioner与Docker容器时出现错误

84次阅读
没有评论

问题描述

在使用HashiCorp的Packer中运行’ansible-local’ provisioner与Docker构建器时遇到了错误。
用户的模板(template.json)如下所示:

{
  "builders": [
    {
      "type": "docker",
      "image": "ubuntu",
      "commit": "true"
    }
  ],
  "provisioners": [
    {
      "type": "shell",
      "inline": ["sudo apt-get update"]
    },
    {
      "type": "shell",
      "script": "setup_ansible.sh"
    },
    {
      "type": "ansible-local",
      "playbook_file": "./kubeadm.yml"
    }
  ]
}

遇到的错误如下所示:

docker: Executing Ansible: cd /tmp/packer-provisioner-ansible-local/5a8f3bad-8413-16c3-b255-6a06a9076ef3 && ANSIBLE_FORCE_COLOR=1 PYTHONUNBUFFERED=1 ansible-playbook /tmp/packer-provisioner-ansible-local/5a8f3bad-8413-16c3-b255-6a06a9076ef3/kubeadm.yml --extra-vars "packer_build_name=docker packer_builder_type=docker packer_http_addr="  -c local -i /tmp/packer-provisioner-ansible-local/5a8f3bad-8413-16c3-b255-6a06a9076ef3/packer-provisioner-ansible-local135505282docker: ERROR! the playbook: packer_builder_type=docker could not be found

解决方案

方案1

根据GitHub上的问题页面,在HashiCorp的Packer版本1.2.0中存在一些错误。你可以考虑将版本降级或升级至1.2.1版本,评论中确认已部署的修复是有效的。
如果你决定升级或降级Packer版本,请确保在进行任何更改之前备份你的项目和配置文件。

方案2

如果你不想改变Packer版本,你还可以尝试以下方法来解决问题:
1. 检查Ansible Playbook路径: 确保在provisioners部分中的ansible-local provisioner中指定的playbook_file路径是正确的。相对路径应该相对于Packer模板文件所在的目录。
2. 检查playbook文件: 确保kubeadm.yml文件存在于指定的路径中,并且没有拼写错误。
3. 检查依赖项: 如果setup_ansible.sh脚本在Ansible playbook运行之前需要执行,请确保脚本正确运行并设置了必要的依赖项。
4. 尝试绝对路径: 如果相对路径存在问题,尝试使用绝对路径来指定Ansible Playbook的位置。

无论你选择哪种解决方案,都建议在进行任何更改之前先做好适当的备份,并根据需要进行测试,以确保问题得到解决。

请注意,以上方案可能会因为版本差异或其他因素而有所不同。在实施之前,请务必阅读相关文档并做好必要的准备。

如果你需要更详细的帮助,可以查阅HashiCorp的官方文档或社区论坛,以获取更多关于Packer和Ansible的技术支持和建议。

希望这些解决方案能够帮助你解决问题。如果你在实施过程中遇到任何困难或问题,欢迎随时提问。祝你成功!

正文完