1.playbook概述
1.1 playbook?playbook翻译过来就是“剧本
playbook: 由一个或多个play组成,一个play可以包含多个task任务
简单理解为: 使用不同的模块完成一件事情
1.2 playbook的优势
1.功能比ad-hoc更全
2.能很好的控制先后执行顺序, 以及依赖关系
3.语法展现更加的直观
4.ad-hoc无法持久使用,playbook可以持久使用
1.3 playbook的配置语法是由yaml语法描述的,扩展名是yaml
缩进----YAML使用固定的缩进风格表示层级结构,每个缩进由两个空格组成, 不能使用tabs
冒号----以冒号结尾的除外,其他所有冒号后面所有必须有空格。
短横线----表示列表项,使用一个短横杠加一个空格。>
多个项使用同样的缩进级别作为同一列表
1.4 Playbook执行结果返回颜色状态:
红色: 表示有task执行失败或者提醒的信息
黄色:表示执行了且改变了远程主机状态
绿色:表示执行成功
2.ansible-playbook—部署Nfs
2.1 服务端
① 书写剧本思路
NFS 服务端
Nfs_server_playbook
1.安装
2.配置
3.初始化
4.启动
5.变更配置要重载服务
②剧本操作
- hosts: nfs
tasks:
- name: Install Nfs Server
yum:
name: nfs-utils
state: present
- name: Configure Nfs Server
copy:
src: ./exports.j2
dest: /etc/exports
owner: root
group: root
mode: '644'
notify: Restart Nfs Server
- name: Create Nfs Group
group:
name: www
gid: '666'
state: present
- name: Create Nfs User
user:
name: www
uid: '666'
group: '666'
create_home: no
shell: /sbin/nologin
- name: Create Nfs SHare Directory
file:
path: /ansible
state: directory
owner: www
group: www
recurse: yes
- name: Systemd Nfs Server
systemd:
name: nfs
state: started
handlers:
- name: Restart NFS Server
systemd:
name: nfs
state: restarted
2.2 客户端
①书写剧本思路
1.安装nfs-utils
2.挂载
3.测试
②剧本操作
- hosts: web
tasks:
- name: Install Nfs-utils
yum:
name: nfs-utils
state: present
- name: Mount Nfs Share Directory To /mnt
mount:
src: 172.16.1.31:/ansible
path: /mnt
fstype: nfs
opts: defaults
state: mounted
- name: Test Nfs Client write File
file:
path: /mnt/123.txt
state: touch
3.ansible-playbook—部署Rsync
3.1服务端
[root@manager ~/ansible_playbook]# cat rsync_server.yml
- hosts: backup
tasks:
- name: Installed Rsync Server
yum:
name: rsync
state: present
- name: Configure Rsync Server
copy:
src: ./rsyncd.conf.j2
dest: /etc/rsyncd.conf
owner: root
group: root
mode: '0644'
notify: Restart Rsync Server
- name: Create Rsync Virtual User Password
copy:
src: ./rsync.passwd.j2
dest: /etc/rsync.passwd
owner: root
group: root
mode: '0600'
notify: Restart Rsync Server
- name: Create Rsync Group
group:
name: www
gid: '666'
- name: Create Rsync User
user:
name: www
uid: '666'
group: '666'
create_home: no
shell: /sbin/nologin
- name: Create Rsync Recv Directory
file:
path: /backup
state: directory
owner: www
group: www
recurse: yes
- name: Systemd Rsync Server
systemd:
name: rsyncd
state: started
enabled: yes
handlers:
- name: Restart Rsync Server
systemed:
name: rsyncd
state: restarted
3.2客户端
[root@manager ~/ansible_playbook]# cat rsync_client.yml
#1.拷贝脚本至所有主机
#2.编写定时任务。
- hosts: all
tasks:
- name: Create Scripts Directory
file:
path: /scripts
state: directory
- name: Copy Backup Scripts File
copy:
src: ./client_push_data_server.sh
dest: /scripts/client_push_data_server.sh
- name: Create Cron Task
cron:
name: Backup Tasks
user: root
minute: "*/2"
job: "/bin/bash /scripts/client_push_data_server.sh &>/dev/null"