/images/hugo/avatar.png

29.9 ansible 最佳实践

ansible 最佳实践

/images/linux_mt/linux_ansible.jpg

当我们刚开始学习运用 playbook 时,可能会把 playbook 写成一个很大的文件,到后来可能你会希望这些文件是可以方便去重用的,所以需要重新去组织这些文件。ansible 支持 include 语法对 tasks, handlers, playbook 进行引用,从而我们可以对基础的通用功能进行封装,通过 “include” 对通用的功能进行组装从而实现复用。

29.8 ansible role

ansible role

/images/linux_mt/linux_ansible.jpg

role 角色,基于一个已知的文件结构,去自动的加载某些 vars_files,tasks 以及 handlers。基于 roles 对内容进行分组,使得我们可以容易地与其他用户分享 roles。

29.7 ansible playbook

ansible playbook

/images/linux_mt/linux_ansible.jpg

playbook 是 基于 yaml 语法的一种编排 ansible 命令的"脚本",类似与 shell scritp;但是 playbook 并不是一门语言。我的理解是 playbook 就是一个配置文件,必需按照 ansible 要求的特定格式编排 ansible 的任务,这样 ansible 才能对其进行解释并执行。其能提供的功能是由 ansible 决定的。我们的目的就是学习 playbook 特定的编写要求。

29.6 ansible 常用模块

ansible 常用模块

/images/linux_mt/linux_ansible.jpg

上一节我们对 ansible 做了一个概括性的介绍,本节我们来看看 ansible 主程序与常见模块的使用,模块是我们定义服务配置的关键。

1. ansible 核心程序

ansible 的核心程序有三个

29.5 ansible简介

ansible简介

/images/linux_mt/linux_ansible.jpg

在本章的开篇我们说过自动化运维的几个层次

  1. BootStraping: 引导安装操作系统
  2. Configuration: 配置系统,定义好了每一个被管理主机的目标状态,被管理主机能基于 agent 或 ssh 被配置系统所管理
  3. Command & Control: 批量运行程序

ansible 正是配置系统,和批量命令执行两个层面的轻量级强大的解决方案。