我有一个使用 Packer 构建 VM 的工具,而 Packer 又调用 Ansible(在本地模式下)来完成繁重的工作。
我希望能够为 Packer 提供参数(知道了),它作为额外的变量传递给 Ansible。
我可以传递一个外部变量文件,也可以传递一个简单的变量,如下例所示。
ansible-playbook -v -c local something.yml --extra-vars "deploy_loc=custom"
没关系,但我确实需要传递更复杂的变量数组,例如下面的示例。
我尝试了多种格式,例如下面的格式,通常会出现某种分隔符错误。
ansible-playbook -v -c local something.yml --extra-vars 'deploy_loc=custom deploy_scen: [custom][ip=1.2.34]}'
角色变量文件
# Which location
deploy_loc: 'external-dhcp'
# location defaults
deploy_scen:
custom:
ipv4: yes
net_type: dhcp
ip: '1.1.1.1'
prefix: '24'
gw: '1.1.1.1.254'
host: 'custom'
domain: 'domain.com'
dns1: '1.1.1.2'
standard-eng:
ipv4: yes
net_type: none
ip: '12.12.12.5'
prefix: '24'
external-dhcp:
ipv4: yes
net_type: dhcp