連載
» 2016年11月30日 05時00分 公開

Ansibleで始めるサーバ作業自動化入門(終):WebブラウザでAnsibleの実行を管理するAnsible Towerのインストールと使い方 (2/4)

[今泉俊幸,株式会社ビーブレイクシステムズ]

Ansible Towerの構成

 インストールを終え、Ansible Towerからプレイブックを実行させたいところですが、その前にAnsible Towerの構成要素について説明しておきます。Ansible Towerの主な構成要素は以下のようになっています。

  • 組織(Organization)
    Ansible Towerの全ての構成要素を束ねる単位。無償ライセンスではデフォルトで用意されている組織一つしか利用できない
  • プロジェクト(Project)
    プレイブックを集約する単位
  • インベントリ(Inventory)
    被管理ホストのホスト名や変数などの情報を保持する。ただし、認証に関する情報(ユーザー名やパスワード)は別途扱う
  • 認証情報(Credential)
    被管理ホストへの接続情報や、プレイブックを取得するためのバージョン管理システムへの接続情報など認証に関する情報を保持する
  • ジョブテンプレート(Job Template)
    「どのプレイブックをどのインベントリファイル、認証情報を使って実行するか」を保持する
  • ジョブ(Job)
    ジョブテンプレートを元に作成された実行情報

 構成イメージとしては以下のようになります。

 Ansible Towerからプレイブックを実行するためには上記の要素を作成する必要があります。まずはこれらを作成してプレイブックを実行するまでの手順を紹介します。

プレイブックを実行するために最低限必要な手順

 プレイブックを実行するために最低限必要な手順は以下の通りです。

  1. プレイブックの配置
    プレイブックはAnsible Towerから作成できないため、あらかじめ作成しておき指定のディレクトリに配置しておく必要がある。なお、GitやSubversionなどのバージョン管理システムを利用してプレイブックを取得することも可能。バージョン管理システムを使った方法は後述する
  2. プロジェクトの作成
    プレイブックをどこから取得するのかを設定する
  3. インベントリの作成
    被管理ホストの情報を設定する
  4. 認証情報の作成
    被管理ホストの接続情報を設定する
  5. ジョブテンプレートの作成
    「どのプレイブックを、どのインベントリに対し実行するのか」を設定する
  6. ジョブの実行
    ジョブテンプレートを元にプレイブックを実行する

 まずは上記の手順を行う例を見てみます。

【1】プレイブックの配置

 プレイブックの編集はAnsible Towerから行えないため、ターミナルから直接配置しておく必要があります。また、プレイブックは利用するプロジェクト単位でディレクトリを分けて配置する必要があります。

 プレイブックを配置するディレクトリは「/var/lib/awx/projects/」以下です。今回は環境構築用のプロジェクトを想定し、上記ディレクトリに「setup」というディレクトリを作成し、「setup.yml」というプレイブックを配置します。プレイブックの中身はシンプルにuserを追加するだけです。

- hosts: all
  become: yes
  tasks:
    - user: user=piyo

 また、このプレイブックはAnsible Towerから「awx」というユーザーによって実行されるため、awxユーザーがアクセスできるよう、作成したディレクトリとファイルのオーナーをawxに設定しておいてください。

【2】プロジェクトの作成

 プレイブックの配置が終わったらAnsible Towerにログインし、プロジェクトを作成します。画面上部のメニューから「PROJECTS」を選択しプロジェクト一覧画面に移動した後、ADDボタンをクリックしてプロジェクト作成画面に移動します。

 プロジェクトの入力項目は以下の通りです。

  • NAME
    プロジェクト一覧やジョブテンプレート作成時に表示されるプロジェクト名を入力する
  • DESCRIPTION
    プロジェクトの一覧時に表示される説明文を入力する
  • ORGANIZATION
    作成するプロジェクトがどの組織に所属するかを選択する。無償ライセンスの場合、デフォルトの組織のみ設定できる
  • SCM TYPE
    「プレイブックを、どこから取得するのか」を設定する。ローカルのプレイブックを利用する場合は「Manual」を選択する
  • PLAYBOOK DIRECTORY
    SCM TYPEが「Manual」のときのみ入力可能となる項目。プロジェクトが利用するプレイブックを収めたディレクトリを指定する。「/var/lib/awx/projects/」以下のディレクトリが候補として表示されるため、その中から選択する

 必須項目を埋めSAVEボタンをクリックすればプロジェクトの作成は完了です(ラベルに赤いアスタリスクが付いた項目が必須項目です)。

【3】インベントリの作成

 次に、インベントリを作成し、被管理ホストの情報を登録します。今回は以下のインベントリファイル相当の設定を行ってみます。

production ansible_host=www.exmaple.com env_name=production

 まず、上部メニューの「INVENTORIES」をクリックしインベントリ一覧画面に遷移し、ADDボタンをクリックしてインベントリ登録画面を開きます。

 NAMEにインベントリの名前を入力し、SAVEボタンをクリックしてインベントリを保存します。この名前はインベントリファイルのファイル名に相当します。

 インベントリの保存後はグループ、被管理ホストを追加する画面に遷移します。今回はグループなしで被管理ホストのみを追加します。「ADD HOST」ボタンをクリックし、被管理ホスト追加画面に遷移します。

 HOST NAMEに被管理ホスト名を、VARIABLESにそのホストの変数を追加し、SAVEボタンをクリックすればインベントリの作成は完了です。

 なお、変数の設定方法については、YAML形式とJSON形式が選択できます。今回はYAML形式で設定しています。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。