7.Ansible.facts变量采集被控端自身状态信息
- 什么是facts
- 步骤
- 案例
- 查看facts变量
- 优化
什么是facts
ansible会通过module setup来收集主机的系统信息,这些收集到的系统信息叫做facts,
这些facts信息可以直接以变量的形式使用。
自动采集,采集被控端主机的自身状态信息。
比如:主机名、cpu核心数、内存、硬盘等等等信息
步骤
1.先抓取被控端主机变量的值(变量都是被控端主机上已经定义好的)
2.推送配置文件之前,会先把配置文件中的变量进行引用,替换成具体的变量值
3.推送配置文件
案例
例如:部署nginx的时候,配置文件中的worker_processes的值应该与主机的CPU核心数保持一致
注意:每个机器的核心数都不一样,如果发给被控端的配置文件是写死的,CPU核心数与worker_processes的值不一致,就起不到预先想要的效果,所以就用到了facts变量来解决这一需求
例如:根据物理内存的总大小,生成 不同的memcached配置文件。
例如:根据被控端的主机IP地址,生成不同的redis配置文件。
查看facts变量
查看一下本机的各种facts变量:ansible localhost -m setup | less
可以看到每个变量都有对应的变量值,后期使用的时候直接引用这些定义好的变量即可
优化
如果说你开启了facts变量,你会发playbook执行很慢。
优化:
方法一.直接关闭
方法二.将facts提取的信息存储至redis中
方法二:
1.在本地部署redis
安装redisyum install redis -y
2.修改redis配置文件vim /etc/redis.conf
redis部署在哪台机器上就写哪台机器的IP
3.重启redis服务systemctl start redis
redis启动后会起来6379端口
4.然后尝试连接redisredis-cli -h 192.168.51.180
-h参数是指定要连接的redis服务的IP地址
5.修改ansible的配置文件vim /etc/ansible/ansible.cfg
facts有3种收集方式:
smart默认收集,他在已有的情况下就不再收集
implicit是默认收集,要禁止需要将gather_facts参数改为False状态
explicit默认不收集,要收集的话将gather_facts参数改为True状态
这里使用第一种
将facts变量的信息保存到redis中,保存1天,等于86400秒
保存退出