在ansible变量中添加变量引号

时间:2015-03-04 13:34:37

标签: postgresql jinja2 ansible

我对其中一个ansible playbooks(enrise.postgresql)有疑问。

它接受变量postgresql_listen_addresses(/etc/postgresql/9.3/main/postgresql.conf中listen_addresses的值列表)。

我想使用值ansible_default_ipv4.address,但是ansible提供它没有引号,postgress想要它用单引号(例如' 192.168.0.1')。

我有这样的变量:

postgresql_listen_addresses: '{{ [ ansible_default_ipv4.address ] }}'

当地址没有引号时,postgress会抱怨不带引号的IP地址(语法错误)。

如何在ansible_default_ipv4.address的值附近添加引号?

感谢。

UPD:

我能用这个丑陋的代码来解决它。如果有人可以做得更好,请帮忙。

print_quotes: "'%s'"
postgresql_listen_addresses: [ "{{print_quotes|format(ansible_default_ipv4.address) }}"

2 个答案:

答案 0 :(得分:0)

你有没试过这个?

postgresql_listen_addresses: "[ '{{ansible_default_ipv4.address}}' ]"

或者如果postgress需要双引号而不是单引号。

postgresql_listen_addresses: '[ "{{ansible_default_ipv4.address}}" ]'

我没有简单的测试方法,所以我只希望支持这个理论...: - )

答案 1 :(得分:0)

您还可以使用quote过滤器:

postgresql_listen_addresses: "{{ ansible_default_ipv4.address | quote }}"

请参见Playbooks Filters