使用znsible-playbook一键部署(rsync/nfs/nginx)
1.手写yaml
将如下json转为yaml
[
{
"0224": {
"老师": "于超",
"学生们": [
{
"黄彦": [
{
"年龄": 23,
"地址": "深圳"
}
],
"陈亮亮": [
{
"年龄": 24,
"地址": "广州"
}
],
"罗兴林": [
{
"年龄": 26,
"地址": "贵州"
}
]
}
]
}
}
]
- "0224":
老师: 于超
学生们:
- 黄彦:
- 年龄: 23
地址: 深圳
陈亮亮:
- 年龄: 24
地址: 广州
罗兴林:
- 年龄: 26
地址: 贵州

[
{
"0224": {
"老师": "于超",
"学生们": [
{
"黄彦": {
"年龄": 23,
"地址": "深圳"
}
},
{
"陈亮亮": {
"年龄": 24,
"地址": "广州"
}
},
{
"罗兴林": {
"年龄": 26,
"地址": "贵州"
}
}
]
}
}
]
2.练习jq命令处理json
json资料地址
使用jq命令
1.提取出 于超
[root@master-61 ~]#cat 0224班.json | jq '.[]| .[] | ."老师" '
"于超"
2.提取出学生列表
[root@master-61 ~]#cat 0224班.json | jq '.[]| .[] | ."学生们" '
[
{
"黄彦": {
"年龄": 23,
"地址": "深圳"
}
},
{
"陈亮亮": {
"年龄": 24,
"地址": "广州"
}
},
{
"罗兴林": {
"年龄": 26,
"地址": "贵州"
}
}
]
3.提取出罗兴林的资料
[root@master-61 ~]#cat 0224班.json | jq '.[]| .[] | ."学生们" | .[2] '
{
"罗兴林": {
"年龄": 26,
"地址": "贵州"
}
}
4.提取出陈亮亮的资料
[root@master-61 ~]#cat 0224班.json | jq '.[]| .[] | ."学生们" | .[1] '
{
"陈亮亮": {
"年龄": 24,
"地址": "广州"
}
}
5.提取出黄彦的地址
[root@master-61 ~]#cat 0224班.json | jq '.[]| .[] | ."学生们" | .[0] | .[] | ."地址" '
"深圳"
6.提取出罗兴林的年龄
[root@master-61 ~]#cat 0224班.json | jq '.[]| .[] | ."学生们" | .[2] | .[] | ."年龄" '
26
3.一键部署rsync\nfs\nginx
nfs
字典
[root@master-61 ~/my_playbook]#cat nfs.yaml
---
- name: 安装nfs服务
hosts: nfs
tasks:
- name: 1 定义变量
shell: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
- name: 2 下载nfs服务
yum:
name: nfs-utils
state: latest
- name: 3 下载rpcbind
yum:
name: rpcbind
state: latest
- name: 4 启动nfs服务
systemd:
name: nfs
state: started
- name: 5 启动rpcbind服务
systemd:
name: rpcbind.socket
state: started
- name: 6 设置nfs开机自启
systemd:
name: nfs
enabled: yes
- name: 7 创建挂载目录
file:
path: /my_nfs_nginx
state: directory
- name: 8 创建组
group:
name: www
gid: 666
- name: 9 创建用户
user:
name: www
uid: 666
group: www
create_home: no
shell: /sbin/nologin
- name: 10 修改配置文件
copy:
content: /my_nfs_nginx 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
dest: /etc/exports
- name: 11 更新配置文件
command: exportfs -r
- name: 12 修改共享文件/my_nfs_nginx的属主属组
file:
path: /my_nfs_nginx
owner: www
group: www



纯变量
[root@master-61 ~/my_playbook]#cat nfs2.yaml
---
- name: 安装nfs服务
hosts: nfs
tasks:
- name: 1 定义变量
shell: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
- name: 2 下载nfs服务
yum: name=nfs-utils state=latest
- name: 3 下载rpcbind
yum: name=rpcbind state=latest
- name: 4 启动nfs服务
systemd: name=nfs state=started
- name: 5 启动rpcbind服务
systemd: name=rpcbind.socket state=started
- name: 6 设置nfs开机自启
systemd: name=nfs enabled=yes
- name: 7 创建挂载目录
file: path=/my_nfs_nginx state=directory
- name: 8 创建组
group: name=www gid=666
- name: 9 创建用户
user: name=www uid=666 group=www create_home=no shell=/sbin/nologin
- name: 11 修改配置文件
copy: content=/my_nfs_nginx 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666) dest=/etc/exports
- name: 12 更新配置文件
command: exportfs -r
- name: 13 修改共享文件/my_nfs_nginx的属主属组
file: path=/my_nfs_nginx owner=www group=www



lsyncd
字典
[root@master-61 ~/my_playbook]#cat lsyncd.yaml
---
- name: 安装lsyncd服务
hosts: nfs
tasks:
- name: 1 定义变量
shell: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
- name: 2 下载lsyncd服务
yum:
name: lsyncd
state: latest
- name: 3 将在本地写好的配置文件发给31机器
copy:
src: /my_rj.conf/lsyncd.cf
dest: /etc/
- name: 4 将发送过去的文件覆盖lsyncd的配置文件
shell: cat /etc/lsyncd.cf > /etc/lsyncd.conf
- name: 5 将密码放入密码文件
copy:
content: 111111
dest: /etc/rsync.pwd
- name: 6 修改密码文件权限,拒绝其他人访问
file:
path: /etc/rsync.pwd
mode: 600
- name: 7 启动lsyncd服务
systemd:
name: lsyncd
state: started


纯变量
[root@master-61 ~/my_playbook]#cat lsyncd2.yaml
---
- name: 安装lsyncd服务
hosts: nfs
tasks:
- name: 1 定义变量
shell: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
- name: 2 下载lsyncd服务
yum: name=lsyncd state=latest
- name: 3 将在本地写好的配置文件发给31机器
copy: src=/my_rj.conf/lsyncd.cf dest=/etc/
- name: 4 将发送过去的文件覆盖lsyncd的配置文件
shell: cat /etc/lsyncd.cf > /etc/lsyncd.conf
- name: 5 将密码放入密码文件
copy: content="111111" dest=/etc/rsync.pwd
- name: 6 修改密码文件权限,拒绝其他人访问
file: path=/etc/rsync.pwd mode=600
- name: 7 启动lsyncd服务
systemd: name=lsyncd state=started


rsyncd
字典
[root@master-61 ~/my_playbook]#cat rsyncd.yaml
---
- name: 安装rsyncd服务
hosts: rsync
tasks:
- name: 1 定义变量
shell:
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
- name: 2 下载rsyncd服务
yum:
name: rsync
state: latest
- name: 3 将在本地写好的配置文件发给41机器
copy:
src: /my_rj.conf/rsyncd.cf
dest: /etc/
- name: 4 将发送过去的文件覆盖rsyncd的配置文件
shell:
"cat /etc/rsyncd.cf > /etc/rsyncd.conf"
- name: 5 创建用户
user:
name: xming
uid: 2222
create_home: no
shell: /sbin/nologin
- name: 6 创建/tantan目录
file:
path: /tantan
state: directory
- name: 7 创建/momo目录
file:
path: /momo
state: directory
- name: 8 修改/tantan目录属主属组
file:
path: /tantan
owner: xming
group: xming
- name: 9 修改/tantan目录属主属组
file:
path: /momo
owner: xming
group: xming
- name: 10 创建密码文件
copy:
content: rsync_xming:111111
dest: /etc/rsync.pwd
- name: 11 密码文件授权
file:
path: /etc/rsync.pwd
mode: 600
- name: 12 启动rsyncd服务
systemd:
name: rsyncd
state: started



纯变量
[root@master-61 ~/my_playbook]#cat rsyncd2.yaml
---
- name: 安装rsyncd服务
hosts: rsync
tasks:
- name: 1 定义变量
shell: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
- name: 2 下载rsyncd服务
yum: name=rsync state=latest
- name: 3 将在本地写好的配置文件发给41机器
copy: src=/my_rj.conf/rsyncd.cf dest=/etc/
- name: 4 将发送过去的文件覆盖rsyncd的配置文件
shell: cat /etc/rsyncd.cf > /etc/rsyncd.conf
- name: 5 创建用户
user: name=xming uid=2222 create_home=no shell=/sbin/nologin
- name: 6 创建/tantan目录
file: path=/momo state=directory
- name: 7 创建/momo目录
file: path=/momo state=directory
- name: 8 修改/tantan目录属主属组
file: path=/tantan owner=xming group=xming
- name: 9 修改/tantan目录属主属组
file: path=/momo owner=xming group=xming
- name: 10 创建密码文件
copy: content=rsync_xming:111111 dest=/etc/rsync.pwd
- name: 11 密码文件授权
file: path=/etc/rsync.pwd mode=600
- name: 12 启动rsyncd服务
systemd: name=rsyncd state=started



web
字典
[root@master-61 ~/my_playbook]#cat web.yaml
---
- name: 安装nginx服务
hosts: web
tasks:
- name: 1 定义变量
shell:
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
- name: 2 下载nginx服务
yum:
name: nginx
state: latest
- name: 3 将在本地写好的配置文件发给web(7,8,9)机器
copy:
src: /my_rj.conf/nginx.cf
dest: /etc/
- name: 4 将发送过去的文件覆盖rsyncd的配置文件
shell:
"cat /etc/nginx.cf > /etc/nginx.conf"
- name: 5 启动nginx服务
systemd:
name: nginx
state: started
- name: 6 下载nfs服务
yum:
name: nfs-utils
state: latest
- name: 7 挂载31机器的共享目录/my_nfs_nginx
mount:
src: "172.16.1.31:/my_nfs_nginx"
path: /usr/share/nginx/html
fstype: nfs
state: mounted


纯变量
[root@master-61 ~/my_playbook]#cat web2.yaml
---
- name: 安装nginx服务
hosts: web
tasks:
- name: 1 定义变量
shell: "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
- name: 2 下载nginx服务
yum: name=nginx state=latest
- name: 3 将在本地写好的配置文件发给web(7,8,9)机器
copy: src=/my_rj.conf/nginx.cf dest=/etc/
- name: 4 将发送过去的文件覆盖rsyncd的配置文件
shell: "cat /etc/nginx.cf > /etc/nginx.conf"
- name: 5 启动nginx服务
systemd: name=nginx state=started
- name: 6 下载nfs服务
yum: name=nfs-utils state=latest
- name: 7 挂载31机器的共享目录/my_nfs_nginx
mount: src=172.16.1.31:/my_nfs_nginx path=/usr/share/nginx/html fstype=nfs state=mounted



浙公网安备 33010602011771号