本セクションでは、アップグレードプロセスの各コンポーネントについて説明します。
注釈
3 つ以上先のメジャーバージョンに対して、アップグレードはできません。たとえば、Ansible Tower 3.7.x にアップグレードする場合は、3.4.x 以前から直接アップグレードすることはできないため、まず 3.5.x にアップグレードする必要があります。Red Hat カスタマーポータルの「recommended upgrade path article」を参照してください。
また、Ansible Tower 3.7 を実行するには、Ansible 2.8 以降がインストールされている必要があります。
以下のセクションでは、Ansible Tower インスタンスのアップグレードを試行する際に留意する変更事項を説明します。
Red Hat Enterprise Linux および Ansible Tower をアップグレードする必要がある場合は、Tower データをバックアップして復元する必要があります。詳細は、『Ansible Tower Installation and Reference Guide』の「Upgrading an Existing Tower Installation」を参照してください。
3.5 以降の Ansible Tower は Python 3 で実行するため、/etc/tower/conf.d
のカスタム設定ファイルは有効な Python3 で設定してから Ansible Tower 3.5 以降にアップグレードする必要があります。
クラスター形式のアップグレードでは、アップグレード前にインスタンスとインスタンスグループに特に留意が必要です。「インベントリーファイルの設定」および「ref:ag_clustering」のセクションを参照してください。
Ansible Tower の以前のバージョンでは、インストール時に変数名 rabbitmq_host
を使用していました。以前のバージョンの Tower からアップグレードし、インベントリーに rabbitmq_host
を指定している場合は、アップグレードの前に、名前を rabbitmq_host
から routable_hostname
に変更してください。詳細は「クラスタリング」を参照してください。
スタンドアロンの Tower をインストールするか、バンドルのインストーラーを使用できます。
直接インターネットアクセスが可能な環境で Tower を設定する場合は、スタンドアロンの Tower インストーラーをダウンロードできます。
オンラインリポジトリーへ直接アクセスできない環境で、Tower を設定する場合や、お使いの環境でプロキシーが有効になっている場合には、バンドルのインストーラーを使用する必要があります。
Ansible Tower インストール/アップグレードツールをダウンロードして展開してください (http://releases.ansible.com/ansible-tower/setup/)。
root@localhost:~$ tar xvzf ansible-tower-setup-latest.tar.gz
root@localhost:~$ cd ansible-tower-setup-<tower_version>
インストールまたはアップグレードするには、ansible-tower-setup-<tower_version>
ディレクトリーのインベントリーファイルを編集します。<tower_version>
は 3.7.1
や 3.7.0
ディレクトリーなどのバージョン番号に置き換えてください。
インベントリーファイルの編集時には、複数の点を念頭に置く必要があります。
インベントリーファイルの内容は ./setup.sh
インストーラー Playbook の隣りにある ./inventory
で定義する必要があります。
インストールおよびアップグレード: 外部データベースを使用する必要がある場合には、インベントリーファイルのデータベースのセクションが正しく設定されていることを確認する必要があります。このファイルを編集して、外部データベースの情報を追加してから設定スクリプトを実行してください。
既存クラスターをアップグレード する場合: クラスターのアップグレード時に、既存のインスタンスやインスタンスグループを除いて、クラスターを再設定する場合があります。インベントリーファイルからインスタンスやインスタンスグループを削除しても、クラスターからインスタンスやインスタンスグループは削除されません。インベントリーファイルからインスタンスやインスタンスファイルを削除するだけでなく、アップグレード前に、「deprovision instances or instance groups」する必要があります。プロビジョニングを解除しなければ、削除したインスタンスまたはインスタンスグループは、クラスターへの通信を継続し、アップグレード時に Tower のサービスで問題が発生する可能性があります。
クラスターインストール: クラスター設定を作成する場合には、localhost
は全インスタンスのホスト名または IP アドレスに置き換える必要があります。ノード/インスタンスはすべて、このホスト名やアドレスを使用して他のノードやインスタンスに到達する必要があります。つまり、ノードでは localhost ansible_connection=local
を使用できず、かつ 全ノードはホスト名と同じ形式を使用する必要があります。
このように、以下は*機能しません*。
[tower]
localhost ansible_connection=local
hostA
hostB.example.com
172.27.0.4
代わりに以下の形式を使用します。
[tower]
hostA
hostB
hostC
または
hostA.example.com
hostB.example.com
hostC.example.com
または
[tower]
172.27.0.2
172.27.0.3
172.27.0.4
全標準インストール: インストールを実行する際には、インベントリーファイルに必要なパスワードを提示する必要があります。
注釈
インストールプロセスに変更を加えるには、インベントリーファイルのパスワードフィールドをすべて入力する必要があります。この値は以下で確認できます。
admin_password=''
<--- Tower のローカルの管理者パスワード
pg_password=''
<---- /etc/tower/conf.d/postgres.py にあります。
警告
pg_password
で特殊文字を使用しないでください。セットアップが失敗する場合があります。
インベントリーファイルの例
新規ノードのプロビジョニング: 新規ノードのプロビジョニングの際には、現在のノードすべてを使用してインベントリーファイルにノードを追加し、すべてのパスワードがインベントリーファイルに含まれていることを確認してください。
単一ノードのアップグレード: アップグレード時には、インベントリーファイルと現在のリリースバージョンを比較するようにしてください。アップグレードを実行する際でも、ここにパスワードを保存することを推奨します。
単一ノードのインベントリーファイル例
[tower]
localhost ansible_connection=local
[database]
[all:vars]
admin_password='password'
pg_host=''
pg_port=''
pg_database='awx'
pg_username='awx'
pg_password='password'
警告
pg_password
で特殊文字を使用しないでください。セットアップが失敗する場合があります。
複数ノードのインベントリーファイル例
[tower]
clusternode1.example.com
clusternode2.example.com
clusternode3.example.com
[database]
dbnode.example.com
[all:vars]
ansible_become=true
admin_password='password'
pg_host='dbnode.example.com'
pg_port='5432'
pg_database='tower'
pg_username='tower'
pg_password='password'
警告
pg_password
で特殊文字を使用しないでください。セットアップが失敗する場合があります。
外部の既存データベースのインベントリーファイル例
[tower]
node.example.com ansible_connection=local
[database]
[all:vars]
admin_password='password'
pg_password='password'
pg_host='database.example.com'
pg_port='5432'
pg_database='awx'
pg_username='awx'
警告
pg_password
で特殊文字を使用しないでください。セットアップが失敗する場合があります。
インストールを必要とする外部データベースのインベントリーファイル例
[tower]
node.example.com ansible_connection=local
[database]
database.example.com
[all:vars]
admin_password='password'
pg_password='password'
pg_host='database.example.com'
pg_port='5432'
pg_database='awx'
pg_username='awx'
警告
pg_password
で特殊文字を使用しないでください。セットアップが失敗する場合があります。
必要な変更を加えたら、./setup.sh
の準備が整います。
注釈
リモートマシンには root アクセスが必要です。Ansible では、複数の方法で実行できます。
ansible_user=root ansible_ssh_pass="your_password_here" inventory host or group variables
ansible_user=root ansible_ssh_private_key_file="path_to_your_keyfile.pem" inventory host or group variables
ANSIBLE_BECOME_METHOD='sudo' ANSIBLE_BECOME=True ./setup.sh
ANSIBLE_SUDO=True ./setup.sh (対象は Ansible 2.7 のみ)
DEFAULT_SUDO
Ansible 設定パラメーターは Ansible 2.8 で削除されたため、昇格された権限での ANSIBLE_SUDO=True ./setup.sh
メソッドが機能しなくなりました。become
プラグインに関する詳細は、「 Understanding Privilege Escalation 」と「 list of become plugins」を参照してください。
注釈
Ansible Tower 3.0 はインストールが簡素化され、インストール設定の一部として ./configure/
を実行する必要性がなくなりました。以前のバージョンを使用している方は、http://docs.ansible.com/ に v.2.4.5 リリース (以前) の Tower ドキュメントに記載の説明に従うようにしてください。
Tower の設定 Playbook のスクリプトでは inventory
ファイルが使用され、Tower インストーラーの tarball を展開したパスから ./setup.sh
として呼び出されます。
root@localhost:~$ ./setup.sh
設定スクリプトでは以下の引数を指定できます。
-h
: ヘルプメッセージを表示して終了します。
-i INVENTORY_FILE
: Ansible インベントリーファイルへのパス (デフォルト値: inventory
)
-e EXTRA_VARS
: 追加の Ansible 変数を key=value または YAML/JSON (つまり -e bundle_install=false
は強制的にオンラインインストールを実行します) として設定します。
-b
: インストールの代わりにデータベースのバックアップを実行します。
-r
: インストールの代わりにデータベースの復元を実行します (以下のコード例に記載されているように、EXTRA_VARS でデフォルト以外のパスを指定しない限り、デフォルトの復元パスが使用されます)。
./setup.sh -e 'restore_backup_file=/path/to/nondefault/location' -r
注釈
Tower 3.0.0 および 3.0.1 で、正常なシステムのバックアップと復元を阻止する問題が検出されている点に注意してください。
Tower v3.0.0 または v3.0.1 インストールをバックアップまたは復元する必要がある場合は v3.0.2 のインストーラーを使用してください。