赋料扬雄敌,诗看子建亲。这篇文章主要讲述自动化运维工具Ansible(13)设置 facts 缓存相关的知识,希望能为你提供帮助。
默认情况下,Ansible 每次执行 playbook 时的第一个 Task 就是 获取每台主机的 facts 信息。假如不需要可以设置
`gather_facts = no` 进行关闭,以提高执行 playbook 的效率。
假如想获取 facts 信息,同时又想加速这个 task 的效率,就需要设置 facts 缓存。
缓存 facts 信息可以存档 JSON 文件中,也可以方式 redis 和 memcached 中。
测试playbook 文件
- hosts: all
gather_facts: yes
tasks:
- name: check hosts
ping:
- name: debug
debug:
var: ansible_facts
缓存facts信息
缓存到文件(JSON格式的数据)
在ansible.cfg 文件中设置
[root@localhost home]# vim /etc/ansible/ansible.cfg
gathering = smart
ansible的配置文件中可以修改gathering的值为 `smart`、`implicit` 或者 `explicit`。
- `smart`; --> 表示默认收集facts,但facts已有的情况下不会收集,也就是会使用缓存facts;
- `implicit`--> 表示默认收集facts,要禁止收集,必须使用gather_facts: False;
- `explicit`--> 则表示默认不收集,要显式收集,必须使用gather_facts: Ture
- gather_subset = network,virtual # 只搜集 网络信息和虚拟化信息
- fact_caching = jsonfile # 缓存到 json 文件
- fact_caching_connection= /dev/shm/ansible_fact_cache
- fact_caching_timeout = 86400 # 缓存数据时间是一天
?
在playbook 中设置
- hosts: all
gather_facts: yes# 显式定义收集
ather_facts: no# 显式定义不收集
验证
缓存到 redis
在任一机器或者ansible 控制主机上部署 Redis 服务
[root@localhost home]# yum -y install redis
假如 Redis 服务不在 ansible 控制主机上,还应该设置 redis 监听地址
[root@localhost ~]# vim /etc/redis.conf
bind 0.0.0.0//监听任意端口
在 ansible.cfg 文件中配置缓存到 redis
gathering = smart
fact_caching = redis# 缓存到 redis
fact_caching_connection = 192.168.1.37:6379:0
fact_caching_timeout = 86400# 缓存数据时间是一天
在控制主机 python 的 redis 库【自动化运维工具Ansible(13)设置 facts 缓存】
[root@localhost ~]# pip install redis
提示报错:
curlhttps://bootstrap.pypa.io/pip/2.7/get-pip.py-o get-pip.py
python get-pip.py
ln -s /home/kali/.local/bin/pip2 /usr/bin/pip2
pip2 --version
pip 20.3.4 from /usr/lib/python2.7/site-packages/pip (python 2.7)
在安装即可
检查
使用get调用
192.168.19.100:6379> get ansible_facts192.168.19.103
推荐阅读
- svn查看日志出现want to go offline问题
- VMware vSphere Client
- Oracle Scan Listener过大导致的数据库Hang
- 云原生网络架构
- Python技能树共建Python爬虫模拟登录
- 下载Spring4.1.x源码并用IntelliJ IDEA打开
- 算法题每日一练---第57天(解码异或后的数组)
- #导入Word文档图片# MQTT协议连接百度物联网IOT服务器
- RENIX_license操作——网络测试仪实操