在使用ansible的过程中,最常用的就是使用playbook,将多个play写入到文件中,这样可以达到复用的效果.其语言使用的是yaml语法
注意:在书写playbook时切忌不要使用tab建.
ansible-playbook是将多个play和task集合在一起,其大致构成如下
- hosts:主机(主机组,也可以是变量)
- tasks:任务
- vars:变量
- user:指定用哪个用户执行,
- templates:模版文件
- handles:由特定条件出发tasks
使用技巧:
可以在yaml的首行标注编译环境,类似于shell
文件开头注释:
#!/usr/bin/env ansible-playbook
添加执行权限,这样就可以直接直接该文件;
chmod +x file
常用参数:
--syntax-check 检查剧本语法是否有误
-i 指定主机组或主机
-f 指定并发数
-u 指定用户
-t 指定tags执行
--skip-tags 不执行指定的tags
简单示例:
远程主机安装httpd并启动,启动完成后检测80端口,然后创建文件
[root@ansible ~]# cat test.yml
- hosts: slave
user: root
vars:
web: httpd
tasks:
- name: yum test
yum: name={{web}}
- name: start httpd
service: name={{web}} state=started
- wait_for: port=80 #和上面的play方式效果一样,- name为注语,不用- name时可以直接 - module方式
- file: path=/test/test.txt state=touch
#进行语法检查,语法有问题会进行提示
[root@ansible ~]# ansible-playbook --syntax-check test.yml
playbook: test.yml
#运行playbook
[root@ansible ~]# ansible-playbook test.yml
稍复杂示例
#!/usr/bin/env ansible-playbook
- hosts: all #主机组
vars:
web: httpd #变量
gather_facts: no #不获取主机信息,提高执行速度
tasks: #任务动作
- name: xxx
yum: name={{ web }} state=present #yum模块执行安装
tags: httpd #标记该task,可以在外部选择执行或跳过执行
- name: xxx2
templates: src=xx-file.j2 dest=xxx-file #导入模版
- notify: restart httpd #定义触发条件
handlers:
- name: restart httpd #引用触发条件(触发执行)
service: name=httpd state=restarted
[root@ansible ~]# ./test.yml -t tags