本教程适用于以下操作系统版本

  • Debian 11 (Bullseye)
  • Debian 10 (Buster)

本页内容

  • 先决条件
  • 添加 Ansible 仓库
  • 在 Debian 11 上安装 Ansible
  • 安装 Docker CE
  • 安装 Docker Compose 及其他依赖
  • 安装 Ansible AWX
  • 访问 Ansible AWX

Ansible AWX 是由 Red Hat 赞助的免费开源 Web 应用程序,可用于管理 Ansible playbooks 和 inventories。它提供基于 Web 的界面,使 Ansible 在 IT 环境中使用起来更加便捷。它还提供 REST API,可帮助你控制访问权限,并以图形方式管理或与各种云来源同步 inventory。

本教程将向你展示如何在 Debian 11 上安装 Ansible AWX 软件。

先决条件

  • 一台运行 Debian 11 的服务器。
  • 服务器上已配置 root 密码。

添加 Ansible 仓库

Debian 11 默认仓库中默认不包含 Ansible 软件包。因此你需要在服务器上添加 Ansible 仓库。

首先,使用以下命令安装所有必需的依赖项:

apt-get install apt-transport-https ca-certificates software-properties-common unzip gnupg2 curl git -y

所有依赖项安装完成后,编辑 sources.list 文件并添加 Ansible 仓库:

nano /etc/apt/sources.list

添加以下行:

deb http://ppa.launchpad.net/ansible/ansible/ubuntu focal main

保存并关闭文件,然后使用以下命令添加 GPG 密钥:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367

你将看到以下输出:

Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
Executing: /tmp/apt-key-gpghome.47eo2M3Kib/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
gpg: key 93C4A3FD7BB9C367: public key "Launchpad PPA for Ansible, Inc." imported
gpg: Total number processed: 1
gpg:               imported: 1

接下来,使用以下命令更新仓库缓存:

apt-get update -y

在 Debian 11 上安装 Ansible

现在,运行以下命令安装 Ansible:

apt-get install ansible -y

Ansible 安装完成后,使用以下命令验证 Ansible 版本:

ansible --version

你将看到以下输出:

ansible [core 2.11.6] 
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110]
  jinja version = 2.11.3
  libyaml = True

完成后,你可以进入下一步。

安装 Docker CE

默认情况下,Debian 11 默认仓库中不包含最新版本的 Docker CE。因此你需要将其添加到 APT 中。

首先,使用以下命令下载并添加 Docker GPG 密钥:

curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

接下来,使用以下命令将 Docker CE 仓库添加到 APT:

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list

接下来,使用以下命令更新仓库并安装 Docker CE:

apt-get update -y
apt-get install docker-ce -y

安装完成后,使用以下命令验证 Docker 的状态:

systemctl status docker

你将看到以下输出:

? docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2021-11-01 04:59:11 UTC; 26min ago
TriggeredBy: ? docker.socket
       Docs: https://docs.docker.com
   Main PID: 5066 (dockerd)
      Tasks: 32
     Memory: 1.0G
        CPU: 1min 57.723s
     CGroup: /system.slice/docker.service
             ?? 5066 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
             ??21970 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 172.18.0.2 -container-port 8052
             ??21994 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 80 -container-ip 172.18.0.2 -container-port 8052

Nov 01 04:59:11 debian11 dockerd[5066]: time="2021-11-01T04:59:11.756163493Z" level=info msg="Docker daemon" commit=e2f740d graphdriver(s)=ove>
Nov 01 04:59:11 debian11 dockerd[5066]: time="2021-11-01T04:59:11.756303194Z" level=info msg="Daemon has completed initialization"
Nov 01 04:59:11 debian11 systemd[1]: Started Docker Application Container Engine.
Nov 01 04:59:11 debian11 dockerd[5066]: time="2021-11-01T04:59:11.796631663Z" level=info msg="API listen on /run/docker.sock"

要验证 Docker 版本,请运行以下命令:

docker -v

你应该会看到以下输出:

Docker version 20.10.10, build b485636

完成后,你可以进入下一步。

安装 Docker Compose 及其他依赖

首先,使用以下命令从 Git 仓库下载 Docker Compose 二进制文件:

wget https://github.com/docker/compose/releases/download/1.29.0/docker-compose-Linux-x86_64

接下来,将下载的二进制文件移动到 /usr/bin/ 目录:

mv docker-compose-Linux-x86_64 /usr/bin/docker-compose

接下来,为 docker-compose 二进制文件设置可执行权限:

chmod +x /usr/bin/docker-compose

接下来,使用以下命令验证 Docker Compose 版本:

docker-compose version

你将看到以下输出:

docker-compose version 1.29.0, build 07737305
docker-py version: 5.0.0
CPython version: 3.7.10
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

接下来,使用以下命令安装 Node.js 和 NPM:

apt-get install nodejs npm -y
npm install npm --global

接下来,使用以下命令安装 PIP 及其他依赖项:

apt-get install python3-pip git pwgen -y

接下来,使用以下命令安装 Docker Compose 的 Python 模块:

pip3 install docker-compose==1.29.0

完成后,你可以进入下一步。

安装 Ansible AWX

首先,使用以下命令从 GitHub 仓库下载 Ansible AWX:

wget https://github.com/ansible/awx/archive/17.1.0.zip

下载完成后,使用以下命令解压下载的文件:

unzip 17.1.0.zip

接下来,切换到解压后的目录,并使用以下命令生成密钥(secret key):

cd awx-17.1.0/installer/
pwgen -N 1 -s 30

你将看到以下输出:

dGF8eiFiTkzpaqpWyckxSLe57sZNfJ

接下来,编辑 inventory 文件,并定义你的密钥(secret key)、管理员用户名和密码:

nano inventory

修改以下行:

admin_user=admin
admin_password=securepassword
secret_key=dGF8eiFiTkzpaqpWyckxSLe57sZNfJ

保存并关闭文件,然后运行 Ansible playbook 安装 Ansible AWX:

ansible-playbook -i inventory install.yml

Ansible AWX 安装完成后,你将看到以下输出:

TASK [local_docker : Create Redis socket directory] *******************************************************************************************
changed: [localhost]

TASK [local_docker : Create Docker Compose Configuration] *************************************************************************************
changed: [localhost] => (item={'file': 'environment.sh', 'mode': '0600'})
changed: [localhost] => (item={'file': 'credentials.py', 'mode': '0600'})
changed: [localhost] => (item={'file': 'docker-compose.yml', 'mode': '0600'})
changed: [localhost] => (item={'file': 'nginx.conf', 'mode': '0600'})
changed: [localhost] => (item={'file': 'redis.conf', 'mode': '0664'})

TASK [local_docker : Render SECRET_KEY file] **************************************************************************************************
changed: [localhost]

TASK [local_docker : Remove AWX containers before migrating postgres so that the old postgres container does not get used] ********************
ok: [localhost]

TASK [local_docker : Run migrations in task container] ****************************************************************************************
changed: [localhost]

TASK [local_docker : Start the containers] ****************************************************************************************************
changed: [localhost]

TASK [local_docker : Update CA trust in awx_web container] ************************************************************************************
changed: [localhost]

TASK [local_docker : Update CA trust in awx_task container] ***********************************************************************************
changed: [localhost]

TASK [local_docker : Wait for launch script to create user] ***********************************************************************************
ok: [localhost -> localhost]

TASK [local_docker : Create Preload data] *****************************************************************************************************
changed: [localhost]

PLAY RECAP ************************************************************************************************************************************
localhost                  : ok=21   changed=12   unreachable=0    failed=0    skipped=73   rescued=0    ignored=1   

上述 playbook 将下载一些 Docker 镜像并创建一个 Ansible AWX 容器。

要验证所有 Docker 镜像,请运行:

docker images

你应该会看到以下输出:

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
postgres      12        108ccc7c5fa3   5 days ago     371MB
redis         latest    7faaec683238   2 weeks ago    113MB
centos        8         5d0da3dc9764   6 weeks ago    231MB
ansible/awx   17.1.0    599918776cf2   7 months ago   1.41GB

要验证所有正在运行的容器,请运行:

docker ps

你应该会看到以下输出:

CONTAINER ID   IMAGE                COMMAND                  CREATED         STATUS         PORTS                                   NAMES
b6cd8d874b09   ansible/awx:17.1.0   "/usr/bin/tini -- /u…"   2 minutes ago   Up 2 minutes   8052/tcp                                awx_task
65dd0c36334a   ansible/awx:17.1.0   "/usr/bin/tini -- /b…"   5 minutes ago   Up 2 minutes   0.0.0.0:80->8052/tcp, :::80->8052/tcp   awx_web
4119ca4a1d24   postgres:12          "docker-entrypoint.s…"   5 minutes ago   Up 2 minutes   5432/tcp                                awx_postgres
212b73bfe362   redis                "docker-entrypoint.s…"   5 minutes ago   Up 2 minutes   6379/tcp                                awx_redis

访问 Ansible AWX

现在,打开你的 Web 浏览器,使用 URL http://your-server-ip 访问 Ansible AWX Web 界面。你应该会看到 Ansible AWX 登录页面:

在 Debian 11 系统上安装与配置 Ansible AWX 自动化平台

输入你的管理员用户名和密码,然后点击 Login 按钮。你应该在以下界面看到 Ansible AWX 仪表板:

在 Debian 11 系统上安装与配置 Ansible AWX 自动化平台

恭喜!你已成功在 Debian 11 上安装 Ansible AWX。