开启Ansible自动化控制之旅及执行环境探索
1. AWX访问控制与用户管理
AWX相较于Ansible的一大显著优势在于,它支持多用户连接、控制和执行操作。这使得企业能够为不同团队、整个组织甚至多个组织部署单个AWX实例。同时,它采用基于角色的访问控制(RBAC)系统来管理用户权限,并且既可以连接到LDAP和Azure Active Directory等中央目录,也能在AWX服务器本地创建用户账户。
1.1 创建用户
AWX具备管理多用户的能力,为每个使用AWX系统的人员创建独立账户,既能确保他们仅拥有所需权限,又能通过审计日志追踪操作记录。创建用户的步骤如下:
1. 点击左侧菜单栏中的“Users”选项。
2. 在用户列表界面,点击屏幕左上角绿色背景带白色加号的按钮,会弹出类似如下的表单:
---
# 填写必要信息
email: user@example.com
username: newuser
password: password123
password_confirmation: password123
用户类型分为以下三种:
| 用户类型 | 权限描述 |
| ---- | ---- |
| 普通用户 | 无继承权限,需授予特定权限才能执行操作 |
| 系统审计员 | 对整个AWX安装具有完全只读权限 |
| 系统管理员 | 对整个AWX安装具有完全权限 |
1.2 创建团队
虽然单个用户账户功能强大,但为每个对象(如作业模板或清单)单独设置权限会非常繁琐。AWX和Ansible Automation Controller引入了用户分组概念,在用户界面中称为“团队”。创建团队后,可按需添加或移除用户,操作简单,与大多数RBAC系统处理用户组的方式类似。
1.3 创建组织
在管理多个独立人员组和独立机器时,组织的概念就派上用场了。组织是AWX的租户,拥有独立的用户账户、团队、项目、清单和作业模板,类似于一个独立的AWX实例。创建组织的步骤如下:
1. 点击屏幕左侧的“Organizations”选项。
2. 在现有组织列表中,点击屏幕左上角绿色背景带白色加号的按钮,会弹出类似如下的窗口:
---
# 填写必要信息
name: NewOrganization
由于唯一必填字段是“Name”,填写后点击“Save”即可完成创建。创建组织后,可将各种资源(如项目、模板、清单、用户等)分配给该组织,有助于在AWX中明确角色和职责。
1.4 分配权限
在AWX中配置项目、清单和作业模板时,多数界面都有“Access”按钮。管理员账户可查看所有选项,但并非所有用户都应拥有管理员权限。可按对象为单个用户或团队分配权限,例如数据库管理员团队仅能访问和执行数据库服务器清单上的剧本,而Linux系统管理员则可访问特定于其角色的清单、项目和作业模板。AWX会隐藏用户无权限访问的对象。权限级别包括:
| 权限级别 | 描述 |
| ---- | ---- |
| Admin | 可更改资源的所有方面 |
| Execute(仅适用于作业模板) | 可运行作业模板 |
| Use | 可在作业模板中使用资源 |
| Update | 可更新资源 |
| Read | 可查看资源设置 |
2. 执行环境的重要性与构建
Ansible Automation Controller通过易用的Web界面、RBAC和日志记录功能,帮助企业扩展自动化。而执行环境是Ansible几年前推出的重要特性,对于创建持久的自动化至关重要。
2.1 执行环境的重要性
执行环境能简化工作的原因主要有三点:
1. 可分发到多台机器,实现更好的可扩展性。
2. 可将所有依赖项固定到特定版本,确保剧本在未来能按预期运行。
3. 不同剧本可使用不同执行环境,独立决定每个剧本运行时的升级时间。
执行环境通过容器实现上述功能,它是包含Ansible运行器和运行所需库的容器,还可能包含Ansible集合和其他自动化所需组件。
2.2 构建执行环境
构建执行环境需要定义文件,该文件有三个版本,不同版本的ansible-builder支持情况不同:
| 版本 | 支持的ansible-builder版本 |
| ---- | ---- |
| 1 | 所有版本 |
| 2 | 1.2及以上版本 |
| 3 | 3.0及以上版本 |
由于版本3最易学习和使用,以下示例均采用该版本。
2.2.1 创建最小执行环境
创建执行环境需创建YAML文件,默认文件名为“execution-environment.yml”。以下是最小执行环境的文件内容:
---
version: 3
images:
base_image:
name: quay.io/centos/centos:stream9
dependencies:
ansible_core:
package_pip: ansible-core==2.15.1
ansible_runner:
package_pip: ansible-runner==2.3.3
解释如下:
- --- :YAML文件起始符。
- version: 3 :声明使用执行环境定义文件的版本3。
- images 块:定义基础镜像,使用 name 键指定完整容器名称和标签。
- dependencies 块:定义ansible-builder应添加到镜像的内容,必须包含 ansible_core 和 ansible_runner 。
进入“minimal”文件夹并运行以下命令构建镜像:
$ cd minimal
$ ansible-builder build --tag minimal-ee
若一切顺利,将得到如下结果:
Running command:
podman build -f context/Containerfile -t minimal-ee context
Complete! The build context can be found at: /home/fale/minimal/context
2.2.2 创建指定Python解释器的执行环境
某些模块或库可能需要特定版本的Python,可通过以下方式创建指定Python解释器的执行环境:
---
version: 3
images:
base_image:
name: quay.io/centos/centos:stream9
dependencies:
python_interpreter:
package_system: python3.11
python_path: /usr/bin/python3.11
ansible_core:
package_pip: ansible-core==2.15.1
ansible_runner:
package_pip: ansible-runner==2.3.3
在 dependencies 部分添加 python_interpreter 指令,指定安装 python3.11 并设置其路径。进入“python”文件夹并运行以下命令构建镜像:
$ cd python
$ ansible-builder build --tag python-ee
2.2.3 创建包含额外依赖项的执行环境
执行环境可通过以下三种方式安装依赖项:
- python :从PyPi安装Python依赖项。
- system :从操作系统安装依赖项。
- galaxy :从Ansible Galaxy安装Ansible依赖项。
以下是创建包含额外依赖项的执行环境的示例文件:
---
version: 3
images:
base_image:
name: quay.io/centos/centos:stream9
dependencies:
ansible_core:
package_pip: ansible-core==2.15.1
ansible_runner:
package_pip: ansible-runner==2.3.3
python:
- pywinrm
system:
- iputils [platform:rpm]
galaxy:
collections:
- community.windows
- ansible.utils
进入“dependencies”文件夹并运行以下命令构建镜像:
$ cd dependencies
$ ansible-builder build --tag dependencies-ee
3. 在执行环境中运行剧本
构建好执行环境后,可开始使用它们。首先,使用 ansible-navigator 检查Ansible和Python版本,安装命令如下:
$ pip install ansible-navigator
在“minimal-ee”执行环境中检查Ansible版本的命令如下:
$ ansible-navigator exec --eei minimal-ee -- ansible --version
在“python-ee”执行环境中检查Ansible版本的命令如下:
$ ansible-navigator exec --eei python-ee -- ansible --version
可以看到,两个执行环境中Ansible版本相同,但Python版本不同。
接下来,创建一个简单的ping剧本:
---
- name: Test connection
hosts: all
tasks:
- name: Test connection
ansible.builtin.ping:
使用执行环境运行该剧本的命令与检查版本类似,只需将 ansible --version 替换为剧本文件路径即可。
通过以上步骤,你可以深入了解AWX的访问控制和执行环境的构建与使用,为企业自动化提供更强大的支持。
开启Ansible自动化控制之旅及执行环境探索
4. 上传执行环境到容器注册表
构建好执行环境后,为了方便在不同环境中使用,需要将其上传到容器注册表。以下以常见的容器注册表为例,介绍上传执行环境的步骤:
4.1 登录容器注册表
首先,使用相应的命令登录到容器注册表。以Docker Hub为例,登录命令如下:
$ docker login
输入用户名和密码后,即可完成登录。
4.2 标记执行环境镜像
为了将执行环境镜像上传到指定的容器注册表,需要为其添加合适的标签。例如,将之前构建的 minimal-ee 镜像标记为要上传到Docker Hub的格式:
$ docker tag minimal-ee your_dockerhub_username/minimal-ee:latest
其中, your_dockerhub_username 替换为你在Docker Hub上的用户名。
4.3 上传镜像
标记完成后,使用以下命令将镜像上传到容器注册表:
$ docker push your_dockerhub_username/minimal-ee:latest
上传过程可能需要一些时间,取决于镜像的大小和网络速度。
5. 在自动化控制器中使用执行环境
上传执行环境到容器注册表后,就可以在自动化控制器中使用它们了。以下是在Ansible Automation Controller中使用执行环境的步骤:
5.1 配置执行环境
在Ansible Automation Controller的界面中,导航到“Execution Environments”选项。点击“Add”按钮,添加之前上传的执行环境。在弹出的表单中,填写执行环境的名称、描述和镜像地址(即容器注册表中的镜像地址)。
5.2 创建作业模板
在“Job Templates”选项中,点击“Add”按钮创建新的作业模板。在作业模板的配置中,选择之前添加的执行环境。同时,配置作业模板的其他参数,如项目、清单、剧本等。
5.3 运行作业
配置好作业模板后,点击“Launch”按钮运行作业。Ansible Automation Controller将使用指定的执行环境来执行作业。
6. 总结与展望
通过对AWX访问控制和执行环境的深入学习,我们了解到AWX为Ansible在企业环境中的应用提供了强大的支持。通过合理设置用户、团队、组织和权限,可以确保自动化操作的安全性和可审计性。而执行环境则为自动化提供了更好的可扩展性和稳定性,使得剧本能够在不同的环境中按预期运行。
在未来的自动化之旅中,我们可以进一步探索AWX和执行环境的更多功能。例如,可以结合更多的中央目录服务,实现更便捷的用户管理;可以构建更复杂的执行环境,满足不同业务场景的需求;还可以将自动化与其他工具和技术集成,进一步提升企业的自动化水平。
以下是一个简单的mermaid流程图,展示了从构建执行环境到在自动化控制器中使用的整体流程:
graph LR
A[构建执行环境] --> B[上传到容器注册表]
B --> C[在自动化控制器中配置执行环境]
C --> D[创建作业模板]
D --> E[运行作业]
通过以上的学习和实践,我们可以更好地利用Ansible和相关工具,为企业的自动化发展提供有力的支持。希望本文能够帮助你在自动化的道路上迈出更坚实的一步。
超级会员免费看
870

被折叠的 条评论
为什么被折叠?



