ansible的setup模块和Facts变量及magic变量
2023-09-14 09:15:56 时间
ansible的setup模块和Facts变量
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考题
相关文章
- 13 —— node 获取文件属性 —— 加载第三方模块
- 请求库-selenium 模块
- keras模块学习之-参数初始化与对象调用-笔记
- yii2:模块
- OpenCV每日函数 Object Detection目标检测模块 (2) 定向梯度直方图(HOG)描述符
- Python模块常用的几种安装方式
- Unity技术手册 - 粒子基础主模块属性-下
- SRS4.0 RTC模块增加Gop cache
- 动手实操丨RC522射频卡模块与IC卡完成充值消费查询的技术实现思路
- 【Android Gradle 插件】工程根目录下 build.gradle 配置文件 ( 远程仓库配置 | 依赖配置 | 所有子模块配置 | task clean 任务 )
- 2022年中职组网络安全竞赛D模块竞赛漏洞报告单总结
- 2022 年全国职业院校技能大赛(中职组) 网络安全竞赛试题A 模块评分标准
- Matlab使用笔记(五):输入多个向量函数参数 / 调用同文件下的其它函数 / 同一个源程序文件下实现多个函数模块的构建