在 Ansible 中的 var 中使用 var(查找) - aws_ssm 插件

zop*_*oph 3 variables yaml ansible

我正在尝试在 Ansible (2.7.10) 上的 var 声明中使用 var

我正在使用aws_ssm查找插件(https://docs.ansible.com/ansible/latest/plugins/lookup/aws_ssm.html

工作示例(硬编码值):

var: "{{ lookup('aws_ssm', '/path/server00', region='eu-west-3') }}"
Run Code Online (Sandbox Code Playgroud)

我想对服务器名称和 AWS 区域使用变量,但我的所有尝试都出错了。

到目前为止我尝试过的:

var: "{{ lookup('aws_ssm', '/path/{{ server }}', region={{ region }}) }}"
Run Code Online (Sandbox Code Playgroud)
var: "{{ lookup('aws_ssm', '/path/{{ server }}', region= + region) }}"
Run Code Online (Sandbox Code Playgroud)
    - name: xxx
      debug: msg="{{ lookup('aws_ssm', '/path/{{ server }}', region='{{ region }}' ) }}"
      register: var
Run Code Online (Sandbox Code Playgroud)

还没有成功,感谢您的帮助,

lar*_*sks 7

你永远不会嵌套{{...}}模板表达式。如果您已经在模板表达式中,则只需按名称引用变量即可。例如:

var: "{{ lookup('aws_ssm', '/path/' + server, region=region) }}"
Run Code Online (Sandbox Code Playgroud)

(这假设变量serverregion已定义。)

您还可以利用 Python 字符串格式化语法。以下都会给你相同的结果:

  • '/path/' + server
  • '/path/%s' % (server)
  • '/path/{}'.format(server)

您也+可以使用 Jinja~连接运算符,它的作用有点像,+但强制参数为字符串。所以虽然这是一个错误:

  • 'some string' + 1

这将导致文本some string1

  • 'some string' ~ 1