【问题标题】:ansible_default_ipv4.address to get active nic nameansible_default_ipv4.address 获取活动网卡名称
【发布时间】:2019-08-04 00:31:08
【问题描述】:

我有一个安装了 docker 的服务器,下面给我不同的接口

ip link show | grep state | sed 's/://g' | awk '{print $2}' |grep -v lo

我还有其他配置了bond0的节点

一些节点使用 eth 而其他使用 eno

我想使用 ansible 进行查询并获得以下详细信息

  1. 姓名
  2. IP(与主机名关联的主要)
  3. 网络掩码
  4. GW
  5. Mac

  6. 速度

  7. 接口名称

我有一个基本的代码

  tasks:
    - name: Find primary nic name
      debug:
        msg: "{{ ansible_default_ipv4.address }}"
    - name: Find primary nic name
      debug:
        msg: "{{ ansible_hostname }}"
    - name: Find primary nic name
      debug:
        msg: "{{ ansible_default_ipv4.macaddress }}"

【问题讨论】:

  • 很抱歉,我似乎不明白你的问题。您想为您的服务器找到这些值吗?还是只知道类型?因为ansible_default_ipv4 为您提供了大量信息,以及您在列表中提到的大部分内容。

标签: ansible


【解决方案1】:

您想使用ip addr show 作为初始命令,它包含所有信息。

这里有一个小awk 脚本来刷新你的awk 技能:

script.awk

NR%6==1{ # for each 1sth line  of 6
    print "name: "substr($2,1,length($2)-1); # print name in 2nd field
}
NR%6==3{ # for each 3rd line of 6
    split($2, arr, "/"); # split 2nd field by / into arr
    print "ip4: "arr[1]; # print ip first arr element
    print "mask: "arr[2]; # print mask second arr element
}
N%6==5{ # for each 5th line of 6
    split($2, arr, "/"); # split 2nd field by / into arr
    print "ip6: "arr[1]; # print ip6
    print "mask: "arr[2]; # print mask
}

运行:

ip addr show | awk -f script.awk

输出:

name: lo
ip4: 127.0.0.1
mask: 8
name: eno16780032
ip4: 192.168.42.12
mask: 21

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 2022-08-05
    • 1970-01-01
    • 2013-01-01
    • 2016-03-25
    • 2018-12-17
    相关资源
    最近更新 更多