我已经设置了一个新的 salt master,并试图通过模板自动部署具有静态 IP(没有 dhcp 可用)的新 VM。
我可以使用我的模板通过云配置文件部署 VM调用或通过 salt-api,以便我可以从其他应用程序启动。
我试图将 IP 作为动态支柱数据传递到状态,这可以配置 vm 主机名,但由于配置文件 conf 不接受支柱变量,因此无法看到如何将 IP 传递到配置文件中。
salt-call state.apply vm-new pillar='{"hostname": "salt-test", "ip": "172.0.0.11"}'
vm-new.sls
{{ pillar['hostname'] }}:
cloud.profile:
- name: {{ pillar['hostname'] }}
- profile: centos7
cloud.profiles.d/centos7.conf
...
devices:
network:
Network adapter 1:
name: 'VM Network'
switch_type: standard
ip: 172.0.0.90
subnet_mask: 255.255.255.0
gateway: [172.0.0.1]
...
然后我尝试查看使用地图文件,但尝试传递支柱数据似乎不起作用。
# salt-cloud -m cloud.maps.d/centos7.map pillar='{"hostname": 'salt-test', "ip": "172.0.0.11"}'
[ERROR ] Rendering exception occurred: Jinja variable 'salt.utils.context.NamespacedDictWrapper object' has no attribute 'hostname'
[ERROR ] Rendering map cloud.maps.d/centos7.map failed, render error:
Jinja variable 'salt.utils.context.NamespacedDictWrapper object' has no attribute 'hostname'
No nodes defined in this map
centos7.map
centos7:
- {{ pillar['hostname'] }}:
devices:
network:
Network adapter 1:
ip: {{ pillar['ip'] }}
我花了一段时间研究文档和 github 问题,但是有几个人试图做类似的事情,但地图文件中的硬编码 IP 解决了他们的问题,是否可以做我想做的事情?关于下一步看哪里的任何建议/指示?