Ansible根据主机名填充一个variables

我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模板中使用引用)