Skip to content

Ansible 之旅(一) Ansible 简介

什么是 Ansible ?

首先它是一种 Simple Automation Language ,在 Ansible Playbook 当中能够完美的描述一个应用的基础架构,同时它又是一个自动化引擎,可以运行 Ansible Playbook ,所以归纳来说:Ansible 是一个开源的自动化平台 。Ansible 能够管理功能强大的自动化任务,同时也可适应多种不同的流程和环境,最重要的是新用户能够快速掌握。

Ansible 特性

  • Ansible is SimpleAnsible Playbook 非常适合人类读写,不需特定编程的技巧就可以书写它们,并且它是按照顺序执行,所以适合人类的理解。Anisble 的设计原则就是简洁,这样的好处可以使工作效率提高。
  • Ansible is Powerful:通过 Ansible 可以部署应用、配置的管理,工作流以及网络的自动化,并且可以编排整个应用的Lifecycle
  • Ansible is Agenless:首先 Ansible 是围绕着一个无代理架构构建的。它是通过 OpenSSH 和 WinRM 来与托管主机进行通信的。通过向托管主机推送小程序(称之为 Ansible Modules)来执行相关的任务,这些小程序用于将系统设置为一个特定的期望状态,并且在任务完成后,任何的Ansible Modules都会被删除。因为没有特殊代理,也没有其它额外定义的安全设置,并且默认使用 OpenSSH ,所以几乎可以立即使用 Ansible,相对其它的方案来说,它更安全也更高效。

Ansible 的优点

  1. 跨平台:提供了 Linux、Unix、Windows 以及网络设备在物理、虚拟化、云、容器平台环境中无代理的支持。
  2. 人类易阅读的 Ansible PlaybookAnsible Playbook是使用YAML格式编写的易读文本文件。
  3. 完美的描述应用程序架构:所有的程序配置更改、软件安装、命令执行都可以通过Ansible Playbook 来编写。同时应用程序环境的各个方面都可以被描述和记录。
  4. 版本控制容易管理:因为Ansible Playbook 和项目都是纯文本文件,所以它们可以像源代码一样进行处理,并放在现有的版本控制系统中,如 Git、SVN 等。
  5. 对动态 Inventory 的支持:Ansible 可以使用动态的脚本从外部数据源来动态更新托管的机器列表,非常适合一些动态变换的环境,如现在的云计算,实例不断的变化。
  6. 很容易与其它系统进行集成:因为 Ansible 是开源软件,并且提供了 Api ,所以可以很好的与其它系统进行集成,如:HP SA 、Puttet、Jenkins 等。

归纳来说,Ansible 第一个针对 DevOps 的自动化语言。它贯穿整个应用的生命的周期和流程:

From development to production.

ansible-language-of-devops
ansible-language-of-devops

Ansible 架构

在 Ansible 架构中有分两种类型的主机:控制节点托管主机

  • 控制节点:Ansible 的主程序运行在控制节点上。控制节点可以是单台电脑或多台电脑,亦或者是运行 Tower 的服务器。注意 Windows 主机不能作为控制节点
  • 托管主机:托管主机是由 Ansible 控制的主机。托管主机存在 Inventory 中,在里面还可以对托管主机进行分组,很容易进行管理。inventory 可以是静态的文本文件也可以是根据外部数据进行动态生成的脚本。
Ansible_Architecture
Ansible_Architecture

Ansible 自动化引擎内部由inventoryApi 、Modules 、Plugins 构成:

  • inventory:Ansible 托管主机清单列表。
  • Modules:Ansible 执行命令的功能模块。
  • Plugins:插件,针对模块功能的补充。
  • Api:供第三方程序调用的应用程序编程接口。

通过Ansible 架构图可以看到用户可以直接执行 Ansible 对主机或者网络设备进行管理,也可以通过 Ansible Playbook 对目标进行管理,同时可以使用静态的inventory 也可以通过外部的 CMDB 数据库或者外部的数据源来动态生成 inventory 。

Ansible 核心原则

  • 复杂性杀死生产力:强调越简单越好。
  • 优越的可读性:Ansible 自动化语言的设计围绕着简单,基本文本的文件适合人类阅读,并且Ansible Playbook 可以清晰的记录工作流程。
  • 声明状态的方式:只需要声明我所需要的状态即可,具体怎么完成交给 Ansible 吧。如安装 Web 服务器软件 httpd ,并且启动。只需定义最终的状态即可,无需操心 Ansible 怎么去完成。

Ansible 适用场景

  1. 配置管理
  2. 应用部署
  3. 简化系统配置流程
  4. 持续交付
  5. 安全性和遵从性
  6. 编排

小菜园 原创文章,未经允许,请勿转载!

本文链接: https://www.imxcai.com/devops/ansible/what-is-ansible.html


发表评论

电子邮件地址不会被公开。 必填项已用*标注