2020/11/19Ansible Tower を3.8 にあげてみる
はじめに
こんにちわ。私です。
2020/11/18 Ansible Tower 3.8がリリースされた。
3.8では大きな仕様変更があったみたいなので、機能検証も含めてバージョンアップに関する動作メモを残していこうと思う。
環境(移行前)
OS: CentOS 7.8
ansible: 2.9.2
Tower: 3.6.2
事前準備(ライセンスマニフェストの準備)
Ansible Tower 3.8のアップグレードガイド に以下の記載があった。
以前のバージョンからの有効なライセンスがすでにある場合でも、Ansible Tower 3.8 にアップグレードするときに認証情報またはサブスクリプションマニフェストを再度指定する必要があります。Ansible Tower User Guide の Import a Subscription を参照してください 。
また Ansible Tower 3.8 リリースノート にも以下の記述がありテキスト形式のライセンスサポートされなくなった模様。
Updated Tower licenses to a subscriptions-based model that requires customer credentials or a subscriptions manifest
私の環境は、CentOSでありこちらのナレッジに該当するためcustomer credentials経由での認証ができないので、以下のURLを参考にマニフェストを作ることにした。
https://docs.ansible.com/ansible-tower/3.8.0/html/userguide/import_license.html
URLに従い、サブスクリプションの割当を行い、マニフェストのエクスポートをクリックするとマニフェストがダウンロードできた。
なお、リリースノートには以下の記載があるため、将来的にはCentOS環境はサポートされなくなりそう・・・。
(次回のアップグレードはインプレースアップグレードではなく、OS入替え+データ移行になりそう..知らんけど)
Deprecated CentOS as a supported operating system for a Tower node, which will be removed in a future release
アップグレード作業
作業はすべてrootユーザで行うこととする。
まずはインストーラを入手
[root@Ansible01 ~]# mkdir /tower38 [root@Ansible01 ~]# cd /tower38 [root@Ansible01 tower38]# wget https://releases.ansible.com/ansible-tower/setup/ansible-tower-setup-latest.tar.gz --2020-11-19 18:14:45-- https://releases.ansible.com/ansible-tower/setup/ansible-tower-setup-latest.tar.gz 長さ: 4704452 (4.5M) [application/x-gzip] `ansible-tower-setup-latest.tar.gz' に保存中 100%[==============================================================================================================================>] 4,704,452 3.15MB/s 時間 1.4s 2020-11-19 18:14:46 (3.15 MB/s) - `ansible-tower-setup-latest.tar.gz' へ保存完了 [4704452/4704452] [root@Ansible01 tower38]# tar xvzf ansible-tower-setup-latest.tar.gz [root@Ansible01 tower38]# cd ansible-tower-setup-3.8.0-1/
新旧インストーラのInventoryを比較
[root@Ansible01 ansible-tower-setup-3.8.0-1]# diff inventory /inventory_old |grep -v# 4,5d3 < [automationhub] < 19,71c17,19 < < automationhub_admin_password='' < < automationhub_pg_host='' < automationhub_pg_port='' < < automationhub_pg_database='automationhub' < automationhub_pg_username='automationhub' < automationhub_pg_password='' < automationhub_pg_sslmode='prefer' < < < < < < --- > rabbitmq_username=tower > rabbitmq_password='' > rabbitmq_cookie=cookiemonster 87,89c35,38 ---
3.6.2のInventoryと比較してみると3.8のInventoryにはautomation_hub関連のパラメータが増え、RabbitMQに関するパラメータが消えたっぽい。
デフォルトのInventoryに対して、以下のパスワード関連のパラメータのみ追記。
admin_password
pg_password
automationhub_pg_password
いざ、アップグレード
setup.shを実行するだけなのである。python2系の警告が出まくる・・・。
[root@Ansible01 ansible-tower-setup-3.8.0-1]# ./setup.sh /usr/lib/python2.7/site-packages/ansible/parsing/vault/__init__.py:41: CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in a future release. from cryptography.exceptions import InvalidSignature /usr/lib/python2.7/site-packages/ansible/parsing/vault/__init__.py:41: CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in a future release. from cryptography.exceptions import InvalidSignature Using /etc/ansible/ansible.cfg as config file [WARNING]: Could not match supplied host pattern, ignoring: instance_group_* [WARNING]: Could not match supplied host pattern, ignoring: isolated_group_* PLAY [tower:automationhub:database:instance_group_*:isolated_group_*] ************************************************************************************************** TASK [check_config_static : Ensure expected variables are defined] ***************************************************************************************************** skipping: [localhost] => (item=tower_package_name) => {"ansible_loop_var": "item", "changed": false, "item": "tower_package_name", "skip_reason": "Conditional result was False"} skipping: [localhost] => (item=tower_package_version) => {"ansible_loop_var": "item", "changed": false, "item": "tower_package_version", "skip_reason": "Conditional result was False"} skipping: [localhost] => (item=tower_package_release) => {"ansible_loop_var": "item", "changed": false, "item": "tower_package_release", "skip_reason": "Conditional result was False"} TASK [check_config_static : Ensure cluster hosts are not localhost] **************************************************************************************************** ~~~~~~~~ 中 略~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PLAY [Install Automation Hub node] ************************************************************************************************************************************* skipping: no hosts matched PLAY [Install Tower isolated node(s)] ********************************************************************************************************************************** skipping: no hosts matched PLAY RECAP ************************************************************************************************************************************************************* localhost : ok=181 changed=57 unreachable=0 failed=0 skipped=93 rescued=0 ignored=1
おおよそ、20分くらい時間がかかりましたがすんなり終わりました。
いざログイン
ログインしてみるといきなりライセンス登録画面に遷移。
事前にダウンロードしたマニフェストファイルを登録します。
無事ログイン。そしてバージョン確認。
機能の検証
ちょっと長くなってしまったのだが、Ansible Tower 3.8 リリースノート より気になった項目をいくつかピックアップして検証してみようと思う。
Added the ability to include HTML in the Custom Login Info presented on the login page
上記はカスタムログインにHTMLを含めることができるとの機能。
説明文を見ると確かに追加されている。
プレーンテキストだけではなく、HTMLに対応することにより、Towerのログイン画面から外部サイトへのリンクをはれることは良い進化だな。
試しにGithubのリンクをログインページに貼ってみた。
ログイン画面下部に通知が表示され、Githubのリンクが貼れたのであった。
改めて見てみるとログイン画面をもう少し盛り上げたいと思い、カスタムロゴの機能もつかってみた。
おっさんが驚いた顔でログインを迎えてくれた。
そろそろ帰らないと嫁が怒りそうなので、このあたりで帰ることにする。
最後に
他にも検証したい項目がいくつかあるので後ほど検証結果をアップしていきたい。
個人的には以下が気になっている。
- Private Ansible Automation hub
- ワークフロージョブテンプレート関連の修正
Fixed PagerDuty notifications to properly send workflow job template approvals
Fixed workflows so Workflow Approval records can now be deleted
- パスワードの入力関連
Fixed password prompting for credentials in certain cases