- Roles ⭐⭐⭐⭐⭐
- roles详解
- 没有使用roles的问题:
- 增加剧本可读性,规范性
- 剧本需要的文件,我们目前随处存放
- 随着我们书写的剧本越来越复杂,我们发现,剧本使用到的文件,配置文件,j2文件…
都放在与剧本同一层目录下. - 不方便后期维护
- 剧本使用到的变量文件(group_vars/all/vars.yml),普通文件(copy),模板配置文件
(template),handlers(触发器.)
- Roles本质让我们书写剧本的时候有个目录规范
- 把我们完整的剧本拆分若干部分,有的专门存放tasks部分(剧本),存放变量,
存放普通文件,存储变量文件,handlers内容
- 没有使用roles的问题:
- 创建roles环境(结构)
- .
├── group_vars/
│ ├── all/
│ │ └── main.yml
│ └── tasks/
│ └── main.yml
├── hosts
├── index.html
├── lsync-server/
│ ├── handlers/
│ │ └── main.yml
│ ├── tasks/
│ │ └── main.yml
│ └── templates/
│ └── lsyncd.conf.j2
├── nfs-client/
│ └── tasks/
│ └── main.yml
├── nfs-server/
│ ├── handlers/
│ │ └── main.yml
│ ├── tasks/
│ │ └── main.yml
│ └── templates/
│ └── exports.j2
├── rsync-client/
│ ├── tasks/
│ │ └── main.yml
│ └── templates/
│ ├── beifenjiaoben.sh.j2
│ └── rsync.client.j2
├── rsync-server/
│ ├── handlers/
│ │ └── main.yml
│ ├── tasks/
│ │ └── main.yml
│ └── templates/
│ ├── jianchajiaoben.sh.j2
│ ├── rsyncd.conf.j2
│ └── rsync.password.j2
└── top.yml
- .
- 案例实现定时备份和实时共享
- 准备nfs-server的roles
- 流程
- 创建tasks目录创建main.yml剧本书写
- – hosts: backup
tasks:
– name: 01. 安装nfs
yum:
name: nfs-utils,rpcbind
state: present
tags:
– server_01_install
– nfs_server
– name: 02. 修改配置或分发
template:
src: exports.j2
#文件里面可以放点变量
dest: /etc/exports
backup: true
notify:
– restart_nfs
tags:
– server_02_conf
– nfs_server
– name: 03. 添加www-ans用户组
group:
name: www-ans
gid: 2999
state: present
tags:
– server_03_user
– nfs_server
– name: 03. 添加www-ans用户
user:
name: www-ans
shell: /sbin/nologin
uid: 2999
group: www-ans
create_home: false
state: present
tags:
– server_03_user
– nfs_server
– name: 04. 创建共享目录
file:
path: /backup-nfs
owner: www-ans
group: www-ans
state: directory
tags:
– server_04_dir
– nfs_server
– name: 05. 启动 rpc
systemd:
name: rpcbind
enabled: true
state: started
tags:
– server_05_start
– nfs_server
– name: 05. 启动 nfs
systemd:
name: nfs
enabled: true
state: started
tags:
– server_05_start
– nfs_server
handlers:
– name: restart_nfs
systemd:
name: nfs
state: restarted- 在文件 templates/exports.j2 中存放要发送的配置文件信息
- cat exports.j2
#
{{ nfs_server_dir }}
172.16.1.0/24(rw,all_squash,anonuid=2999,anongid=2999)
#/backup
172.16.1.0/24(rw,all_squash,anonuid=2999,anongid=2999)
#/backup
172.16.1.0/24(rw,all_squash,anonuid=2999,anongid=2999)
- cat exports.j2
- 在文件 templates/exports.j2 中存放要发送的配置文件信息
- – hosts: backup
- 创建tasks目录创建main.yml剧本书写
- 流程
- 准备handlers文件
- cat nfs-server/handlers/main.yml
– name: restart_nfs
systemd:
name: nfs
state: restarted
- cat nfs-server/handlers/main.yml
- 准备hosts文件
- [web]
#172.16.1.[7:10]
172.16.1.7
[ubt]
10.0.0.207
[kylin]
10.0.0.201
[nfs]
172.16.1.31 ansible_user=root ansible_password=1
ansible_port=22
[backup]
172.16.1.41 ansible_user=root ansible_password=1
ansible_port=22
[db]
#172.16.1.51
[data:children]
nfs
backup
- [web]
- 准备nfs-client的roles
- – name: 01. 安装nfs
yum:
name: nfs-utils,rpcbind
state: present
tags:
– client_01_install
– nfs_client
– name: 02. 添加www-ans用户组
group:
name: “{{ nfs_user }}”
gid: 2999
state: present
tags:
– client_02_user
– nfs_client
– name: 02. 添加www-ans用户
user:
name: “{{ nfs_user }}”
shell: /sbin/nologin
uid: 2999
group: “{{ nfs_user }}”
create_home: false
state: present
ignore_errors: true
tags:
– client_02_user
– nfs_client
– name: 03. 创建挂载点目录
file:
path: /ans-upload
state: directory
tags:
– client_03_dir
– nfs_client
– name: 03. 挂载与永久挂载
mount:
fstype: nfs
src: “172.16.1.41:/backup-nfs/”
path: /ans-upload/
state: mounted
tags:
– client_03_mount
– nfs_client- 变量文件
- cat group_vars/all/main.yml
nfs_server_dir: /backup-nfs
nfs_user: www-ans
- cat group_vars/all/main.yml
- 变量文件
- – name: 01. 安装nfs
- 准备top.yml文件将所有将剧本配置文件结合
- #nfs-server
– hosts: backup
gather_facts: false
roles:
– role: nfs-server
#nfs-client
– hosts: web
gather_facts: false
roles:
– role: nfs-client
ansible-playbook -i hosts top.yml
- #nfs-server
- 准备nfs-server的roles
- roles详解
- include文件
- 目标
- 放在配置文件过大(剧本过大.) 拆分成多个子剧本.
- 目的
- 在我们书写剧本的时候,会涉及到多个步骤,还会涉及到服务端和客户端.
发现剧本越来越大,不容易进行分析与阅读.
把剧本拆分开,分成2个文件服务端,客户端.
这时候可以通过include_tasks的功能把多个剧本文件合并在一起,让剧本变成多
个方便阅读与维护
- 在我们书写剧本的时候,会涉及到多个步骤,还会涉及到服务端和客户端.
- cat nfs-server/tasks/main.yml
– include_tasks: install.yml
– include_tasks: config.yml
– include_tasks: start.yml
- 目标
暂无评论