有償のAnsible Towerをstable版とするなら、AWXはdev版。
記事:
AWX v18以降のk8s環境:
/home/runner /.ssh /config # カスタムssh-configを置きたい場合 /.ansible.cfg # カスタムansible.cfgを置きたい場合 # projectは以下からアクセスできる。readonly /runner/project
AWX v18未満のdocker-compose環境:
{ "HOME": "/var/lib/awx" }
ansible_ssh_common_args: >- -F ./ssh/ssh-config -C -o ControlMaster=auto -o ControlPersist=60s -o ConnectTimeout=20s
/var/lib/awx/.ssh/ config /etc/ansible/ansible.cfg ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s -o ControlPath=/dev/shm/cp-%C timeout = 60
記事:
不具合がある。
sudo yum install expect -y mkpasswd -l 16 -s 0 > ~/local-test-vault.txt
ansible-vault encrypt_string 'Hello World!' --name vault_var1 --vault-password-file=~/local-test-vault.txt vault_var1: !vault | $ANSIBLE_VAULT;1.1;AES256 62303734646130316662666334613735666234353833613537613861663566353937303334373263 3432626334323535323932373862616262333932393536340a383034333333313137313937333736 35643037356662666532393964396439333766623561313332353632646163356631613539383666 3966373963326466350a653433303938346534633435373437366438346534656239313262346664 6364 Encryption successful
- hosts: localhost connection: local gather_facts: no become: no vars: - vault_inline1: !vault | $ANSIBLE_VAULT;1.1;AES256 62303734646130316662666334613735666234353833613537613861663566353937303334373263 3432626334323535323932373862616262333932393536340a383034333333313137313937333736 35643037356662666532393964396439333766623561313332353632646163356631613539383666 3966373963326466350a653433303938346534633435373437366438346534656239313262346664 6364 tasks: - name: message1 debug: msg: "{{ message1|default('no data') }}" - name: vault_var1 debug: msg: "{{ vault_var1|default('no data') }}" - name: vault_inline1 debug: msg: "{{ vault_inline1|default('no data') }}"
ansible-playbook playbook.vault.yml --vault-id ~/local-test-vault.txt ... TASK [message1] ***************************************************************************************************************************************************** ok: [localhost] => { "msg": "no data" } TASK [vault_var1] *************************************************************************************************************************************************** ok: [localhost] => { "msg": "no data" } TASK [vault_inline1] ************************************************************************************************************************************************ ok: [localhost] => { "msg": "Hello World!" } ...
AWX UI上の作業
--- vault_var1: __ansible_vault: >- $ANSIBLE_VAULT;1.1;AES256 62303734646130316662666334613735666234353833613537613861663566353937303334373263 3432626334323535323932373862616262333932393536340a383034333333313137313937333736 35643037356662666532393964396439333766623561313332353632646163356631613539383666 3966373963326466350a653433303938346534633435373437366438346534656239313262346664 6364
--- # 日時を表示: YYYY-mm-dd HH:MI:SS message1: "{{ lookup('pipe','date \"+%Y-%m-%d %H:%M:%S\"') }}" # ここではvaultが「parse error」で使えない。インベントリと同じ書式で入力しても、そのまま表示されてしまう。
AWX v1.0.5にはwebhookを受け取る方法が無い。webhook送信はある。
以下直接DBをバックアップ/リストアしたい場合
# AWX 6.0.0 PG_CONTAINER=awx_postgres # AWX 1.0.5 #PG_CONTAINER=postgres
sudo docker exec $PG_CONTAINER bash -c "pg_dump --clean --create -U awx -d awx | gzip > /var/lib/postgresql/data/awx.pg.$(date +%w).gz" # /var/lib/pgdocker/awx.pg.*.gz が出来る
sudo docker stop $PG_CONTAINER awx_task sudo mv /var/lib/pgdocker/pgdata /var/lib/pgdocker/pgdata.$(date +%Y%m%d) sudo docker start $PG_CONTAINER sudo docker exec $PG_CONTAINER bash -c "zcat /var/lib/postgresql/data/awx.pg.$(date +%w).gz | psql -U awx -d awx" sudo docker start awx_task
sudo docker restart awx_task
sudo docker logs -t --since "1m" awx_task
sudo docker logs -t --since "1m" awx_web
sudo docker logs -t --since "1m" awx_tack
sudo docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}" CONTAINER ID IMAGE PORTS 6679d27d96c0 ansible/awx_task:1.0.5 8052/tcp a641e866bcae ansible/awx_web:1.0.5 0.0.0.0:80->8052/tcp 909dc2f013aa memcached:alpine 11211/tcp 179ed843c916 ansible/awx_rabbitmq:3.7.4 4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 25672/tcp 5f12da648e69 postgres:9.6 5432/tcp
cd /opt/awx/ sudo ansible-playbook -i installer/inventory installer/install.yml
# docker停止 sudo docker stop $(sudo docker ps -aq) # DBディレクトリをバックアップ sudo mv /var/lib/pgdocker /var/lib/pgdocker.$(date +%Y%m%d-%H%M%S) # installer/install.yml を再実行
# 「django.db.utils.ProgrammingError: column main_instance.managed_by_policy does not exist」ログがずっと出ている sudo docker logs -t --since "1m" awx_task sudo docker stop awx_task # たぶんDB壊れているだろうが、一応バックアップ sudo docker exec awx_postgres bash -c "pg_dump --clean --create -U awx -d awx | gzip > /var/lib/postgresql/data/awx.pg.$(date +%w).gz" # /var/lib/pgdocker/awx.pg.*.gz にファイルが出来る sudo docker stop awx_postgres sudo rm -rf /var/lib/pgdocker/pgdata cd installer/ sudo ansible-playbook -i inventory install.yml
cd /opt/awx/ sudo git fetch sudo git checkout 6.0.0 sudo vim installer/inventory -- postgres_data_dir: /var/lib/pgdocker dockerhub_version: 6.0.0 project_data_dir=/var/lib/awx/projects -- # ansible 2.5.2 ではエラーが出たので更新。更新後 ansible 2.8.1 sudo yum update ansible -y # pipが古くてエラーが出るので更新。 sudo pip install --upgrade pip # "Cannot have both the docker-py and docker python modules" docker-pyとdockerptyが重複しているらしい sudo pip uninstall docker docker-compose docker-py docker-pycreds dockerpty -y sudo pip install docker-compose # コンテナ名が変わっているので全てstop。古いコンテナは"awx"が付いていない sudo docker stop $(sudo docker ps -aq) # awx_task, awx_webの名前が重複して起動しないので、全て消す sudo docker rm $(sudo docker ps -aq) # 古いimageも全部消したい場合。時間がかかる。 sudo docker rmi -f $(sudo docker images | grep awx | awk '{ print $3 }') # install cd installer/ sudo ansible-playbook -i inventory install.yml # エラーログが出ていないか確認 sudo docker logs -t --since "1m" awx_task # 起動しているコンテナ一覧 sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 478c245937be ansible/awx_task:6.0.0 "/tini -- /bin/sh ..." 23 seconds ago Up 22 seconds 8052/tcp awx_task ec85950fe4b2 ansible/awx_web:6.0.0 "/tini -- /bin/sh ..." 24 seconds ago Up 23 seconds 0.0.0.0:80->8052/tcp awx_web d6b537742b69 ansible/awx_rabbitmq:3.7.4 "docker-entrypoint..." 11 minutes ago Up 24 seconds 4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 25672/tcp awx_rabbitmq a8ac0374577f postgres:9.6 "docker-entrypoint..." 11 minutes ago Up 24 seconds 5432/tcp awx_postgres ca7dd18fd62a memcached:alpine "docker-entrypoint..." 11 minutes ago Up 25 seconds 11211/tcp awx_memcached # 停止中コンテナ sudo docker ps -a ... 761085d40a62 rabbitmq:3 "docker-entrypoint..." 2 hours ago Exited (0) 5 minutes ago rabbitmq 909dc2f013aa memcached:alpine "docker-entrypoint..." 14 months ago Exited (0) 5 minutes ago memcached 5f12da648e69 postgres:9.6 "docker-entrypoint..." 14 months ago Exited (0) 5 minutes ago # 使ってないコンテナは削除。データも消えるので注意 sudo docker rm rabbitmq memcached 5f12da648e69 # imagesの確認 sudo docker images ... ansible/awx_task 1.0.5 9359e95d415b 14 months ago 1.01GB ansible/awx_web 1.0.5 9dba13b1e5ed 14 months ago 984MB ansible/awx_task 1.0.5.24 578ac27bdfd6 15 months ago 1.01GB ansible/awx_web 1.0.5.24 ed24a6014237 15 months ago 985MB ... rabbitmq 3 8e186865bff8 21 months ago 124MB ... # 古いimageが不用であればディスクを食うので削除 sudo docker rmi 9359e95d415b 9dba13b1e5ed 578ac27bdfd6 ed24a6014237 8e186865bff8
awx_repo_dir: /opt/awx postgres_data_dir: /var/lib/pgdocker dockerhub_version: 1.0.5 # OR 1.0.5.32
cd /opt/awx/ sudo vim installer/inventory -- postgres_data_dir: /var/lib/pgdocker dockerhub_version: 1.0.5 project_data_dir=/var/lib/awx/projects -- sudo ansible-playbook -i installer/inventory installer/install.yml
sudo mkdir -p /var/lib/awx/projects/test/ sudo vim /var/lib/awx/projects/test/playbook.hello.yml -- - hosts: localhost connection: local gather_facts: no become: no tasks: - debug: msg: "Hello World!" --
--- ansible_connection: local