任务是最小的行动单位,你可以使用Ansible playbook来实现自动化。玩法手册通常包含一系列的任务,为一个目标服务,如设置一个Web服务器,或将一个应用程序部署到远程环境。
Ansible执行任务的顺序与它们在游戏手册中定义的顺序相同。在实现一个程序的自动化之前,比如设置一个LEMP服务器,你需要评估哪些手动步骤是必要的,以及完成这些步骤的顺序,以完成所有的工作。然后,你将能够确定你需要哪些任务,以及你可以使用哪些模块,以较少的步骤达到你的目标。
_模块_提供了执行操作的捷径,否则你将不得不以原始bash命令的形式运行。这些模块也经常被用来在不同的操作系统中抽象出命令。
当你在本指南的前一部分创建你的第一个playbook时,你定义了一个任务,使用debug 输出一条消息。让我们再一次看看那个游戏手册。你可以使用cat 命令来打印该文件的内容以供检查。
cat ~/ansible-practice/playbook-01.yml
这个playbook包含一个单一的任务,在play的输出中打印一条消息。
~/ansible-practice/playbook-01.yml
---
- hosts: all
tasks:
- name: Print message
debug:
msg: Hello Ansible World
任务被定义为一个列表,名称为tasks ,在一个游戏内,与定义该游戏目标的hosts 指令处于同一级别。name 属性定义了该任务即将被执行时将被打印出来的输出。
该示例任务调用了debug 模块,该模块允许你在一个游戏中显示消息。这些消息可用于显示调试信息,例如变量的内容或一个命令返回的输出信息。
每个模块都有自己的一套选项和属性。debug 模块希望有一个名为msg 的属性,包含要打印出来的信息。要特别注意缩进(2个空格),因为msg 必须是debug 内的一个属性。