首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取Ansible控制机IP地址的最佳方法

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

Stack Overflow用户
提问于 2016-01-02 06:20:31
回答 6查看 6.3K关注 0票数 10

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

我知道我可以使用facts获取运行攻略的机器的IP地址,但我没有看到任何简单的方法来自动获取运行ansible的机器的IP地址。

如果可能的话,我希望避免添加新的变量来表示它,因为如果它是自动发现的,那就更好了,尽管如果这是唯一已知的最好的方法,那么我就会这么做。

编辑:我找到了和我的相同的this duplicate question,但是它也没有回答,所以会让这个问题开放一段时间。

EN

回答 6

Stack Overflow用户

发布于 2016-09-08 18:28:58

代码语言:javascript
复制
{{ ansible_env['SSH_CLIENT'].split() | first }}

工作,但您必须从默认用户收集有关连接变量的事实,所以八:

  • Set«gather_facts: yes»and not«task : yes»on playbook level
  • More reliable: run«setup»task(不使用«task: yes»以及在此«ansible_env»usage之前- better on«pre_tasks»部分)。

如果你使用«变成»运行«gather/setup»,你将会得到«一个或多个未定义的变量:'dict object‘没有属性'SSH_CLIENT'»(这是因为sudoed«setup»只能捕获一小部分变量)。

票数 9
EN

Stack Overflow用户

发布于 2016-09-06 02:47:04

最简单的方法是在本地添加连接

代码语言:javascript
复制
---
 - 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
票数 3
EN

Stack Overflow用户

发布于 2016-01-02 06:31:28

我刚刚破解了这个解决方案,它起作用了。这是你要找的东西吗?

代码语言:javascript
复制
- debug var="{{hostvars[inventory_hostname]['ansible_env']['SSH_CLIENT'].split(' ')[0]}}"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34560622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档