Ansible AWXを使ってみよう!

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

関連記事

まえがき

おはようございます、加藤です。Ansible AWXを使ってAWX上のEC2にhttpdをインストールするのが今回の目的です。AWXのインストール方法は関連記事を参照してください。

準備

  • AWXから通信できる範囲にAmazon Linux2をインストール
  • 80番ポートの開放

設定

初期設定

ログインして管理者アカウント(admin)の設定を行います。

  1. AWXにログイン
    1. デフォルトの認証情報はadmin/passwordです。
  2. アカウント情報登録
    1. 画面右上の人アイコンをクリック
    2. 情報を入力
    3. 保存をクリック

プロジェクト作成

AWXにおけるプロジェクトとはAnsibleのプレイブックを指します。
プロジェクトは以下の方法などで取り込む事ができます。

  • AWXのサーバ内に配置
  • SCM
    • Git
    • Mercurial
    • Subversion

1プロジェクト内で複数のプレイブックを扱うことができます。
今回はhttpdをインストールする簡単なGitリポジトリを事前に作成して置いたのでそれを使用します。

  1. プロジェクト画面に切り替える
    1. 画面左側メニューのプロジェクトをクリック
  2. プロジェクト追加
    1. 画面右上側の追加をクリック
    2. 各項目を入力
      • 名前: sample httpd
      • SCMタイプ: Git
      • SCM URL: https://github.com/kmd2kmd/Ansible-AWX
      • SCMブランチ/タグ/コミット: v0.3
    3. 保存をクリック
    4. リポジトリからのダウンロード
      1. 初回のダウンロードは自動で行われます
    5. 完了確認
      1. 下図の様になっていればOK

認証情報作成

AWXにおける認証情報とはインベントリーへのSSH接続時の認証(パスワード認証・公開鍵認証)やSCMへの接続時の認証の為の情報を指します。

今回はインベントリに接続するための公開鍵認証を設定します。

秘密鍵は登録後自動的に暗号化されます。ただしHTTP通信なので普段使用している鍵を使うのはお勧めしません。 本番環境ではHTTPSまたは、VPN経由で接続すると良いでしょう。

  1. 認証情報画面に切り替える
    1. 画面左側メニューの認証情報をクリック
  2. 認証情報追加
    1. 画面右上側の追加をクリック
  3. 各項目を入力
    • 名前: sample key
    • CREDENTIAL TYPE: Machine
    • ユーザ名: ec2-user
    • SSH PRIVATE KEY: 秘密鍵
    • 秘密鍵のパスフレーズ: 秘密鍵のパスフレーズ(設定している場合)
  4. 保存をクリック
  5. 完了確認
    1. 下図の様になっていればOK

インベントリー作成

AWXにおけるインベントリーはAnsibleと同様に管理対象のホストを指します。
インベントリーは必ずグループで作成されます。1つのホストを対象にしたい場合はグループに関連付けるホストを1つだけにします。

  1. インベントリー画面に切り替える
    1. 画面左側メニューのインベントリーをクリック
  2. インベントリーー追加
    1. 画面右上側の追加をクリック
    2. インベントリーをクリック
  3. 各項目を入力
    • 名前: sample inventory
    • 変数: httpd_servername: "www.sample"
  4. 保存をクリック
  5. ホストをクリック

    1. ホストの追加をクリック
  6. 各項目を入力
    • ホスト名: (ホスト名 or IPアドレス)
  7. 保存をクリック
  8. 完了確認
    1. 下図の様になっていればOK

テンプレート (ジョブ)作成

AWXにおけるテンプレート(ジョブ)はどのインベントリーにどのプロジェクト(Playbook)を適用するか設定することを指します。

  1. テンプレート画面に切り替える
    1. 画面左側メニューのテンプレートをクリック
  2. テンプレート追加
    1. 画面右上側の追加をクリック
    2. テンプレートをクリック
    3. ジョブテンプレートをクリック
  3. 各項目を入力
    • 名前: sample job template
    • インベントリー: sample inventory
    • プロジェクト: sample httpd
    • PLAYBOOK: playbooks/httpd24.yml
    • 認証情報: sample key
  4. 保存をクリック
  5. 完了確認
    1. 下図の様になっていればOK

実行

テンプレート(ジョブ)実行

  1. テンプレート画面に切り替える
  2. テンプレートを実行
    1. ロケットのアイコンをクリック
  3. 実行結果確認
    1. 下図の様になっていればOK
    2. ブラウザでアクセスできればOK

あとがき

シンプルなパターンでAWXを使ってみました。ジョブをスケジュールに基づいて実行させることも可能なので、運用でも役立てることができそうです。
UIに一貫性があるので操作していれば自然と慣れそうだなと思いました。
またテンプレート(ワークフロー)の方を使うとジョブを連続で実行させることもできます。
皆さん良いAnsibleライフを!