AWXは、Ansibleのユーザーインターフェイス、REST API、およびタスクエンジンを提供するオープンソースのWebアプリケーションです。これは、AnsibleTowerのオープンソースバージョンです。 AWXを使用すると、Ansibleのプレイブック、インベントリを管理し、Webインターフェイスを使用して実行するジョブをスケジュールできます。
このチュートリアルでは、Ubuntuサーバー18.04にAWXをインストールして構成する方法を紹介します。 Nginxをリバースプロキシとして使用し、HTTPSセキュア接続上に構築されたAWXをインストールします。
前提条件
- Ubuntuサーバー18.04
- RAMメモリ+4GBおよび2コア
- root権限
私たちが行うこと:
- DockerとAnsibleをインストールする
- 追加パッケージのインストール
- AnsibleAWXソースコードをダウンロードして構成する
- AnsibleAWXをインストールする
- Nginxをリバースプロキシとしてインストールして構成する
- UFWファイアウォールのセットアップ
- テスト
まず、AWXのインストールに必要なメインパッケージをインストールします。それはDockerとAnsible自体です。これらのパッケージをインストールする前に、次のコマンドを使用してUbuntuリポジトリを更新してください。
sudo apt update
次に、DockerとAnsibleをインストールします。
sudo apt install ansible -y
sudo apt install docker.io -y
インストールが完了したら、次のコマンドを使用してdockerとansibleを確認します。
docker version
ansible --version
結果は以下のとおりです。
次に、AWXインストール用の追加パッケージをインストールします。 'python-pip'パッケージをシステムにインストールしてから、PyPIpythonリポジトリからdocker-composeとdocker-pyをインストールします。
以下のaptコマンドを使用して「python-pip」をインストールします。
sudo apt install python-pip -y
インストールが完了したら、以下のpipコマンドを使用して、PyPIリポジトリからdocker-compose1.9.0およびdocker-pyパッケージをインストールします。
pip install docker-compose==1.9.0
pip install docker-py
次に、nodejsとnpmをサーバーにインストールする必要があります。
次のコマンドを実行します。
sudo apt install nodejs npm -y
完了したら、npmを最新バージョンにアップグレードします。
npm install npm --global
その結果、すべての依存関係がシステムにインストールされました。これで、AWXをインストールする準備が整いました。
このステップでは、AWXソースコードをダウンロードし、AWXインストール用のインベントリファイルを構成します。
gitリポジトリからAWXソースコードをダウンロードし、awxインストールディレクトリに移動します。
git clone https://github.com/ansible/awx.git
cd awx/installer/
その後、以下のopensslコマンドを使用してawxの新しい秘密鍵を生成します。
openssl rand -hex 32
生成された秘密鍵をメモにコピーします。
次に、「インベントリ」構成ファイルを編集します。
vim inventory
'postgres_data_dir'を'/var / lib/pgdocker'ディレクトリに変更します。
postgres_data_dir=/var/lib/pgdocker
「host_port」を「8080」に変更します。
host_port=8080
docker composeを使用してawxを管理するため、「use_docker_compose」行のコメントを解除し、値を「true」に変更します。
use_docker_compose=true
ここで、「docker_compose_dir」が「/ var / lib/awx」ディレクトリにあることを確認します。
docker_compose_dir=/var/lib/awx
'pg_password'、'rabbitmq_password'、'rabbitmq_erlang_cookie'、'admin_user'、および'admin_password'の資格情報を独自のパスワード資格情報に変更します。
...
pg_password=hakaseposgresawx
...
rabbitmq_password=hakaserabbitmqawx
rabbitmq_erlang_cookie=cookiemonster
...
admin_user=hakase
admin_password=hakasepass
...
その後、上部で生成されたキーを使用して、awx構成の秘密キーを変更します。
secret_key=cbdd4c70bbf82d572bfbdd454b28172642e6b8061b8c8b4937d9134294d30e33
次に、「project_data_dir」のコメントを解除し、値をデフォルトのままにします。
project_data_dir=/var/lib/awx/projects
構成を保存して閉じます。
以下は、「インベントリ」ファイルの編集です。
grep -v '^#' inventory
インベントリ構成ファイル。
localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python"
[all:vars]
dockerhub_base=ansible
awx_task_hostname=awx
awx_web_hostname=awxweb
postgres_data_dir=/var/lib/pgdocker
host_port=8080
use_docker_compose=true
docker_compose_dir=/var/lib/awx
pg_username=awx
pg_password=hakaseposgresawx
pg_database=awx
pg_port=5432
rabbitmq_password=hakaserabbitmqawx
rabbitmq_erlang_cookie=cookiemonster
admin_user=hakase
admin_password=hakasepass
create_preload_data=True
secret_key=cbdd4c70bbf82d572bfbdd454b28172642e6b8061b8c8b4937d9134294d30e33
project_data_dir=/var/lib/awx/projects
その結果、次のステージにawxをインストールする準備が整いました。
次のansible-playbookコマンドを使用してawxをインストールします。
ansible-playbook -i inventory install.yml
プレイブックは、Dockerイメージのダウンロードや、postgresql、memcached、rabbitmq、awx Webアプリケーション、awxタスクの新しいコンテナーの作成などのいくつかのタスクを実行します。
そして以下がその結果です。
次に、「/ var / lib / awx」ディレクトリに移動すると、「docker-compose.yml」構成が取得されます。次に、docker-composeコマンドを使用して、使用可能なすべてのDockerコンテナーを確認します。
cd /var/lib/awx
docker-compose ps
そして、以下のようにawxコンテナが表示されます。
さらに、次のコマンドを使用して、「タスク」サービスのログを確認できます。
docker-compose logs task
awxをインストールした後、ポート「8080」を実行しているawxのリバースプロキシとしてNginxをインストールして構成します。
次のaptコマンドを使用してNginxをインストールします。
sudo apt install nginx -y
インストールが完了したら、「/ etc / nginx / sites-available /」ディレクトリに移動し、vimエディターを使用して「awx」という新しい仮想ホスト構成を作成します。
cd /etc/nginx/sites-available/
vim awx
次に、以下の構成を貼り付けます。
server {
listen 80;
server_name awx.hakase-labs.io;
add_header Strict-Transport-Security max-age=2592000;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 443 ssl http2;
server_name awx.hakase-labs.io;
access_log /var/log/nginx/awx.access.log;
error_log /var/log/nginx/awx.error.log;
ssl on;
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
ssl_session_timeout 5m;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://10.5.5.20:8080/;
}
}
ドメイン名とproxy_passIPアドレスを独自のものに変更し、保存して終了します。
次に、「awx」仮想ホストをアクティブにして、nginx構成をテストします。
ln -s /etc/nginx/sites-available/awx /etc/nginx/sites-enabled/
nginx -t
nginxの構成にエラーがないことを確認してから、nginxサービスを再起動します。
sudo systemctl restart nginx
その結果、awxのリバースプロキシとしてのNginxのインストールと構成が完了しました。
SSH、HTTP、およびHTTPSサービスをUFWファイアウォール構成に追加します。
ufw allow ssh
ufw allow http
ufw allow https
次に、ufwファイアウォールサービスを開始して有効にします。
ufw enable
「y」を「yes」と入力すると、ufwファイアウォールが構成されます。
Webブラウザーを開き、アドレスバーにawxURLを入力します。
https://awx.hakase-labs.io
そして、以下のようなawxログインページが表示されます。
次に、ユーザー「hakase」とパスワード「hakasepass」を入力し、「サインイン」ボタンをクリックします。
これで、次のようなawx管理ダッシュボードが表示されます。
そして、Nginxリバースプロキシを使用したAnsibleAWXのインストールが正常に完了しました。