RHEL学习札记-7-初识Ansible
什么是ANSIBLE?
Ansible是一款开源自动化平台。
它是一种简单的自动化语言,能够在Ansible Playbook中完美地描述IT应用基础架构。
它也是一个自动化引擎,可运行Ansible Playbook。
Ansible可以管理强大的自动化任务,而且能够适应许多不同的工作流和环境。
同时,Ansible新用户可以非常快速地利用它来提高工作效率。
特点:
简单明了
Ansible Playbook提供人类可读的自动化。
这表示,playbook不仅是自动化工具,而且易于阅读、理解和更改。
不需要掌握特别的编码技能就能编写它们。
Playbook按顺序执行任务。
Playbook设计的简易性使其可供每个团队使用,让Ansible入门者也能够快速获得成效。
功能强大
您可以利用Ansible部署应用,也可将它用于配置管理、工作流自动化和网络自动化。
Ansible可用于编排整个应用生命周期。
无需代理
Ansible围绕无代理架构构建。
通常而言,Ansible通过OpenSSH或WinRM连接它所管理的主机并且运行任务,方法通常是(但不总是)将称为Ansible模块的小程序推送至这些主机。
这些程序用于将系统置于需要的特定状态。
在Ansible运行完其任务后,推送的所有模块都会被删除。
您几乎可以立即开始使用Ansible,因为不需要批准使用任何特殊代理,然后再部署到受管主机上。
由于没有代理,也不需要额外的自定义安全基础架构,Ansible要比其他备选方案更加高效和安全。
六大优点:
·跨平台支持:
Ansible提供Linux、Windows、UNIX和网络设备的无代理支持,适用于物理、虚拟、云和容器环境。
·人类可读的自动化:
Ansible Playbook 采用YAML文本文件编写,易于阅读,有助于确保所有人都能理解它们的用途。
·完美描述应用:
可以通过Ansible Playbook进行每一种更改,并描述和记录应用环境的每一个方面。
·轻松管理版本控制:
Ansible Playbook和项目是纯文本。它们可以视作源代码,放在您的现有版本控制系统中。
·支持动态清单:
可以从外部来源动态更新Ansible管理的计算机的列表,随时获取所有受管服务器的当前正确列表,不受基础架构或位置的影响。
·编排可与其他系统轻松集成:
能够利用环境中现有的HP SA、Puppet、Jenkins、红帽卫星和其他系统,并且集成到您的Ansible工作流中。
Ansible概念和架构
Ansible架构中有两种计算机类型,即控制节点和受管主机。Ansible在控制节点上安装和运行,该计算机上也含有Ansible项目文件的副本。控制节点可以是管理员的笔记本电脑、多个管理员共享的系统,或者运行红帽Ansible Tower的服务器。
受管主机列在清单中,清单还可以将这些系统组织到组中,以便于集中管理。清单可以在静态文本文件中定义,或者通过从外部来源获取信息的脚本来动态确定。
Ansible用户无需编写复杂的脚本,而只要创建高级别 play即可确保主机或主机组处于特定状态。Play按该play指定的顺序对主机执行一系列任务。这些play通过采用YAML格式的文本文件来表达。包含一个或多个play的文件称为playbook.
每个任务运行一个模块,即(使用Python、PowerShell或某种其他语言编写的)一小段代码。各个模块基本上是您的工具包中的一个工具。Ansible随附了数百个实用模块,它们能够执行许多不同的自动化任务。它们可以作用于系统文件,安装软件或者进行API调用。
在任务中使用时,模块通常确保计算机的某一特定方面处于特定的状态。例如,使用某一模块的任务可以确保某一文件存在且具有特定的权限和内容,而使用另一不同模块的任务可确保已挂载特定的文件系统。如果系统不处于指定的状态,任务应将它置于该状态。如果系统已处于该状态,则不执行任何操作。如果任务失败,Ansible的默认行为是对发生了错误的主机中止 playbook的其余部分。
任务、play和 playbook设计为具有幂等性。这意味着,您可以在相同主机上多次安全地运行一个playbook。当您的系统处于正确状态时,playbook在运行时不会进行任何更改。这意味着,您应该能够在相同主机上多次安全地运行一个 playbook。当您的系统处于正确状态时,playbook在运行时不应进行任何更改。您可以使用多个模块来运行任意命令。但是,您必须小心使用这些模块,以确保它们以幂等方式运行。
Ansible也使用插件。插件是您可以添加到 Ansible中的代码,以对它进行扩展并使它适合新的用途和平台。
Ansible架构是无代理的。通常,当管理员运行Ansible Playbook或!临时命令时,控制节点使用SSH(默认)或WinRM连接受管主机。这意味着客户端无需在受管主机上安装特定于Ansible的代理,也不需要允许将特殊的网络流量传输到某一非标准端口。
ANSIBLE方式
复杂性会破坏效率
越简单越好。Ansible的设计宗旨是工具易用,自动化易写易读。您应利用这一特点在创建自动化时追求简单化。
专为易读性优化
Ansible自动化语言围绕简单易读的声明性文本文件来构建。正确编写的Ansible Playbook可以清楚地记录您的工作流自动化。
声明式思维
Ansible是一种要求状态引擎。它通过表达您希望系统处于何种状态来解决如何自动化IT部署的问题。Ansible 的目标是通过仅执行必要的更改,使您的系统处于所需的状态。试图将Ansible视为脚本语言并非正确的做法。