この記事について
職場で Ansible AWX
の話題があったので、インストールを試してみました。
すでにかなりの数のインストール記事がありますが、備忘録を兼ねてここに手順を残しておきます。
環境
- ホストマシン
- macOS Mojave (10.14.6)
- (Catalinaじゃない。けどVM使うのでそれほど影響なし)
- VirtualBox 6.1
- 完全に別件ですが、6.1でvagrant upできない問題はこちらの記事で解決しました
- Vagrant 2.2.6
- macOS Mojave (10.14.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」でログインできます。
ログインするとこのような画面が表示されます。