理解Ansible的核心组成部分-第1部分

红帽认证的Ansible自动化专家是一项新的认证,可以测试您使用Ansible自动化系统配置的技能。

红帽认证的Ansible自动化专家考试(EX407)Red Hat的新认证计划,旨在测试您使用Ansible自动化系统和应用程序配置的技能。

该系列的标题为“ Ansible自动化红帽认证专家考试(EX407) ”,涵盖了基于Red Hat Enterprise Linux 7.5Ansible 2.7的以下考试目标,我们将在此Ansible系列中介绍这些考试目标:

要查看费用并注册您所在国家/地区的考试,请查看Ansible Automation考试页面。

第2部分安装和配置Ansible控制节点
第3部分如何配置Ansible受管节点
第4部分创建简单的Shell脚本以运行临时Ansible命令
第5部分如何创建静态和动态清单以定义主机组
第6部分如何创建Ansible Playbook和剧本
第7部分如何将Ansible模块用于系统管理任务
第8部分如何创建和使用模板创建定制的配置文件
第9部分如何使用Ansible变量和事实
第10部分如何创建和下载Ansible Galaxy角色并使用它们
第11部分如何在Playbooks中使用Ansible Vault保护敏感数据

Ansible系列的第1部分中,我们将讨论Ansible中核心组件的一些基本概述。

了解Ansible的核心组件

AnsibleRedHat的免费开源开源自动化平台,使您可以从一个中央位置管理和控制多台服务器。 当您需要执行多个重复性任务时,这尤其理想。 因此,您无需登录每个远程节点并执行您的任务,就可以从中央位置轻松地进行操作并轻松地管理服务器。

当您想要在应用程序部署中保持一致性,减少人为错误并自动执行重复性和有些平凡的任务时,这将非常有用。

当然, Ansible还有其他选择,例如PuppetChefSalt 但是, Ansible最受青睐,因为它易于使用且易于学习。

为什么您可能会问得这么简单? 这是因为Ansible在其配置和自动化工作中使用了YAML另一种标记语言 ),这些易于理解并且易于理解 与其他自动化平台不同, YAML使用SSH协议与远程服务器进行通信,而其他自动化平台则要求您在远程节点上安装代理以与它们进行通信。

在我们开始使用Ansible之前,重要的是您要熟悉一些基本术语,以免在前进的过程中迷路或困惑。

库存

清单是一个文本文件,其中包含要管理和配置的服务器或节点的列表。 通常,服务器是根据其主机名或IP地址列出的。

清单文件可以包含由其IP地址定义的远程系统,如下所示:

10.200.50.50
10.200.50.51
10.200.50.52

或者,可以根据组列出它们。 在下面的示例中,我们将服务器分为两类-Web服务器数据库 这样,可以根据其组名而不是其IP地址来引用它们。 这进一步简化了操作过程。

[webservers]
10.200.50.60
10.200.50.61

[databases]
10.200.50.70
10.200.50.71

如果您在大型生产环境中,则可以将多个组与多个服务器一起使用。

剧本

剧本是一组配置管理脚本,这些脚本定义了如何在远程主机或一组主机上执行任务。 脚本或说明以YAML格式编写。

例如,您可以拥有一个剧本文件,以在CentOS 7上安装Apache网络服务器并将其命名为httpd.yml

要创建剧本,请运行命令。

$ touch playbook_name.yml

例如,创建一个名为httpd的剧本,运行命令。

$ touch httpd.yml

如图所示,YAML文件以3个连字符开头。 在文件内部,添加以下说明。

---
- name: This installs and starts Apache webserver
  hosts: webservers

  tasks:
  - name: Install Apache Webserver 
    yum:   name=httpd  state=present

 - name: check httpd status
    yum:   name=httpd  state=started

上面的手册Apache Web服务器安装在清单文件中定义为Web服务器的远程系统上。 安装Web服务器之后,Ansible稍后会检查Apache Web服务器是否已启动并正在运行。

模组

模块剧本中用于在远程主机或服务器上执行命令的离散代码单元。 每个模块后都有一个参数。

模块的基本格式是键:value

- name: Install apache packages 
    yum:   name=httpd  state=present

在上述YAML代码段中, -nameyum是模块。

剧本

旁白是定义要在服务器上执行的任务的脚本或指令。 戏剧的集合构成一本剧本。 换句话说,剧本是多个剧本的集合,每个剧本明确规定了要在服务器上执行的任务。 剧本以YAML格式存在。

变数

如果您有编程背景,那么很可能已经使用了变量。 基本上,变量代表一个值。 变量可以包含字母,数字和下划线,但必须始终以字母开头。

当指令从一个系统到另一个系统变化时,将使用变量。 在配置或各种服务和功能期间尤其如此。

变量主要有3种:

  • 剧本变量
  • 库存变量
  • 特殊变量

Ansible中 ,首先使用vars k定义变量 ,然后是变量名称和值。

语法如下所示:

vars:
Var name1: ‘My first variable’
	Var name2:  ‘My second variable’

考虑下面的代码。

- hosts: webservers
  vars: 
    - web_directory:/var/www/html/

在上面的示例中,此处的变量为web_directory ,它指示ansible/ var / www / html /路径中创建目录。

事实

事实是Ansible在主机系统上执行剧本时收集的系统属性。 这些属性包括主机名,操作系统家族,CPU类型和CPU内核等。

要查看可用事实的数量,请发出命令。

$ ansible localhost -m setup
列出可用的事实

列出可用的事实

如您所见,默认情况下已显示了大量事实 您可以使用显示的filter参数进一步缩小结果范围。

$ ansible localhost -m setup -a "filter=*ipv4"
列出IPv4的事实

列出IPv4的事实

配置文件

Ansible中 ,配置文件是一个文件,其中包含确定Ansible运行方式的不同参数设置。 缺省配置文件是/ etc / ansible /目录中的ansible.cfg文件。

您可以通过运行以下命令查看配置文件:

$ cat /etc/ansible/ansible.cfg
Ansible配置文件

Ansible配置文件

如您所见,其中包含几个参数,例如清单文件路径,sudo用户,插件过滤器,模块等。可以通过注释掉它们并修改其中的值来简单地调整这些参数。

此外,除了默认配置文件外,您还可以使用Ansible进行多个配置文件。

摘要

看完Ansible的核心组件后,我们希望您能够将它们放在指尖,并在我们前进的过程中挑选它们。 加入我们的下一个主题。