大规模运行 Ansible

主要观点:作者多年使用多种自动化解决方案,最终认定 Ansible 经得住时间考验,它在功能、易用性、可维护性、可移植性、可扩展性和安全性方面结合得很好,可用于各种云环境自动化任务,包括简单的时间检查和复杂的零停机蓝绿部署等。

关键信息:

  • Ansible 采用无代理方式,适用于动态云环境,有主机清单、剧本、角色三个主要概念。

    • 主机清单可静态定义或动态构建,动态清单根据云提供商的机制(如 AWS 的 ec2.py、Azure 的 azure_rm.py、Google Cloud 的 gce.py 等)基于元数据构建主机列表。
    • 剧本是描述应应用于给定主机集的任务和角色的 yaml 文件。
    • 角色定义在单个主机上运行的任务组,可在 Ansible Galaxy 上找到已构建的角色。
  • 可通过变量提取环境特定值,分为不需要加密的 vars.yml 和需要加密的 vault.yml,使用 Ansible Vault 加密。
  • 推荐目录布局,将剧本和角色分开,便于管理。
  • 大规模使用 Ansible 需考虑多团队、不同环境等情况,如使用单独的控制服务器、限制访问等,还可使用 Ansible Tower 或 AWX 进行集成。
  • 给出了时间检查和滚动 AWS 部署的示例,展示 Ansible 在不同场景下的应用。

重要细节:

  • 主机清单示例:inventories/mycloud/hosts 中定义了静态的 web 服务器和数据库服务器主机。
  • 剧本示例:playbooks/setup-zeppelin.yml 中配置具有特定标签的 EC2 实例运行 Apache Zeppelin。
  • 变量示例:inventories/aws/group_vars/tag_PROD_webserver/vars.ymlvault.yml 分别存储不需要加密和需要加密的属性。
  • 滚动部署示例:详细描述了在 AWS 环境中对不同服务器层进行滚动部署的剧本,包括数据库升级、服务器操作和监控等步骤。
  • 示例代码:如各种命令和剧本中的具体任务定义等。
阅读 7
0 条评论