• 剧本 playbook, roles


    1.yaml

      格式要求
        冒号后面必须有空格

        等号后面不能有空格

        -后面也要有空格

        严格对齐

    2.setup

    ansible_all_ipv4_addresses   # ipv4的所有地址
    ansible_all_ipv6_addresses   # ipv6的所有地址
    ansible_date_time   # 获取到控制节点时间
    ansible_default_ipv4  # 默认的ipv4地址
    ansible_distribution  # 系统
    ansible_distribution_major_version  # 系统的大版本
    ansible_distribution_version  # 系统的版本号
    ansible_domain #系统所在的域
    ansible_env #系统的环境变量
    ansible_hostname #系统的主机名
    ansible_fqdn #系统的全名
    ansible_machine #系统的架构
    ansible_memory_mb #系统的内存信息
    ansible_os_family # 系统的家族
    ansible_pkg_mgr # 系统的包管理工具
    ansible_processor_cores #系统的cpu的核数(每颗)
    ansible_processor_count #系统cpu的颗数
    ansible_processor_vcpus #系统cpu的总个数=cpu的颗数*CPU的核数
    ansible_python # 系统上的python
    ansible cache -m setup -a 'filter=*processor*' # 用来搜索

      如果出现

    - hosts: db
      tasks:
      - name: zzgbgn
        dong: zzdbgn
        when: zhanzhe
      - name: pzhegbgn
        dong: pzhedbgn
        when: pazhe

    条件判断

    when: 条件==“条件”

      不同的系统

      不同的版本

      不同的环境

      不同的用户

    - hosts: db
      remote_user: root
      tasks:
      - name: createfile
        copy: content="大弦嘈嘈如急雨" dest=/tmp/a.txt
        when: a=="3"
      - name: cratefile
        copy: content="小弦切切如私语" dest=/tmp/a.txt
        when: a=="4"

      Ubuntu安装包的方式是apt-get

    标签  tags

    - hosts: db
      tasks:
      - name: wadong
        tieqiao: wadong
      - name: tk
        dong: tk
        tags: tk
    - hosts: web
      tasks:
      - name: installnginx
        yum: name=nginx
      - name: copyfile
        copy: src=/etc/nginx/nginx.conf dest=/etc/nginx/nginx.conf
        tags: copyfile
      - name: start
        service: name=nginx state=started

    标签的传递

    ansible-playbook -t copyfile p7.yml

    循环  with_item

      一次性创建多个

    - hosts: gb
      tasks:
      - name: gbqc
        dong: {{ item }}
        with_items:
        - qbqc
        - cyf
        - ssfj
    - hosts: web
      tasks:
      - name: crateuser
        user: name={{item}}
        with_items:
        - alex20
        - alex21
        - alex22
    ~    
    - hosts: web
      tasks:
      - name: crateuser
        user: name={{item}}
        with_items:
        - alex30
        - alex31
        - alex32
      - name: crategroup
        group: name={{item}}
        with_items:
        - wulaoshi20
        - wulaoshi21
        - wulaoshi22
    ~   

    嵌套循环  放在字典中,通过点来取值

    - hosts: web
      tasks:
      - name: crategroup
        group: name={{item}}
        with_items:
        - wulaoshi30
        - wulaoshi31
        - wulaoshi32
      - name: createuser
        user: name={{item.name}} group={{item.group}}
        with_items:
        - {'name':alex40,'group':wulaoshi30}
        - {'name':alex41,'group':wulaoshi31}
        - {'name':alex42,'group':wulaoshi32}

    模版   template

    - hosts: web
      tasks:
      - name: installredis
        yum: name=redis
      - name: copyfile
        template: src=/etc/redis.conf dest=/etc/redis.conf
      - name: start
        service: name=redis state=started
      配置文件: bind {{ ansible_default_ipv4.address }} 

      copy和template的区别

        copy模块不替代参数

        template 模块替代参数

    - hosts: web
      tasks:
      - name: installredis
        yum: name=redis
      - name: copyfile
        template: src=redis.conf dest=/etc/redis.conf
      - name: start
        service: name=redis state=started

    注意:写相对路径   在当前目录下新建一个templates目录,然后把文件放在templates目录里面

    handlers

      修改配置文件

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

    3.roles

      目录清晰

      可以相互调用

    roles文件夹

      文件夹里面是要创建的每一个角色,每一个角色一个文件夹

      每一个角色里面都有tasks(必须的),templates,files,handlers,vars目录

      每个目录都要有main.yml文件,通过import_tasks来调用

      其中templates文件夹中的文件可以通过相对路径来调用

    setenforce 0 #用来临时关闭selinux
    iptables -F # 临时关闭防火墙
    /etc/selinux/config  # 永久关闭

     

  • 相关阅读:
    石子游戏2
    礼物的最大价值
    CF512D. Fox And Travelling
    arc099F
    CF504E. Misha and LCP on Tree(长链剖分求k级祖先)
    agc031D
    CF555E. Case of Computer Network
    agc023D
    CF1406E. Deleting Numbers
    CF585F. Digits of Number Pi
  • 原文地址:https://www.cnblogs.com/chenxi67/p/10413502.html
Copyright © 2020-2023  润新知