我的var文件中有以下变量:
aws:
profiles:
- name: default
properties:
aws_access_key_id: changeme
aws_secret_access_key: changeme
region: eu-west-1
format: json
- name: playground
properties:
aws_access_key_id: changeme
aws_secret_access_key: changeme
region: eu-west-1
format: json
我想用aws.profiles.name
字段配置每个aws配置文件(properties
属性),其中properties
是一个字典,这意味着我想要为其设置密钥和值每个配置文件。
我尝试了多种方法,包括with_items
,with_dict
和with_nested
,但没有任何帮助。最合乎逻辑的案例如下:
- name: Configure accounts.
shell: aws configure set {{ item.properties.key }} {{ item.properties.value }} --profile {{ item.name }}
with_dict: "{{ aws.profiles }}"
但它引发了一个错误:
“该任务包含一个带有未定义变量的选项。错误 是:'dict对象'没有属性'属性'
另一种方法不起作用,但这次至少properties
被识别出来了:
- name: Configure accounts.
shell: aws configure set {{ item.properties.key }} {{ item.properties.value }} --profile {{ item.name }}
with_items: "{{ aws.profiles }}"
这次的错误是:
该任务包含一个带有未定义变量的选项。错误是: 'dict object'没有属性'key'
任何帮助将不胜感激!
答案 0 :(得分:0)
好的,我尝试按照 @Konstantin Suvorov 建议的方式行事。
现在,重构变量如下所示:
aws:
profiles:
- name: default
properties:
- key: aws_access_key_id
value: changeme
- key: aws_secret_access_key
value: changeme
- key: region
value: eu-west-1
- key: format
value: json
- name: playground2
properties:
- key: aws_access_key_id
value: changeme
- key: aws_secret_access_key
value: changeme
- key: region
value: eu-west-1
- key: format
value: json
任务本身如下:
- name: Configure accounts.
shell: "aws configure set {{ item.1.key }} {{ item.1.value }} --profile {{ item.0.name }}"
with_subelements:
- "{{ aws.profiles }}"
- properties