在Ansible(查找)的var中使用var-aws_ssm插件 [英] Use a var in a var in Ansible (lookup) - aws_ssm plugin
问题描述
我正在尝试在Ansible(2.7.10)的var声明中使用var
I'm trying to use a var in a var declaration on Ansible (2.7.10)
我正在使用aws_ssm
查找插件( https://docs.ansible.com/ansible/latest/plugins/lookup/aws_ssm.html )
I'm using aws_ssm
lookup plugin (https://docs.ansible.com/ansible/latest/plugins/lookup/aws_ssm.html)
工作示例(硬编码值):
Working example (hardcoded values):
var: "{{ lookup('aws_ssm', '/path/server00', region='eu-west-3') }}"
我想对服务器名称和AWS区域使用变量,但是我所有的尝试都出错了.
I want to use variables for the server name and the AWS region, but all my tentatives went on errors.
到目前为止我已经尝试过的:
What I've tried so far:
var: "{{ lookup('aws_ssm', '/path/{{ server }}', region={{ region }}) }}"
var: "{{ lookup('aws_ssm', '/path/{{ server }}', region= + region) }}"
- name: xxx
debug: msg="{{ lookup('aws_ssm', '/path/{{ server }}', region='{{ region }}' ) }}"
register: var
尚未成功,谢谢您的帮助,
Without any success yet, thanks for your help,
推荐答案
您永远不会嵌套{{...}}
模板表达式.如果您已经在模板表达式中,则只需按名称引用变量即可.例如:
You never nest {{...}}
template expressions. If you're already inside a template expression, you can just refer to variables by name. For example:
var: "{{ lookup('aws_ssm', '/path/' + server, region=region) }}"
(假设已定义变量server
和region
.)
(This assumes that the variables server
and region
are defined.)
您还可以利用Python字符串格式语法.以下内容将为您提供相同的结果:
You can also take advantage of Python string formatting syntax. The following will all give you the same result:
-
'/path/' + server
-
'/path/%s' % (server)
-
'/path/{}'.format(server)
'/path/' + server
'/path/%s' % (server)
'/path/{}'.format(server)
而不是+
,您可以使用Jinja ~
串联运算符,该运算符的作用类似于+
,但是将参数强制为字符串.所以这是一个错误:
And instead of +
you can use the Jinja ~
concatenation operator, which acts sort of like +
but forces arguments to be strings. So while this is an error:
-
'some string' + 1
这将导致文本some string1
:
-
'some string' ~ 1
这篇关于在Ansible(查找)的var中使用var-aws_ssm插件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!