ansbile-----------------------03.批理管理基础模块(playbook)

Ansible-Playbook  官网地址:https://docs.ansible.com/ansible/latest/user_guide/playbooks.html

利用剧本完成服务--键化部署:
    rsync      服务部署
    nfs    服务部署
    sersync  服务部署
    全网备份项目

rsync服务剧本编写:
准备工作:
  01.熟悉软件部署流程;
  02.熟悉ansible软件模块使用
  03.熟悉ansible剧本编写规范
ansible:
  ad- hoc
  临时实现批量管理功能(模块)
  playbook永久实现批量管理功能

 

 


ansible剧本功能实践介绍
================================================================================================

  • 01. 编写剧本的重要功能介绍
  1. a 在剧本中设置变量信息 OK
  2. b 在剧本中设置注册信息 OK 执行剧本时,可以显示输出命令结果信息
  3. b 在剧本中设置判断信息 OK
  4. c 在剧本中设置循环信息
  5. d 在剧本中设置错误忽略
  6. d 在剧本中设置标签信息
  7. e 在剧本中设置触发信息
  8. f 在剧本中进行剧本整合
  • 02. 在剧本中设置变量信息
  1. 方式一:直接在剧本文件编写

vars:
   backupdir: /backup
   passfile: rsync.password

  • 方式二:在命令行中进行指定
  1. ansible-playbook  -e backupdir=/data -e passfile=rsync..password  rsync_host_vars.yaml
  • 方式三:在主机清单文件编写
  1. [rsync_server]
    192.168.122.151
    [rsync_server:vars]
    backupdir=/backup
    passfile=rsync-password

    [rsync_client]
    192.168.122.157
    192.168.122.152
    [rsync_client:vars]
    passfile=rsync-password

  • 三种变量设置方式都配置了,三种方式的优先级???

最优先: 命令行变量设置

次优先: 剧本中变量设置

最后: 主机清单变量设置

如何全局设置变量: roles 剧本整合



  • 03. 在剧本中设置注册信息
  1. - hosts: oldboy

tasks:

  - name: check server port

     shell: netstat -lntup --- 端口信息

     register: get_server_port<--端口信息

- name: display port info

debug: msg={{ get_server_port.stdout_lines }}

显示进程信息,表示服务已经正常启动

PS: 设置变量不能有空格信息

  2. register 取值后比较大小

    - name: sleep time
       shell: cat /opt/rmax/bs/web-8080/logs/catalina.out |wc -l
       register: bslow

      - name: step3
      shell: echo "{{ bslow.stdout }} " >>/tmp/ppp.txt
      when: bslow.stdout|int > 10000 

PS: 注册变量后取值(int)大小 然后比较大小,执行结果。 

  • 04. 在剧本中设置判断信息
  1. 如何指定判断条件:
    - hosts: rsync_client
      tasks:
        - name: 01-centos-install rsync
          yum: name=iftop state=installed
          when: (ansible_distribution == "CentOS")               # --- 判断系统为 Centos 时
        - name: 01-debain-install rsync
          apt: name=iftop state=present
          when: (ansible_distribution ==  "Debian")              # --- 判断系统为 Debain 时

     - hosts: all
       tasks:
        - name: 01-centos-install soft
           shell: echo "1" >> /tmp/1.txt
           when: ( ansible_all_ipv4_addresses[0] == '192.168.122.135') or (ansible_distribution == "Debian")

     

setup模块中显示被管理主机系统的详细信息

获取内置变量方法:
ansible rsync -m setup -a "filter=ansible_hostname"
常见主机信息:
ansible_all_ipv4_addresses:                          仅显示ipv4的信息。
ansible_devices:                                     仅显示磁盘设备信息。
ansible_distribution:                              显示是什么系统,例:centos,suse等。
ansible_distribution_major_version:                       显示是系统主版本。
ansible_distribution_version:                          仅显示系统版本。
ansible_machine:                                   显示系统类型,例:32位,还是64位。
ansible_eth0:                                   仅显示eth0的信息。
ansible_hostname:                              仅显示主机名。
ansible_kernel:                               仅显示内核版本。
ansible_lvm:                                   显示lvm相关信息。
ansible_memtotal_mb:                             显示系统总内存。
ansible_memfree_mb:                                显示可用系统内存。
ansible_memory_mb:                                 详细显示内存情况。
ansible_swaptotal_mb:                               显示总的swap内存。
ansible_swapfree_mb:                             显示swap内存的可用内存。
ansible_mounts:                                   显示系统磁盘挂载情况。
ansible_processor:                                  显示cpu个数(具体显示每个cpu的型号)。
ansible_processor_vcpus:                            显示cpu个数(只显示总的个数)。

获取子信息方法:
ansible_eth0[ipv4]

04. 在剧本中设置循环信息

- hosts: rsync_client
  tasks:
    - name: 01-centos-install soft
      yum:
        name: ['rsync','tree','wget','glances']             #---- 循环方式一
        state: installed
      when: (ansible_distribution == "CentOS")              #判断
    - name: 01-debain-install soft
      apt: name={{ item }} state=present                    #---- 循环方式二
      with_items:                                                       
            - wget
            - tree
            - iotop 
      when: (ansible_distribution ==  "Debian")             #判断

 

0.5 在剧本中设置错误忽略

 

 

 

 

 

06.在剧本中设置标签信息

  执行:

ansible-playbook]# ansible-playbook -t T1 rsync_标签信息.yaml 
ansible-playbook]# ansible-playbook -tags=T1 rsync_标签信息.yaml 
ansible-playbook]# ansible-playbook --skip-tags=T1 rsync_标签信息.yaml          ----  跳过标签执行

 

 

  07. 在剧本中设置触发功能

- hosts: rsync_server
  tasks:
    - name: 01-install rsync
      yum: name=rsync state=installed
    - name: 02-push conf file
      copy: src=/etc/ansible/server_file/rsync_server/rsyncd.conf dest=/etc/
      notify: restart rsync server
    - name: 03-create user
      #user: name=rsync create_home=no shell=/sbin/nologin
      shell: useradd rsync -M -s /sbin/nologin
      ignore_errors: yes
    - name: 04-create backup dir
      file: path=/backup state=directory owner=rsync group=rsync
    - name: 05-create password file
      copy: content=rsync_backup:happy123 dest=/etc/rsync.password mode=600
    - name: 06-start rsync server
      service: name=rsyncd state=started enabled=yes
  handlers:
    - name: restart rsync server
      service: name=rsyncd state=restarted

 

 

08.

 

 

posted @ 2019-11-03 10:46  lyh3420  阅读(196)  评论(0)    收藏  举报