一旦所有的先决条件正确准备到位,安装AWX就是一件简单的事情了。事实上,AWX的先决条件之一是Ansible,这证明了这项技术与Ansible的互补性。大多数AWX代码都在一组Docker容器中运行,这使得它在大多数Linux环境中部署起来非常简单。
使用Docker容器意味着可以在OpenShift或其他Kubernetes环境中运行AWX,但是,为了简单起见,我们将首先在单台Docker主机上安装它。在继续之前,应该确保你选择的主机具备以下条件:
·Docker,完全安装并正常工作
·用于你的Python版本的docker-py模块
·能访问Docker Hub(internet访问)
·Ansible 2.4或更新的版本
·Git 1.8.4或更新的版本
·Docker Compose
这些先决条件通常可用于大多数Linux系统。现在,我们将执行以下步骤开始AWX的安装:
1.继续上一章中使用的Ubuntu系统示例,我们将运行以下命令来安装AWX所必需的内容:
2.一旦安装了这些,下一个任务就是从AWX在GitHub网站上的存储库中克隆它的代码。
Git工具将忠实地克隆AWX源代码的最新版本。请注意,这个项目正在开发中,最新版本可能存在bug。
如果要克隆AWX的某个稳定版本,请浏览存储库的“Releases”部分并签出所需的版本:https://github.com/ansible/awx/releases。
3.存储库克隆完成以后,需要定义安装AWX的配置,特别是密码等安全细节。首先,切换到克隆的存储库下的installer目录:
希望你在阅读上一章之后已经熟悉这个目录的内容。那里有一个inventory文件、一个我们要运行的剧本(叫作install.yml),以及roles/目录。但是,现在不要执行install.yml剧本,因为在清单文件中有一些变量,我们必须在继续之前对它们进行设置。
如果仔细查看清单文件,你会发现其中可能会出现大量配置。一些变量被注释掉,而其他变量被设置为默认值。在安装AWX之前,我建议你至少设置6个变量,如表3-1所示。
表 3-1
4.你会发现在这个清单文件中有很多明文形式的秘密信息。虽然我们可以在安装过程中容忍这种情况,但在安装完成后,不应将此文件留在文件系统上,因为它可能会向潜在攻击者提供他们所需的所有详细信息,从而轻易危害你的系统。一旦安装阶段完成,请确保将此文件复制到某种类型的密码管理器中,或者以任何方式存储单个密码,不要保留未加密文件!
5.一旦定制了清单,就可以运行安装了,这通过运行以下命令启动:
从上一章对Ansible的学习中,我们可以认识到,这行命令使用ansible-playbook命令来运行install.yml剧本,同时也使用我们在步骤1中编辑的名为inventory的清单文件。输出页将在终端中显示,如果安装成功,你将看到如图3-1所示的内容。
图 3-1
6.安装完成后,Docker容器需要几分钟的时间实际启动并创建后端数据库。但是,这些都完成后,你应该能够在浏览器中定位到所选AWX主机的IP地址,并查看登录页面,如图3-2所示。
图 3-2
7.使用在前面的清单文件中的admin_password变量设置的密码以管理员身份登录。然后,应该进入AWX的仪表板页面,如图3-3所示。
图 3-3
就这样,你已成功安装并登录到了AWX!当然,你可以定义许多更高级的安装参数。同样,在企业中,你也不会只依赖一台没有备份(或没有高可用性设置)的AWX主机。
请注意,当你登录到AWX时,连接不受SSL保护,这可能会导致敏感数据(如计算机凭据)在网络上以明文形式传输。
对于开箱即用的高可用性和SSL问题,没有适合每个企业的通用解决方案,因此我们将实际的解决方案留给你作为练习。例如,如果你有一个具有多个主机的OpenShift环境,那么在此环境中安装AWX将使其启用高可用性,即使它运行的主机出现故障也会继续运行。当然,也有一些方法可以在没有OpenShift的情况下实现高可用性。
在不同的环境中,将安全HTTP应用于AWX也将以不同的方式得到解决。大多数Docker环境的前面都会有某种负载均衡器,以帮助处理它们的多主机特性,因此,SSL加密可能会被运用到这个平台上。但是安装一些能够反向代理的东西(例如nginx)并将其配置为处理SSL加密,也可以保护单台Docker主机的安全,比如我们在这里构建的Docker主机。
简言之,并没有一刀切的解决方案,但建议你以最适合你的企业的方式解决这些问题。因此,除了建议在部署用于生产的AWX时考虑这些问题之外,在这里我们不进一步讨论它们。
现在你已经运行了一个AWX实例,我们必须对其进行配置,以便能够成功地复制上一章中从命令行运行剧本的方式。例如,我们必须像以前一样定义一个清单,并确保设置了SSH身份验证,以便Ansible可以在远程计算机上执行自动化任务。在本章的下一节中,我们将介绍通过AWX运行第一个剧本所需的所有设置。