我使用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') }}"