ansible的setup模块和Facts变量及magic变量

Host Factsbianl

ansible收集的系统信息保存在特定的变量中

在这里插入图片描述

变量注释示例
ansible_distribution发行版ansible_distribution == “RedHat”
ansible_distribution_major_version操作系统版本ansible_distribution_major_version == “8”
ansible_kernel内核版本ansible_kernel == “3.10.0.327.e17.x86_64”

在这里插入图片描述


示例剧本

---
- name: 演示facts变量
  hosts: all
  tasks:
    - name: 用户facts信息
      copy:
        content: "主机名是:{{ ansible_hostname }},\nbios版本是:{{ ansible_bios_version }}\n"
        dest: /tmp/facts.txt

执行结果
在这里插入图片描述


setup模块

ansible_facts用于采集被管理设备的系统信息,例如CPU,内存,磁盘
所有收集到的信息都被保存在变量中
每次执行playbook默认第一个任务就是Gathering Facts
如果不需要Facts变量,关闭Facts变量可以提高playbook运行速度

关闭收集Facts变量
在这里插入图片描述

---
- name: 关闭Facts变量演示
  hosts: all
  gather_facts: no
  tasks:
    - name: 演示无Facts变量
      setup:

setup常用的变量

在这里插入图片描述


使用setup模块可以查看收集到的facts的信息
ansible node1 -m setup

在这里插入图片描述

对收集的信息进行过滤
[rhel8 root ~/ansible/play]# ansible all -m setup -a "filter=ansible_mem*"
node1 | SUCCESS => {
    "ansible_facts": {
        "ansible_memfree_mb": 631,
        "ansible_memory_mb": {
            "nocache": {
                "free": 1392,
                "used": 398
            },
            "real": {
                "free": 631,
                "total": 1790,
                "used": 1159
            },
            "swap": {
                "cached": 0,
                "free": 2047,
                "total": 2047,
                "used": 0
            }
        },
        "ansible_memtotal_mb": 1790
    },
    "changed": false
}

playbook调用debug模块使用变量获取节点信息
---
- hosts: node2
  gather_facts: False
  tasks:
    - name: 查看节点ip
      debug:
    # var是常量
        var: ansible_all_ipv4_addresses
    - name: 查看节点的bios版本
      debug:
        msg:  "bios版本是{{ansible_bios_version}}"
    - name: 查看节点的主机名
      debug:
    # msg中的变量需要用{{}}括起来
        msg: "主机名是:{{ansible_hostname}}"
    - name: 查看节点的总内存
      debug:
        msg: "总内存大小:{{ansible_memtotal_mb}}"
    - name: 查看节点的指定分区大小
      debug:
        msg:  "分区大小是:{{ansible_devices.nvme0n2.partitions.nvme0n2p1.size}}"

palybook执行结果

[rhel8 root ~/ansible/play]# ansible-playbook yum.yaml 

PLAY [node2] ***********************************************************************************************************

TASK [查看节点ip] ******************************************************************************************************
ok: [node2] => {
    "ansible_all_ipv4_addresses": [
        "192.168.32.136",
        "192.168.32.137"
    ]
}

TASK [查看节点的bios版本] **********************************************************************************************
ok: [node2] => {
    "msg": "bios版本是6.00"
}

TASK [查看节点的主机名] ************************************************************************************************
ok: [node2] => {
    "msg": "主机名是:node2"
}

TASK [查看节点的总内存] ************************************************************************************************
ok: [node2] => {
    "msg": "总内存大小:1790"
}

TASK [查看节点的指定分区大小] ******************************************************************************************
ok: [node2] => {
    "msg": "分区大小是:1023.00 MB"
}

PLAY RECAP *************************************************************************************************************
node2                      : ok=5    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

自定义Facts变量

ansible_local 这个变量是可以自定义的


在node上创建自定义facts变量文件

在node主机上的/etc/ansible/facts.d目录下,创建一个test.fact文件

# 在node上创建facts.d目录
mkdir -p /etc/ansible/facts.d

# 创建自定义facts变量文件
vim /etc/ansible/facts.d/test.fact

# 写入自定义变量内容
[pkg]
web_pkg=httpd

测试自定义facts变量

# 将setup结果写入serverc1.json
ansible serverc.lab.example.com -m setup > serverc1.json

查看收集到的ansible_localhost变量的值

在这里插入图片描述

使用playbook测试自定义fatsc变量

示例剧本

---
- name: 自定义fatsc变量
  hosts: serverc.lab.example.com
  tasks:
    - name: 无Facts变量演示
      debug:
        var: ansible_local.test

剧本执行效果

[student@workstation facts]$ ansible-playbook test.yml

PLAY [自定义fatsc变量] ****************************************************************************

TASK [Gathering Facts] ***********************************************************************
ok: [serverc.lab.example.com]

TASK [无Facts变量演示] ****************************************************************************
ok: [serverc.lab.example.com] => {
    "ansible_local.test": {
        "pkg": {
            "web_pkg": "httpd"
        }
    }
}

PLAY RECAP ***********************************************************************************
serverc.lab.example.com    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

magic变量

magic变量就是主机和主机组变量
生产环境下,有可能你的node主机的hostname是aaa,但你在控制节点的主机清单中写入的主机名是servera,经常需要使用magic变量中的主机清单主机名来判断.

打印出主机清单中的主机名

生产环境中用的最多的是主机清单中的主机名这个变量

# 查看magic变量
ansible serverc.lab.example.com -m debug -a "var=hostvars['serverc.lab.example.com']"

inventory_hostname 是主机清单中的主机名
inventory_hostname_short 是主机清单中的短主机名

在这里插入图片描述


RHCE8考题

在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

识途老码

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值