在Ansible查找中使用变量名



我使用AWS SSM查找插件从SSM中获取值,但希望根据环境动态设置SSM变量的路径。

对环境进行硬编码是可行的,所以,我可以编写一个任务,并为每个可能的环境使用when:条件,这感觉有点笨拙。

- name: Get CloudWatch Log Group Name from SSM for use in CloudWatch role
set_fact:
log_group_name: "{{ lookup('aws_ssm', '/production/cloudwatch/log_group_name') }}"

我正在尝试做下面这样的事情:

- name: Get CloudWatch Log Group Name from SSM for use in CloudWatch role
set_fact:
log_group_name: "{{ lookup('aws_ssm', environment + '/cloudwatch/log_group_name') }}"

但我得到了以下

失败=>{{lookup('aws_ssm',environment+'/cloudwatch/log_group_name'(}}上发生意外的模板类型错误:只能将列表(而不是"str"(连接到列表

是否有其他方法可以使用字符串格式,例如:

- name: Get CloudWatch Log Group Name from SSM for use in CloudWatch role
set_fact:
log_group_name: "{{ lookup('aws_ssm', '{}/cloudwatch/log_group_name'.format(Environment) }}"

事实证明这是由于使用了environment变量-将其更改为大写"E",一切如预期:

- name: Get CloudWatch Log Group Name from SSM for use in CloudWatch role
set_fact:
log_group_name: "{{ lookup('aws_ssm', '/' + Environment + '/cloudwatch/log_group_name') }}"

最新更新