社内でAnsibleの勉強会をやろうと思ってメモです。
AnsibleでAWXをインストールして簡単なPlaybookをCatalystに実行します。
環境はAnsibleが入ったサーバ、AWXを入れるサーバは両方ともCentOS7です。
###インストール
以下のようなPlaybookを作成して実行します。
これだと入るdockerが古いので手直ししないと...
今日のところは(・ω<) てへぺろ
---
- hosts: AWX
connection: ssh
gather_facts: False
tasks:
- name: add epel repo
yum_repository:
name: epel
description: EPEL YUM repo
baseurl: https://download.fedoraproject.org/pub/epel/$releasever/$basearch/
gpgcheck: no
enabled: yes
- name: install packsges
yum:
name: "{{ packages }}"
vars:
packages:
- https://releases.ansible.com/ansible/rpm/release/epel-7-x86_64/ansible-2.7.9-1.el7.ans.noarch.rpm
- docker
- git
- python2-pip
- name: pip install docker-compose
pip:
name: docker-compose
- name: Enable service docker
service:
name: docker
state: started
enabled: yes
- name: git clone awx
git:
repo: 'https://github.com/ansible/awx.git'
dest: /awx
clone: yes
version: '4.0.0'
- name: exe ansible-playbook
command: ansible-playbook -i inventory install.yml
args:
chdir: /awx/installer
実行します。
Playbookは完了しました。
# ansible-playbook -i hosts install_awx.yml
PLAY [AWX] *****************************************************************************************************
TASK [add epel repo] *******************************************************************************************
changed: [172.16.1.74]
TASK [install packsges] ****************************************************************************************
changed: [172.16.1.74]
TASK [pip install docker-compose] ******************************************************************************
changed: [172.16.1.74]
TASK [Enable service docker] ***********************************************************************************
changed: [172.16.1.74]
TASK [git clone awx] *******************************************************************************************
changed: [172.16.1.74]
TASK [exe ansible-playbook] ************************************************************************************
changed: [172.16.1.74]
PLAY RECAP *****************************************************************************************************
172.16.1.74 : ok=6 changed=6 unreachable=0 failed=0
AWX用のコンテナも動いてますね。
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b16b32504a1a ansible/awx_task:4.0.0 "/tini -- /bin/sh ..." 5 minutes ago Up 5 minutes 8052/tcp awx_task
b43c17e6370d ansible/awx_web:4.0.0 "/tini -- /bin/sh ..." 5 minutes ago Up 5 minutes 0.0.0.0:80->8052/tcp awx_web
a43008a6ce46 postgres:9.6 "docker-entrypoint..." 5 minutes ago Up 5 minutes 5432/tcp awx_postgres
d1d39b0519c5 ansible/awx_rabbitmq:3.7.4 "docker-entrypoint..." 5 minutes ago Up 5 minutes 4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 25672/tcp awx_rabbitmq
8f8b08b81437 memcached:alpine "docker-entrypoint..." 5 minutes ago Up 5 minutes 11211/tcp awx_memcached
ブラウザでアクセスするとインストール中の処理をしていますので、しばし待ちます。
処理が完了したらログインするのですが、、、
admin/password で入れなかったです...
おかしいなぁー、このissueかなぁ...
https://github.com/ansible/awx/issues/3684
いったん4.0.0は削除して入れ直しました。
/tmp/awxcomposeにdocker-compose.ymlが作成されていたので、それでdocker-compose downした後にイメージ消してから入れ直しました。
# cd /tmp/awxcompose
# docker-compose down
# docker rmi $(docker images -a -q)
branchを2.1.2にしてみて、再インストールしてみます。
以下の記事を参考にさせて頂き、ポスグレのDataフォルダとdocker-composeを使用するためinventoryファイルを置換しました。
Playbookを実行してしばらく待ちます。
# cd /awx
# git branch
* (detached from 4.0.0)
devel
# git checkout -b 2.1.2 tags/2.1.2
# cd installer/
# sed -i s@postgres_data_dir=/tmp/pgdocker@postgres_data_dir=/var/lib/pgsql/data@ inventory
# sed -i 's/# use_docker_compose=false/use_docker_compose=true/' inventory
# ansible-playbook -i inventory install.yml
###Playbookの実行
まぁ気を取り直して。
Playbookを実行するためにはAWXで設定が必要です。
Software Designの2018年12月号を参考にしました。
まず組織を作成します。
勉強会って名前を入力して保存を押します。
組織を作成したら、プロジェクトを作成します。
名前は勉強会のデモとして、1つ前に作成した組織と紐づけます。
SCMタイプは、PlaybookをAWXのローカルフォルダに置いてたので、手動にしました。
/var/lib/awx/projectsにplaybookってフォルダを作成して、そこに実行するPlaybookを置きます。
最初上手くローカルのPlaybookを指定できなかったのですが、こちらを見て対処できました。
https://sky-joker.tech/2018/03/21/awxにvarlibawxprojectsがない時の対処/
次にインベントリーを作成します。
名前を入力して保存後、ホストをクリックしてCatalystのIPアドレスと変数をセットしました。
次に認証情報を設定します。
名前を入れて、認証情報でマシンを選択してCatalystのユーザとパスワードを入力して保存をします。
最後にこれまで作成したものを集めてジョブテンプレートをセットします。
セットしたらロケットマークをクリックしてPlaybookを実行します。
Playbookの実行に成功しました。
今回実行したPlaybookはこんな感じです。
---
- hosts: 172.30.34.206
gather_facts: no
tasks:
- ios_command:
commands: show version
register: facts
- debug:
var: facts
###感想
普段Ansibleはコマンドで使っているので、自分で編集するファイルはansible.cfgとインベントリファイル、Playbookの3つだけでした。
AWXだと組織、プロジェクト、認証情報、対象ホストなど階層で分かれているため、ちょっと設定の順番に戸惑ってしまうところがありました
AWXだとわかりやすい組織分けとかプロジェクト名、ホスト名など、ディレクトリ構成のベストプラクティスがあるように考えないといけないことがあるなーと思いました。
おしまい