学习b记 · 第二阶段
十五、Ansible_ playbook
1、什么是PlayBook
play: 定义的是主机的角色。
task: 定义的是具体执行的任务。
playbook: 由一个或多个play(角色)组成,一个play(角色)可以包含多个task。
简单理解为: 使用不同的模块完成一件事情
2、PlayBook与ad-hoc
1)PlayBook功能比ad-hoc更全,是对ad-hoc的一种编排.
2)PlayBook能很好的控制先后执行顺序, 以及依赖关系.
3)PlayBook语法展现更加的直观.
4)playbook可以持久使用,ad-hoc无法持久使用.
3、YAML语法
语法 描述
缩进 YAML使用固定的缩进风格表示层级结构,每个缩进由两个空格组成, 不能使用TAB
冒号 以冒号结尾的除外,其他所有冒号后面所有必须有空格
短横线 表示列表项,使用一个短横杠加一个空格,多个项使用同样的缩进级别作为同一列表
yum:
name: vsftpd
state: present
yum:
name:
- httpd
- nginx
- php-fpm
state: present
·环境
主机名 wanIP lanIP 角色
m01 192.168.17.235 172.16.1.212 Ansible控制端
web01 192.168.17.224 172.16.1.202 Ansible被控端
web02 192.168.17.230 172.16.1.204 Ansible被控端
nfs 192.168.17.225 172.16.1.203 Ansible被控端
rsync 192.168.17.223 172.16.1.200 Ansible被控端
·主机清单
[web01]
172.16.1.202
[nfs]
172.16.1.203
[rsync]
172.16.1.200
[webs]
172.16.1.204
172.16.1.202
1、nginx.yml
- name: nginx
hosts: web01
tasks:
- name: Add nginx repository
yum_repository:
name: nginx.repo
description: nginx repo
baseurl: http://nginx.org/packages/centos/$releasever/$basearch/
enabled: yes
gpgcheck: no
- name: Install Nginx
yum:
name: nginx
state: present
- name: Create www group
group:
name: www
gid: 666
state: present
- name: Create www user
user:
name: www
uid: 666
group: www
shell: /sbin/nologin
create_home: false
- name: configure nginx
copy:
src: nginx.conf
dest: /etc/nginx.conf
- name: content hmtl
copy:
content: web02......
dest: /usr/share/nginx/html/index.html
- name: start nginx
systemd:
name: nginx
state: started
2、nfs.yml
- hosts: nfs
tasks:
- name: Install Nfs
yum:
name: nfs-utils
state: present
- name: Create group
group:
name: www
gid: 666
- name: Create user
user:
name: www
uid: 666
group: www
shell: /sbin/nologin
create_home: false
- name: Create dir
file:
path: /data
owner: www
group: www
state: directory
- name: Configure Nfs
copy:
content: '/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)'
dest: /etc/exports
- name: Start service
systemd:
name: nfs
state: started
3、rsync.yml
- hosts: rsync
tasks:
- name:
yum:
name: rsync
state: present
- name: Create group
group:
name: www
gid: 666
- name: Create User
user:
name: www
uid: 666
group: www
shell: /sbin/nologin
create_home: false
- name: Configure rsync
copy:
src: rsyncd.conf
dest: /etc/rsyncd.conf
- name: Create Passwd
copy:
src: rsync.pass
dest: /etc/rsync.pass
mode: 0600
- name: Create directory
file:
path: /backup
owner: www
group: www
state: directory
- name: Start service
systemd:
name: rsyncd
state: restarted
4、php.yml
- hosts: webs
tasks:
- name: Create dir
file:
path: /tools
state: directory
- name: Copy tar
copy:
src: php71.tar.gz
dest: /tools
- name: Jie Ya
unarchive:
src: php71.tar.gz
dest: /tools
- name: Yum PHP
yum:
name:
- /tools/autoconf-2.69-11.el7.noarch.rpm
- /tools/automake-1.13.4-3.el7.noarch.rpm
- /tools/libevent-2.0.21-4.el7.x86_64.rpm
- /tools/libjpeg-turbo-1.2.90-8.el7.x86_64.rpm