1.安装ansible

yum -y install ansible

2.主机清单推荐格式

[root@controller ~]# vi /etc/ansible/hosts
[controllers]
# ansible_ssh_port=22
controller ansible_ssh_host=192.168.100.10 [computes]
compute ansible_ssh_host=192.168.100.20

3.常用命令

# 1、ping全部主机
ansible all -m ping # 2、查看compute主机的全部信息
ansible compute -m setup # 有过滤的作用
ansible compute -m setup -a "fileter='ansible_fqdn'" # 模糊匹配
ansible compute -m setup -a 'filter=*eth0*' # 3、playbook获取指定变量的方法
[root@controller ~/ansible]# vim get_info.xml
- hosts: compute tasks:
- name: create file named ip address
shell: "echo {{ ansible_eth0['ipv4']['address'] }} > ~/a.txt" 执行之后
[root@compute ~]# cat a.txt
192.168.100.20

4.Playbook的解耦和

1、初始化新的Playbook

# 初始化一个名为install_zabbix剧本
[root@controller ~]# ansible-galaxy init install_zabbix
- Role install_zabbix was created successfully # 各个目录的解释
[root@controller ~]# tree install_zabbix/
install_zabbix/
├── defaults # 低优先级变量
│   └── main.yml
├── files # 存放文件,没有变量的配置文件,使用copy推送的时候使用,shell、txt
├── handlers # 触发器文件
│   └── main.yml
├── meta # 依赖关系文件
│   └── main.yml
├── README.md
├── tasks # 工作任务文件
│   └── main.yml
├── templates # jinja2模板文件,里面有变量,使用temlate推送的文件都可以放到里面。
├── tests # 测试文件 -C 的时候
│   ├── inventory
│   └── test.yml
└── vars # 变量文件,优先级比较高的
└── main.yml 8 directories, 8 files # 保证site.yml和要执行的任务在同一个目录就好了。这里移动了一下。
[root@controller ~/ansible_playbook]# cat site.yml
# 模板
#- hosts: all <====要运行的主机
# roles:
# 示要执行install_zabbix的这个任务,在m01这个机器上面
# - { role: install_zabbix , when: ansible_fqdn == "m01" } - hosts: all
roles:
- { role: install_zabbix } [root@controller ~/ansible_playbook]# ls
install_zabbix site.yml [root@controller ~/ansible_playbook]# cat install_zabbix/tasks/main.yml
- name: Send config file zabbix Agent
template:
src: zabbix_agentd.conf
dest: /etc/zabbix/ # 模版文件夹里面的模板文件
[root@controller ~/ansible_playbook]# cat install_zabbix/templates/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0 Server={{ ansible_eth0['ipv4']['address'] }}
ServerActive={{ ansible_eth0['ipv4']['address'] }}
Hostname={{ ansible_fqdn }} Include=/etc/zabbix/zabbix_agentd.d/*.conf # 执行这个文件
[root@controller ~/ansible_playbook]# ansible-playbook site.yml # 显示的结果
[root@compute ~]# cat /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0 Server=192.168.100.20
ServerActive=192.168.100.20
Hostname=compute Include=/etc/zabbix/zabbix_agentd.d/*.conf

最新文章

  1. django xadmin 外键
  2. hdu 5690 All x
  3. 2016.8.14 HTML5重要标签以及属性学习
  4. 【转】C# 委托的介绍(delegate、Action、Func、predicate)
  5. 分享一个圆角自定义的漂亮AlertDialog
  6. PHP获取客户端操作系统,浏览器,语言,IP,IP归属地等
  7. OpenCV学习 3:平滑过度与边缘检测
  8. websocket实现简单聊天程序
  9. EBS R12 LOG files 位置
  10. The connection to the server localhost:8080 was refused - did you specify the right host or port?
  11. Python基础-Python的三元运算符和lambda表达式
  12. 责任链模式(Chain of Responsibility)
  13. css动画特效
  14. 【杂谈】Spring Boot 默认支持的并发量
  15. Docker 镜像的导入和导出
  16. D. Arpa and a list of numbers Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017)
  17. connect by和strart with子句
  18. Siki_Unity_3-8_Lua编程(未完)
  19. Erasure Coding(纠删码)深入分析 转
  20. 使用httpclient对zip格式的响应数据解压

热门文章

  1. 快速了解Web MVC设计模式
  2. MindSpore函数拟合
  3. Python基础之:struct和格式化字符
  4. JavaScript中的new,bind,call,apply的简易实现
  5. 19. slot插槽传递模板
  6. 线程stop和Interrupt
  7. MySQL 储存引擎知识点
  8. ECMAScript 2019(ES10)新特性简介
  9. C#中普通缓存的使用
  10. Fastjson反序列化漏洞复现