使用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

posted @ 2022-07-11 20:13  张开嘴  阅读(58)  评论(0)    收藏  举报