打包机&x2019;s ansible local不将封隔器变量作为额外变量获取

打包机&x2019;s ansible local不将封隔器变量作为额外变量获取,ansible,packer,Ansible,Packer,我有一个在azure上创建图像的打包代码。我正在使用ansible local provisioner安装所需的工具。我执行下面的命令 packer build -force -var azure_subscription_id=**** -var azure_tennant_id=**** -var azure_application_id=**** -var azure_application_password=**** -var nexus_user=**** -var nexus_pas

我有一个在azure上创建图像的打包代码。我正在使用ansible local provisioner安装所需的工具。我执行下面的命令

packer build -force -var azure_subscription_id=**** -var azure_tennant_id=**** -var azure_application_id=**** -var azure_application_password=**** -var nexus_user=**** -var nexus_password=**** build_packer_azure_image.json
但是,ansible本地供应器作为打包供应器的一部分执行以下命令。我需要两个变量nexus_username和nexus_password来继承上面packer命令中的值

cd/tmp/packer provisioner ansible local/5b04201f-b988-90e6-b769-24822FFC533&&ansible\u FORCE\u COLOR=1 PYTHONUNBUFFERED=1 ansible playbook/tmp/packer provisioner ansible local/5b04201f-b988-90e6-b769-24822FFC533/provision.yml——额外变量“打包机构建器”\u name=azure arm打包机\u builder\u type=azure arm打包机\u http\u addr=”--额外变量“nexus”\u username=nexus\u password='-c local-i/tmp/packer provisioner ansible local/5b04201f-b988-90e6-b769-2482FFC533/packer-provisioner-ansible-local15897121

可以看出,变量没有得到填充。我将示例代码片段放在packer文件中以供参考

封隔器变量配置: 封隔器供应器配置:
请帮我解决问题。

问题已经解决。变量的位置需要在variables部分进行交换。我还尝试保持左侧和右侧变量的名称相同。它起作用了

Try
[“--extra-vars”,“nexus\u用户名={{{user`ansible\u nexus\u用户`}}}nexus\u密码={{{user`ansible\u nexus\u密码`}]”
在打包程序模板的ansible provisioner部分,而不是您当前的格式。如果您在Windows上,我认为您需要单引号引用每个k/v对
-var'nexus_password=***'
。我正在CentOS 7上执行该命令。最终目标也是通过Ubuntu上的Jenkins来执行。在这两种情况下,行为都是错误的same@Matt舒查德:我在上面的评论中使用了这个片段。不幸的是,它仍然没有在provisionerWell中获取变量值,但我所写的是根据文档的正确语法。
{
"variables": {
    "azure_subscription_id": "{{env `azure_subscription_id`}}",
    "azure_tennant_id": "{{env `azure_tennant_id`}}",
    "azure_application_id": "{{env `azure_application_id`}}",
    "azure_application_password": "{{env `azure_application_password`}}",
    "ansible_nexus_user": "{{env `nexus_user`}}",
    "ansible_nexus_password": "{{env `nexus_password`}}"
}
"provisioners": [
    {
    "type": "shell",
    "scripts": [
         "../scripts/install_ansible.sh"
      ]
    },
    {
    "type": "ansible-local",
    "playbook_dir": "../workstation-playbook",
    "playbook_file": "../workstation-playbook/provision.yml",
    "extra_arguments": [ "--extra-vars 'nexus_username={{user `ansible_nexus_user`}} nexus_password={{user `ansible_nexus_password`}}'" ]
    },
    {
     "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} sudo -E sh '{{ .Path }}'",
     "inline": [
       "/usr/sbin/waagent -force -deprovision+user && export HISTSIZE=0 && sync"
     ],
     "inline_shebang": "/bin/sh -x",
     "type": "shell"
   }]
}