Documentation

3. Ansible Automation Platform のインストール

Ansible Automation Platform は、お使いの環境に最適なモードを選択し、インベントリーファイルに必要な変更を加えることで、さまざまな方法でインストールできます。OpenShift ベースのデプロイメントでは、OpenShift に Tower のみのデプロイできます。OpenShift への Automation Hub のデプロイメントはサポートされませんが、OpenShift を参照する仮想環境に Automation Hub をデプロイできます。詳細は、「OpenShift Deployment and Configuration」を参照してください。

3.1. Ansible Automation Platform のインストールシナリオ

Ansible Automation Platform は、以下のシナリオのいずれかを使用してインストールすることができます。

単一マシン:

  • Tower または非インストーラー管理データベースと同じノード上にデータベースがあるスタンドアロン Tower。これは Tower を単一のマシンにインストールしたものです。Web フロントエンド、REST API バックエンド、データベースがすべて単一のマシンに含まれています。これは、Tower の標準インストールです。また、お使いの OS ベンダーリポジトリーから PostgreSQL もインストールされ、Tower サービスがデータベースとして使用するように設定されます。

    [tower]
    host
    
  • 外部管理データベースを備えたスタンドアロン Tower。この構成では、単一マシンに Tower サーバーをインストールし、Tower のデータベースとして、PostgreSQL 10 のリモートのインスタンスと対話するように設定します。このリモートの PostgreSQL には自身で管理するサーバーを使用することも、Amazon RDS などのクラウドサービスで提供することも可能です。

    [tower]
    host
    
    [database]
    host2
    
  • Automation Hub または非インストーラー管理データベースと同じノードにあるデータベース付きのスタンドアロン Automation Hub:

    [automationhub]
    host
    
  • 外部管理データベースを使用するスタンドアロン Automation Hub: この構成では、単一のマシンに Automation Hub サーバーをインストールし、(Automation Platform インストーラーが管理する) Playbook インストーラーでリモートの PostgreSQL データベースをインストールします。

    [automationhub]
    host
    
    [database]
    host2
    

プラットフォームのインストール:

プラットフォームのインストールには Tower と Automation Hub が関与します。Platform インストーラーを使用すると、インベントリーごとに Automation Hub を 1 つだけデプロイできます。インストーラーを Automation Hub スタンドアロンインストーラーとして使用し、複数の Automation Hub ノードをデプロイする場合は、インストーラーを任意の数の異なるインベントリーで何度でも実行できます。プラットフォームインストールでサポートされている 2 つのオプションは次のとおりです。

  • Tower とまたは非インストーラー管理データベースと同じノード上のデータベースを使用するプラットフォーム (タワー + Automation Hub):

    [tower]
    host1
    
    [automationhub]
    host2
    
  • 外部管理データベースを使用するプラットフォーム (Tower + Automation Hub) の場合:

    [tower]
    host1
    
    [automationhub]
    host2
    
    [database]
    host3
    

マルチマシンクラスター

このシナリオには、外部管理データベースを使用したプラットフォーム (クラスター化されたタワー + Automation Hub) インストールに関与します。このモードでは、複数の Tower ノードがインストールされてアクティブになります。すべてのノードが HTTP リクエストを受け取れるようになり、すべてのノードがジョブを実行できます。これにより、プラットフォームサーバーが単一のマシンにインストールされ、データベースとして PostgreSQL のリモートインスタンスと対話するように構成されます。このリモート PostgreSQL は、管理するサーバーにすることも、Amazon RDS などのクラウドサービスによって提供することもできます。

[tower]
host1
host11
host12

[automationhub]
host2

[database]
host3

注釈

クラスター設定で実行するには、Tower は外部のデータベースを使用する必要があります。PostgreSQL はプライマリーまたはセカンダリーの Tower ノードではないマシンにインストールする必要があります。冗長設定の場合の要件として、リモートの PostgreSQL バージョンは PostgreSQL 10 でなければなりません。

クラスター化の設定に関する情報は、「クラスタリング」を参照してください。

注釈

1). Tower will not configure replication or failover for the database that it uses, although Tower should work with any replication that you have. 2). The database server should be on the same network or in the same datacenter as the Tower server for performance reasons. 3). Tower and Automation Hub can not run on the same node, this is a scenario that is not supported. It means that any deployment of the Platform becomes at least a 2-node deployment topology.

Automation Platform インストールに利用可能な設定:

  • automationhub_importer_settings: galaxy-importer に渡す設定/構成のディクショナリー。これは、最終的に /etc/galaxy-importer/galaxy-importer.cfg に保存されます。

  • automationhub_require_content_approval: コレクションが利用可能になる前に、Automation Hub が承認メカニズムを実施するかどうか。

  • automationhub_disable_https: TLS を有効にして Automation Hub をデプロイする必要があるかどうか。

  • automationhub_disable_hsts: Transport Security (HSTS) Web セキュリティーポリシーメカニズムを有効にして Automation Hub をデプロイする必要があるかどうか。

  • automationhub_ssl_validate_certs: Platform は、デフォルトで自己署名証明書を使用してデプロイするため、Automation Hub は、自身を要求するときに証明書を検証する必要があるかどうか (デフォルト= False)。

  • automationhub_ssl_cert: web_server_ssl_cert と同じですが、Automation Hub の UI および API で使用。

  • automationhub_ssl_key: web_server_ssl_key と同じですが、Automation Hub の UI および API で使用。

  • automationhub_backup_collections: Automation Hub は /var/lib/pulp にアーティファクトを提供します。デフォルトでは、これは true に設定されています。そのため、Tower はデフォルトでアーティファクトを自動的にバックアップします。パーティション (LVM、NFS、CephFS など) がそこにマウントされている場合、企業組織はそれが常にバックアップされることを保証します。この場合は、automationhub_backup_collections = false を設定して、バックアップ/復元プロセスで /var/lib/pulp をバックアップ/復元する必要はありません。

OpenShift ベースのデプロイメントについては、「OpenShift Deployment and Configuration」を参照してください。

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

  • インベントリーファイルの内容は ./setup.sh インストーラー Playbook の隣りにある ./inventory で定義する必要があります。

  • インストールおよびアップグレード: 外部データベースを使用する必要がある場合には、インベントリーファイルのデータベースのセクションが正しく設定されていることを確認する必要があります。このファイルを編集して、外部データベースの情報を追加してから設定スクリプトを実行してください。

  • Ansible Automation Platform または Automation Hub: [automationhub] グループに自動化ハブホストを追加するようにしてください (Tower と Automation Hub は同じノードにインストールできません)。

  • 既存クラスターをアップグレード する場合: クラスターのアップグレード時に、既存のインスタンスやインスタンスグループを除いて、クラスターを再設定する場合があります。インベントリーファイルからインスタンスやインスタンスグループを削除しても、クラスターからインスタンスやインスタンスグループは削除されません。インベントリーファイルからインスタンスやインスタンスファイルを削除するだけでなく、アップグレード前に、「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 で特殊文字を使用しないでください。セットアップが失敗する場合があります。

3.1.1. インベントリーファイル例

  • 新規ノードのプロビジョニング: 新規ノードのプロビジョニングの際には、現在のノードすべてを使用してインベントリーファイルにノードを追加し、すべてのパスワードがインベントリーファイルに含まれていることを確認してください。

  • 単一ノードのアップグレード: アップグレード時には、インベントリーファイルと現在のリリースバージョンを比較するようにしてください。アップグレードを実行する際でも、ここにパスワードを保存することを推奨します。

3.1.1.1. スタンドアロンの Automation Hub インベントリーファイル例

[automationhub]
automationhub.acme.org
[all:vars]
automationhub_admin_password='<password>'
automationhub_pg_host=''
automationhub_pg_port=''
automationhub_pg_database='automationhub'
automationhub_pg_username='automationhub'
automationhub_pg_password='<password>'
automationhub_pg_sslmode='prefer'
# The default install will deploy a TLS enabled Automation Hub.
# If for some reason this is not the behavior wanted one can
# disable TLS enabled deployment.
#
# automationhub_disable_https = False
# The default install will generate self-signed certificates for the Automation
# Hub service. If you are providing valid certificate via automationhub_ssl_cert
# and automationhub_ssl_key, one should toggle that value to True.
#
# automationhub_ssl_validate_certs = False
# SSL-related variables
# If set, this will install a custom CA certificate to the system trust store.
# custom_ca_cert=/path/to/ca.crt
# Certificate and key to install in Automation Hub node
# automationhub_ssl_cert=/path/to/automationhub.cert
# automationhub_ssl_key=/path/to/automationhub.key

3.1.1.2. プラットフォームのインベントリーファイル例

[tower]
tower.acme.org
[automationhub]
automationhub.acme.org
[database]
database-01.acme.org
[all:vars]
admin_password='<password>'
pg_host='database-01.acme.org'
pg_port='5432'
pg_database='awx'
pg_username='awx'
pg_password='<password>'
pg_sslmode='prefer'  # set to 'verify-full' for client-side enforced SSL
# Automation Hub Configuration
#
automationhub_admin_password='<password>'
automationhub_pg_host='database-01.acme.org'
automationhub_pg_port='5432'
automationhub_pg_database='automationhub'
automationhub_pg_username='automationhub'
automationhub_pg_password='<password>'
automationhub_pg_sslmode='prefer'
# The default install will deploy a TLS enabled Automation Hub.
# If for some reason this is not the behavior wanted one can
# disable TLS enabled deployment.
#
# automationhub_disable_https = False
# The default install will generate self-signed certificates for the Automation
# Hub service. If you are providing valid certificate via automationhub_ssl_cert
# and automationhub_ssl_key, one should toggle that value to True.
#
# automationhub_ssl_validate_certs = False
# Isolated Tower nodes automatically generate an RSA key for authentication;
# To disable this behavior, set this value to false
# isolated_key_generation=true
# SSL-related variables
# If set, this will install a custom CA certificate to the system trust store.
# custom_ca_cert=/path/to/ca.crt
# Certificate and key to install in nginx for the web UI and API
# web_server_ssl_cert=/path/to/tower.cert
# web_server_ssl_key=/path/to/tower.key
# Certificate and key to install in Automation Hub node
# automationhub_ssl_cert=/path/to/automationhub.cert
# automationhub_ssl_key=/path/to/automationhub.key
# Server-side SSL settings for PostgreSQL (when we are installing it).
# postgres_use_ssl=False
# postgres_ssl_cert=/path/to/pgsql.crt
# postgres_ssl_key=/path/to/pgsql.key

3.1.1.3. 単一ノードのインベントリーファイル例

[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 で特殊文字を使用しないでください。セットアップが失敗する場合があります。

3.1.1.4. 複数ノードのインベントリーファイル例

[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 で特殊文字を使用しないでください。セットアップが失敗する場合があります。

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

[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 で特殊文字を使用しないでください。セットアップが失敗する場合があります。

3.1.1.6. インストールを必要とする外部データベースのインベントリーファイル例

[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」を参照してください。

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

After calling ./setup.sh with the appropriate parameters, Tower is installed on the appropriate machines as has been configured. Setup installs Tower from RPM packages using repositories hosted on ansible.com.

設定が完了したら、お使いの Web ブラウザーを使用して Tower サーバーにアクセスでき、Tower のログイン画面が表示されます。Tower サーバーは、ポート 80 (https://<TOWER_SERVER_NAME>/) からアクセスできますが、ポート 443 にリダイレクトされるため、443 も利用できる状態にする必要があります。

Login form

Tower のインストールに失敗し、Ansible Tower の有効なライセンスを購入済みのお客様は、Red Hat カスタマーポータル (https://access.redhat.com/) から Ansible までお問い合せください。

3.2. パスワードの変更

インストールの完了後に SSH 経由で Tower インスタンスにログインすると、デフォルトの管理パスワードがプロンプトに提示されます。(root または AWS ユーザーとして) 以下のコマンドを使用して変更することができます。

awx-manage changepassword admin

その後は入力したパスワードが Web UI の管理者パスワードとして機能します。