我对其中一个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) }}"
答案 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 }}"