我已经设置了一个新的salt主机,并尝试使用模板中的静态I(没有可用的dhcp )自动部署新虚拟机。
我可以通过定义了默认IP的云配置文件使用我的模板来部署虚拟机,但我找不到一种方法来覆盖IP地址,以便在部署时动态使用,我希望将主机名/ip传递到cli调用中,或者通过salt-api,这样我就可以从其他应用程序启动。
我尝试将IP作为动态的支柱数据传递到一个状态,这会配置虚拟机主机名ok,但无法看到如何将IP传递到配置文件中,因为配置文件conf不接受支柱变量。
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: centos7cloud.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 mapcentos7.map
centos7:
- {{ pillar['hostname'] }}:
devices:
network:
Network adapter 1:
ip: {{ pillar['ip'] }}我花了一段时间挖掘文档和github的问题,但有几个人试图做类似的事情,但在地图文件中硬编码的in解决了他们的问题,有没有可能做我想做的事情?对于下一步该往哪里看,有什么建议/建议吗?
https://stackoverflow.com/questions/38421034
复制相似问题