基于Linux的企业自动化实践:服务器的构建、部署与管理
上QQ阅读APP看书,第一时间看更新

3.4.5 运行剧本

当我们从AWX运行剧本时,实际上是在运行一个模板。

因此,要以交互方式执行此操作,我们将返回Templates屏幕,该屏幕应显示可用模板的列表。请注意,当使用基于角色的访问控制时,你只能看到你有权限查看的模板(以及清单和其他配置项)。如果你没有权限,则它是不可见的。这有助于使AWX在不同团队之间使用时更易于管理。

我们使用的是管理员账户,因此可以查看所有内容。要启动新创建的模板,请按照以下说明操作:

1.单击模板名称右侧的“火箭发射”图标,图3-10显示了我们新创建的Templates,其中突出显示了执行模板的选项。

图 3-10

执行此操作时,屏幕将自动重新加载,你将在屏幕上看到运行的详细信息。如果要离开这个页面,不用担心,可以随时再次单击左侧菜单栏上的Jobs来找到它。既然我们已经定义了这个作业,它在第一个实例中就失败了。幸运的是,Jobs窗格显示了从命令行运行Ansible时获得的所有相同的详细信息和输出,只有在AWX中,它被存档在数据库中,以便可以随时在以后返回来查看,或者其他用户只需登录AWX就可以分析它(假设他们拥有所需的权限)。

2.查看作业的输出,我们可以看到问题出在某种权限上,图3-11显示了它看起来可能像什么,以供参考。

查看GitHub上的剧本源代码,我们可以看到,原始作者硬编码了这个剧本的root用户账户的使用权限(请注意site.yml中的remote_user:root语句)。通常情况下,你不会这样做,更好的做法是让Ansible使用一个未经授权的账户登录,然后根据需要使用sudo,方法是将become:true语句放在剧情标题中(我们将在本书后面的操作中看到这一点)。

3.为了解决这个问题,现在,我们只需允许root用户通过SSH登录CentOS 7服务器,然后将AWX中的凭据修改为root账户的凭据。请注意,还可以定义一个新的凭据并更改链接到模板的凭据,这两种方法都是可接受的解决方案。一旦更改了凭据,再次运行模板时,输出应该有所不同,如图3-12所示的剧本已成功运行。

图 3-11

图 3-12

从图3-12中可以看到,剧本已经成功运行,以及哪个用户启动了剧本、使用了GitHub上的哪个版本、使用了哪些凭据、使用了哪些清单等所有相关细节。向下滚动此窗格将显示ansible-playbook的输出,我们在图3-12中看到了该输出;如果你愿意,可以进一步分析剧本的运行,以查看是否有警告、更改了什么,等等。因此,通过AWX,我们真正为Ansible实现了一个很好的简单用户界面,它集成了在企业环境中自动化Linux时应具备的所有良好实践,如安全性、可审核性和Ansible(实际上是通过源代码控制集成实现的剧本代码)的集中控制。

已经了解了AWX如何帮助我们手动运行任务,但是如果我们想要一个真正的任务自动化的免操作(hands-off)方法,我们将在下一节中探讨任务调度。