了解有关Ansible Playbook的自动化任务.
之前,我们讨论了Ansible简介,安装指南,接下来讨论了Playbook及其构建基块.
Contents
什么是Ansible剧本?
该剧本是Ansible自动化语言。这是带有一组说明的简单文件。在剧本中,我们定义了我们希望Ansible做的事情。剧本包含运行任务的剧本,而这些任务运行模块。他们的任务按顺序执行.
例如,它可以很简单,只需在不同的服务器上依次运行一系列命令,然后按顺序重新启动这些服务器。或者它可能像在公共云和私有云中部署和配置数百个VM一样复杂,包括它们的负载平衡,监视,网络设置.
剧本语言
剧本是用YAML代码编写的简单文件.
YAML 是一种数据序列化语言。它是人类并且机器可读的。您不需要任何特殊的编码技能即可编写YAML代码。您可以将数据序列化语言看作是一种分解器,用于分解所有数据结构并以可以重新构造以供以后使用的顺序对其进行序列化。您可以在相同的环境甚至不同的环境中使用此重构的数据结构.
以下是安装mysql的示例YAML文件:
—
– 名称:安装MySQL
主机:geekflare-mysql-service
任务:
– 名称:安装MySQL
操作:$ ansible_pkg_mgr pkg = mysql-server state =已安装
– 名称:添加Python MySQL DB
操作:$ ansible_pkg_mgr pkg = python-mysqldb state =已安装
Ansible Playbook基础
本文的这一部分涵盖了基本的Ansible概念,以进一步了解Ansible Playbook.
主机和用户
Ansible需求针对必须从Ansible剧本中部署游戏的基础架构中的机器。主机通过其IP地址添加到Ansible清单。主机是由冒号分隔的一个或多个组或主机模式的列表。 remote_user包含用户帐户的名称.
—
– 主机:ProdServers
remote_user:geekflare
变数
变量使您能够更改剧本的运行方式。它们几乎可以在剧本中的任何地方使用,并且可以从清单中继承,而清单是在剧本开始运行时发现的,而清单是在运行时明确设置的。您可以使用字母,数字和下划线定义变量名,但只能以字母开头.
例如,port_01是有效变量,而01_post是无效变量。这是Ansible Playbook中变量的示例:
vars:
http_port:80
max_clients:200
存货
要运行剧本,您需要一个要实现自动化的目标列表。这就是清单的作用。可以以几种不同的方式构建和存储清单,包括静态文件,即Ansible Hosts。或者,它可以通过清单脚本动态生成,该脚本将提取外部源的主机列表.
您还可以将变量指定为清单列表的一部分。清单最终是您要自动化的事物的列表.
[网络服务器]
192.168.20.1
192.168.20.2
192.168.20.4
[dbservers]
172.17.1.56
172.17.1.57
任务
播放Ansible Playbook运行任务。该任务负责运行ansible模块。一次只能运行一个任务,并且任务会按顺序执行。他们的任务是用YAML编写的,YAML非常类似于英语.
例如:install package_name,Update software_name等。下面是Ansible剧本中安装httpd的任务的示例:
任务:
– 名称:安装httpd软件包
yum:名称= httpd状态=最新
处理程序
处理程序是一种特殊的任务.
它们可以由任务触发,并在播放结束时运行一次。它用于在配置文件中发生任何更改时发送通知,例如,安装后通知服务以启动Apache。 “通知”语法用于调用处理程序。以下是重新启动apache的处理程序的示例:
—
– 主持人:全部
任务:
– 名称:确保apache是最新版本
yum:名称= httpd状态=最新
通知:
– 重新启动Apache
– 名称:确保apache正在运行(并在启动时启用它)
服务:名称= httpd状态=已启动启用=是
处理程序:
– 名称:重启apache
服务:名称= httpd状态=重启
创建并运行您的第一个Ansible剧本
让我告诉你如何写剧本。每个剧本的顶部都以三个破折号(-)开头.
您在Ansible Playbook中提到的第一件事是要在其上运行Playbook的主机.
然后,您可以通过收集事实来提及变量。然后您可以提及您要执行的不同任务。现在,请记住任务是按照与编写任务相同的顺序执行的。例如,您要先安装软件A,然后再安装软件B,请确保在剧本中编写的第一个任务是安装软件A,而下一个任务可以安装软件B。.
然后,您将在底部找到处理程序。处理程序也是任务,但是区别在于要执行处理程序,您需要任务列表中的某种触发器才能运行处理程序.
让我向您展示如何创建ansible剧本,以在主机上安装并启动nginx并启动它.
创建一个.yml文件,您将在其中放置用于创建Ansible剧本的YAML代码.
gedit nginx.yml
将以下YAML代码放入此文件中并保存该文件.
—
– 主持人:客户
须藤:是的
vars:
– server_port:8080
任务:
– 名称:安装nginx Web服务器
apt:pkg = nginx state =已安装update_cache = true
通知:
– 启动nginx
处理程序:
– 名称:启动nginx
服务:名称= nginx状态=已启动
上面的YAML文件以主机开头,我想在客户端计算机(客户端)上运行此剧本。客户端IP地址已经保存在/ etc / ansible / hosts文件中.
下一行允许使用sudo特权运行任务.
然后在该剧本中将server_port定义为变量.
接下来是我在这本有趣的剧本中的第一个任务,即安装Nginx Web服务器。此任务还具有notify参数,这意味着在此任务之后运行的处理程序.
最后,我编写了一个处理程序以在客户端计算机上启动nginx.
既然您已经清楚了Ansible剧本中的YAML代码,那么我们就可以运行该剧本。以下是运行ansible剧本的语法:
ansible-playbook file_name.yml
现在,我将运行ansible剧本,该剧本是我为安装和启动nginx而创建的.
[受电子邮件保护]:/ home / geekflare#ansible-playbook nginx.yml
PLAY [客户] ************************************************** ********************
任务[聚会事实] ************************************************* ************
好的:[node1]
任务[安装nginx Web服务器] *********************************************** ****
更改为:[node1]
RUNNING HANDLER [start nginx] ************************************************ ******
好的:[node1]
PLAY RECAP ************************************************ *********************
node1:ok = 3更改= 1不可达= 0失败= 0跳过= 0挽救= 0忽略= 0
运行以下命令以检查ansible剧本是否已正确安装并启动了nginx服务器.
[受电子邮件保护]:/ home / geekflare#ps waux | grep nginx
根3021 0.0 0.0 77676 1516 Ss 15:27 0:00 nginx:主进程/ usr / sbin / nginx -g守护进程打开; master_process on;
结论
那是关于Ansible剧本的。我希望本文能帮助您学习如何创建和运行Ansible剧本。看看这个 课程, 如果您想学习Ansible中的高级主题,包括角色,Jinja2,查找,过滤器,自定义模块.
标记:
Ansible