注意:

在 Oracle Linux 上安装 Oracle Linux Automation Manager

简介

Oracle Linux Automation Manager 是一个任务引擎和基于 Web 的图形用户界面 (graphical user interface,GUI),用于针对远程主机的清单调度和运行 Oracle Linux Automation Engine 手册。这套工具可帮助管理员轻松管理 IT 基础设施,以已知且可预测的方式完成重复性任务,从而避免常见的人工管理问题。

Oracle Linux Automation Engine 是一个工具,用于使用基于代码的基础设施(即代码 (IaC) YAML 定义文件(称为剧本)来管理和运行管理任务。这些手册包括说明性任务,例如部署软件、配置系统以及编排升级和更新。

目标

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

先决条件

部署 Oracle Linux

注:如果在您自己的租户中运行,请阅读 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: "olam-node"
        type: "control"
    olam_type: none
    EOF
    
  6. 创建清单文件。

    cat << EOF | tee hosts > /dev/null
    localhost ansible_connection=local ansible_connection=local ansible_python_interpreter=/usr/bin/python3.6
    EOF
    
  7. 部署实验室环境。

    ansible-playbook create_instance.yml -i hosts -e "@instances.yml"
    

    对于 localhost,免费实验室环境需要额外的变量 ansible_python_interpreter,因为它为 Oracle Cloud Infrastructure SDK for Python 安装 RPM 软件包。根据您的 Oracle Linux 版本,此软件包的安装位置位于系统的默认 Python 模块下面。使用清单变量可避免影响在本地主机以外的主机上运行的播放。

    默认部署配置使用 AMD CPU。您可以通过在命令行上传递新的配置变量定义来更改实例的配置。

    例如:-e instance_shape="VM.Standard3.Flex"

    同样,Oracle Linux 映像的缺省版本使用在 `default_vars.yml file' 中定义的变量 os_version。可以通过在命令行上传递 Oracle Linux 主版本来修改此值。

    例如:-e os_version="9"

    重要提示:等待手册成功运行并到达暂停任务。在手册的这一阶段,Oracle Linux 安装已完成,实例已准备就绪。请注意上一个播放,其中输出其部署的节点的公共和专用 IP 地址。

启用 Oracle Linux DNF 系统信息库并设置防火墙规则

在安装 Oracle Linux Automation Manager 之前启用所需的 yum 系统信息库和防火墙规则。

  1. 打开终端并通过 ssh 连接到 olam-node 节点。

    ssh oracle@<ip_address_of_instance>
    
  2. 安装 Oracle Linux Automation Manager 系统信息库。

    Oracle Linux 8:

    sudo dnf -y install oraclelinux-automation-manager-release-el8
    

    Oracle Linux 9:

    sudo dnf -y install oraclelinux-automation-manager-release-el9
    

    此命令将最新的 Oracle Linux Automation Manager 系统信息库作为安装产品软件包的默认值。

  3. 将 HTTP/HTTPS 服务添加到防火墙规则。

    sudo firewall-cmd --add-service=https --permanent
    sudo firewall-cmd --reload
    

安装本地 PostgreSQL 数据库

  1. 启用模块流。

    sudo dnf module reset postgresql
    sudo dnf -y module enable postgresql:16
    
  2. 安装数据库。

    sudo dnf -y install postgresql-server
    
  3. 初始化数据库。

    sudo postgresql-setup --initdb
    
  4. 将口令存储机制切换到 scram-sha-256

    sudo sed -i "s/#password_encryption.*/password_encryption = scram-sha-256/" /var/lib/pgsql/data/postgresql.conf
    
  5. 启用和启动数据库。

    sudo systemctl enable --now postgresql
    
  6. 创建数据库用户账户。

    重要提示:对于此免费实验室环境,请在提示符下使用密码 password。此密码安全,在此环境中我们仅将此密码用于演示。

    sudo su - postgres -c "createuser -S -P awx"
    
  7. 创建数据库。

    sudo su - postgres -c "createdb -O awx awx"
    
  8. 更新基于主机的验证文件。

    echo "host  all  all 0.0.0.0/0 scram-sha-256" | sudo tee -a /var/lib/pgsql/data/pg_hba.conf > /dev/null
    
  9. 更新数据库监听程序的 IP 地址。

    sudo sed -i "/^#port = 5432/i listen_addresses = '"$(hostname -i)"'" /var/lib/pgsql/data/postgresql.conf
    
  10. 更新数据库内存要求。

    这些计算利用系统总内存(以 MB 为单位)并替换 PostgreSQL 配置文件中的缺省值。

    export TOTAL_MEMORY="$(free --mega | awk 'FNR == 2 {print $2}')"
    sudo sed -i 's/max_connections = 100/max_connections = 1024/g' /var/lib/pgsql/data/postgresql.conf
    sudo sed -i "/^shared_buffers =/c\shared_buffers = $( echo "($TOTAL_MEMORY*0.3)/1" | bc )" /var/lib/pgsql/data/postgresql.conf
    sudo sed -i "/^#work_mem =/c\work_mem = $( echo "($TOTAL_MEMORY*0.03)/1" | bc )" /var/lib/pgsql/data/postgresql.conf
    sudo sed -i "/^#maintenance_work_mem =/c\maintenance_work_mem = $( echo "($TOTAL_MEMORY*0.04)/1" | bc )MB" /var/lib/pgsql/data/postgresql.conf
    
  11. 重新启动数据库。

    sudo systemctl restart postgresql
    

安装和配置 Oracle Linux Automation Manager

  1. 安装 Oracle Linux Automation Manager 软件包和任何依赖项。

    sudo dnf -y install ol-automation-manager
    
  2. 更新 Redis 配置文件。

    Oracle Linux 8:

    sudo sed -i '/^# unixsocketperm/a unixsocket /var/run/redis/redis.sock\nunixsocketperm 775' /etc/redis.conf
    

    Oracle Linux 9:

    sudo sed -i '/^# unixsocketperm/a unixsocket /var/run/redis/redis.sock\nunixsocketperm 775' /etc/redis/redis.conf
    
  3. CLUSTER_HOST_ID 添加到定制设置文件。

    cat << EOF | sudo tee -a /etc/tower/conf.d/olam.py > /dev/null
    CLUSTER_HOST_ID = '$(hostname -i)'
    EOF
    

    注:对于启用了 IPv6 的系统,使用 $(hostname -i) 不起作用,因为输出中存在空格。请改用系统的主机名(可以使用 $(hostname -f) 或其他一些不带空格的字符串)。

  4. 更新对定制设置文件的权限。

    sudo chown awx.awx /etc/tower/conf.d/olam.py
    sudo chmod 0640 /etc/tower/conf.d/olam.py
    
  5. 将数据库设置添加到定制配置文件。

    cat << EOF | sudo tee -a /etc/tower/conf.d/olam.py > /dev/null
    
    DATABASES = {
        'default': {
            'ATOMIC_REQUESTS': True,
            'ENGINE': 'awx.main.db.profiled_pg',
            'NAME': 'awx',
            'USER': 'awx',
            'PASSWORD': 'password',
            'HOST': '$(hostname -i)',
            'PORT': '5432',
        }
    }
    EOF
    
  1. 启用 Lingering。

    Oracle Linux 9:

    sudo loginctl enable-linger awx
    

    这将在无头系统上运行时解析此消息:

    WARN[0000] cgroupv2 管理器已设置为 systemd,但是没有 systemd 用户会话可用 WARN[0000] 对于使用 systemd,您可能需要使用用户会话 WARN[0000] 登录。或者,您可以启用以下项的持久性:loginctl enable-linger 986(可能为 root)WARN[0000] 回退到– cgroup-manager=cgroupfs
    WARN[0000] cgroupv2 管理器已设置为 systemd,但没有 systemd 用户会话可用 WARN[0000] 对于使用 systemd,您可能需要使用用户会话 WARN[0000] 登录;或者,您可以启用以下项的持久性:loginctl enable-linger 986(可能为 root)WARN[0000] 回退到– cgroup-manager=cgroupfs

  2. 提取 Oracle Linux Automation Manager 容器映像。

    Oracle Linux 8:

    sudo su -l awx -s /bin/bash
    
    podman system migrate
    
    podman pull container-registry.oracle.com/oracle_linux_automation_manager/olam-ee:2.3-ol8
    

    Oracle Linux 9:

    sudo su -l awx -s /bin/bash
    
    podman system migrate
    
    podman pull container-registry.oracle.com/oracle_linux_automation_manager/olam-ee:2.3-ol9
    
  3. 创建 Oracle Linux Automation Manager 方案和管理用户帐户。

    awx-manage migrate
    awx-manage createsuperuser --username admin --email admin@example.com
    

    注:在上一个示例中,admin@example.com 是管理员用户的电子邮件地址示例。

  4. 输入并确认管理员用户的密码。

  5. 退出 awx 用户 shell。

    exit
    
  6. 为 NGINX 生成 SSL 证书。

    sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
    -keyout /etc/tower/tower.key -out /etc/tower/tower.crt
    

    输入请求的信息或仅按 ENTER 键。

  7. 替换默认 NGINX 配置。

    cat << EOF | sudo tee /etc/nginx/nginx.conf > /dev/null
    user nginx;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /run/nginx.pid;
    
    # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
    include /usr/share/nginx/modules/*.conf;
    
    events {
        worker_connections 1024;
    }
    
    http {
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile            on;
        tcp_nopush          on;
        tcp_nodelay         on;
        keepalive_timeout   65;
        types_hash_max_size 2048;
    
        include             /etc/nginx/mime.types;
        default_type        application/octet-stream;
    
        # Load modular configuration files from the /etc/nginx/conf.d directory.
        # See http://nginx.org/en/docs/ngx_core_module.html#include
        # for more information.
        include /etc/nginx/conf.d/*.conf;
    }
    EOF
    
  8. 更新受体配置文件。

    cat << EOF | sudo tee /etc/receptor/receptor.conf > /dev/null
    ---
    - node:
        id: $(hostname -i)
    
    - log-level: debug
    
    - tcp-listener:
        port: 27199
    
    - control-service:
        service: control
        filename: /var/run/receptor/receptor.sock
    
    - work-command:
        worktype: local
        command: /var/lib/ol-automation-manager/venv/awx/bin/ansible-runner
        params: worker
        allowruntimeparams: true
        verifysignature: false
    EOF
    
  9. 预配实例并注册执行环境。

    sudo su -l awx -s /bin/bash
    
    awx-manage provision_instance --hostname=$(hostname -i) --node_type=hybrid
    
    awx-manage register_default_execution_environments
    
    awx-manage register_queue --queuename=default --hostnames=$(hostname -i)
    
    awx-manage register_queue --queuename=controlplane --hostnames=$(hostname -i)
    
    awx-manage create_preload_data
    
    exit
    
  10. 启动服务。

    sudo systemctl enable --now ol-automation-manager.service
    
  11. 断开与服务器的连接。

    exit
    

验证安装

  1. 使用同一终端窗口配置 SSH 隧道。

    ssh -L 8444:localhost:443 oracle@<ip_address_of_instance>
    

    注:在上一个示例中,<ip_address_of_instance> 是运行 Oracle Linux Automation Manager 的系统的主机名或 IP 地址。如果使用主机名,则主机必须可解析。

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

    https://localhost:8444
    

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

  3. 使用 USERNAME admin 和设置期间创建的密码登录到 Oracle Linux Automation Manager。

后续步骤

安装 Oracle Linux Automation Manager 后,您可以开始浏览 Web 用户界面和各种产品功能,以帮助实现基础设施自动化。查看我们在 Oracle Linux 培训站上的其他培训,以扩展您的知识并获取创意。

更多学习资源

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

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