我正在使用Ansible和ufw在我的服务器上设置防火墙。作为ufw规则的一部分,我希望允许来自Ansible控制机的SSH,但不允许来自其他任何地方。我的问题是-获得控制机器本身的IP地址的最佳方法是什么,以便我可以将其放入规则中?
我知道我可以使用facts获取运行攻略的机器的IP地址,但我没有看到任何简单的方法来自动获取运行ansible的机器的IP地址。
如果可能的话,我希望避免添加新的变量来表示它,因为如果它是自动发现的,那就更好了,尽管如果这是唯一已知的最好的方法,那么我就会这么做。
编辑:我找到了和我的相同的this duplicate question,但是它也没有回答,所以会让这个问题开放一段时间。
发布于 2016-09-08 18:28:58
{{ ansible_env['SSH_CLIENT'].split() | first }}工作,但您必须从默认用户收集有关连接变量的事实,所以八:
如果你使用«变成»运行«gather/setup»,你将会得到«一个或多个未定义的变量:'dict object‘没有属性'SSH_CLIENT'»(这是因为sudoed«setup»只能捕获一小部分变量)。
发布于 2016-09-06 02:47:04
最简单的方法是在本地添加连接
---
- name: get my public IP
ipify_facts: api_url=http://api.ipify.org
connection: local
- firewalld: rich_rule='rule family=ipv4 source address={{ ipify_public_ip }} accept' permanent=no state=enabled timeout=300
become: true发布于 2016-01-02 06:31:28
我刚刚破解了这个解决方案,它起作用了。这是你要找的东西吗?
- debug var="{{hostvars[inventory_hostname]['ansible_env']['SSH_CLIENT'].split(' ')[0]}}"https://stackoverflow.com/questions/34560622
复制相似问题