ec2_instancesを起動するときに、2つの2つのIPを変数に保存する必要があります。with_itemsを使って文字列を連結し、Ansibleで変数に代入する
これは、私は、単一のサーバーのIPを保存しています方法です:
- name: Save server public IP to vars file
lineinfile: line="server_public_ip{{':'}} {{ item.public_ip }}"
dest="{{ansible_env.HOME}}/dynamic_ips_{{ec2_environment}}"
with_items: server.instances #server is registered in previous task
私はdynamic_ipsファイルを持っている出力はserver_public_ip: xxx.xxx.xx.x
今、私はサーバとして2台のサーバーを立ち上げ、登録しているです。
私は、空の文字列を宣言し、それにIPSを追加するために、このような何かを試してみましたが、私はエラーを取得していますserver_public_ips: xxx.xx.x.xx , xxx.x.xx.x
としてこれを保存する必要があります。
set_fact:
ips: ""
set_fact:
ips: " {{ ips }} + {{ item.public_ip}} "
with_items: servers.instances #servers is registered in previous task
lineinfile: line="server_public_ips{{':'}} {{ ips }}"
dest="{{ansible_env.HOME}}/dynamic_ips_{{ec2_environment}}"
私はlineinfile insertafterとregexを使って行うことができると思います。
は最後に、私はservers.instancesがリストされたときに、実際に動作するはずです
- name: Restrict access to outside world
command: iptables INPUT {{ item }} ACCEPT
with_items: {{ server_public_ips }}.split(,) #grant access for each ip
command: iptables INPUT DROP
このコードには多くの構文エラーがあります...そして、なぜ静的ファイルに* dynamic * ipsを保存する必要があるのですか?実行時にそれらを照会する必要があります。 –
@ ConstantinSuvorov実行時にIPをクエリする方法を教えてください。私はec2のインスタンス名しか持っていません。実行時にインスタンス名を使用してIPを取得することは可能ですか?また、同じ名前のインスタンスが2つあります。どんな助けもありがとうございます。 – Charan