You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible中提取IP地址并将其注册为变量

在Ansible中提取并注册目标IP地址

一、正则替换方法

方法1:匹配前缀内容替换

通过regex_replace过滤器匹配并移除目标字符串前的所有内容:

- name: 提取IP地址
  set_fact:
    target_ip: "{{ command_output.stdout | regex_replace('^.*has address ', '') }}"

正则^.*has address 会匹配从字符串开头到has address 的全部内容,替换为空后即可得到IP地址。

方法2:直接匹配IP格式提取

使用regex_findall精准匹配IP格式,即使前缀内容变化也能生效:

- name: 提取IP地址
  set_fact:
    target_ip: "{{ command_output.stdout | regex_findall('\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\b') | first }}"

该正则会找出字符串中所有符合IPv4格式的内容,通过first取第一个结果(即目标IP)。

二、其他可行方法

方法1:字符串分割取最后元素

利用空格分割字符串,直接取最后一个元素:

- name: 提取IP地址
  set_fact:
    target_ip: "{{ command_output.stdout.split() | last }}"

原输出以空格分隔各字段,分割后的列表最后一项即为IP地址。

方法2:直接使用DNS lookup插件

如果是通过DNS解析获取IP,可直接用Ansible的dig lookup插件,无需处理命令输出:

- name: 获取并注册IP地址
  set_fact:
    target_ip: "{{ lookup('dig', 'fepv-lnxiaas-s4.fepoc.com') }}"

内容的提问来源于stack exchange,提问作者Ryan Curtis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 08:13:13