解锁 AWX+Ansible 自动化运维新体验:快速部署实战

Ansible 和 AWX 是自动化运维领域的强大工具组合。Ansible 是一个简单高效的 IT 自动化工具,而 AWX 则是 Ansible 的开源 Web 管理平台,提供图形化界面来管理 Ansible 任务。本指南将带你一步步在 Ubuntu 22.04 上安装 Ansible 和 AWX,使用 Minikube 搭建单节点 Kubernetes 集群,并适配网络不稳定的环境。无论你是初学者还是有经验的运维工程师,这篇超详细指南都能帮你成功部署 AWX 并运行你的第一个任务!


环境说明

  • 操作系统:Ubuntu 22.04
  • 主节点:IP 192.168.85.132,主机名 leo
  • Kubernetes 环境:Minikube(单节点集群)
  • 容器运行时:Docker
  • Ansible 版本:最新稳定版(通过 apt 安装)
  • AWX 版本:2.19.0(通过 AWX Operator 部署)
  • 目标:安装 Ansible 和 AWX,搭建单节点 Kubernetes 集群并运行 AWX,适配网络不稳定环境。

组件作用

  • Ansible:一个开源的自动化工具,用于配置管理、应用部署和任务自动化,支持通过 SSH 管理远程主机,无需安装客户端。
  • AWX:Ansible 的官方 Web 管理平台,提供图形化界面,支持任务调度、库存管理、权限控制和日志查看,是企业级 Ansible 管理的首选工具。
  • Docker:容器运行时,用于运行 Minikube 和 AWX 的容器化组件。
  • Minikube:一个轻量级的 Kubernetes 实现工具,用于在本地快速搭建单节点 Kubernetes 集群,适合开发和测试环境。
  • kubectl:Kubernetes 的命令行工具,用于管理 Kubernetes 集群资源。
  • Kustomize:一个 Kubernetes 原生配置管理工具,AWX Operator 的部署依赖它来处理 YAML 文件。
  • make:构建工具,用于执行 AWX Operator 的部署脚本。

软件介绍

Ansible 是一个简单而强大的 IT 自动化平台,允许用户通过 YAML 格式的 Playbook 定义任务,支持配置管理、应用部署、编排等功能。AWX 是 Ansible Tower 的开源版本,提供了一个 Web 界面来管理 Ansible 任务,支持多用户协作、任务调度和权限管理。通过在 Kubernetes 上部署 AWX,可以实现更高的可扩展性和灵活性。本指南将使用 Minikube 在 Ubuntu 22.04 上部署 AWX,确保即使在网络不稳定的环境下也能成功安装。


本次安装需要的镜像如下:

软件如下

集群镜像如下

虚拟机信息如下

 

本次安装通过Vmware虚拟机进行安装,配置资源如下,但是实际使用的话8G内存+8CPU+50GB磁盘就够用,我的资源多我就对此忽略不计了,我本次安装也是遇到了很多问题,才整理出这个完整的步骤,本次的步骤包括在线安装和离线部署,还有就是这里面的镜像大家拉取后可以打包保存起来,下次安装的话可以省下来很多时间。

安装步骤

第一部分:安装 Ansible

1. 更新系统并安装 Ansible

# 更新系统软件包索引,确保获取最新的软件包信息
sudo apt update -y# 安装 software-properties-common,提供管理 PPA 源的工具
sudo apt install -y software-properties-common# 添加 Ansible 官方 PPA 源,以便安装最新版本的 Ansible
sudo add-apt-repository --yes --update ppa:ansible/ansible# 安装 Ansible 以及依赖工具 curl 和 git
sudo apt install -y ansible curl git

离线安装(可选)
如果网络不稳定,可以离线下载 Ansible 的 .deb 包:

  • 访问 Debian 软件包页面 或 Ansible 官方 GitHub 发布页面,下载最新 .deb 文件(如 ansible_2.16.x_all.deb)。
  • 使用 MobaXterm 连接到 leo@192.168.85.132,将文件拖放到 /home/leo/ 目录。
  • 安装:
    # 安装下载的 .deb 包
    sudo dpkg -i /home/leo/ansible_2.16.x_all.deb# 解决可能的依赖问题
    sudo apt install -f -y

2. 验证 Ansible 安装

# 检查 Ansible 版本,验证是否安装成功
ansible --version

期望输出

ansible [core 2.16.x]

第二部分:准备 Kubernetes 环境

1. 安装 Docker

# 安装 Docker 容器运行时
sudo apt install -y docker.io# 启用并启动 Docker 服务
sudo systemctl enable docker --now

离线安装(可选)
如果网络不稳定,可以离线下载 Docker 的 .deb 包:

  • 从 Docker 官网 下载最新 .deb 包(如 docker.io_20.10.21-0ubuntu1~22.04.3_amd64.deb)。
  • 使用 MobaXterm 连接到 leo@192.168.85.132,将文件拖放到 /home/leo/ 目录。
  • 安装:
    # 安装下载的 .deb 包
    sudo dpkg -i /home/leo/docker.io_*.deb# 解决可能的依赖问题
    sudo apt install -f -y# 启用并启动 Docker 服务
    sudo systemctl enable docker --now

2. 配置用户权限

# 将当前用户添加到 docker 组,避免每次运行 Docker 命令都需要 sudo
sudo usermod -aG docker $USER && newgrp docker

3. 验证 Docker 安装

# 检查 Docker 版本,验证是否安装成功
docker --version

期望输出

Docker version 26.1.3, build 26.1.3-0ubuntu1~22.04.1

4. 安装 Minikube

# 下载 Minikube 的最新版本二进制文件
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64# 安装 Minikube 到系统路径
sudo install minikube-linux-amd64 /usr/local/bin/minikube

离线安装(可选)

  • 从 Minikube GitHub Releases 下载 minikube-linux-amd64(直接链接:minikube-linux-amd64)。
  • 使用 MobaXterm 连接到 leo@192.168.85.132,将文件拖放到 /home/leo/ 目录。
  • 安装:
    # 安装 Minikube 到系统路径
    sudo install /home/leo/minikube-linux-amd64 /usr/local/bin/minikube

5. 验证 Minikube 安装

# 检查 Minikube 版本,验证是否安装成功
minikube version

期望输出

minikube version: v1.35.0

6. 安装 kubectl

# 下载 kubectl v1.32.0 的二进制文件
curl -LO "https://dl.k8s.io/release/v1.32.0/bin/linux/amd64/kubectl"# 赋予执行权限
chmod +x kubectl# 移动到系统路径
sudo mv kubectl /usr/local/bin/

离线安装(可选)

  • 从 Kubernetes GitHub Releases 下载 kubectl 的 Linux AMD64 二进制文件(直接链接:kubectl)。
  • 使用 MobaXterm 连接到 leo@192.168.85.132,将文件拖放到 /home/leo/ 目录。
  • 安装:
    # 赋予执行权限
    chmod +x /home/leo/kubectl# 移动到系统路径
    sudo mv /home/leo/kubectl /usr/local/bin/

7. 验证 kubectl 安装

# 检查 kubectl 版本,验证是否安装成功
kubectl version --client

期望输出

Client Version: v1.32.0

8. 安装 make

# 安装 make 工具,用于执行 AWX Operator 的部署脚本
sudo apt install -y make

离线安装(可选)

  • 从 Ubuntu 软件源 下载最新 .deb 包(如 make_4.3-4.1build1_amd64.deb)。
  • 使用 MobaXterm 连接到 leo@192.168.85.132,将文件拖放到 /home/leo/ 目录。
  • 安装:
    # 安装下载的 .deb 包
    sudo dpkg -i /home/leo/make_*.deb# 解决可能的依赖问题
    sudo apt install -f -y

9. 验证 make 安装

# 检查 make 版本,验证是否安装成功
make --version

期望输出

GNU Make 4.3

10. 启动 Minikube

# 清理现有 Minikube 集群(如果存在)
minikube delete

拉取 Minikube 镜像

# 在线拉取 Minikube 所需的 kicbase 镜像
docker pull gcr.io/k8s-minikube/kicbase:v0.0.46

如果拉取失败,使用华为云镜像源

# 从华为云镜像源拉取 kicbase 镜像
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/gcr.io/k8s-minikube/kicbase:v0.0.46# 打标签为原始镜像名称
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/gcr.io/k8s-minikube/kicbase:v0.0.46 gcr.io/k8s-minikube/kicbase:v0.0.46

打包镜像

# 将 kicbase 镜像打包为 tar 文件,以便离线使用
docker save -o /home/leo/kicbase-v0.0.46-amd64.tar gcr.io/k8s-minikube/kicbase:v0.0.46

加载镜像(验证打包是否可用)

# 加载打包的镜像,验证是否可用
docker load -i /home/leo/kicbase-v0.0.46-amd64.tar

期望输出

Loaded image: gcr.io/k8s-minikube/kicbase:v0.0.46

启动 Minikube

# 启动 Minikube,指定 Docker 驱动,分配 6144Mi 内存和 4 个 CPU
minikube start --driver=docker --memory=6144 --cpus=4

11. 验证 Minikube 状态

# 检查 Minikube 状态,验证是否启动成功
minikube status

期望输出

minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

第三部分:安装 AWX

1. 下载并解压 AWX Operator

# 下载 AWX Operator 2.19.0 的源码包
curl -LO https://github.com/ansible/awx-operator/archive/refs/tags/2.19.0.tar.gz# 重命名为更清晰的文件名
mv 2.19.0.tar.gz awx-operator-2.19.0.tar.gz# 解压源码包
tar -xzf awx-operator-2.19.0.tar.gz

离线安装(可选)

  • 从 AWX Operator GitHub Releases 下载 awx-operator-2.19.0.tar.gz(直接链接:awx-operator-2.19.0.tar.gz)。
  • 使用 MobaXterm 连接到 leo@192.168.85.132,将文件拖放到 /home/leo/ 目录。
  • 解压:
    # 解压下载的源码包
    tar -xzf /home/leo/awx-operator-2.19.0.tar.gz

2. 安装 Kustomize(make deploy 依赖)

# 下载 Kustomize v5.6.0 的二进制文件
curl -LO https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv5.6.0/kustomize_v5.6.0_linux_amd64.tar.gz# 解压 Kustomize
tar -xzf kustomize_v5.6.0_linux_amd64.tar.gz# 移动到系统路径
sudo mv kustomize /usr/local/bin/

离线安装(可选)

  • 从 Kustomize GitHub Releases 下载 kustomize_v5.6.0_linux_amd64.tar.gz(直接链接:kustomize_v5.6.0_linux_amd64.tar.gz)。
  • 使用 MobaXterm 连接到 leo@192.168.85.132,将文件拖放到 /home/leo/ 目录。
  • 安装:
    # 解压 Kustomize
    tar -xzf /home/leo/kustomize_v5.6.0_linux_amd64.tar.gz# 移动到系统路径
    sudo mv kustomize /usr/local/bin/

3. 拉取并加载所有必要镜像

修复 DNS 解析(确保镜像源可访问)

# 检查当前 DNS 配置
cat /etc/resolv.conf

如果显示 nameserver 127.0.0.53,说明使用的是本地 DNS 代理,可能导致解析失败。永久修改 DNS

# 编辑 systemd-resolved 配置文件
sudo nano /etc/systemd/resolved.conf
  • 在 [Resolve] 部分添加:
    [Resolve]
    DNS=8.8.8.8 8.8.4.4
    FallbackDNS=223.5.5.5 223.6.6.6
    • 8.8.8.8 和 8.8.4.4 是 Google DNS。
    • 223.5.5.5 和 223.6.6.6 是阿里公共 DNS。
  • 保存并退出:Ctrl+O,Enter,Ctrl+X。

重启 DNS 服务

# 重启 systemd-resolved 服务以应用 DNS 配置
sudo systemctl restart systemd-resolved# 确保 /etc/resolv.conf 指向正确的文件
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

验证 DNS 解析

# 测试是否能解析镜像源域名
ping docker.m.daocloud.io
ping docker.mirrors.ustc.edu.cn

如果仍然失败,临时修改 /etc/resolv.conf

# 临时修改 DNS 配置
sudo nano /etc/resolv.conf
  • 修改为:
    nameserver 8.8.8.8
    nameserver 8.8.4.4
  • 保存并退出:Ctrl+O,Enter,Ctrl+X。

拉取镜像

  • 拉取 gcr.io/kubebuilder/kube-rbac-proxy:v0.15.0(AWX Operator 依赖)
    # 首选:从华为云镜像源拉取
    docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/gcr.io/kubebuilder/kube-rbac-proxy:v0.15.0# 如果失败,尝试 DaoCloud 镜像源
    docker pull docker.m.daocloud.io/kubebuilder/kube-rbac-proxy:v0.15.0
    docker tag docker.m.daocloud.io/kubebuilder/kube-rbac-proxy:v0.15.0 gcr.io/kubebuilder/kube-rbac-proxy:v0.15.0# 打标签(如果使用华为云镜像源)
    docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/gcr.io/kubebuilder/kube-rbac-proxy:v0.15.0 gcr.io/kubebuilder/kube-rbac-proxy:v0.15.0# 加载到 Minikube
    minikube image load gcr.io/kubebuilder/kube-rbac-proxy:v0.15.0# 打包镜像
    docker save -o /home/leo/kube-rbac-proxy-v0.15.0.tar gcr.io/kubebuilder/kube-rbac-proxy:v0.15.0# 验证打包是否可用
    docker rmi gcr.io/kubebuilder/kube-rbac-proxy:v0.15.0
    docker load -i /home/leo/kube-rbac-proxy-v0.15.0.tar
    minikube image load gcr.io/kubebuilder/kube-rbac-proxy:v0.15.0
  • 拉取 quay.io/ansible/awx-operator:2.19.0(AWX Operator 镜像)
    # 首选:直接拉取
    docker pull quay.io/ansible/awx-operator:2.19.0# 如果失败,尝试 DaoCloud 镜像源
    docker pull docker.m.daocloud.io/ansible/awx-operator:2.19.0
    docker tag docker.m.daocloud.io/ansible/awx-operator:2.19.0 quay.io/ansible/awx-operator:2.19.0# 加载到 Minikube
    minikube image load quay.io/ansible/awx-operator:2.19.0# 打包镜像
    docker save -o /home/leo/awx-operator-2.19.0.tar quay.io/ansible/awx-operator:2.19.0# 验证打包是否可用
    docker rmi quay.io/ansible/awx-operator:2.19.0
    docker load -i /home/leo/awx-operator-2.19.0.tar
    minikube image load quay.io/ansible/awx-operator:2.19.0
  • 拉取 redis:7(AWX 依赖,修正为成功环境中的标签)
    # 首选:从 AWS 镜像源拉取
    docker pull public.ecr.aws/docker/library/redis:7.0# 如果失败,尝试 DaoCloud 镜像源
    docker pull docker.m.daocloud.io/library/redis:7.0
    docker tag docker.m.daocloud.io/library/redis:7.0 public.ecr.aws/docker/library/redis:7.0# 打标签为 redis:7(与成功环境一致)
    docker tag public.ecr.aws/docker/library/redis:7.0 redis:7# 加载到 Minikube
    minikube image load redis:7# 打包镜像
    docker save -o /home/leo/redis-7.tar redis:7# 验证打包是否可用
    docker rmi redis:7
    docker load -i /home/leo/redis-7.tar
    minikube image load redis:7
  • 拉取 quay.io/ansible/awx:24.6.0(AWX 镜像,与 AWX Operator 2.19.0 兼容)
    # 首选:直接拉取
    docker pull quay.io/ansible/awx:24.6.0# 如果失败,尝试 DaoCloud 镜像源
    docker pull docker.m.daocloud.io/ansible/awx:24.6.0
    docker tag docker.m.daocloud.io/ansible/awx:24.6.0 quay.io/ansible/awx:24.6.0# 如果已加载 quay.io/ansible/awx:24.6.1,打标签为 24.6.0
    docker tag quay.io/ansible/awx:24.6.1 quay.io/ansible/awx:24.6.0# 加载到 Minikube
    minikube image load quay.io/ansible/awx:24.6.0# 打包镜像
    docker save -o /home/leo/awx-24.6.0.tar quay.io/ansible/awx:24.6.0# 验证打包是否可用
    docker rmi quay.io/ansible/awx:24.6.0
    docker load -i /home/leo/awx-24.6.0.tar
    minikube image load quay.io/ansible/awx:24.6.0
  • 拉取 quay.io/ansible/awx-ee:24.6.0(AWX Execution Environment 镜像)
    # 首选:从 DaoCloud 镜像源拉取
    docker pull docker.m.daocloud.io/ansible/awx-ee:24.6.0# 备选 1:从中国科学技术大学镜像源拉取
    docker pull docker.mirrors.ustc.edu.cn/ansible/awx-ee:24.6.0# 备选 2:直接从 quay.io 拉取(可能需要代理)
    docker pull quay.io/ansible/awx-ee:24.6.0# 打标签(如果使用 DaoCloud 或中科大镜像源)
    docker tag docker.m.daocloud.io/ansible/awx-ee:24.6.0 quay.io/ansible/awx-ee:24.6.0
    # 或
    docker tag docker.mirrors.ustc.edu.cn/ansible/awx-ee:24.6.0 quay.io/ansible/awx-ee:24.6.0# 如果已加载 quay.io/ansible/awx-ee:24.6.1,打标签为 24.6.0
    docker tag quay.io/ansible/awx-ee:24.6.1 quay.io/ansible/awx-ee:24.6.0# 加载到 Minikube
    minikube image load quay.io/ansible/awx-ee:24.6.0# 打包镜像
    docker save -o /home/leo/awx-ee-24.6.0.tar quay.io/ansible/awx-ee:24.6.0# 验证打包是否可用
    docker rmi quay.io/ansible/awx-ee:24.6.0
    docker load -i /home/leo/awx-ee-24.6.0.tar
    minikube image load quay.io/ansible/awx-ee:24.6.0
  • 拉取 postgres:15(AWX 数据库)
    # 首选:从 DaoCloud 镜像源拉取
    docker pull docker.m.daocloud.io/library/postgres:15# 备选 1:从中国科学技术大学镜像源拉取
    docker pull docker.mirrors.ustc.edu.cn/library/postgres:15# 备选 2:直接从 Docker Hub 拉取(可能需要代理)
    docker pull postgres:15# 打标签(如果使用 DaoCloud 或中科大镜像源)
    docker tag docker.m.daocloud.io/library/postgres:15 postgres:15
    # 或
    docker tag docker.mirrors.ustc.edu.cn/library/postgres:15 postgres:15# 加载到 Minikube
    minikube image load postgres:15# 打包镜像
    docker save -o /home/leo/postgres-15.tar postgres:15# 验证打包是否可用
    docker rmi postgres:15
    docker load -i /home/leo/postgres-15.tar
    minikube image load postgres:15
  • 拉取 quay.io/sclorg/postgresql-15-c9s:latest(AWX 数据库,成功环境中使用的镜像)
    # 首选:从 DaoCloud 镜像源拉取
    docker pull docker.m.daocloud.io/quay.io/sclorg/postgresql-15-c9s:latest# 备选 1:从中国科学技术大学镜像源拉取
    docker pull docker.mirrors.ustc.edu.cn/quay.io/sclorg/postgresql-15-c9s:latest# 备选 2:直接从 Quay.io 拉取(可能需要代理)
    docker pull quay.io/sclorg/postgresql-15-c9s:latest# 打标签(如果使用 DaoCloud 或中科大镜像源)
    docker tag docker.m.daocloud.io/quay.io/sclorg/postgresql-15-c9s:latest quay.io/sclorg/postgresql-15-c9s:latest
    # 或
    docker tag docker.mirrors.ustc.edu.cn/quay.io/sclorg/postgresql-15-c9s:latest quay.io/sclorg/postgresql-15-c9s:latest# 加载到 Minikube
    minikube image load quay.io/sclorg/postgresql-15-c9s:latest# 打包镜像
    docker save -o /home/leo/postgresql-15-c9s.tar quay.io/sclorg/postgresql-15-c9s:latest# 验证打包是否可用
    docker rmi quay.io/sclorg/postgresql-15-c9s:latest
    docker load -i /home/leo/postgresql-15-c9s.tar
    minikube image load quay.io/sclorg/postgresql-15-c9s:latest

离线加载镜像(如果在线拉取失败)

# 加载之前打包的镜像
docker load -i /home/leo/kube-rbac-proxy-v0.15.0.tar
docker load -i /home/leo/awx-operator-2.19.0.tar
docker load -i /home/leo/redis-7.tar
docker load -i /home/leo/awx-24.6.1.tar
docker load -i /home/leo/awx-ee-24.6.1.tar
docker load -i /home/leo/postgres-15.tar
docker load -i /home/leo/postgresql-15-c9s.tar# 加载到 Minikube
minikube image load gcr.io/kubebuilder/kube-rbac-proxy:v0.15.0
minikube image load quay.io/ansible/awx-operator:2.19.0
minikube image load redis:7
minikube image load quay.io/ansible/awx:24.6.1
minikube image load quay.io/ansible/awx-ee:24.6.1
minikube image load postgres:15
minikube image load quay.io/sclorg/postgresql-15-c9s:latest

验证镜像是否加载

# 检查 Minikube 中的镜像,验证是否加载成功
minikube ssh -- docker images | grep -E "kube-rbac-proxy|redis|awx-operator|awx|awx-ee|postgres"

期望输出

quay.io/sclorg/postgresql-15-c9s          latest     7cf012c03d6e   5 days ago      373MB
quay.io/ansible/awx-operator              2.19.0     a60201718711   9 months ago    552MB
quay.io/ansible/awx                       24.6.1     87ab0ba4bf68   8 months ago    980MB
quay.io/ansible/awx-ee                    24.6.1     f5df180d3d59   8 months ago    1.75GB
redis                                     7          7705dd2858c1   10 months ago   109MB
gcr.io/kubebuilder/kube-rbac-proxy        v0.15.0    7ebda747308b   17 months ago   55.9M

4. 修改 AWX Operator 镜像版本

# 进入 AWX Operator 目录
cd ~/awx-operator-2.19.0# 编辑 manager.yaml 文件
nano config/manager/manager.yaml
  • 找到 image 字段,将:
    image: quay.io/ansible/awx-operator:latest
    修改为:
    image: quay.io/ansible/awx-operator:2.19.0
  • 保存并退出:Ctrl+O,Enter,Ctrl+X。

5. 部署 AWX Operator

# 进入 AWX Operator 目录
cd ~/awx-operator-2.19.0# 设置命名空间环境变量
export NAMESPACE=ansible-awx# 创建命名空间
kubectl create namespace $NAMESPACE# 部署 AWX Operator
make deploy

验证

# 实时查看 Pod 状态,验证 AWX Operator 是否运行
kubectl get pods -n ansible-awx -w

期望输出

NAME                                               READY   STATUS    RESTARTS   AGE
awx-operator-controller-manager-xxx                2/2     Running   0          Xm

6. 部署 AWX 实例

# 进入 AWX Operator 目录
cd ~/awx-operator-2.19.0# 复制示例配置文件
cp config/samples/awx_v1beta1_awx.yaml awx-ubuntu.yml# 编辑配置文件
nano awx-ubuntu.yml
  • 修改为以下内容:
    ---
    apiVersion: awx.ansible.com/v1beta1
    kind: AWX
    metadata:name: awx-ubuntunamespace: ansible-awx
    spec:service_type: NodePortimage_pull_policy: IfNotPresent  # 确保使用本地镜像web_resource_requirements:requests:cpu: 50mmemory: 128Mitask_resource_requirements:requests:cpu: 150mmemory: 384Miee_resource_requirements:requests:cpu: 150mmemory: 192Mi
  • 保存并退出:Ctrl+O,Enter,Ctrl+X。

应用配置

# 部署 AWX 实例
kubectl apply -f awx-ubuntu.yml -n ansible-awx

验证 AWX 实例

# 实时查看 Pod 状态,验证 AWX 实例是否运行
kubectl get pods -n ansible-awx -w

期望输出

NAME                                               READY   STATUS    RESTARTS   AGE
awx-operator-controller-manager-xxx                2/2     Running   0          Xm
awx-ubuntu-postgres-15-0                           1/1     Running   0          Xs
awx-ubuntu-task-<hash>                             4/4     Running   0          Xs
awx-ubuntu-web-<hash>                              3/3     Running   0          Xs

7. 访问 AWX

端口转发

# 查看 AWX 相关 Pod
kubectl get pods -n ansible-awx# 端口转发,将 AWX Web 服务映射到本地 8052 端口
nohup kubectl port-forward awx-ubuntu-web-<hash> 8052:8052 -n ansible-awx --address 0.0.0.0 &

直接通过 Minikube 获取服务 URL

# 获取 AWX 服务的访问 URL
minikube service awx-ubuntu-service -n ansible-awx --url

期望输出

http://192.168.49.2:30080

获取管理员密码

# 获取 AWX 管理员密码
kubectl get secret awx-ubuntu-admin-password -n ansible-awx -o jsonpath="{.data.password}" | base64 --decode; echo

登录 AWX

  • URL:http://192.168.85.132:8052
  • 用户名:admin
  • 密码:上一步输出的密码

因为我是NAT模式,所以需要使用端口转发来做映射

接着打开登入页面

输入账号:admin

输入密码:praymwaE6t9I1Bh7kcGvqGxJ2JXlhy9Q

这个地方需要注意

这两个字段是通过hash得出来的,每次重启服务都会变化,在做映射服务的时候需要将hash字段替换到命令中的<hash>部分

希望这个文章能对大家带来便利,如果需要离线镜像的朋友,可以私信我,免费提供

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/73420.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【xiaozhi赎回之路-2:语音可以自己配置就是用GPT本地API】

固件作用 打通了网络和硬件的沟通 修改固件实现【改变连接到小智服务器的】 回答逻辑LLM自定义 自定义了Coze&#xff08;比较高级&#xff0c;自定义程度比较高&#xff0c;包括知识库&#xff0c;虚拟脚色-恋人-雅思老师-娃娃玩具{可能需要使用显卡对开源模型进行微调-产…

Springboot 学习 之 Shardingsphere 按照日期水平分表(二)

文章目录 业务场景依赖配置特别注意优劣参考资料 业务场景 在 报表 等 大数据量 且需要 按照日期显示 的业务场景下&#xff0c;按照 日期水平分表 是一个不错的选择 依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-b…

(UI自动化测试web端)第二篇:元素定位的方法_xpath扩展(工作当中用的比较多)

看代码里的【driver.find_element_by_xpath( )】()里的路径怎么写&#xff1f; xpath元素定位有多种写法&#xff0c;那我们现在说的就是在元素定位时&#xff0c;根据网页的实际情况来选择适合的xpath元素定位的写法。信我 &#xff0c;你真正工作当中每个都有用的&#xff01…

[已解决]服务器CPU突然飙高98%----Java程序OOM问题 (2024.9.5)

目录 问题描述问题排查问题解决参考资料 问题描述 业主单位服务器自8月29日晚上21:00起CPU突然飙高至98%&#xff0c;内存爆满&#xff0c;一直到9月5日&#xff1a; 问题排查 ①执行 top 命令查看Java进程PID top②执行top -Hp PID 命令查看具体的线程情况 top -Hp 3058输入上…

Mybatis基于注解开发

Mybatis基于注解进行开发 基于注解形式开发Mybatis省去XML的SQL映射配置文件&#xff08;只需要在Mybatis的核心配置文件中设置要扫描的接口通过Mapper标签中的子标签<package>指定要扫描的包&#xff09; 注意&#xff1a;在进行想改的SQL操作的时候首先要注意数据表的…

【C++】STL性能优化实战

STL性能优化实战 STL (Standard Template Library) 是 C 标准库的核心部分&#xff0c;提供了各种容器、算法和迭代器。虽然 STL 提供了强大的功能&#xff0c;但不恰当的使用可能导致性能问题。下面我将详细介绍 STL 性能优化的实战技巧&#xff0c;并通过具体案例说明。 1.…

OSI模型_TCP/IP模型_五层模型

文章目录 OSI模型_TCP/IP模型_五层模型模型对比模型层级对比关键区别对比 OSI模型OSI模型概述举例说明流程图示 TCP/IP 四层模型模型结构举例说明流程图示 TCP/IP 五层模型模型的结构举例说明流程图示 OSI模型_TCP/IP模型_五层模型 学OSI&#xff0c;用TCP/IP&#xff0c;分析选…

R语言——字符串

参考资料&#xff1a;学习R 文本数据存储在字符向量中。重要的是&#xff0c;字符向量中的每个元素都是字符串&#xff0c;而非单独的字符。 文本的基本单位是字符向量&#xff0c;着意味着大部分字符串处理函数也能用于字符向量。 1、创建和打印字符串 字符向量可用c函数创建…

如何区别在Spring Boot 2 和 Spring Boot 3 中使用 Knife4j:集成与配置指南

在现代的 Web 开发中&#xff0c;API 文档是不可或缺的一部分。Knife4j 是基于 Swagger 的增强工具&#xff0c;它不仅提供了更友好的 API 文档界面&#xff0c;还支持更多实用的功能&#xff0c;如离线文档导出、全局参数配置等。本文将详细介绍如何在 Spring Boot 2 和 Sprin…

pagehelper 分页插件使用说明

pom.xml&#xff1a;pageHelper坐标 <!--pageHelper坐标--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.6</version></dependency> 分…

C++可变参数

可变参数C风格的可变参数C风格可变参数的使用 C11可变参数模板递归展开参数包参数列表展开折叠表达式 STL中的emplace插入接口 可变参数 C风格的可变参数 可变参数是一种语言特性&#xff0c;可以在函数声明中使用省略号...来表示函数接受可变数量的参数。 例如典型的printf…

数据库的操作,以及sql之DML

首先&#xff0c;创建表以及插入数据 create table t_text(id int primary key auto_increment,name varchar(20) unique not null,gender char(5) not null check(gender in ("男","女")),deed varchar(255) not null default "事例不详"); in…

vue2前端日志数据存储(indexedD)自动清理3天前的数据

前言&#xff1a;关于Dexie.js这个前端本地数据库&#xff0c;如何使用IndexedDB来存储数据&#xff0c;并且设置到期自动清理的机制。首先&#xff0c;我需要回忆一下Dexie.js的基本用法&#xff0c;以及IndexedDB的特性。IndexedDB是浏览器中的一种非关系型数据库&#xff0c…

【MySQL篇】索引特性,索引的工作原理以及索引的创建与管理

目录 一&#xff0c;初识索引 二&#xff0c;MySQL与磁盘交互的基本单位 三&#xff0c;MySQL中数据文件的特性 四&#xff0c;理解page和索引 五&#xff0c;聚簇索引和非聚簇索引 六&#xff0c;索引操作 查询索引 创建主键索引 唯一索引的创建 普通索引的创建 全文…

springboot项目启动常见的问题以及配置以及一些使用技巧

1.配置仓库 这里要把xml文件从国外的镜像源改成国内的镜像源。改镜像源可以查看这篇文章 点击查看 2.更改文件类型 方法一&#xff1a;右键文件找到Mark Dircetory as可以更改文件类型 方法二&#xff1a; 3.springboot本地Maven仓库的位置 4.pom.xml文件报红错误怎么办 这…

【初探数据结构】二叉树的顺序结构——堆的实现详解(上下调整算法的时间复杂度分析)

&#x1f4ac; 欢迎讨论&#xff1a;在阅读过程中有任何疑问&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;如果你觉得这篇文章对你有帮助&#xff0c;记得点赞、收藏&#xff0c;并分享给更多对数据结构感…

流量分析2

一&#xff0c;webshell流量 [GKCTF 2021]签到 先看协议分级&#xff0c;大部分是tcp&#xff0c;里面有http的基于的行文本数据占了很大的比重&#xff0c;看看里面有什么 过滤http的流量 点击一条流量&#xff0c;里面的内容进去后面有基于行的文本数据&#xff0c; 先解he…

头歌实践教学平台--【数据库概论】--SQL

一、表结构与完整性约束的修改(ALTER) 1.修改表名 USE TestDb1; alter table your_table rename TO my_table; 2.添加与删除字段 #语句1&#xff1a;删除表orderDetail中的列orderDate alter table orderDetail drop orderDate; #语句2&#xff1a;添加列unitPrice alter t…

在 React 中,组件之间传递变量的常见方法

目录 1. **通过 Props 传递数据**2. **通过回调函数传递数据**3. **通过 Context API 传递数据**4. **通过 Redux 管理全局状态**5. **通过事件总线&#xff08;如 Node.js 的 EventEmitter&#xff09;**6. **通过 Local Storage / Session Storage**7. **通过 URL 查询参数传…

Redis + 布隆过滤器解决缓存穿透问题

Redis 布隆过滤器解决缓存穿透问题 1. Redis 布隆过滤器解决缓存穿透问题 &#x1f4cc; 什么是缓存穿透&#xff1f; 缓存穿透指的是查询的数据既不在缓存&#xff0c;也不在数据库&#xff0c;导致每次查询都直接访问数据库&#xff0c;增加数据库压力。 例如&#xff1…