ansible使用8-Best Practices

it2022-05-05  126

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

posted on 2015-01-04 15:30 北京涛子 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/liujitao79/p/4201263.html

相关资源:ike-core:Ilki Kubernetes引擎核心(IKE-Core)是基于CNCF生态系统构建的开源Kubernetes轻量级发行版,它提供了最佳实践的企业级解决方案,用于为本地和公共云提供商管理一致的Kubernetes集群-源码

最新回复(0)