使用红帽 Ansible 自动化平台迁移到 Azure Arc 上的 Azure Monitor 代理

本文介绍如何使用红帽 Ansible 自动化平台将非 Azure 计算机从 Azure Log Analytics 代理迁移到 Azure Monitor 代理。 这包括将计算机加入已启用 Azure Arc 的服务器。 完成本文中的配置步骤后,即可针对自动化控制器清单运行一个工作流来执行以下任务:

  • 确保在每台计算机上安装 Azure Connected Machine 代理。
  • 安装和启用 Azure Monitor 代理。
  • 禁用和卸载 Log Analytics 代理。

已制作 Ansible 云自动化内容实验室的内容来自动化此方案。 本文讲解如何将该内容作为项目导入到自动化控制器,以生成一个工作流来执行上述任务。

Ansible 自动化平台可以自动化整个 IT 环境中 Azure 服务的部署,以快速可靠地加入到 Azure Arc。

备注

本文中的 Ansible 内容示例面向 Linux 主机,但也可以更改 playbook 以适应 Windows 主机。

先决条件

Azure Log Analytics 工作区

本文假设使用的是 Azure Log Analytics 代理,并且服务器已预先配置为向 Log Analytics 工作区报告数据。 需要提供你要从中进行迁移的工作区的名称和资源组。

自动化控制器 2.x

本文适用于自我管理的 Ansible 自动化平台以及 Azure 上的红帽 Ansible 自动化平台。

自动化执行环境

若要使用本文中的示例,需要一个同时装有 Azure 集合与 Azure CLI 的自动化执行环境,因为运行自动化需要这两个组件。

如果你没有满足这些要求的自动化执行环境,可以使用此示例

有关生成和配置自动化执行环境的详细信息,请参阅红帽 Ansible 文档

主机清单

需要提供自动化控制器中配置的 Linux 主机的清单,其中包含将要使用 Azure Arc 和 Azure Monitor 代理的 VM 的列表。

Azure 资源管理器凭据

需要提供在 Ansible 自动化平台中为 Azure 资源管理器配置的工作帐户凭据。 Ansible 自动化平台将使用此凭据对使用 Azure 集合与 Azure CLI 的操作进行身份验证。

服务器计算机凭据

需要提供在自动化控制器中配置的“计算机凭据”,以便通过 SSH 访问主机清单中的服务器。

配置内容

本文中的示例依赖于红帽通过云内容 Ansible 内容实验室开发和孵化的内容。

本文还使用 Azure 基础结构配置演示集合。 此集合包含许多用于管理 Azure 用例(包括使用已启用 Azure Arc 的服务器的用例)的角色和 playbook。 若要在自动化控制器中使用此集合,请按照以下步骤使用存储库设置一个项目:

  1. 登录到自动化控制器。

  2. 在左侧菜单中选择“项目”。

  3. 选择“添加”,然后如下所示填写窗体中的字段:

    名称:内容实验室 - Azure 基础结构配置集合

    自动化环境:(选择 Azure 集合与 CLI)

    源代码管理类型:Git

    源代码管理 URL:https://github.com/ansible-content-lab/azure.infrastructure_config_demos.git

  4. 选择“保存”。 在“项目”窗口中编辑详细信息的屏幕截图。

保存后,项目应与自动化控制器同步。

迁移 Azure 代理

此示例假设 Linux 服务器已在运行 Azure Log Analytics 代理,但尚未安装 Azure Connected Machine 代理。 如果你的组织依赖于其他使用 Log Analytics 代理的 Azure 服务,可能需要在迁移到 Azure Monitor 代理之前规划其他数据收集规则。

我们将创建一个工作流,以便利用以下 playbook 来安装 Azure Connected Machine 代理、部署 Azure Monitor 代理、禁用 Log Analytics 代理,然后卸载 Log Analytics 代理:

  • install_arc_agent.yml
  • replace_log_analytics_with_arc_linux.yml
  • uninstall_log_analytics_agent.yml

此工作流执行以下任务:

  • 在清单中标识的所有 VM 上安装 Azure Connected Machine 代理。
  • 通过 Azure Arc 启用 Azure Monitor 代理扩展。
  • 通过 Azure Arc 禁用 Azure Log Analytics 代理扩展。
  • 卸载 Azure Log Analytics 代理(如果已标记)。

创建用于安装 Azure Connected Machine 代理的模板

此模板负责在提供的清单中的主机上安装 Azure Arc Connected Machine 代理。 如果运行成功,将在所有计算机上安装该代理。

按照以下步骤创建模板:

  1. 在右侧菜单中选择“模板”。

  2. 选择 添加

  3. 选择“添加作业模板”,然后如下所示填写窗体中的字段:

    名称:内容实验室 - 安装 Arc Connected Machine 代理

    作业类型:运行

    清单:(你的 Linux 主机清单)

    项目:内容实验室 - Azure 基础结构配置集合

    Playbook:playbooks/replace_log_analytics_with_arc_linux.yml

    凭据:

    • 你的 Azure 资源管理器凭据
    • 你的主机清单计算机凭据

    变量:

    ---
    region: chinaeast2
    resource_group_name: sh-rg
    subscription_id: "{{ lookup('env', 'AZURE_SUBSCRIPTION_ID') }}"
    service_principal_id: "{{ lookup('env', 'AZURE_CLIENT_ID') }}"
    service_principal_secret: "{{ lookup('env', 'AZURE_SECRET') }}"
    tenant_id: "{{ lookup('env', 'AZURE_TENANT') }}"
    

    备注

    此 playbook 中的操作将通过 Azure CLI 执行。 其中的大多数变量都设置为将适当的变量从 Azure 资源管理器凭据传递给 CL。

    选项:特权提升:true

  4. 选择“保存” 。

创建模板以替换 Log Analytics

此模板负责通过启用 Azure Monitor 代理扩展并禁用 Azure Log Analytics 扩展,来从 Log Analytics 代理迁移到 Azure Monitor 代理(如果通过 Azure Connected Machine 代理使用此模板)。

按照以下步骤创建模板:

  1. 在右侧菜单中选择“模板”。

  2. 选择 添加

  3. 选择“添加作业模板”,然后如下所示填写窗体中的字段:

    名称:内容实验室 - 将 Log Analytics 代理替换为 Arc Connected Machine 代理

    作业类型:运行

    清单:(你的 Linux 主机清单)

    项目:内容实验室 - Azure 基础结构配置集合

    Playbook:playbooks/replace_log_analytics_with_arc_linux.yml

    凭据:

    • 你的 Azure 资源管理器凭据
    • 你的主机清单计算机凭据

    变量:

    —
    Region: <Azure Region>
    resource_group_name: <Resource Group Name>
    linux_hosts: "{{ hostvars.values() | selectattr('group_names','contains', 'linux') | map(attribute='inventory_hostname') | list }}"
    

    备注

    linux_hosts 变量用于创建要发送到 Azure 集合的主机名列表,它与主机清单不直接相关。 可以用 Ansible 支持的任何方式设置此列表。 在本例中,该变量尝试从组名中包含“linux”的组拉取主机名。

  4. 选择“保存”。

创建用于卸载 Log Analytics 的模板

如果 Log Analytics 代理安装在 Azure Connected Machine 代理之外,此模板将尝试运行 Log Analytics 代理卸载脚本。

按照以下步骤创建模板:

  1. 在右侧菜单中选择“模板”。

  2. 选择 添加

  3. 选择“添加作业模板”,然后如下所示填写窗体中的字段:

    名称:内容实验室 - 卸载 Log Analytics 代理

    作业类型:运行

    清单:(你的 Linux 主机清单)

    项目:内容实验室 - Azure 基础结构配置集合

    Playbook:playbooks/uninstall_log_analytics_with_arc_linux.yml

    凭据:

    • 你的主机清单计算机凭据

    选项:

    • 特权提升:true
  4. 选择“保存” 。

创建工作流

自动化控制器工作流允许通过将自动化模板和其他操作连接到一起,来构造复杂的自动化。 此工作流示例是一个可在此示例中实现端到端方案的简单线性流,但可为上下文添加其他节点,例如错误处理、人工审批等。

  1. 在右侧菜单中选择“模板”。

  2. 选择 添加

  3. 选择“添加工作流模板”,然后如下所示填写以下字段:

    名称:内容实验室 - 将日志代理迁移到 Azure Monitor

    作业类型:运行

    清单:(你的 Linux 主机清单)

    项目:内容实验室 - Azure 基础结构配置集合

  4. 选择“保存” 。

  5. 选择“启动”以启动工作流设计器。

  6. 将“节点类型”设置为“作业模板”,然后选择“内容实验室 - 将 Log Analytics 替换为 Arc Connected Machine 代理”。

  7. 选择“下一步”。

  8. 选择“保存” 。

  9. 将鼠标悬停在“内容实验室 - 将 Log Analytics 替换为 Arc Connected Machine 代理”节点上,然后选择 + 按钮。

  10. 选择“成功时”。

  11. 选择“下一页”。

  12. 将“节点类型”设置为“作业模板”,然后选择“内容实验室 - 卸载 Log Analytics 代理”。

  13. 选择“保存” 。

  14. 选择工作流设计器右上角的“保存”。

现已创建如下所示的工作流:显示 Azure Monitor 代理迁移过程工作流的示意图。

将调查添加到工作流

我们希望将调查问题添加到工作流,以便可以在运行工作流时收集输入。

  1. 在工作流详细信息屏幕中选择“调查”。 模板详细信息窗口的屏幕截图,右侧突出显示了调查选项卡。

  2. 选择“添加”,然后使用以下值填写窗体:

    问题:Arc 服务器将驻留在哪个 Azure 区域?

    回答变量名称:region

    必需:true

    回答类型:文本

  3. 选择“保存” 。

  4. 选择“添加”,然后使用以下值填写窗体:

    问题:资源组的名称是什么?

    回答变量名称:resource_group_name

    必需:true

    回答类型:文本

  5. 选择“保存” 。

  6. 选择“添加”,然后使用以下值填写窗体:

    问题:Log Analytics 工作区的名称是什么?

    回答变量名称:analytics_workspace_name

    必需:true

    回答类型:文本

  7. 选择“保存” 。

  8. 在“调查列表”屏幕中,确保已启用调查。 “调查”窗口的屏幕截图,其中“已启用调查”已切换为启用状态。

现已创建工作流。

运行工作流

创建工作流后,随时可以运行该工作流。 单击“启动”🚀 图标时,将显示配置的调查,使你可以更新不同自动化运行的变量。 这样就可以根据需要移动分配到不同区域或资源组的 Log Analytics 连接服务器。

工作流的“启动”窗口的屏幕截图。

结论

执行本文中的步骤后,你已创建一个用于将 Linux 计算机从 Azure Log Analytics 代理迁移到 Azure Monitor 代理的自动化工作流。 此工作流会将 Linux 计算机加入已启用 Azure Arc 的服务器。 此示例使用 Ansible 云自动化内容实验室,使实现变得快速而轻松。

后续步骤

详细了解如何使用 Ansible playbook 连接计算机