31、开启Ansible自动化控制之旅及执行环境探索

开启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和相关工具,为企业的自动化发展提供有力的支持。希望本文能够帮助你在自动化的道路上迈出更坚实的一步。

【故障诊断】【pytorch】基于CNN-LSTM故障分类的轴承故障诊断研究[西储大学数据](Python代码实现)内容概要:本文介绍了基于CNN-LSTM神经网络模型的轴承故障分类方法,利用PyTorch框架实现,采用西储大学(Case Western Reserve University)公开的轴承故障数据集进行实验验证。该方法结合卷积神经网络(CNN)强大的特征提取能力和长短期记忆网络(LSTM)对时序数据的建模优势,实现对轴承不同故障类型和严重程度的高精度分类。文中详细阐述了数据预处理、模型构建、训练流程及结果分析过程,并提供了完整的Python代码实现,属于典型的工业设备故障诊断领域深度学习应用研究。; 适合人群:具备Python编程基础和深度学习基础知识的高校学生、科研人员及工业界从事设备状态监测与故障诊断的工程师,尤其适合正在开展相关课题研究或希望复现EI级别论文成果的研究者。; 使用场景及目标:① 学习如何使用PyTorch搭建CNN-LSTM混合模型进行时间序列分类;② 掌握轴承振动信号的预处理与特征学习方法;③ 复现并改进基于公开数据集的故障诊断模型,用于学术论文撰写或实际工业场景验证; 阅读建议:建议读者结合提供的代码逐行理解模型实现细节,重点关注数据加载、滑动窗口处理、网络结构设计及训练策略部分,鼓励在原有基础上尝试不同的网络结构或优化算法以提升分类性能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值