如何在 Minishift 上运行 AWX

使用 Minishift 容器编排器将 Ansible 放入容器中。
179 位读者喜欢这篇文章。
CC-BY-SA William Kenlon  http://www.williamkenlon.com

William Kenlon. CC BY-SA 4.0

Red Hat Ansible Tower 产品的上游版本是 AWX。它是一个容器化解决方案,这意味着您需要一个容器编排器来运行和维护它。一个简洁的本地安装选项是 Minishift,它运行 OKD,Red Hat 版本的 Minikube,这使得在本地运行 Kubernetes 更加容易。

如果您已经在使用 Minishift...

首先,为了确保一切顺利,请清除所有旧的 Minishift 实例。

$ minishift stop && minishift delete
$ rm -rf ~/.minishift ~/.kube

同时删除您可能拥有的任何旧的 minishift-addons

下载并安装 Minishift

从 Minishift 的 GitHub 仓库下载最新版本。(在本文发布时,最新版本是 v1.25.0,我将其与 MacOS 和 VirtualBox 结合使用。)

$ tar zxfv 下载的文件,并将 minishift-* 二进制文件放在您的路径中的某个位置。我使用了 /usr/local/bin/minishift

我使用 Minishift 遇到的最大问题是升级,冲突的旧 Minishift 或 oc 二进制文件 可能会导致问题。(oc 是 OKD 的命令行界面。)

AWX 至少需要 4 个核心和 8GB 内存才能安装,因此请设置一些限制(如果可以,请提供更多资源)。

$ minishift config set vm-driver virtualbox
$ minishift config set cpus 4
$ minishift config set memory 8gb
$ minishift config view

确保已安装默认的附加组件,因为我们需要 'admin-user' 以便我们可以进行集群级别的更改

$ minishift addons install --defaults
$ minishift addons enable admin-user
$ minishift addons list
​$ minishift start

等待下载和安装。如果您的宽带像我的一样,这可能需要一段时间!

还有几个步骤...

在安装 AWX 之前,还需要设置一些其他事项。

首先,请务必选择正确的 oc 二进制文件——否则可能会出现异常。

$ eval $(minishift docker-env)

普通用户(在本例中为“developer”)需要额外的权限才能在集群级别执行操作。

$ oc login -u admin -p admin --as=system:admin
$ oc adm policy add-cluster-role-to-user cluster-admin developer --as=system:admin

AWX playbook 安装会创建一个项目,但提前创建它并无坏处,这样您就可以为数据库拥有一个持久性存储卷 (PV)。

$ oc new-project awx

创建一个名为 pvc.yml 的文件,内容如下

$ cat > pvc.yml <<EOF
apiVersion: "v1"
kind: "PersistentVolumeClaim"
metadata:
 name: "postgresql"
spec:
 accessModes:
  - "ReadWriteMany"
 resources:
  requests:
   storage: "20Gi"
 volumeName: pv0001
EOF

Minishift 在安装过程中创建了许多 PV;只需声明其中一个即可。

$ oc get pv

要查看它们并选择一个空闲的 PV,如果已被占用,请替换卷名称(上面示例中的“pv0001”)。例如,

$ oc create -f pvc.yml

将对 PV 进行声明,被安装程序拾取,并用作 Postgres 数据库的 PV。

$ oc get pvc 

检查输出是否显示 PV 为Bound:(已绑定:):

名称

状态

容量

访问模式

存储类

年龄

postgresql

Bound

pv0001

100Gi

RWO,ROX,RWX

 

10 秒

安装 AWX

最后,是时候安装 AWX 了。输入

$ git clone https://github.com/ansible/awx.git
$ cd awx/installer

更改 inventory 文件,使其适合您的环境。

$ cp inventory inventory.old

以下配置适用于我的 inventory 文件

$ cat > inventory <<EOF
localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python"


[all:vars]


dockerhub_base=ansible
dockerhub_version=latest


openshift_host=192.168.99.100:8443
openshift_project=awx
openshift_user=developer
openshift_skip_tls_verify=True
openshift_pg_emptydir=False


postgres_data_dir=/tmp/pgdocker
host_port=80
docker_compose_dir=/var/lib/awx


pg_username=awx
pg_password=awxpass
pg_database=awx
pg_port=5432

rabbitmq_password=awxpass
rabbitmq_erlang_cookie=cookiemonster

admin_user=admin
admin_password=password
secret_key=awxsecret
EOF

您可能需要更改 openshift_host IP。通过运行以下命令检查您的 IP

$ minishift ip

现在您已准备就绪!

$ ansible-playbook -i inventory install.yml -e openshift_password=developer -e docker_registry_password=$(oc whoami -t)

playbook 将启动各种任务;有些可能会失败(如果失败,它们将以红色显示)。这通常是正常的。我的安装大约需要 5-6 分钟作为参考。

使用命令登录 Minishift 控制台

$ minishift console

和凭据 developer/developer 查看后台正在发生的事情。

从 GUI 中选择 awx 项目,pod 和容器将开始创建。

请注意,ansible-tower-management pod 将在 Postgres 数据库设置完成后来回移动。TASK [kubernetes: Migrate database] 从 playbook run 执行此操作。

几分钟后,您应该会得到一个摘要,例如

< PLAY RECAP >

 ------------

    \ ^__^

     \ (oo)\_______

      (__)\   )\/\

        ||----w |

        ||  ||



localhost         : ok=35 changed=17 unreachable=0  failed=0

只要 unreachable=0failed=0,您就应该设置成功。

单击 GUI 中 awx 资源下的 route,您应该能够使用 admin/password(来自上面的 inventory 文件)登录 AWX GUI。

确保 pod 圆圈为蓝色,因此为“就绪”。

两个潜在的陷阱

Minishift 或 oc 二进制文件与使用的版本不同步。即使它似乎可以工作(在某种程度上),但如有疑问,请清除旧配置!

PVC claim 似乎捕获了 pv0001 周围的引号,并且无法绑定,因此我删除了引号,它就可以工作了。这可能是复制和粘贴错误。 


本文的原始版本发布在 LinkedIn 上,并经作者许可转载。

User profile image.
Red Hat 高级解决方案架构师。

评论已关闭。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.