注意:

通过 Oracle Linux Automation Manager 使用自定义执行环境

简介

使用定制执行环境 (ee),Oracle Linux Automation Manager 可以利用包含集合的手册以及默认 olam-ee 映像中不可用的其他资源。使用 Builder 实用程序构建它,将其存储在 Private Automation Hub 上,然后将其拉入 Oracle Linux Automation Manager 中。

这一切是如何协同工作的?

本教程介绍如何将预构建的映像上载到 Private Automation Hub,然后将其提取到 Oracle Linux Automation Manager 中以运行剧本。有关创建定制执行环境的详细信息,请参阅构建器实用程序上的教程,以及 Private Automation Hub 上的本教程

目标

在本教程中,您将学习如何:

先决条件

部署 Oracle Linux Automation Manager

注:如果在您自己的租户中运行,请阅读 linux-virt-labs GitHub 项目 README.md ,并在部署实验室环境之前完成先决条件。

  1. 在 Luna 桌面上打开一个终端。

  2. 克隆 linux-virt-labs GitHub 项目。

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
    
  3. 转到工作目录。

    cd linux-virt-labs/olam
    
  4. 安装所需的集合。

    ansible-galaxy collection install -r requirements.yml
    
  5. 更新 Oracle Linux 实例配置。

    cat << EOF | tee instances.yml > /dev/null
    compute_instances:
      1:
        instance_name: "devops-node"
        type: "server"
      2:
        instance_name: "ol-pah"
        type: "server"
      3:
        instance_name: "olam-node"
        type: "control"
    passwordless_ssh: true
    use_olam_builder: true
    use_olam_pah: true
    EOF
    
  6. 部署实验室环境。

    ansible-playbook create_instance.yml -e ansible_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"
    

    免费实验室环境需要额外的变量 ansible_python_interpreter,因为它为 Oracle Cloud Infrastructure SDK for Python 安装了 RPM 程序包。此软件包安装的位置位于 python3.6 模块下。

    默认部署配置使用 AMD CPU 和 Oracle Linux 8。要使用 Intel CPU 或 Oracle Linux 9,请将 -e instance_shape="VM.Standard3.Flex"-e os_version="9" 添加到部署命令。

    重要提示:等待剧本成功运行并进入暂停任务。Oracle Linux Automation Manager 安装在手册的此阶段已完成,并且实例已准备就绪。记下之前的播放,该播放输出所部署节点的公共和专用 IP 地址。

将定制执行环境推送到 Private Automation Hub

将自定义 ee 推送到 Private Automation Hub 的一种方法是使用命令行中的 podman,如 Private Automation Hub 教程中所示。也可以使用剧本和 containers.podman 集合执行此任务。

  1. 打开终端并通过 SSH 连接到 devops-node 实例。

    ssh oracle@<ip_address_of_instance>
    
  2. 安装 Oracle Linux Automation Engine。

    sudo dnf install ansible-core -y
    
  3. 安装所需的集合。

    ansible-galaxy collection install containers.podman
    
  4. 创建剧本以标记和推送自定义 ee 图像。

       
    tee push-image.yml > /dev/null <<EOF
    ---
    - hosts: localhost
      collections:
        - containers.podman
    
      tasks:
    
      - name: get domain_name
        command: hostname -d
        register: domain_name
    
      - name: output domain_name var
        debug:
          msg: "{{domain_name.stdout}}"
    
      - name: push image to pah
        containers.podman.podman_image:
          name: my_custom_ee
          push: true
          push_args:
            dest: ol-pah.{{domain_name.stdout}}/my_first_olam_ee_image:latest
          username: admin
          password: password
          validate_certs: false
       
    EOF
    
  5. 运行剧本。

    ansible-playbook push-image.yml
    

    该手册在 localhost 上运行,因此不需要定义的清单文件。

Private Automation Hub 中存在验证映像

  1. 从 Luna Desktop 打开新终端。

  2. 配置到 Private Automation Hub 的 SSH 隧道。

    ssh -L 5444:localhost:443 oracle@<ip_address_of_ol-pah>
    
  3. 打开 Web 浏览器并输入 URL。

    https://localhost:5444
    

    注:根据使用的浏览器批准安全警告。对于 Chrome,单击 Advanced 按钮,然后单击 Proceed to localhost (unsafe) 链接。

  4. 登录到 Private Automation Hub WebUI。

    使用用户名 admin 和密码 password。免费实验室环境在实验室部署期间设置此密码值。

    Pah-login

  5. 成功登录后将显示 WebUI。

    番禺

  6. 单击 Private Automation Hub WebUI 左上角的导航菜单。

  7. 导航到 Execution EnvironmentsExecution Environments

  8. 请注意,新的 my_first_olam_ee_image 将显示在主面板中。

    帕伊 -2

创建手册

Oracle Linux Automation Manager 管理员可以在文件系统本地创建剧本,使用手动源控制的项目可以利用这些剧本。我们将使用 devops-node 编写手册,使用 Oracle Linux Automation Engine 将项目手册推送到 Oracle Linux Automation Manager。此配置仅适用于单主机安装 Oracle Linux Automation Manager,因为该实例上仅存在手册。

  1. 切换到或打开终端,并通过 ssh 连接到 devops-node 实例。

  2. 创建项目目录并将工作目录更改为项目目录。

    mkdir ~/project1
    cd ~/project1
    
  3. 创建模板。

    此模板是我们将写入 Oracle Linux Automation Manager 服务器上的文件系统的手册文件,用于检索主机上的容器映像列表。

    mkdir templates
    tee templates/list-images.yml.j2 > /dev/null <<EOF
    ---
    - hosts: all
      collections:
        - containers.podman
      become: yes
    
      tasks:
    
      - name: gather info on images
        containers.podman.podman_image_info:
        register: podman_list
        become_user: oracle
    
      - name: list images
        debug:
          msg: "{{ podman_list.images | selectattr('RepoTags') '}}"
    EOF
    
  4. 创建手册以将此项目推送到 Oracle Linux Automation Manager。

       
    tee push-project.yml > /dev/null <<EOF
    ---
    - hosts: olam-node
      become: yes
    
      tasks:
    
      - name: create project directory
        ansible.builtin.file:
          path: /var/lib/awx/projects/podman
          state: directory
        become_user: awx
    
      - name: create playbook
        ansible.builtin.template:
          src: templates/list-images.yml.j2
          dest: /var/lib/awx/projects/podman/list-images.yml
        become_user: awx      
       
    EOF
    
  5. 创建清单文件。

    tee hosts > /dev/null <<EOF
    [olam]
    olam-node
    EOF
    
  6. 将手册复制到 Oracle Linux Automation Manager 服务器。

    ansible-playbook -i hosts push-project.yml
    

向 Oracle Linux Automation Manager 添加定制执行环境

登录到 WebUI

  1. 从 Luna Desktop 打开新终端。

  2. 配置到 Oracle Linux Automation Manager 的 SSH 隧道。

    ssh -L 8444:localhost:443 oracle@<ip_address_of_ol-node>
    

    在免费实验环境中,使用 olam-node 实例的 IP 地址。

  3. 打开 Web 浏览器并输入 URL。

    https://localhost:8444
    

    注:根据使用的浏览器批准安全警告。对于 Chrome,单击 Advanced(高级)按钮,然后单击 Proceed to localhost (unsafe) 链接。

  4. 登录到 Oracle Linux Automation Manager WebUI。

    使用用户名 admin 和密码 admin。免费实验室环境在实验室部署期间设置此密码值。

    olam2- 登录

  5. 成功登录后将显示 WebUI。

    olam2-webui

添加容器注册表身份证明

  1. 单击导航菜单中资源下的身份证明

  2. 单击主面板中的 Add(添加)按钮。

  3. 在特定字段中输入或选择下列值。

    对于具有搜索或值列表的字段,我们可以开始键入请求的值,然后选择它。

    • 名称My Private Automation Hub
    • 组织Default
    • 身份证明类型容器注册表
    • 验证 URLPrivate Automation Hub 的 FQDN
    • 用户名admin
    • 密码或令牌password
    • 选项:取消选中验证 SSL

    如果您不知道 Private Automation Hub 的 FQDN,请使用终端连接到 ol-pah 实例,然后运行 hostname -f

    Oracle Linux Automation Manager 使用容器注册表身份证明访问 Private Automation Hub 中的容器映像。空闲练习环境需要取消选中 Verify SSL 设置,因为该设置使用自签名证书。

  4. 查看条目并单击保存按钮。

    olam2-cred-registry

添加执行环境

  1. 单击导航菜单中管理下的执行环境

  2. 单击主面板中的 Add(添加)按钮。

  3. 在特定字段中输入或选择下列值。

    对于具有搜索或值列表的字段,我们可以开始键入请求的值,然后选择它。

    • 名称My Custom EE
    • 图像<fqdn_of_the_private_automation_hub>/my_first_olam_ee_image:latest
    • 注册表身份证明我的 Private Automation Hub
  4. 查看条目并单击保存按钮。

    olam2-custom-ee

测试执行环境

测试定制执行环境时,需要作业模板,其中包括清单、主机、计算机身份证明和项目。

添加库存

  1. 单击导航菜单中资源下的库存

  2. 单击主面板中的添加按钮,然后从值列表中选择添加库存

  3. 在特定字段中输入以下值。

    • 名称Oracle Linux Hosts
  4. 查看该条目并单击保存按钮。

    olam2-inv-detail

添加主机

  1. 单击 Oracle Linux Hosts Inventory Details 面板中的 Hosts 选项卡。

  2. 单击添加按钮。

  3. Name(名称)字段中输入主机名 devops-node

  4. 查看该条目并单击保存按钮。

添加计算机身份证明

  1. 单击导航菜单中资源下的身份证明

  2. 单击主面板中的 Add(添加)按钮。

  3. 在特定字段中输入或选择下列值。

    对于具有搜索或值列表的字段,我们可以开始键入请求的值,然后选择它。

    • 名称Oracle Linux SSH Access
    • 组织Default
    • 身份证明类型计算机
    • 用户名opc
    • SSH 私钥:从 ~/.SSH 目录中选择 id_rsa 密钥

    抓取 SSH 私钥的一种方法是选择该字段的浏览选项。在文件上载对话框中,选择主页,然后右键单击该对话框的主窗口。选择显示隐藏文件。选择 .ssh 文件夹和 id_rsa 文件。单击 Open 按钮将导致私钥文件的内容复制到 SSH Private Key 对话框中。

  4. 查看各项,滚动到页面底部,然后单击 Save(保存)按钮。

    olam2-cred-machine

创建新项目

  1. 单击导航菜单中资源下的项目

  2. 单击主面板中的 Add(添加)按钮。

  3. 在特定字段中输入或选择下列值。

    对于具有搜索或值列表的字段,我们可以开始键入请求的值,然后选择它。

    • 名称Container Management
    • 执行环境我的定制 EE
    • 源控制身份证明类型手动
    • Playbook 目录podman
  4. 查看条目并单击保存按钮。

    olam2-proj-detail

添加作业模板

  1. 单击导航菜单中资源下的模板

  2. 单击主面板中的 Add(添加)按钮,然后从值列表中选择 Add job template(添加作业模板)

  3. 在特定字段中输入或选择下列值。

    对于具有搜索或值列表的字段,我们可以开始键入请求的值,然后选择它。

    • 名称List Images
    • 作业类型运行
    • 库存Oracle Linux 主机
    • 项目容器管理
    • 执行环境我的定制 EE
    • 手册list-images.yml
    • 身份证明Oracle Linux SSH 访问
  4. 查看各项,滚动到页面底部,然后单击 Save(保存)按钮。

    olam2- 临时详细信息

运行模板

  1. 单击导航菜单中资源下的模板

  2. 单击列表图像作业模板旁边的操作列中的启动模板图标。

作业将启动,面板将切换到作业输出摘要。几分钟后,作业失败。

olam2- 作业失败

发生此故障的原因是新定制 ee 不包含 containers.podman 集合,因此剧本无法运行。

修复定制执行环境

要修复定制 ee,必须使用 Builder 实用程序重建容器映像,然后将新映像推送到 Private Automation Hub,以便由 Oracle Linux Automation Manager 获取。

  1. 切换到或打开终端,并通过 ssh 连接到 devops-node 实例。

  2. 转到定制 ee 项目目录。

    cd ~/my_custom_ee_project
    
  3. 将缺少的集合添加到 Ansible Galaxy 要求文件中。

    tee -a requirements.yml > /dev/null <<EOF
    - name: containers.podman
    EOF
    
  4. 重新构建映像。

    ansible-builder build --tag my_custom_ee -v 3
    
  5. 将新映像推送到 Private Automation Hub。

    cd ~
    ansible-playbook push-image.yml
    
  6. 验证成功推送映像。

    连接到 Private Automation Hub WebUI 并查看执行环境更改,特别是 my_first_olam_ee_image上次修改时间列。

    pah-ee-modify

测试新的定制执行环境

  1. 在浏览器中切换到 Oracle Linux Automation Manager WebUI。

    刷新浏览器窗口并在必要时重新登录。

  2. 单击导航菜单中管理下的执行环境

  3. 单击我的定制 EE 图像链接旁边的操作列下的编辑执行环境图标。

  4. Pull 值更改为 Always pull container before running

    此字段为 podman 启用 --pull 选项。设置更改将强制 Oracle Linux Automation Manager 在其层校验和不匹配时提取最新映像。

  5. 查看更改并单击保存按钮。

  6. 单击导航菜单中 Views(视图)下的 Jobs(作业)

  7. Click the Relaunch icon under the Actions column next to the …List Images link.

    从值下拉列表中选择全部

    作业将启动,面板将切换到作业输出摘要。几分钟后,它成功完成。

    olam2- 作业成功

后续步骤

WebUI 中的输出确认您在 Oracle Linux Automation Manager 中有一个可行的定制执行环境。培养您的技能并查看我们在 Oracle Linux 培训站上提供的其他 Oracle Linux Automation Manager 培训。

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心