7.Ansible.facts变量采集被控端自身状态信息

  • 什么是facts
  • 步骤
  • 案例
  • 查看facts变量
  • 优化


什么是facts

ansible会通过module setup来收集主机的系统信息,这些收集到的系统信息叫做facts,
这些facts信息可以直接以变量的形式使用。
自动采集,采集被控端主机的自身状态信息。
比如:主机名、cpu核心数、内存、硬盘等等等信息


步骤

1.先抓取被控端主机变量的值(变量都是被控端主机上已经定义好的)
2.推送配置文件之前,会先把配置文件中的变量进行引用,替换成具体的变量值
3.推送配置文件


案例

例如:部署nginx的时候,配置文件中的worker_processes的值应该与主机的CPU核心数保持一致

注意:每个机器的核心数都不一样,如果发给被控端的配置文件是写死的,CPU核心数与worker_processes的值不一致,就起不到预先想要的效果,所以就用到了facts变量来解决这一需求

ansible fact ansible facts信息_配置文件


例如:根据物理内存的总大小,生成 不同的memcached配置文件。

例如:根据被控端的主机IP地址,生成不同的redis配置文件。


查看facts变量

查看一下本机的各种facts变量:ansible localhost -m setup | less 可以看到每个变量都有对应的变量值,后期使用的时候直接引用这些定义好的变量即可

ansible fact ansible facts信息_redis_02


优化

如果说你开启了facts变量,你会发playbook执行很慢。

优化:
方法一.直接关闭
方法二.将facts提取的信息存储至redis中

方法二
1.在本地部署redis
安装redis
yum install redis -y

2.修改redis配置文件
vim /etc/redis.conf redis部署在哪台机器上就写哪台机器的IP

ansible fact ansible facts信息_配置文件_03

3.重启redis服务
systemctl start redis redis启动后会起来6379端口

4.然后尝试连接redis
redis-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状态

ansible fact ansible facts信息_配置文件_04

这里使用第一种
将facts变量的信息保存到redis中,保存1天,等于86400秒
保存退出

ansible fact ansible facts信息_ansible_05