一、什么是playbook
ansible-playbook是一系列ansible命令的集合,就像执行shell命令与写shell脚本一样,也可以理解为批处理任务利用yaml 语言编写。playbook命令根据自上而下的顺序依次执行。
play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色
二、playbooy剧本主要有三部分组成:
1、hosts部分:使用hosts指示使用哪个主机或主机组来运行下面的tasks,每个playbook都必须指定hosts,hosts也可以使用通配符格式。主机或主机组在inventory清单中指定,可以使用系统默认的/etc/ansible/hosts,也可以自己编辑,在运行的时候加上-i选项,指定清单的位置即可
2、remote_user:指定远端主机中的哪个用户来登录远端系统,在远端系统执行task的用户,可以任意指定,也可以使用sudo,但是用户必须要有执行相应task的权限。
3、tasks:指定远端主机将要执行的一系列动作。tasks的核心为ansible的模块,前面已经提到模块的用法。tasks包含name和要执行的模块,name是可选的,只是为了便于用户阅读,不过还是建议加上去,模块是必须的,同时也要给予模块相应的参数。
[root@ansible ansible]# cat test.yml #创建测试文件 - hosts: web #主机组或主机名 remote_user: root #设置执行任务的用户 tasks: - name: create files #任务名字 shell: touch /tmp/bin/test{100..120} #执行的任务
三、示例
1、安装Samba服务
[root@ansible ansible]# cat samba_server.yml # install samba - hosts: web remote_user: root tasks: - name: yum install samba server. yum: name=samba state=latest
执行结果:
2、不同主机安装不同服务:
[root@ansible ansible]# cat servers.yml # install server - hosts: 192.168.64.129 remote_user: root tasks: - name: yum install nginx server. yum: name=nginx state=latest - hosts: 192.168.64.131 remote_user: root tasks: - name: yum install vsftpd server. yum: name=vsftpd state=latest