获取 Ansible 控制机 IP 地址的最佳方法

2024-04-11

我正在使用 Ansible 和ufw在我的服务器上设置防火墙。作为ufw规则 我希望允许来自 Ansible 控制机的 SSH,但不允许来自其他任何地方。我的问题是 - 获取控制机本身的 IP 地址以便我可以将其放入规则中的最佳方法是什么?

我知道我可以使用facts http://docs.ansible.com/ansible/playbooks_variables.html#accessing-complex-variable-data获取我正在运行剧本的机器的IP地址,但我没有看到任何简单的方法可以为运行ansible的机器自动获取它。

如果可能的话,我想避免添加一个新变量来表示这一点,因为如果它可以自动发现,那就太好了,但如果这是唯一已知的最佳方法,那么我就会这样做。

编辑:我发现这个重复的问题 https://stackoverflow.com/questions/33956453/use-ansible-control-masters-ip-address-in-jinja-template这和我的一样,但也没有得到答复,所以将暂时保留这个问题。


{{ ansible_env['SSH_CLIENT'].split() | first }}

有效,但您必须收集有关连接变量的事实来自默认用户,所以八个:

  • 设置“gather_facts: yes”并且not在剧本层面上“成为:是”
  • 更可靠:运行“setup”任务(没有“become: yes”,并且在此“ansible_env”用法之前 - 在“pre_tasks”部分更好)。

如果您使用“become”运行“gather/setup”,您稍后将得到“一个或多个未定义的变量:'dict object'没有属性'SSH_CLIENT'”(这是因为 sudoed“setup”只能捕获一小部分变量)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 Ansible 控制机 IP 地址的最佳方法 的相关文章

随机推荐