• 运维自动化 第五章 playbook 模块补充


     13.setup(用来获取系统参数,里面一些参数,不用死记)

    ansible_all_ipv4_addresses #所有的ipv4地址
    ansible_all_ipv6_addresses #所有的ipv6地址
    ansible_architecture #系统的架构
    ansible_date_time #系统时间
    ansible_default_ipv4 #默认的ipv4地址
        address ip地址
        alias 网卡名称
        broadcast 广播地址
        gateway 网关
        netmask 子网掩码
        network 网段
    ansible_default_ipv6 #默认的ipv6地址
    ansible_device_links #系统的磁盘信息
    ansible_distribution #系统名称
    ansible_distribution_file_variety #系统的基于公司
    ansible_distribution_major_version #系统的主版本
    ansible_distribution_version #系统的全部版本
    ansible_dns #系统的dns 默认udp 端口53
    ansible_domain #系统的域 ldap
    ipv4 #ipv4地址
    ansible_env #系统的环境
    ansible_fqdn #系统的完整主机名
    ansible_hostname #系统的简写主机名
    ansible_kernel #系统的内核版本
    ansible_machine #系统的架构
    ansible_memtotal_mb #系统的内存
    ansible_memory_mb #系统的内存使用情况
    ansible_mounts #系统的挂载信息
    ansible_os_family #系统家族
    ansible_pkg_mgr #系统的包管理工具
    ansible_processor #系统的cpu
    ansible_processor_cores #每颗cpu的核数
    ansible_processor_count #cpu的颗数
    ansible_processor_vcpus #cpu的个数=cpu的颗数*每颗cpu的核数
    ansible_python #系统python信息
    ansible_python_version #系统python的版本
    ansible_system #系统名字

     14.template(可以动态的传递参数,在setup获取)

      绝对路径:

    - hosts : web
      tasks:
      - name :install
        yum : name=redis
      - name :copyfile
        template: dest=/etc/redis.conf src=/etc/redis.conf
        tags: copy
        notify :restart
      - name :start 
        service: name=redis state=started
      handlers:
      - name:restart
        service : name=redis state=restarted

     15.replace用来做替换,支持正则

    yaml规范 yaml链接

    字典 key:value
    列表 :[] -
    注: 如果写列表和字典格式必须为- name: alex
    还有如果是同级的情况,首行缩进必须是一致的;
    冒号后面必须有空格
    横线后面必须有空格
    严格保持对齐
    等号前面不能有空格

    playbook格式

    用法:

    ansible-playbook [options] playbook.yml [playbook2 ...]

    -C --check   #干跑 ,会执行但不会有结果,不会有任何变化产生
    --list-hosts #列出符合的主机
    -f FORKS --forks=FORKS  #做并发
    --syntax-check  #检查语法
    -k ,--ask-pass  #输入密码

      单个playbook

    -hosts :web
     remote_user: root
     tasks:
     - name:createuser
       user:name =alex20 home=/opt/alex20 uid =4000
    

     多个playbook

    -hosts: web
     remote_user: root
     tasks:
     - name:createuser
       user:name=alex20 home=/opt/alex20 uid=4000
     - name:copyfile
       copy:src=/etc/fstab dest=/tmp/fs
    

     幂等性 : 不管执行多少次,得到的结果都是一样的

    -hosts :web
     remote_user:root
     tasks:
     - name:createuser
       user: name=alex20 home=/opt/alex20 uid=4000
     - name:copyfile
       copy:src=/etc/fstab dest=/tmp/fs
    -hosts :db
     tasks:
     - name: copyfile
       copy: src=/etc/fstab dest=/tmp/fs
    

    传参:

       -e 
       host文件ip地址后面写
       playbook vars
       register  获取值stdout

    传参的五种方式

      第一种:

    - hosts: web
      tasks:
      -name: create{{user}}
       user: name={{user}} 
    
    ansible-playbook -e user=wusir20 p3.yml
    

       第二种:

    在web组中写
    
    [web]
    192.168.100.[1:3]  user=alex30
    192.168.100.6    user=alex100
    

      第三种:

    [web:vars]
    user=alex31
    

      第四种:

    - hosts : web
      vars:
      -user: alex32
      tasks:
      - name:create{{user}}
        user:name={{user}}
    

      第五种:

    -hosts:web
     tasks:
     -name :yum
      yum : name=bc
     -name :sum
      shell: echo 11+22|bc
      register: user
      -name : echo 
       shell :echo {{user.stdout}} > /tmp/echo.txt
      -name :create{{user.stdout}}
       user: name=alex{{user.stdout}}
    

     优先级:

    -e > playbook > hosts

     tags(打一个标签,可以指定单独的标签)

    - hosts :web
      tasks:
      - name:install
        yum : name=redis
      - name: copyfile
        copy :dest=/etc/redis.conf src=/etc/redis.conf
        tags: copy
      - name: start
        service : name=redis state=started
    
    ansible-playbook -t copy p7.yml
    

     handlers(被触发的任务,notify获取)

    - hosts :web
      tasks:
      - name :install
        yum :name=redis
      - name :copyfile
        copy : dest=/etc/redis.conf src=/etc/redis.conf
        tags: copy
        notify: restart
      - name: start
        service: name=redis sate=started
      handlers:
        - name :restart
          service :name =redis state=restarted

     mv redis.conf{,.j2} = mv redis.conf.j2

      相对路径:

    - hosts :web 
      tasks:
      - name : install
        yum: name=redis
      - name : copyfile
        template :dest=/etc/redis.conf src=redis.conf.j2
        tags: copy
        notify :restart
      - name: start
        service : name=redis state=started
      handlers:
      - name:restart
        service : name=redis state=restarted
    
    在当前目录下创建一个templates的目录,就可以使用相对路径

    when (判断 ,当满足when条件的时候,才执行函数,类似于选择)

    - hosts :web
      tasks:
      - name : copyfile
        copy: content='大弦嘈嘈如急雨'  dest=/tmp/a.txt
        when : ansible_distribution_major_version=='7'
      - name : copyfile
        copy: content='小弦切切如私语'  dest=/tmp/a.txt
        when : ansible_distribution_major_version=='6'
    
    当centos版本为7的时候,执行上面那句话; 否则,执行下面这句话
    

     with_items(循环)

    - hosts : web
      tasks:
      - name : createuser
        user: name={{item}}
        with_items:
        - alex50
        - wusir50
        - taibai50
    
    
    - hosts : web
      tasks:
     -name :createuser
       user: name={{item}}
      with_items:
      - alex51
      - wusir51
      - taibai51
      - name: creategroup
        group:name={{item}}
       with_items:
       - alex60
       - wusir60
       - taibai60

     嵌套循环

    - hosts : web
      tasks : 
      - name : createuser
        user : name={{item.name}}  group={{item.group}}
        with_items:
        - {'name':alex52, 'group': alex60}
        - {'name':wusir52, 'group':wusir52}
        - {'name': taibai52, 'group':taibai52}

      

  • 相关阅读:
    Scala教程之:静态类型
    java运行时跟编译时的区别,欢迎大家指正
    循环者的诅咒
    Python分支结构与流程控制
    底层剖析Python深浅拷贝
    I/O格式化与运算符
    详解Python垃圾回收机制
    LeetCode29 Medium 不用除号实现快速除法
    详解SkipList跳跃链表【含代码】
    高等数学——讲透微分中值定理
  • 原文地址:https://www.cnblogs.com/zty1304368100/p/10827490.html
Copyright © 2020-2023  润新知