如何从Ansible变量ansible_eth0.ipv4.address中提取纯IP地址
解决Ansible变量提取纯IP地址的问题
你的问题是因为{{ ansible_eth0.ipv4.address }}返回的是列表类型数据,所以会带有[' ']格式,以下几种方法可以提取纯IP地址:
直接取列表第一个元素
因为列表里只有一个IP,直接通过索引[0]获取即可,在lineinfile模块中这样使用:- name: 将纯IP写入文件 lineinfile: path: /目标文件路径 line: "{{ ansible_eth0.ipv4.address[0] }}" state: present使用
join过滤器转换
如果不确定列表元素数量,用join('')可以将列表所有元素拼接成字符串,这里单个元素的结果就是纯IP:- name: 将纯IP写入文件 lineinfile: path: /目标文件路径 line: "{{ ansible_eth0.ipv4.address | join('') }}" state: present提前确认变量结构
若后续出现多个IP的情况,先通过debug模块查看变量详情,方便调整处理逻辑:- name: 查看IP变量结构 debug: var: ansible_eth0.ipv4.address
内容的提问来源于stack exchange,提问作者henrolos
相关产品推荐
相关产品推荐

