playbook是由一个或多个"play"组成的列表。play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲所谓task无非是调用ansible的一个module。将多个play组织在一个playbook中即可以让它们联同起来按事先编排的机制同唱一台大戏。
其主要有以下四部分构成:
- Target section: 定义将要执行 playbook 的远程主机组
- Variable section: 定义 playbook 运行时需要使用的变量
- Task section: 定义将要在远程主机上执行的任务列表
- Handler section: 定义 task 执行完成以后需要调用的任务
** 开始书写我们第一个playbook**
第一步:定义我们的主机清单
[web] 192.168.77.129 ansible_ssh_pass=123456 192.168.77.130 ansible_ssh_pass=1234567
# 注:这里如果做了ssh免密码登陆,可以去掉
第二步:明确playbook做哪些任务
web组的主机完成下列任务
- 远程执行用户为root
- 安装httpd
- apache配置文件实现自定义http端口和客户端连接数
- 启动httpd,并设置其开机自启动
第三步:书写playbook
--- - hosts: web vars: http_port: 80 max_clients: 200 remote_user: root tasks: - name: ensure apache is at the latest version yum: name=httpd state=latest - name: write the apache config file template: src=/etc/ansible/httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf backup=yes notify: - restart apache - name: ensure apache is running (and enable it at boot) service: name=httpd state=started enable=yes handlers: - name: restart apache service: name=httpd state=restarted
第四步:运行playbok
ansible-playbook -i hosts test.yml
** 在执行playbook前,可以做些检查**
1、检查palybook语法
ansible-playbook -i hosts httpd.yml --syntax-check
2、列出要执行的主机
ansible-playbook -i hosts httpd.yml --list-hosts
3、列出要执行的任务
ansible-playbook -i hosts httpd.yml --list-tasks