Ansible AWXのインストール手順(2020/01版)


この記事について

職場で Ansible AWX の話題があったので、インストールを試してみました。
すでにかなりの数のインストール記事がありますが、備忘録を兼ねてここに手順を残しておきます。

環境

  • ホストマシン
    • macOS Mojave (10.14.6)
      • (Catalinaじゃない。けどVM使うのでそれほど影響なし)
    • VirtualBox 6.1
      • 完全に別件ですが、6.1でvagrant upできない問題はこちらの記事で解決しました
    • Vagrant 2.2.6
  • 仮想マシン(VirtualBox上)
    • CentOS 7.6.1810 (Core)

Vagrantfile

動作確認のためにIPアドレスを指定しただけ。

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.network "private_network", ip: "192.168.11.11"
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2048"
  end
end

AWXについて

RedHat公式から引用。

AWX プロジェクトは急速発展を遂げるアップストリーム・プロジェクトであり、 Red Hat Ansible Tower の派生元です。

インストール手順

公式の手順に従い、今回は Docker-Compose を使用した方法でインストールしていきます。

必要なパッケージの導入

Docker CE

Docker公式の手順に従ってインストールします。

まずはリポジトリの設定から。

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
$ sudo yum-config-manager --add-repo \
  https://download.docker.com/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo

続いて、インストール可能な docker-ce のバージョンを確認します。

$ yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64  3:19.03.5-3.el7  docker-ce-stable
docker-ce.x86_64  3:19.03.4-3.el7  docker-ce-stable
docker-ce.x86_64  3:19.03.3-3.el7  docker-ce-stable
  (略)

この記事の時点の最新版である 19.03.5 をインストールします。

$ VERSION=19.03.5
$ sudo yum install -y docker-ce-${VERSION} docker-ce-cli-${VERSION} containerd.io

最後に、dockerのsystemdサービスを有効化し、動作確認します。

$ sudo systemctl enable docker
$ sudo systemctl start docker
$ sudo docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
  (略)

Node.js

こちらに記載されているインストール用コマンドを使ってインストールします。
(パイプの後に sudo を付けないと Permission denied します。参考

$ curl -sL https://rpm.nodesource.com/setup_10.x | sudo bash -
$ sudo yum install -y nodejs

Node.js のバージョンと、一緒にインストールされた npm のバージョンを確認します。

$ node -v

  v10.18.1
$ npm -v

  6.13.4

Python3のインストール

Ansibleは2系でも動くようですが、今回は3系をインストールします。パスの処理はいろいろあると思いますが今回はエイリアスで簡単に済ませます。

$ sudo yum install -y python3
$ vi ~/.bashrc

------------------------------
  alias sudo='sudo '
  alias python=python3
  alias pip=pip3        の3行を追加する
------------------------------

$ source ~/.bashrc
$ python -V

  Python 3.6.8
$ pip -V

  pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)

pipによるansibleとdocker-composeのインストール

今回は仮想マシンでの検証なので virtualenv 等は使用しません。

$ sudo pip install ansible docker-compose selinux

芋づる式で色々モジュールがインストールされますが、AWXに必須となる docker モジュールもこの中に含まれています。1
Ansibleは yum からもインストールはできますが、今回の環境ではAWXがサポートしない古いバージョンしか取得できないようなのでこちらにしました。2
selinux モジュールは、エラー対策です。この記事に書いてある、

SELinux が有効な環境では上記のように selinux という Python ライブラリをインストールする必要があります。インストールしない場合、AWX のインストール Playbook 実行時に、以下のような「SELinux が有効な環境では SELinux のバインディング libselinux-python が必要」というエラーが発生してしまいます。

という部分を参考にしました。

Ansibleのバージョンを確認しておきます。

$ ansible --version

ansible 2.9.4
  config file = None
  configured module search path = ['/home/vagrant/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.6.8 (default, Aug  7 2019, 17:28:10) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]

GitのインストールとAWXリポジトリのクローン

gitはyumでインストールします。

$ sudo yum install -y git
  (略)
$ git --version

  git version 1.8.3.1

AWXには Git Requires Version 1.8.4+ とありますが大丈夫でした。
次にリポジトリのクローン。フォルダ名と格納場所はなんでもOK。

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

AWXのインストール(playbook実行)

実行前に、 ansible_python_interpreter の値を /usr/bin/python3 へ変えておきます。(そのままだとplaybook実行中にエラーで止まる)

$ cd awx/installer
$ vi inventory

-----
localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env /usr/bin/python3"
  (略)
-----

playbookを実行します。コマンドのフルパスを指定しているのは sudo の影響で /usr/local/bin/ansible-playbook にパスが通らなくなるためです。3

$ sudo /usr/local/bin/ansible-playbook -i inventory install.yml

エラーなく終了すればインストール完了です。

動作確認

ブラウザで仮想マシンのIPアドレスを開くと、以下のような画面が出ます。

デフォルトでは、ユーザー名「admin」、パスワード「password」でログインできます。

ログインするとこのような画面が表示されます。


  1. 公式にも "(about docker Python module, ) We use this module instead of docker-py because it is what the docker-compose Python module requires." とある 

  2. こちらにyumでのインストール方法が載っているものの、RHELでないと最新版があるリポジトリからDLできなさそう 

  3. sudoers ファイルのオプションを変更することでも対処可能。参考