ちゃんるいすのブログ

オタクエンジニアの雑記

Ansible AWX のアップグレード方法


3.0.0 -> 4.0.0 へのアップグレードをしたので覚書
インストール方法は release ページからファイルを落としてきて local_docker

流れとして
1. バックアップ
2. 現環境を壊す
3. 新しいバージョンの AWX で環境を作る
4. バックアップから復元

このやり方が公式のやり方。
直接インプレースでやる方法はない。

www.ansible.com

前準備:tower-cli を入れる

$ pip install --upgrade ansible-tower-cli
$ tower-cli config host http://<old-awx-host.example.com>
$ tower-cli config username <user>
$ tower-cli config password <pass>



1. バックアップを取る

postgreSQL の datadir のバックアップじゃなくて、tower-cli を通すことでインポートするときにマイグレーションしてくれるっぽい

$ tower-cli receive --all > assets.json



2. 現環境の破壊

docker なら

# docker rm -f $(docker ps -aq)

と、Web のアセットたちを消す。

# cd awx-3.0.0 && make clean-ui



3. 新しいバージョンの AWX を入れる

お好きなやつで



4. インポート

$ tower-cli send assets.json

Inventory のインポートに失敗するけどちゃんとインポートできてる。

INVENTORY [stg] **********************************************************************************************************************************************
Asset up to date
Unable to create inventory_source named  (stg - 11) : The Tower server claims it was sent a bad request.

POST http://awx.hogehoge/api/v2/inventory_sources/
Params: None
Data: {"source": "file", "source_path": "/var/lib/awx/projects/_6__hoge/inventories/stg", "name": " (stg - 11)", "inventory": 4}

Response: {"detail":["Cannot set source_path if not SCM type."]}
Schedules are up to date
All inventory host are up to date
All inventory groups are up to date
All roles are up to date

インポート後はジョブの履歴等まで残っていなかったけど動作(Play)するのに必要なものは全部インポートされている。