第一章主要讲的是 Ansible 架构及特色,主要包含如下内容:nginx
Ansible 的编排引擎能够完成配置管理、流程控制、资源部署等工做。 Ansible 基于 Python语言实现,由 Paramiko 和 PyYAML 两个关键模块构建。web
Ansible 维护模式一般由控制机和被管机组成。控制机是用来安装 Ansible 工具软件、执行维护指令的服务器或工做站,是 Ansible 维护的核心。被管机是运行业务服务的服务器,由控制机经过SSH来进行管理。编程
Ansible 是一个模型驱动的配置管理器,支持多节点发布、远程任务执行。默认使用SSH进行远程链接。无需再被管节点上安装附加软件,可以使用各类编程语言进行扩展。ubuntu
Ansible 管理系统由控制主机和一组被管节点组成。控制主机直接经过SSH控制被管节点,被管节点经过 Ansible 的资源清单来进行分组管理。
安全
编写 webservers.yml 的 Ansible 脚本,即 playbook ,其中包含被管节点的 hosts 和对这些 hosts 按照顺序执行的任务列表(task)。服务器
hosts 包括web一、web二、web3。架构
任务列表包括以下过程:运维
在 Ansible 系统的控制主机上执行ansible-playbook webservers.yml
,Ansible 将会经过 SSH 链接并行地在web一、web二、web3上面安装、配置、运行 Nginx 服务。编程语言
Ansible 采用 paramiko 协议库,经过 SSH 或 ZeroMQ 等链接主机。Ansible 在控制主机将 Ansible 模块经过 SSH协议推送到被管节点执行,执行完自动删除。控制主机与被管节点之间支持 local、SSH、ZeroMQ 三种链接方式,默认使用基于 SSH 链接,在大规模状况下,使用 ZeroMQ 链接方式执行速度更快。工具
Ansible 系统由控制主机对被管节点的操做方式可分为两类,即 ad-hoc 和 playbook。
Ansible 是基于一致性、安全性、高可靠性设计的轻量级自动化工具,具备功能强大、部署便捷、描述清晰等特性,很好地解决了统一配置、统一部署、流程编排等复杂的 IT 自动化管理问题。
项目 | Puppet | SaltStack | Ansible |
---|---|---|---|
开发语言 | Ruby | Python | Python |
是否有客户端 | 有 | 有 | 无 |
是否支持二次开发 | 不支持 | 支持 | 支持 |
服务器与远程机器通讯协议 | 标准 SSL 协议 | 使用AES加密 | 使用 OpenSSH |
配置文件格式 | Ruby语法格式 | YAML | YAML |
与其余自动化工具比较,Ansible 不须要安装客户端就能够轻松地管理、配置。
Ansible 的关键想法是计算机是一组,而不是一个个分开的机器,即“多层编排”的思想。避免了证书交换,以及反向解析 DNS 和 NTP 的问题。YAML的配置文件格式,简单易用。