如何从Ansible的SSH_CONNECTION变量中提取目标IP地址
从Ansible的SSH_CONNECTION事实中提取目标IP地址
我来帮你搞定这个IP提取的问题!你现在拿到的ansible_env.SSH_CONNECTION输出是空格分隔的四个字段,结构是[源IP] [源端口] [目标IP] [目标端口],咱们可以用Jinja2的字符串处理能力直接提取出你需要的192.168.231.91。
方法1:直接在Jinja2模板中处理
修改你的get-ip.j2模板,用split()方法分割字符串后取对应索引的元素:
nod= {{ ansible_env.SSH_CONNECTION.split()[2] }}
split()默认会按空格把字符串拆分成列表,这里得到的列表是['192.168.231.115', '55414', '192.168.231.91', '22']- 列表索引从0开始计数,
[2]就对应第三个元素,也就是你要的目标IP。
方法2:先在Playbook中提取变量再传入模板
如果需要在多个地方使用这个IP,也可以先在Playbook里用set_fact把IP提取出来:
- name: 提取SSH目标IP set_fact: ssh_target_ip: "{{ ansible_env.SSH_CONNECTION.split()[2] }}"
然后在模板里直接引用这个变量:
nod= {{ ssh_target_ip }}
两种方法都能精准提取到你需要的192.168.231.91,选哪种就看你的实际场景需求啦!
内容的提问来源于stack exchange,提问作者pyramid13
相关产品推荐
相关产品推荐

