Documentation

2. Ansible Tower のアップグレード

本セクションでは、アップグレードプロセスの各コンポーネントについて説明します。

注釈

3 つ以上先のメジャーバージョンに対して、アップグレードはできません。たとえば、Ansible Tower 3.6.x にアップグレードする場合、3.3.x から直接アップグレードできないので、まず 3.4.x にアップグレードする必要があります。カスタマーポータルから「recommended upgrade path article」を参照してください。

また、RHEL 8 で Ansible Tower 3.5 を実行するには、Ansible 2.8 以降にインストールする必要があります。

2.1. アップグレードのプランニング

以下のセクションでは、Ansible Tower インスタンスのアップグレードを試行する際に留意する変更事項を説明します。

  • RHEL および 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 にアップグレードする必要があります。

  • /etc/tower/settings.py に追加したカスタム設定は、「 Tower の設定」ユーザーインターフェースから設定するか、/etc/tower/conf.d のファイルに移動してから、Ansible Tower 3.5 にアップグレードする必要があります。

  • Ansible Tower 3.0 ではインストールが簡素化され、初期設定で ./configure/ を実行する必要がなくなりました。

  • ファイル tower_setup_conf.yml は使用されなくなりました。代わりに、/ansible-tower-setup-<tower_version>/ ディレクトリーの inventory ファイルを編集してください。

  • 以前の Tower では、初期のデータベースの設定時に MongoDB を使用していましたが、Ansible Tower 3.0 では MongoDB は PostgreSQL に置き換えられました。

  • クラスター形式のアップグレードでは、アップグレード前にインスタンスとインスタンスグループに特に留意が必要です。「インベントリーファイルの設定」のセクションを参照してください。

  • Ansible Tower 3.3 で API 認証が変更され、OAuth2 の追加機能に対応しています。詳細は、『Ansible Tower Administration Guide』の「Token-Based Authentication」を参照してください。

2.2. Ansible Tower の取得

スタンドアロンの 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>2.4.53.0.0 ディレクトリーなどのバージョン番号に置き換えてください。

2.3. インベントリーファイルの設定

インベントリーファイルの編集時には、複数の点を念頭に置く必要があります。

  • インベントリーファイルの内容は ./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 にあります。

rabbitmq_password='' <---- ここで新規パスワードを作成します (特殊文字を使用しない英数字)。

警告

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'

rabbitmq_port=5672
rabbitmq_vhost=tower
rabbitmq_username=tower
rabbitmq_password='password'
rabbitmq_cookie=rabbitmqcookie

# Needs to be true for fqdns and ip addresses
rabbitmq_use_long_name=false
# Needs to remain false if you are using localhost

警告

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'

rabbitmq_port=5672
rabbitmq_vhost=tower
rabbitmq_username=tower
rabbitmq_password=tower
rabbitmq_cookie=rabbitmqcookie

# Needs to be true for fqdns and ip addresses
rabbitmq_use_long_name=true

警告

pg_password で特殊文字を使用しないでください。セットアップが失敗する場合があります。

外部の既存データベースのインベントリーファイル例

[tower]
node.example.com ansible_connection=local

[database]

[all:vars]
admin_password='password'
pg_password='password'
rabbitmq_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'
rabbitmq_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」を参照してください。

2.4. 設定用の Playbook

注釈

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 のインストーラーを使用してください。