Ansible,pg_hba.conf配置,带有来自hosts文件的IP



我有问题,甚至没有正确启动。

我有一个看起来像的主机文件

all:
children:
application1:
children:
application1-webserver:
hosts:
host1.domain.net:
host2.domain.net:
application1-database:
hosts:
dbhost1.domain.net:
application2:
children:
application2-webserver:
hosts:
host3.domain.net:
host4.domain.net:
application1-database:
hosts:
dbhost2.domain.net:
app-servers:
hosts:
host1.domain.net:
host2.domain.net:
host3.domain.net:
host4.domain.net:

我已经创建了模板文件。我知道这不是pg_hba.conf,但现在已经不重要了,如果我把IP拿出来,会很容易

{% for i in groups['app-servers'] %}
{{ hostvars[i]['ansible_default_ipv4_address'] }}
{% endfor %}

所以,也许有时我不得不运行这个脚本来创建"新"环境,我不想手动更改应用服务器的IP。我想要的是从FQDN获取IP。

需要这个,这样我就可以限制从网络访问数据库,只访问那些服务器。

谢谢你的帮助。

保存全局信息的变量是ansible_default_ipv4。只有当你在主机上收集了事实(确保你在游戏中没有使用gather_facts: false(时,它才可用。

它是一个包含几个密钥的散列,其中address。举个例子(混淆(,这是我在本地主机上得到的:

$ ansible localhost -m setup -a gather_subset=network -a filter=*default_ipv4*
localhost | SUCCESS => {
"ansible_facts": {
"ansible_default_ipv4": {
"address": "x.y.z.a",
"alias": "interface",
"broadcast": "x.y.z.255",
"gateway": "x.y.z..1",
"interface": "interface",
"macaddress": "xx:xx:xx:xx:xx:xx",
"mtu": 1500,
"netmask": "255.255.255.0",
"network": "x.y.z..0",
"type": "ether"
}
},
"changed": false
}

因此,您在模板中查找的var的名称是ansible_default_ip4.address

您的完整固定模板:

{% for i in groups['app-servers'] %}
{{ hostvars[i].ansible_default_ipv4.address }}
{% endfor %}

可能的替代符号(混合点和阵列符号(:

{{ hostvars[i]['ansible_default_ipv4']['address'] }}
{{ hostvars[i].ansible_default_ipv4['address'] }}
etc.

所以我得到了它。它有点复杂。

行动手册如下:

---
- hosts: app-servers
tasks:
- ping:
- hosts: dbhost1.domain.net
tasks:
- include_role:
name: test-for
...

主机文件如上所述:

all:
children:
application1:
children:
application1-webserver:
hosts:
host1.domain.net:
host2.domain.net:
application1-database:
hosts:
dbhost1.domain.net:
application2:
children:
application2-webserver:
hosts:
host3.domain.net:
host4.domain.net:
application1-database:
hosts:
dbhost2.domain.net:
app-servers:
hosts:
host1.domain.net:
host2.domain.net:
host3.domain.net:
host4.domain.net:

只有在我ping主机后,我得到IP,我需要

然后在模板中:

{% for i in groups['app-servers'] %}
{{ hostvars[i].ansible_default_ipv4.address }}
{% endfor %}

它是有效的。

感谢

相关内容

  • 没有找到相关文章

最新更新