当前位置: 首页 > news >正文

解锁 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>部分

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

 

相关文章:

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

Ansible 和 AWX 是自动化运维领域的强大工具组合。Ansible 是一个简单高效的 IT 自动化工具&#xff0c;而 AWX 则是 Ansible 的开源 Web 管理平台&#xff0c;提供图形化界面来管理 Ansible 任务。本指南将带你一步步在 Ubuntu 22.04 上安装 Ansible 和 AWX&#xff0c;使用 M…...

简洁、实用、无插件和更安全为特点的WordPress主题

简站WordPress主题是一款以简洁、实用、无插件和更安全为特点的WordPress主题&#xff0c;自2013年创立以来&#xff0c;凭借其设计理念和功能优势&#xff0c;深受用户喜爱。以下是对简站WordPress主题的详细介绍&#xff1a; 1. 设计理念 简站WordPress主题的核心理念是“崇…...

区块链学习总结

Hardhat 是一个用于 Ethereum 智能合约开发 的开发环境&#xff0c;专为 Solidity 语言编写的智能合约提供工具支持。它能够帮助开发者 编译、部署、测试和调试 智能合约&#xff0c;并提供一个本地的以太坊测试网络。 Hardhat 的核心功能 本地开发网络&#xff08;Hardhat Ne…...

可发1区的超级创新思路(python\matlab实现):基于周期注意力机制的TCN-Informer时间序列预测模型

首先声明,该模型为原创!原创!原创!且该思路还未有成果发表,感兴趣的小伙伴可以借鉴! 一、应用场景 该模型主要用于时间序列数据预测问题,包含功率预测、电池寿命预测、电机故障检测等等 二、模型整体介绍(本文以光伏功率预测为例) 1.1 核心创新点 本模型通过三阶段…...

案例4:鸢尾花分类(pytorch)

一、引言 鸢尾花分类是机器学习领域的经典案例&#xff0c;常用于演示分类算法的基本原理和应用。本案例使用 PyTorch 构建一个简单的神经网络模型&#xff0c;对鸢尾花进行分类。通过该案例&#xff0c;我们可以学习如何使用 PyTorch 进行数据处理、模型构建、训练和评估&…...

本地部署Stable Diffusion生成爆火的AI图片

直接上代码 Mapping("/send") Post public Object send(Body String promptBody) { JSONObject postSend new JSONObject(); System.out.println(promptBody); JSONObject body JSONObject.parseObject(promptBody); List<S…...

CCF-CSP历年真题答案1,2

本文代码主要来自up主圣斗士-DS-ALGO对历年真题的讲解&#xff0c;在此特别感谢。 侵权则删。 10.1_分蛋糕_2017_03 #include <iostream> using namespace std;int main() {int a[1000], n, k; // 定义数组a用于存储蛋糕的重量&#xff0c;整数n表示蛋糕的数量&#xf…...

【MySQL】一篇讲懂什么是聚簇索引和非聚簇索引(二级索引)以及什么是回表?

1.聚簇索引&#xff1a; 叶子节点直接存储了完整的数据行。 每个表只能有一个聚簇索引&#xff0c;通常是主键(Primary Key)。如果没有定义主键&#xff0c;则MySQL会选择一个唯一且非空索引作为聚簇索引。 特点&#xff1a; 数据存储&#xff1a;叶子结点存储完整的数据行…...

炫酷的HTML5粒子动画特效实现详解

炫酷的HTML5粒子动画特效实现详解 这里写目录标题 炫酷的HTML5粒子动画特效实现详解项目介绍技术栈项目架构1. HTML结构2. 样式设计 核心实现1. 粒子类设计2. 动画效果实现星空效果烟花效果雨滴效果 3. 鼠标交互 性能优化效果展示总结 项目介绍 本文将详细介绍如何使用HTML5 C…...

go-zero学习笔记

内容不多&#xff0c;只有部分笔记&#xff0c;剩下的没有继续学下去&#xff0c;包括路由与处理器、日志中间件、请求上下文 文章目录 1、go-zero核心库1.1 路由与处理器1.2 日志中间件1.3 请求上下文 1、go-zero核心库 1.1 路由与处理器 package mainimport ("github…...

QuecPython 网络协议之TCP/UDP协议最祥解析

概述 IP 地址与域名 IP 地址是网络中的主机地址&#xff0c;用于两台网络主机能够互相找到彼此&#xff0c;这也是网络通信能够成功进行的基础。IP 地址一般以点分十进制的字符串来表示&#xff0c;如192.168.1.1。 ​ 我们日常访问的网站&#xff0c;其所在的服务器主机都有…...

FPGA_YOLO(二)

上述对cnn卷积神经网络进行介绍,接下来对YOLO进行总结,并研究下怎么在FPGA怎么实现的方案。 对于一个7*7*30的输出 拥有49个cell 每一个cell都有两个bbox两个框,并且两个框所包含的信息拥有30个 4个坐标信息和一个置信度5个,剩下就是20个类别。 FPGA关于YOLO的部署 1…...

Camera2 与 CameraX 闲谈

目录 &#x1f4c2; 前言 1. &#x1f531; Camera2 2. &#x1f531; CameraX 3. &#x1f531; Camera2 与 CameraX 1&#xff09;使用复杂度与开发效率 2&#xff09;控制能力与应用场景 3&#xff09;设备兼容性与稳定性 4&#xff09;更新与维护 4. &#x1f4a0…...

【零基础入门unity游戏开发——2D篇】2D物理系统 —— 2D刚体组件(Rigidbody 2d)

考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的…...

【论文#目标检测】YOLO9000: Better, Faster, Stronger

目录 摘要1.引言2.更好&#xff08;Better&#xff09;3.更快&#xff08;Faster&#xff09;4.更健壮&#xff08;Stronger&#xff09;使用 WordTree 组合数据集联合分类和检测评估 YOLO9000 5.结论 Author: Joseph Redmon; Ali Farhadi Published in: 2017 IEEE Conference …...

C++异常处理时的异常类型抛出选择

在 C 中选择抛出哪种异常类型&#xff0c;主要取决于错误的性质以及希望传达的语义信息。以下是一些指导原则&#xff0c;帮助在可能发生异常的地方选择合适的异常类型进行抛出&#xff1a; 1. std::exception 适用场景&#xff1a;作为所有标准异常的基类&#xff0c;std::e…...

centos 7 搭建FTP user-list用户列表

在 CentOS 7 上搭建基于 user_list 的 FTP 用户列表&#xff0c;你可以按以下步骤操作&#xff1a; 1. 安装 vsftpd 服务 若还未安装 vsftpd&#xff0c;可以使用以下命令进行安装&#xff1a; bash yum install -y vsftpd2. 启动并设置开机自启 vsftpd 服务 bash systemctl…...

vulnhub-Tr0ll ssh爆破、wireshark流量分析,exp、寻找flag。思维导图带你清晰拿到所以flag

vulnhub-Tr0ll ssh爆破、wireshark流量分析&#xff0c;exp、寻找flag。思维导图带你清晰拿到所以flag 1、主机发现 arp-scan -l 2、端口扫描 nmap -sS -sV 192.168.66.185 nmap -sS -A -T4 -p- 192.168.66.185 nmap --scriptvuln 192.168.66.185经典扫描三件套&#xff0c;…...

k8s中service概述(二)NodePort

NodePort 是 Kubernetes 中一种用于对外暴露服务的 Service 类型。它通过在集群的每个节点上开放一个静态端口&#xff08;NodePort&#xff09;&#xff0c;使得外部用户可以通过节点的 IP 地址和该端口访问集群内部的服务。以下是关于 NodePort Service 的详细说明&#xff1…...

搭建Redis哨兵集群

停掉现有的redis集群 因为这篇文章我是在 搭建完redis主从集群之后写的&#xff0c;如果要是没有搭建过这些&#xff0c;可以直接略过。要是从我上一篇 搭建redis主从集群过来的&#xff0c;可以执行下。 docker compose down 查找下redis相关进程 ps -ef | grep redis 可以看…...

.Net SSO 单点登录方式

SSO单点登录目的 之前一般来讲系统简单&#xff0c;登录后 本地 cookie 加服务器 session 存储用户身份信息&#xff0c;以此为依据来判断用户再次登录时免验证 但随着互联网发展&#xff0c;很多应用 部署在不同的服务器上&#xff0c;而用户体系是一套&#xff0c;那么按照原…...

SQL 基础 BETWEEN 的常见用法

在SQL中&#xff0c;BETWEEN是一个操作符&#xff0c;用于选取介于两个值之间的数据。 它包含这两个边界值。BETWEEN操作符常用于WHERE子句中&#xff0c;以便选取某个范围内的值。 以下是BETWEEN的一些常见用法&#xff1a; 选取介于两个值之间的值&#xff1a; 使用 BETWE…...

ngx_http_add_location

声明在 src\http\ngx_http_core_module.c ngx_int_t ngx_http_add_location(ngx_conf_t *cf, ngx_queue_t **locations,ngx_http_core_loc_conf_t *clcf); 定义在 src\http\ngx_http.c ngx_int_t ngx_http_add_location(ngx_conf_t *cf, ngx_queue_t **locations,ngx_http…...

深入探索ArkUI中的@LocalBuilder装饰器:构建高效可维护的UI组件

在ArkUI框架中&#xff0c;组件化开发是提升代码复用性和维护性的关键手段。随着项目复杂度的增加&#xff0c;开发者常常面临如何在保持组件封装性的同时&#xff0c;灵活处理组件内部逻辑的问题。传统的Builder装饰器虽然提供了强大的自定义构建能力&#xff0c;但在某些场景…...

视频知识库初步设想

将视频字幕提取出来作为知识库来源定位,下一步设想:把视频上的图片信息也精简出来作为定位。 下面是测试例子: 入参: {"model":"deepseek-ai/DeepSeek-R1-Distill-Llama-8B","messages":[{"role":"system","cont…...

微信小程序中使用Less样式方法

在微信小程序中使用Less样式&#xff0c;可以通过以下步骤实现。主要原理是借助Visual Studio Code&#xff08;VSCode&#xff09;的插件将Less文件自动编译为小程序支持的.wxss文件&#xff0c;或通过微信开发者工具的扩展功能直接集成Less编译环境。以下是具体方法&#xff…...

2024年MathorCup数学建模A题移动通信网络中PCI规划问题解题全过程文档加程序

2024年第十四届MathorCup高校数学建模挑战赛 A题 移动通信网络中PCI规划问题 原题再现&#xff1a; 物理小区识别码(PCI)规划是移动通信网络中下行链路层上&#xff0c;对各覆盖小区编号进行合理配置&#xff0c;以避免PCI冲突、PCI混淆以及PCI模3干扰等现象。PCI规划对于减少…...

本周安全速报(2025.3.18~3.24)

合规速递 01 2025欧洲网络安全报告&#xff1a;DDoS攻击同比增长137%&#xff0c;企业应如何应对&#xff1f; 原文: https://hackread.com/european-cyber-report-2025-137-more-ddos-attacks/ 最新的Link11《欧洲网络安全报告》揭示了一个令人担忧的趋势&#xff1a;DDo…...

力扣刷题-热题100题-第23题(c++、python)

206. 反转链表 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/reverse-linked-list/solutions/551596/fan-zhuan-lian-biao-by-leetcode-solution-d1k2/?envTypestudy-plan-v2&envIdtop-100-liked 常规法 记录前一个指针&#xff0c;当前指针&am…...

YAML是什么?

YAML&#xff08;YAML Ain’t Markup Language&#xff09;是一种以数据为中心、高度可读的序列化语言&#xff0c;广泛应用于配置文件、数据交换和自动化工具中。以下从多个维度对其进行全面解析&#xff1a; 1. 定义与历史演变 全称与定位&#xff1a; YAML的全称最初为“Yet…...

期权交易投资怎么操作?新手期权操作指南

期权就是股票&#xff0c;唯一区别标的物上证指数&#xff0c;会看大盘吧&#xff0c;新手做期权交易两个方向认购做多&#xff0c;认沽做空&#xff0c;双向t0交易没了&#xff0c;跟期货一样&#xff0c;对的&#xff0c;玩的也是合约&#xff0c;唯一区别没有保证金不会爆仓…...

音视频学习(三十):fmp4

FMP4&#xff08;Fragmented MP4&#xff09;是 MP4&#xff08;MPEG-4 Part 14&#xff09;的扩展版本&#xff0c;它支持流式传输&#xff0c;并被广泛应用于DASH&#xff08;Dynamic Adaptive Streaming over HTTP&#xff09;和HLS&#xff08;HTTP Live Streaming&#xf…...

破局AI落地困局 亚信科技“四位一体手术刀“切开产业智能三重枷锁

当全球进入以AI为核心竞争力的新经济周期&#xff0c;政企机构的数字化转型正面临关键转折点&#xff1a;IDC数据显示&#xff0c;2023年超过67%的中国企业在AI落地环节遭遇"技术断层"&#xff0c;高昂的试错成本与碎片化解决方案让智能转型陷入僵局。在此背景下&…...

android 去掉状态栏的方法汇总

在 Android 开发中&#xff0c;隐藏或去除状态栏&#xff08;Status Bar&#xff09;有多种方法&#xff0c;具体实现方式取决于应用场景和目标 Android 版本。以下是常用的 ​6 种方法及其代码示例&#xff1a; 在 Android 开发中&#xff0c;隐藏或去除状态栏&#xff08;Sta…...

jenkins+1panel面板java运行环境自动化部署java项目

本文章不包含1panel面板安装、jenkins部署、jenkins连接git服务器等操作教程&#xff0c;如有需要可以抽空后期补上 jenkins安装插件Publish Over SSH 在系统配置添加服务器 查看项目的工作空间 项目Configure->构Post Steps选择Send files or execute commands over SSH…...

VLAN综合实验报告

一、实验拓扑 网络拓扑结构包括三台交换机&#xff08;LSW1、LSW2、LSW3&#xff09;、一台路由器&#xff08;AR1&#xff09;以及六台PC&#xff08;PC1-PC6&#xff09;。交换机之间通过Trunk链路相连&#xff0c;交换机与PC、路由器通过Access或Hybrid链路连接。 二、实验…...

雷军从 6 楼扔涂有防弹涂层西瓜,西瓜完好无损,这种防弹涂层是什么材质?用在车上效果怎么样?

雷军展示的“防弹涂层”是一种基于第四代高分子材料聚脲&#xff08;Polyurea&#xff09;的升级技术&#xff0c;其核心特性是通过纳米级交联结构形成弹性防护层&#xff0c;兼具柔韧性与刚性&#xff0c;能够有效吸收冲击能量并抵御尖锐物体的穿刺。以下是关于该涂层材质及在…...

信奥赛CSP-J复赛集训(模拟算法专题)(31):P2692 覆盖

信奥赛CSP-J复赛集训&#xff08;模拟算法专题&#xff09;&#xff08;31&#xff09;&#xff1a;P2692 覆盖 题目背景 WSR 的学校有 B B B 个男生和 G G G 个女生都来到一个巨大的操场上扫地。 题目描述 操场可以看成是 N N N 行 M M M 列的方格矩阵&#xff0c;如下…...

数据库联表Sql语句建一个新表(MySQL,Postgresql,SQL server)

数据库联表Sql语句建一个新表(MySQL,Postgresql,SQL server) 如果你想基于 SELECT USERS.ID,USERS.NAME,USERS.EMAIL,USERS.ID_CARD,USERS.V_CARD,USERS.ADDRESS,v_card.type,v_card.amount FROM USERS JOIN v_card on USERS.V_CARDv_card.v_card 这个查询结果创建一个新表&am…...

【Go】结构体的基本使用

go语言不是面向对象的语言 但是结构体类似于面向对象 结构体的定义 package mainimport "fmt"type Student struct {id intname stringage intschool string }func main() {s : Student{1, "luobozi", 18, "znl"}fmt.Println(s) }结构…...

统计可重复列表中的TOP N

文章目录 方案1&#xff1a;HashMap统计 全排序实现步骤&#xff1a;代码实现&#xff1a;优缺点&#xff1a; 方案2&#xff1a;HashMap统计 最小堆&#xff08;优先队列&#xff09;实现步骤&#xff1a;代码实现&#xff1a;优缺点&#xff1a; 方案3&#xff1a;Java Str…...

《jQuery Mobile 页面:深入解析与优化实践》

《jQuery Mobile 页面:深入解析与优化实践》 引言 jQuery Mobile 是一个流行的前端框架,专为移动设备设计,提供了丰富的UI组件和简洁的API,使得开发者可以快速构建出美观且响应式的移动页面。本文将深入解析jQuery Mobile的页面构建方法,并探讨一些优化实践,以帮助开发…...

C#中 String类API(函数)

字符串属性 string str "打工人";Console.WriteLine(str);char s str[0];Console.WriteLine(s); 字符串内置API(函数) 1. Concat 拼接字符串 string s1 "打";string s2 "工";string s3 "人";string sthstring.Concat(s1, s2, s…...

【Linux 维测专栏 5 -- linux pstore 使用介绍】

文章目录 Linux pstore 功能简介1. pstore 概述2. pstore 的核心功能3. pstore 的工作原理4. pstore 的使用示例5. pstore 的优势6. 典型应用场景配置示例1)DTS配置2)config配置运行测试及log问题小结Linux pstore 功能简介 1. pstore 概述 pstore(Persistent Storage)是…...

AI赋能:科技写作的革新之路

在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;技术正以惊人的速度渗透到各个领域&#xff0c;科技写作也不例外。AI不仅改变了写作的方式&#xff0c;还极大地提升了写作的效率和质量。本文将探讨AI技术在科技写作中的应用&#xff0c;并分享一些实用的AI工…...

如何为你的github开源项目选择合适的开源协议?

如何为你的github开源项目选择合适的开源协议&#xff1f; 导言 在github开源世界中&#xff0c;选择一个合适的开源协议是至关重要的。它不仅定义了他人如何使用你的代码&#xff0c;还决定了你的项目能否被广泛接受和传播&#xff0c;还能避免侵权问题。 然而&#xff0c;面…...

struts2漏洞攻略

S2-057远程执行代码漏洞 靶场&#xff1a; /struts2/s2-057 1&#xff0c;搭建好环境后访问 http://47.108.150.249:8081/struts2-showcase/ 2&#xff0c;在url处进行输⼊ 在url输入http://47.108.150.249:8081/struts2-showcase/${(123123)}/actionChain1.action 后刷新可…...

LVGL学习1

LVGL知识点 架构图 参考&#xff1a;Getting Started — LVGL documentation display、screen、widget的关系 参考&#xff1a; Widget Basics — LVGL documentation Overview — LVGL documentation 简单说&#xff0c;display就是硬件的显示设备&#xff0c;也就是一个一…...

【SpringCloud】微服务的治理以及服务间的远程调用

目录 一、微服务的诞生 二、服务注册和发现 2.1 需求的产生 2.2 注册中心原理 2.3 Nacos注册中心 2.4 Nacos安装部署教程 2.5 配置Nacos 三、OpenFeign 3.1 认识OpenFeign 3.2 快速入门 3.2.1 引入依赖 3.2.2 启动OpenFeign 3.2.3 编写OpenFeign客户端 3.2.4 使…...

钞票准备好了吗?鸿蒙电脑 5 月见

3月20日&#xff0c;在华为 Pura 先锋盛典及鸿蒙智行新品发布会上&#xff0c;华为常务董事、终端BG董事长、智能汽车解决方案BU董事长余承东表示&#xff0c;华为终端全面进入鸿蒙时代&#xff0c;今年5月将推出鸿蒙电脑。 在3月20日的华为Pura先锋盛典及鸿蒙智行新品发布会上…...