Ansible AWXでIISを構築する

AWXでIIS構築開発
3D Animation Production CompanyによるPixabayからの画像

今回は、Ansible AWXを使って、Windows Server 2019にIISを構築します。Ansible AWXは、Ansible AWXをインストールするの時に構築した環境を用います。

スポンサーリンク
スポンサーリンク

Windows Server 2019の設定

Ansible接続ユーザー作成

Ansible実行時の接続ユーザーをAdministrator権限で作成します。ここでは、下記パラメーターで作成しました。

  • アカウント名:ansible
  • パスワード:P@ssw0rd

WinRM有効化

WinRMを有効化するため、管理者権限で起動したPowerShellから、下記を実行します。

Invoke-WebRequest -Uri https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1 -OutFile ConfigureRemotingForAnsible.ps1

powershell -ExecutionPolicy RemoteSigned .\ConfigureRemotingForAnsible.ps1

接続テスト

AWXサーバーとWindows ServerのWinRMでの接続テストを実施します。

まず、AWXサーバーで下記hostsファイルを作成します。

  all:
    children:
      windows:
        hosts:
          windows1:
            ansible_host: {Windows ServerのIPアドレス}
        vars:
          ansible_user: ansible
          ansible_password: P@ssw0rd
          ansible_port: 5986
          ansible_connection: winrm
          ansible_winrm_server_cert_validation: ignore

次に、下記コマンドを実行し、SUCCESSが返ることを確認します。

ansible -i hosts windows -m win_ping

windows1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Ansible AWXの設定

プレイブック配置

IISを構築するためのplaybookをAWXサーバーに用意します。今回は、配布手段をフォルダ格納形式(SCM Type=手動)とするので、指定のフォルダにplaybookファイルを格納することになります。test_dirフォルダに、test.ymlを格納する例を記載します。

sudo mkdir -p /var/lib/awx/projects/test_dir
cd /var/lib/awx/projects/test_dir/
sudo vi test.yml

test.ymlの内容は、以下とします。

- hosts: all
  tasks:
    - name: Install IIS
      win_feature:
        name: "Web-Server"
        state: present
        restart: yes
        include_sub_features: no
        include_management_tools: yes

インベントリー作成

AWX管理画面にサインインし、インベントリーを作成します。

  1. インベントリー > +(新規作成)ボタン > インベントリーをクリックします。
  2. 下記を入力して、保存ボタンをクリックします。
    • 名前:winsv

グループ作成

グループを作成します。ここにWinRMとの接続情報も加えます(参考:winrmでのWindowsへの接続)

  1. winsvインベントリー内[詳細]右横にあるグループ > +(新規作成)ボタンをクリックします。
  2. 下記を入力して、保存ボタンをクリックします。
    • 名前:Windows
    • 変数(YAML)の- – -の下に下記を入力
      ansible_connection: winrm
      ansible_port: 5986
      ansible_winrm_server_cert_validation: ignore
      ansible_user: ansible
      ansible_password: P@ssw0rd

ホスト作成

ホスト情報を作成します。

  1. winsvインベントリー内[詳細]右横にあるホスト > +(新規作成)ボタンをクリックします。
  2. 下記を入力して、保存ボタンをクリックします。
    • ホスト名:{Windows ServerのIPアドレス}
  3. [FACT(ファクト)]右横のグループをクリックします。
  4. +(既存グループの関連付け)ボタン > Windowsグループにチェックして、、保存ボタンをクリックします。

プロジェクト作成

プロジェクトを作成します。

  1. プロジェクト > +(新規作成)ボタンをクリックします。
  2. 下記を入力して、保存ボタンをクリックします。
    • 名前:install_IIS
    • SCMタイプ:手動
    • Playbookディレクトリー:test_dir

※手動を選択してもPlaybookディレクトリーが表示されない場合、AWXサーバー構築時のansible-playbookを再度実行するとよいらしいです(参考:How to Create Manual SCM Project?)。

※手動タイプのプロジェクトは、1つのみ作成可能です。

ジョブテンプレート作成

ジョブテンプレートを作成します。

  1. プロジェクトinstall_IIS内、ジョブテンプレート > +ボタン > ジョブテンプレートをクリックします。
  2. 下記を入力して、保存ボタンをクリックします。
    • 名前:test(任意)
    • ジョブタイプ:(ドロップダウンから)実行を選択
    • インベントリー:(虫眼鏡ボタン押して)winsvを選択
    • プロジェクト:(虫眼鏡ボタン押して)install_IISを選択
    • Playbook:(ドロップダウンから)test.ymlを選択

※Playbookのドロップダウンに予定したymlファイルが表示されない場合、yml不正の可能性が高いと思われます(参考:ドロップダウンリストに表示されない)。

実行

ジョブテンプレート一覧のロケットアイコン、もしくはジョブテンプレート設定時の起動ボタンをクリックして、Playbookを実行します。実行結果は画面に表示されます。

まとめ

Ansible AWXを用いることで、視覚的にプレイブックを構成できます。接続先や認証情報を管理できたり、プレイブック実行履歴を確認することが可能になり、運用上大変便利だと思います。また、実行対象がLinuxマシンでもWindowsマシンでも対応可能です。

以上、Ansible AWXでIISを構築する手順の紹介でした。

スポンサーリンク
スポンサーリンク
スポンサーリンク
開発
Tech WalkIt

コメント