我GOOGLE了,但我无法find我想要做的解决scheme。
我想根据服务器的主机名设置一个jinja2variables(我正在使用不同的证书,并希望根据主机名创buildssl.conf )。
我想要一个字典来做这样的事情:
Certmapping: host1: www.mydomain.com host2: beta.mydomain.com host3: partner.mydomain.com
然后是一个引用字典的模板:
SSLCertificateFile /etc/pki/tls/certs/<domain>.crt
我可以有一个怪物:
if {{ ansible_hostname }} == 'host1' ...
但是看起来不那么优雅。
继续不懈的@ michaelhampton的build议,这里是你如何使用host_vars
project root -- host_vars -- host1.yml -- host2.yml -- host3.yml -- my_playbook.yml
所以当你设置host1.yml时,你可以把它需要的值放在那里:
--- Certmap: www.mydomain.com
而当你需要访问它时,你只需要像这样引用它:
{{ Certmap }}
只要每台主机都有一个带有Certmap的host_vars文件,它就会改变为不同的主机。
鉴于您的Certmapping字典,只需使用以下内容:
- set_fact: certificate_configuration_line: "SSLCertificateFile /etc/pki/tls/certs/{{Certmapping[ansible_hostname]}}.crt"
( set_fact只是一个例子,你可以直接在lineinfile或Jinja2模板中使用引用)