• ansible使用8-Best Practices


    Content Organization

    production                # inventory file for production servers
    stage                     # inventory file for stage environment
    
    group_vars/
       group1                 # here we assign variables to particular groups
       group2                 # ""
    host_vars/
       hostname1              # if systems need specific variables, put them here
       hostname2              # ""
    
    library/                  # if any custom modules, put them here (optional)
    filter_plugins/           # if any custom filter plugins, put them here (optional)
    
    site.yml                  # master playbook
    webservers.yml            # playbook for webserver tier
    dbservers.yml             # playbook for dbserver tier
    
    roles/
        common/               # this hierarchy represents a "role"
            tasks/            #
                main.yml      #  <-- tasks file can include smaller files if warranted
            handlers/         #
                main.yml      #  <-- handlers file
            templates/        #  <-- files for use with the template resource
                ntp.conf.j2   #  <------- templates end in .j2
            files/            #
                bar.txt       #  <-- files for use with the copy resource
                foo.sh        #  <-- script files for use with the script resource
            vars/             #
                main.yml      #  <-- variables associated with this role
            defaults/         #
                main.yml      #  <-- default lower priority variables for this role
            meta/             #
                main.yml      #  <-- role dependencies
    
        webtier/              # same kind of structure as "common" was above, done for the webtier role
        monitoring/           # ""
        fooapp/               # ""
    

    Use Dynamic Inventory With Clouds

    Dynamic Inventory

    How to Differentiate Stage vs Production

    # file: production
    
    [atlanta-webservers]
    www-atl-1.example.com
    www-atl-2.example.com
    
    [boston-webservers]
    www-bos-1.example.com
    www-bos-2.example.com
    
    [atlanta-dbservers]
    db-atl-1.example.com
    db-atl-2.example.com
    
    [boston-dbservers]
    db-bos-1.example.com
    
    # webservers in all geos
    [webservers:children]
    atlanta-webservers
    boston-webservers
    
    # dbservers in all geos
    [dbservers:children]
    atlanta-dbservers
    boston-dbservers
    
    # everything in the atlanta geo
    [atlanta:children]
    atlanta-webservers
    atlanta-dbservers
    
    # everything in the boston geo
    [boston:children]
    boston-webservers
    boston-dbservers
    
    # 按主机、区域、数据中心划分
    

    Group And Host Variables

    ---
    # file: group_vars/atlanta
    ntp: ntp-atlanta.example.com
    backup: backup-atlanta.example.com
    
    ---
    # file: group_vars/webservers
    apacheMaxRequestsPerChild: 3000
    apacheMaxClients: 900
    
    ---
    # file: group_vars/all
    ntp: ntp-boston.example.com
    backup: backup-boston.example.com
    
    ---
    # file: host_vars/db-bos-1.example.com
    foo_agent_port: 86
    bar_agent_port: 99
    
    # 注意主机变量&组变量的覆盖
    

    Top Level Playbooks Are Separated By Role

    ---
    # file: site.yml
    - include: webservers.yml
    - include: dbservers.yml
    
    ---
    # file: webservers.yml
    - hosts: webservers
      roles:
        - common
        - webtier
    
    ansible-playbook site.yml --limit webservers
    ansible-playbook webservers.yml
    

    Task And Handler Organization For A Role

    ---
    # file: roles/common/tasks/main.yml
    
    - name: be sure ntp is installed
      yum: pkg=ntp state=installed
      tags: ntp
    
    - name: be sure ntp is configured
      template: src=ntp.conf.j2 dest=/etc/ntp.conf
      notify:
        - restart ntpd
      tags: ntp
    
    - name: be sure ntpd is running and enabled
      service: name=ntpd state=running enabled=yes
      tags: ntp
    
    ---
    # file: roles/common/handlers/main.yml
    - name: restart ntpd
      service: name=ntpd state=restarted
    

    What This Organization Enables (Examples)

    ansible-playbook -i production site.yml
    ansible-playbook -i production site.yml --tags ntp
    ansible-playbook -i production webservers.yml
    
    ansible-playbook -i production webservers.yml --limit boston
    ansible-playbook -i production webservers.yml --limit boston[0-10]
    ansible-playbook -i production webservers.yml --limit boston[10-20]
    
    ansible boston -i production -m ping
    ansible boston -i production -m command -a '/sbin/reboot'
    
    # confirm what task names would be run if I ran this command and said "just ntp tasks"
    ansible-playbook -i production webservers.yml --tags ntp --list-tasks
    
    # confirm what hostnames might be communicated with if I said "limit to boston"
    ansible-playbook -i production webservers.yml --limit boston --list-hosts
    

    Deployment vs Configuration Organization

    Stage(test) vs Production

    Rolling Updates

    Delegation, Rolling Updates, and Local Actions.

    Always Mention The State

    Group By Roles

    Operating System and Distribution Variance

  • 相关阅读:
    提高samba的传输速度[转载]
    centos安装samba,与其它OS共享文件[转载]
    解决*unix系统下Can&apos;t connect to local MySQL server through socket &apos;/tmp/mysql.sock&apos; (2)
    java在windows cmd中乱码
    mysql 主从复制配置
    mysql 开启binlog
    关于mysql varchar类型的长度
    MyISAM的表锁
    html页面跳转不保存上个页面的记录
    golang 下载所有依赖
  • 原文地址:https://www.cnblogs.com/liujitao79/p/4201263.html
Copyright © 2020-2023  润新知