自动化与 Linux 系统管理
多年来,大多数系统管理和基础架构管理都依赖于通过图形或命令行用户界面执行的手动任务。系统管理员通常使用检查清单、其他文档或记忆的例程来执行标准任务。
这样的做法容易出错。系统管理员很容易跳过某个步骤或在某个步骤上出错。对步骤执行是否正确或是否产生预期结果的验证通常比较有限。
另外,如果以手动方式单独管理每个服务器,对于应该要在配置上完全一致的许多服务器而言,它们很容易会出现微小(或重大)的差异。这可能会加大维护的难度,并给IT环境带来错误或不稳定性。
自动化可以帮助您避免手动管理系统和基础架构造成的问题。作为系统管理员,您可以使用自动化确保快速、正确地部署和配置所有系统。这样,日常计划中的重复性任务便可以自动执行,以空出时间和精力执行更重要的任务。对组织而言,自动化可以帮您加快推出新一版应用或服务更新。
基础架构即代码
良好的自动化系统允许您实施基础架构即代码方法。基础架构即代码可以让您使用机器可读的自动化语言来定义和描述所需的IT基础架构状态。理想情况下,这种自动化语言也应方便人类阅读,从而让您更容易了解当前状态,并做出调整。然后,此代码将应用到您的基础架构,以确保其确实处于相应状态。
如果自动化语言表现为简单的文本文件,则可使用版本控制系统轻松管理。这样做的好处在于每项更改都能签入版本控制系统,以获得持续的更改记录。如果要恢复至之前已知良好的配置,可以签出相应版本并将其应用到您的基础架构。
这样就奠定了一个基础,帮助您遵循 DevOps中的最佳实践。开发人员可以在自动化语言中定义所需的配置。操作员可以更轻松地查看更改以提供反馈,并利用自动化,可重复地确保系统处于开发人员期望的状态。
减少人为错误
通过任务自动化和基础架构即代码的方式减少在服务器上手动执行的任务数可以提高服务器获得一致配置的几率。
这意味着您需要习惯于通过更新自动化代码进行更改,而不是手动将其应用到服务器。否则,在下次使用自动化应用更改时您将面临丢失之前手动应用的更改的风险。
您可借助代码审查,以及自动化内容中的程序文档来降低操作风险。
最后,您可强制通过自动化执行IT基础架构更改,以减少人为错误。
什么是Ansible?
Ansible 是一款开源自动化平台。它是一种简单的自动化语言,可在 Ansible Playbook 中完美描述IT 应用基础架构。它还是一个自动化引擎,可运行 Ansible Playbook。
Ansible 可以管理强大的自动化任务,并且可以适应很多工作流和环境。同时,Ansible新用户可以非常快速地利用它来提高工作效率。
Ansible 简单明了
Ansible Playbook提供人类可读的自动化。这表示,playbook不仅是自动化工具,而且易于阅读、理解和更改。不需要掌握特别的编码技能就能编写它们。Playbook 按顺序执行任务。Playbook设计的简易性使其可供每个团队使用,让Ansible 入门者也能够快速获得成效。
Ansible 功能强大
您可以利用 Ansible 部署应用进行配置管理、工作流自动化和网络自动化。您可使用 Ansible 编排整个应用生命周期。
Ansible 无需代理
Ansible 围绕无代理架构构建。通常而言,Ansible 通过 OpenSSH 或WinRM 连接所管理的主机并运行任务,方法通常是(但不总是)将称为 Ansible 模块的小程序推送至这些主机。这些程序用于将系统置于需要的特定状态。在Ansible 运行完其任务后,推送的所有模块都会被删除。您几乎可以立即开始使用Ansible,因为不需要批准使用任何特殊代理,然后再部署到受管主机上。由于没有代理,也不需要额外的自定义安全基础架构,Ansible要比其他备选方案更加高效和安全。
Ansible 具有多个重要的优点:
1·跨平台支持:Ansible 提供 Linux、Windows、UNIX和网络设备的无代理支持,适用于物理、虚拟、云和容器环境。
2·人类可读的自动化:Ansible Playbook 采用YAML文本文件编写,易于阅读,有助于确保所有人都能理解它们的用途。
3·精准的描述应用:可以通过 Ansible Playbook 进行每一种更改,并描述和记录应用环境的每一个方面。
4·轻松管理版本控制:Ansible Playbook和项目是纯文本。它们可以视作源代码,放在您的现有版本控制系统中。
5·支持动态清单:可以从外部来源动态更新 Ansible 管理的计算机的列表,随时获取所有受管服务器的当前正确列表,不受基础架构或位置的影响。
6·编排可与其他系统轻松集成:能够利用环境中现有的HP SA、Puppet、Jenkins、红帽卫星和其他系统,并且集成到您的Ansible工作流中。
Ansible:DevOps的语言
沟通是DevOps的关键。Ansible是第一款可以在整个IT 范围读取和编写的自动化语言。
Ansible 概念和架构
Ansible架构由两种计算机组成,分别为:控制节点和受管主机。Ansible 在控制节点上安装和运行,该计算机上也含有 Ansible项目文件的副本。
受管主机列在清单中,清单还可以将这些系统组织到组中,以便于集中管理。您可以在文本文件中静态定义清单,也可以通过从外部来源获取群组和主机信息的脚本来动态确定。
Ansible用户无需编写复杂的脚本,而只要创建高级别 play即可确保主机或主机组处于特定状
态。Play按该 play 指定的顺序对主机执行一系列任务。这些 play通过采用YAML格式的文本文件来表达。包含一个或多个 play的文件称为 playbook.
每个任务运行一个模块,即(使用 Python、PowerShell 或某种其他语言编写的) 一小段代码。各个模块基本上是您的工具包中的一个工具。Ansible随附了数百个实用模块,它们能够执行许多不同的自动化任务。它们可以作用于系统文件,安装软件或者进行API调用。
在任务中使用时,模块通常确保计算机的某一特定方面处于特定的状态。例如,任务在使用某个模块时可以确保文件存在并具有特定的权限和内容。任务使用不同模块可以确保已安装特定文件系统。如果系统不处于指定的状态,任务应将其置于相应状态,但也可能什么都不做。如果任务失败,Ansible默认会对出错主机中止 playbook的其余部分,其他主机不受影响。
任务、play 和 playbook均具有幂等性。这意味着,您可以在相同主机上多次安全地运行一个
playbook。当您的系统处于正确状态时,playbook在运行时不会进行任何更改。有很多模块可供您
用于运行任意命令。但是,您必须小心使用这些模块,以确保其以幂等方式运行。
Ansible 也使用插件。插件是您可以添加到 Ansible中的代码,以对它进行扩展并使它适合新的用途和平台。
Ansible架构是无代理的。通常,当管理员运行Ansible Playbook时,控制节点会使用 SSH (默认)或WinRM 连接受管主机。这意味着,您不需要在受管主机上安装Ansible 专用代理,也不需要允许控制节点和受管主机之间进行其他通信。
享受Ansible 支持
红帽Ansible 自动化平台是一个受到全面支持的Ansible版本,支持企业大规模实施自动化管理。该平台具有以下优势:
·对核心 Ansible工具集的官方支持。
·红帽认证Ansible 内容集合可帮助您通过受支持的代码更快采用Ansible自动化。
·本地工具可帮助您集中交付自动化内容、管理自动化任务,并扩大自动化执行的分布。
·云服务,可帮助您寻找经过认证的Ansible内容,促进团队协作,并提供运维分析,以实现混合环境自动化。
例如,其自动化控制器组件(前称红帽Ansible Tower) 就是这样一个企业框架,您可以用它控制谁有权在哪些主机上运行 playbook,共享使用 SSH 凭据而不必允许用户传输或查看其内容,记录您的所有Ansible 作业,以及管理清单等等。它提供基于浏览器的用户界面(Web U)和 RESTful API。上游Ansible社区不会自动将该部件包含到社区Ansible分布当中,而是会作为一种开源工具进行开发,并作为红帽Ansible自动化平台产品的一个组成部分进行提供和支持。
Ansible 方式
设计 Ansible期间,会设定以下目标。
复杂性会破坏效率
越简单越好。Ansible的设计宗旨是工具易用,自动化易写易读。您应利用这一特点在创建自动化时追求简单化。
专为易读性优化
Ansible自动化语言围绕简单易读的声明性文本文件来构建。正确编写的Ansible Playbook 可以清楚地记录您的工作流自动化。
声明式思维
Ansible是一种要求状态引擎。它通过表达您希望系统处于何种状态来解决如何自动化IT部署的问题。Ansible的目标在于仅执行必要更改,将系统置于所需状态。不建议将Ansible 视为脚本语言。
用例
与其他工具不同,Ansible在一个易用平台当中,将编排与配置管理、调配和应用部署结合到了一起。
Ansible的一些用例包括:
配置管理
集中化配置文件管理和部署是Ansible的常见用例,很多超级用户也是通过这种方式了解Ansible 自动化平台。
应用部署
通过Ansible定义应用和使用自动化控制器管理部署时,开发团队可以更加有效地管理从开发到生产的整个应用生命周期。
调配
应用必须要部署或安装到系统上。Ansible和自动化控制器可帮助简化调配系统的流程,不论是要 PXE 引导和 kickstart安装裸机恢复服务器或虚拟机,还是从模板创建虚拟机或云实例。
持续交付
创建 CI/CD管道需要多个团队的协调和参与。如果没有组织内人人可用的简单自动化平台,就无法实现这个目标。Ansible Playbook可以让您的应用在整个生命周期内得到正确部署和管理。
安全和合规性
您在 Ansible Playbook中定义安全策略时,可以将扫描和修复潜在安全问题的程序集成到其他自动化流程中。确保安全应该是您所有部署中不可或缺的组成部分,而不是事后才去考虑的部分。