私は、AWBタグに一致するインスタンスを動的に探し出し、ELBを作成してインスタンスをインスタンスに追加するために、プレイブックを作成しようとしています。今まで私は一度に1セットのタグと1つのELBに対してこれらを作成することに成功しました。不可能なレジスタインスタンスとELBの作成
これは、変数function
とrelease
を先頭にすることなく、任意の数のタグに対して実行する最良の方法を解明しようとしています。
例えば、変数function
とrelease
は、このような変数ファイルで定義されます。
function:
- api
- webapp
- mysql
release:
- prod
- stage
- dev
私のプレイブックはこのように見えます。私は変数リストを使ってプレイブック全体をループする方法を見つけるのに苦労しています。 with_items
を最初のタスクに追加すると、そのタスク全体がループして次のタスクに移動します。
- ec2_remote_facts:
filters:
instance-state-name: running
"tag:Function": "{{ function }}"
"tag:Release": "{{ release }}"
region: us-east-1
register: ec2instance
- local_action:
module: ec2_elb_lb
name: "{{ function }}-{{ release }}"
state: present
instance_ids: "{{ item.id }}"
purge_instance_ids: true
region: us-east-1
subnets:
- subnet-1
- subnet-2
listeners:
- protocol: https
load_balancer_port: 443
instance_port: 80
ssl_certificate_id: "{{ ssl_certificate_id }}"
health_check:
ping_protocol: http
ping_port: 80
ping_path: "/status"
response_timeout: 3
interval: 5
unhealthy_threshold: 2
healthy_threshold: 2
access_logs:
interval: 5
s3_location: "{{ function }}-{{ release }}-elb"
s3_prefix: "logs"
with_items: ec2instance.instances
返信いただきありがとうございます。これはループがうまく動作するようにはうまくいくようですが、{{function}}と{{release}}の2つ以上のセットで同時に動作させることができませんでした。 "{function}} - {{release}}は" msg "のような大きな値として出力されます:" [u'api '、u'webapp'、u'mysql '] - [u'prod' u'stv '] "また、私は持っていることを望みます。 api-prod、api-stage、api-dev、webapp-prod、webapp-stage ...などです。あなたはそれをすると思いますか? – tweeks200
@ tweeks200確かに非常に奇妙なこと...私はテストしたコードで私の答えを更新しました。 –
@ tweeks200は私のテンプレートループがうまくいかなかったバグを見つけて、答えをもう一度更新しました:) include( 'function')とarray(' functions')のパラメータの異なる名前がキーです!感謝! –