新しいソルト マスターをセットアップし、テンプレートから静的 IP (利用可能な dhcp なし) を使用して新しい VM の展開を自動化しようとしています。
デフォルト IP が定義されたクラウド プロファイルを介してテンプレートを使用して VM をデプロイできますが、IP アドレスを上書きしてデプロイ時に動的に使用する方法が見つかりません。ホスト名/IP を cli に渡すことを望んでいました。を呼び出すか、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 が問題を解決しました。次にどこを見るべきかについてのアドバイス/指針はありますか?