|
一、Ansible-PlayBook的组成部分
1.1 Target section
定义将要执行playbook的远程主机组
1.2 Variable section
定义playbook运行时需要使用的变量
1.3 Task section
定义将要在远程主机上执行的任务列表
1.4 Handlers section
定义task执行完成以后需要调用的任务
2.Target section常用参数
2.1 hosts:定义远程主机组
2.2 user:执行该任务的用户
2.3 sudo:设置为yes的时候,执行任务的时候使用root权限
2.4 sudo_user:如果你设置用户为mysql,执行任务的时候使用mysql用户的权限
2.5 connection:通过什么方式连接到远程主机,默认ssh
2.6 gather_facks:是否启动在远程主机执行setup模块,默认会执行。可用setup模块获取远程主机的信息,在定义变量时可能会用到
3.Variable section常用参数
3.1 vars:定义格式、变量名、变量值
3.2 vars_files:指定变量文件
3.3 vars_prompt:用户交互模式自定义变量
3.4 setup:
4.Task section常用藏书
4.1 name:输出到屏幕的信息
4.2 action:定义执行的动作调用ansible模块如: yum name=httpd state=installed,安装apache服务
4.3 copy:复制本地文件到远程主机
4.4 template:复制本地文件到远程主机,但是他可以在本地文件中调用变量
4.5 service:定义服务状态如: service name=httpd state=restart,重启apache服务
4.6 set_fact:可以让你在远程受管理机器上执行脚本的过程中来计算我们需要的值 ,这些值可以被用在模板或者变量中。这些值有点类似setup模块中的参数,只不过setup模块是以单台机器为单位
4.7 pause:暂停模块
4.8 wait_for:等待模块,比如启动一个tomcat,怎么确认他是否启动成功, 用这个模块,当8080端口被监听的时候,就认为启动我完成
举例:
1
2
| - name: wait for tomcat start
ait_for: port=8080 state=started
|
4.9 assemble:组装模块,如:把多个受管主机的文件合并成一个文件,当配置文件不允许包含的时候,这非常有用
举例:
1
2
3
4
5
6
7
8
| - name: make adirectory in /opt #在被管理主机opt下创建目录,属主属组root,权限0700
file: path=/opt/sshkeys state=directoryowner=root group=root mode=0700
- name: copy ssh keys #把dab、kate、mal分别放到上面两个item的位置,各执行一次
copy:src=key/{{item}}.pub dest=/opt/sshkeys/{{item}}.pub owneroot group=rootmode=0600 with=_items:
-dab
-kate
-mal
|
5.0 add_host:动态添加主机
可以动态的添加受管主机到play中。我们可以使用uri模块从CMDB中获得主机信息然后添加他们。它还可以将主机加到组里面,如果组不存在还会自动创建,这个模块只需要主机名和组名两个参数,跟主机库存清单配置一样,我们还可以添加扩展的参数,像:ansible_ssh_user,ansible_ssh_port等。
5.1 group_by:动态添加主机组
可以让我们根据主机的真实特性来进行分组,真实特性可以通过add_face来实现,group_by模块,只接受一个参数:key,同样组名的机器被分配到一个组里面。如果我们在这里使用变量,我们就可以把同一个操作系统类型,同一个拓补结构的或者其他我们希望拥有同样特性的主机分成一组,组可以在子play中、模板的目标选项被使用
举例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| ---
- name: hostgroup
hosts: vm1
tasks:
- group_by: key=os_{{ ansible_distribution}} #相当于定义一个变量,这个变量能获取到被管理端是什么系统类型,如果被管理端系统是centos就用yum装,如果是Ubuntu就用apt装
- name:centos
hosts: os_CentOS
tasks:
- name: centos install apache
yum: name=httpd state=latest
- name:ubuntu
hosts: os_Ubuntu
tasks:
- name: ubuntu install apache
apt: pkg=httpd state=latest
|
5.2 get_url:下载模块
举例:
|
|