集群批量管理-Ansible-初级进阶
  • Roles ⭐⭐⭐⭐⭐
    • roles详解
      • 没有使用roles的问题:
        • 增加剧本可读性,规范性
        • 剧本需要的文件,我们目前随处存放
        • 随着我们书写的剧本越来越复杂,我们发现,剧本使用到的文件,配置文件,j2文件…
          都放在与剧本同一层目录下.
        • 不方便后期维护
        • 剧本使用到的变量文件(group_vars/all/vars.yml),普通文件(copy),模板配置文件
          (template),handlers(触发器.)
      • Roles本质让我们书写剧本的时候有个目录规范
      • 把我们完整的剧本拆分若干部分,有的专门存放tasks部分(剧本),存放变量,
        存放普通文件,存储变量文件,handlers内容
    • 创建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)
      • 准备handlers文件
        • cat nfs-server/handlers/main.yml
          – name: restart_nfs
          systemd:
          name: nfs
          state: restarted
      • 准备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
      • 准备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
      • 准备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
  • include文件
    • 目标
      • 放在配置文件过大(剧本过大.) 拆分成多个子剧本.
    • 目的
      • 在我们书写剧本的时候,会涉及到多个步骤,还会涉及到服务端和客户端.
        发现剧本越来越大,不容易进行分析与阅读.
        把剧本拆分开,分成2个文件服务端,客户端.
        这时候可以通过include_tasks的功能把多个剧本文件合并在一起,让剧本变成多
        个方便阅读与维护
    • cat nfs-server/tasks/main.yml
      – include_tasks: install.yml
      – include_tasks: config.yml
      – include_tasks: start.yml
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇