前言
提示:
Ansible Automation Platform 以下简称“AAP”,AAP的安装分成“单机”和“集群” 2个版本。
“单机” 版本可以将 AAP 组件安装在一台机器上。可以使用这些说明在同一节点上安装一个独立的自动化控制器实例和一个数据库,或者一个非安装程序管理的数据库。此场景包括在一台机器上安装自动化控制器,包括 Web 前端、REST API 后端和数据库。
“集群” 版本可以将 AAP 安装为带有自动化中心的集群controller和外部托管数据库。在这种模式下,安装并激活了多个controller node。任何节点都可以接收 HTTP 请求,所有节点都可以执行作业。这个模式下需要安装Controller、Ansible Hub,至少需要2个node。
本次安装为“单机” 版本。
文章目录
一、部署规划
1.1. Ansible自动化平台环境要求
1.1.1 红帽 Ansible 自动化平台系统要求
在规划红帽 Ansible 自动化平台安装和设计适合您的用例的自动化网格拓扑时,您的系统必须满足以下最低系统要求才能安装和运行红帽 Ansible 自动化平台。
表 1.1 基础系统
必要条件 | 备注 | |
---|---|---|
订阅 | 有效的红帽Ansible自动化平台 | |
操作系统 | Red Hat Enterprise Linux 8.4 或更高版本 64 位 (x86) | |
Ansible | 需要2.2版 | 如果系统上尚不存在于 Ansible,安装手册将安装 |
Python | 3.8 或更高版本 |
以下内容也需要满足:
-
确保以下域名是防火墙或代理的白名单的一部分,以便从自动化中心或 Galaxy 服务器成功连接和下载集合:
galaxy.ansible.com
cloud.redhat.com
console.redhat.com
sso.redhat.com
1.1.2 Controller(自动化控制器)
我们在部署单机版 AAP 的时候,只需要安装Controller。如果是集群版则需要安装Controller和Ansible Hub,并且2者需要装在2台不同的node上。
自动化控制器是一个分布式系统,其中不同的软件组件可以共同定位或部署在多个计算节点上。在安装程序中,控制、混合、执行和跃点等节点类型作为抽象提供,以帮助用户设计适合其用例的拓扑。下表提供了节点大小调整的建议:
注意:在除跃点节点之外的所有节点上,至少分配 20 GB/var/lib/awx
用于执行环境存储。
Controller | 必需的 | 备注 |
内存 | 16 GB | |
处理器 | 4个 |
|
磁盘:服务节点 | 40 GB 专用硬盘空间 |
|
数据库 | PostgreSQL 版本 12 |
注意:我们配置的时候可以先配置PostgreSQL数据库,后面会介绍到。
1.2. 网络端口和协议
红帽 Ansible 自动化平台 (AAP) 使用多个端口与其服务进行通信。这些端口必须打开,这样它才能工作。确保这些端口可用并且未被服务器防火墙阻止。下面列出的默认目标端口在Inventory配置文件中是可配置的。
表 1.3 数据库
端口 | 协议 | 服务 | 方向 | Inventory变量 | 需要 |
---|---|---|---|---|---|
22 | TCP | SSH | 入站和出站 |
| 安装期间远程访问 |
5432 | TCP | Postgres | 入站和出站 |
| 默认端口 允许从控制器连接到数据库端口 |
表 1.4 Controller
端口 | 协议 | 服务 | 方向 | Inventory变量 | 需要 |
---|---|---|---|---|---|
22 | TCP | SSH | 入站和出站 |
| 安装 |
80 | TCP | HTTP | 入境 |
| 界面/应用程序界面 |
443 | TCP | HTTPS | 入境 |
| 界面/应用程序界面 |
5432 | TCP | 数据库 | 入站和出站 |
| 仅当内部数据库与另一个组件一起使用时才打开。否则这个端口不应该开放集群中的混合模式 |
1.3. Ansible 自动化平台订阅
在安装 AAP 之前,您必须在所有节点上附加有效订阅。
1.先查看是否有权限去安装AAP,回到Redhat,设置好nmtui,使系统联网,我们可以先执行如下命令订阅操作系统:
# subscription-manager register --username=注册用户名 --password=注册密码 --auto-attach
之后查看是否有有效订阅:
# subscription-manager list --available --all | grep "Ansible Automation Platform" -B 3 -A 6
我们可能看到的结果如下:
Type of right: physical
Subscription name: Red Hat Ansible Automation Platform, Self Support (100 Managed Nodes, NFR, Partner Only)
Provided by: Red Hat Ansible Automation Platform
Red Hat Single Sign-On
JBoss Enterprise Application Platform
SKU: *******
Contract: *******
Pool Id: **********
Provide management: No
故障排除
-
如果您无法找到与 AAP 安装程序捆绑在一起的某些包,或者如果您看到一条
Repositories disabled by configuration
消息,请尝试使用以下命令启用存储库:适用于 RHEL 8 的红帽 Ansible 自动化平台 2.2
subscription-manager repos --enable ansible-automation-platform-2.2-for-rhel-8-x86_64-rpms
适用于 RHEL 9 的红帽 Ansible 自动化平台 2.2
subscription-manager repos --enable ansible-automation-platform-2.2-for-rhel-9-x86_64-rpms
1.4. Ansible 自动化平台组件
红帽 Ansible 自动化平台由以下组件组成:
Ansible 自动化中心
Ansible Content Collections 的认证内容存储库。Ansible 自动化中心是 Red Hat 及其合作伙伴发布内容的集中存储库,并供客户发现经过认证、受支持的 Ansible 内容集。红帽 Ansible 认证内容为用户提供经过测试并受红帽支持的内容。
Controller
一个企业框架,用于通过用户界面 (UI) 和 RESTful 应用程序编程接口 (API) 控制、保护和管理 Ansible 自动化。
自动化服务目录
自动化服务目录是红帽 Ansible 自动化平台中的一项服务。自动化服务目录使您能够跨各种环境在 Ansible 自动化控制器上组织和管理产品目录。
使用自动化服务目录,您可以:
- 对单个平台应用分级审批。
- 将您平台中产品形式的内容纳入整个管理平台进行集中管理。
- 选择要与特定用户组共享的协作组合。
- 围绕驱动用户请求执行的值设置边界。
自动化执行环境
一个包含 Ansible 执行引擎和数百个模块的解决方案,可帮助用户自动化 IT 环境和流程的各个方面。执行环境自动化常用的操作系统、基础设施平台、网络设备和云。
自动化内容导航器
文本用户界面(TUI) 成为自动化平台的主要命令行界面,涵盖内容构建、在执行环境中本地运行自动化、在 Ansible 自动化平台中运行自动化以及为未来集成开发环境提供基础的用例(IDE)。
1.4. Ansible 自动化平台组件
1.5. 获取AAP安装包
本次安装环境如下:
1.先用红帽账户,登录如下地址:
Log In | Red Hat IDPhttps://access.redhat.com/downloads/content/480
2.选择我们需要的版本,选择:Ansible Automation Platform <latest-version> Setup Bundle(离线安装包)下载。
3.解压下载好的文件:
$ tar xvzf ansible-automation-platform-setup-<最新版本>.tar.gz
1.6. Inventory文件介绍
红帽 Ansible 自动化平台使用Inventory文件,根据逻辑组织的基础架构中的托管节点或主机列表工作。您可以使用 AAP 安装程序Inventory文件来指定您的安装方案并描述 Ansible 的主机部署。通过使用Inventory文件,Ansible 可以使用单个命令管理大量主机。Inventory还可以通过减少必须指定的命令行选项的数量来帮助您更有效地使用 Ansible。
Inventory文件例子:
[automationcontroller]
host1.example.com
host2.example.com
Host4.example.com
[automationhub]
host3.example.com
[database]
Host5.example.com
[all:vars]
admin_password='<password>'
pg_host=''
pg_port=''
pg_database='awx'
pg_username='awx'
pg_password='<password>'
registry_url='registry.redhat.io'
registry_username='<registry username>'
registry_password='<registry password>'
Inventory文件的第一部分指定 Ansible 可以使用的主机或组。
数据库
- 使用外部数据库时,请确保
[database]设置正确
。 - 为了提高性能,不要将数据库服务器和Controller服务器放在同一网络中。
Controller
- Controller不为其使用的数据库配置复制或故障转移。Controller适用于您拥有的任何复制。
取消配置节点或组
您可以使用 AAP 安装程序取消配置节点和实例组。运行安装程序将删除附加到组中节点的所有配置文件和日志。您可以取消配置清单中的任何主机,[automationcontroller]
组中指定的第一台主机除外。
要取消配置节点,请附加node_state=deprovision
到清单文件中的节点或组。
例如:
要从部署中删除单个节点:
[automationcontroller]
host1.example.com
host2.example.com
host4.example.com node_state=deprovision
库存变量
示例Inventory文件的第二部分,紧随其后[all:vars]
,是安装程序使用的变量列表。使用all
意味着变量适用于所有主机。要将变量应用于特定主机,请使用[hostname:vars]
. 例如,[automationhub:vars]
。
二、安装部署
2.1. 配置Inventory文件
1.进入解压好的安装目录:
# cd ansible-automation-platform-setup-bundle-2.2.1-1.1/
2.编辑Inventory,我们只需要变更这些内容:
[automationcontroller]
aap #主机名或者IP地址
[all:vars]
admin_password='admin' #安装好后的admin密码
pg_password='postgres' #设置PostgreSQL密码
registry_url='registry.redhat.io'
registry_username='' #有订阅权限的账号
registry_password='' #有订阅权限账号密码
如果在安装过程中,报错信息有提到database,我们可以在Inventory文件中在database下面添加本机IP即可:
[database]
192.168.203.124
2.2. 安装前配置
1.配置前需要配置服务器的免密登录,操作如下:
# ssh-keygen -t rsa
2.手动安装PostgreSQL,并启动PostgreSQL,这步很重要:
# dnf install -y postgresql-server
# postgresql-setup --initdb --unit postgresql
# systemctl enable postgresql
# systemctl start postgresql
3.修改postgres账号密码
3.1 进入PostgreSQL命令行
通过su命令切换linux用户为postgres会自动进入命令行:
# su postgres
3.2 启动SQL Shell
# psql
3.3 修改密码
# ALTER USER postgres WITH PASSWORD 'postgres'; #修改成Inventory文件中PostgreSQL数据库的密码
3.4 开放端口
# sudo firewall-cmd --add-port=5432/tcp --permanent
# sudo firewall-cmd --reload
3.5重启PostgreSQL服务
#本次安装的是PostgreSQL 13版本
# sudo systemctl restart postgresql-13
注意:我们在安装之前一定要先检查端口是否都开放,PostgreSQL的服务是否正常启动。
2.3. 开始安装
1. 进入下载安装包目录:
# cd ansible-automation-platform-setup-bundle-2.2.1-1.1/
2.运行 setup.sh 脚本
# ./setup.sh
开始安装,预计等待15-30分钟,出现如下提示,表示安装成功:
3.打开浏览器,输入服务器地址:https://<服务器IP>
4.准备好我们订阅的zip文件,输入创建好的账号密码,默认账号:admin ,密码(Inventory文件中已写好):admin,之后提交我们订阅的zip文件即可进入管理界面
5.管理界面如下,至此AAP “单机” 版环境部署完毕。
三、其他
3.1. 报错信息:
Job for postgresql-10.service failed because the control process exited with error code.
See "systemctl status postgresql-10.service" and "journalctl -xe" for details
解决方法:
1.删除原有PostgreSQL安装包:
# yum remove postgresql*
2.重新手动安装PostgreSQL:
# dnf install -y postgresql-server
# postgresql-setup --initdb --unit postgresql
# systemctl enable postgresql
# systemctl start postgresql
3.2. 报错信息:
Data directory is not empty!
解决方法:
# cd /var/lib/pgsql
# rm -f data
# service postgresql-12 initdb OK。
# sysetmctl restart postgresql-13
3.3. 报错信息:
Unable to connect remotely
解决方法:
# vim /var/lib/pgsql/12/data/pg_hba.conf
添加:
# vim /var/lib/pgsql/12/data/postgresql.conf
之后重启服务:
# sysetmctl restart postgresql-12
3.4. 安装ansible-navigator工具
默认情况下,AAP 没有安装ansible-navigator工具,我们需要手动安装。
1.使用系统包安装程序安装 python 包管理器(例如):
# dnf install python3-pip
2.安装 ansible-navigator:
# python3 -m pip install ansible-navigator --user
3.在用户shell初始化文件中添加安装路径(eg):
# echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.profile
4.刷新路径(例如):
# source ~/.profile
5.启动 ansible-navigator:
# ansible-navigator
总结
先要考虑部署的是“单机”还是“集群”版,本次部署为“单机”版,只需要一台服务器即可。
部署过程中,需要有订阅权限的红帽账号,确认好版本之后,下载相应的离线安装包。
最关键的是配置Inventory文件,按照上述配置或者按需配置即可;安装前,先安装PostgreSQL数据库,并且做好相关配置,最后执行Setup安装脚本,等待15-30分钟,安装完成。
上传我们准备好的zip订阅文件,开启我们Ansible自动化之旅。