今回は、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管理画面にサインインし、インベントリーを作成します。
- インベントリー > +(新規作成)ボタン > インベントリーをクリックします。
- 下記を入力して、保存ボタンをクリックします。
- 名前:winsv
グループ作成
グループを作成します。ここにWinRMとの接続情報も加えます(参考:winrmでのWindowsへの接続)
- winsvインベントリー内[詳細]右横にあるグループ > +(新規作成)ボタンをクリックします。
- 下記を入力して、保存ボタンをクリックします。
- 名前:Windows
- 変数(YAML)の- – -の下に下記を入力
ansible_connection: winrm
ansible_port: 5986
ansible_winrm_server_cert_validation: ignore
ansible_user: ansible
ansible_password: P@ssw0rd
ホスト作成
ホスト情報を作成します。
- winsvインベントリー内[詳細]右横にあるホスト > +(新規作成)ボタンをクリックします。
- 下記を入力して、保存ボタンをクリックします。
- ホスト名:{Windows ServerのIPアドレス}
- [FACT(ファクト)]右横のグループをクリックします。
- +(既存グループの関連付け)ボタン > Windowsグループにチェックして、、保存ボタンをクリックします。
プロジェクト作成
プロジェクトを作成します。
- プロジェクト > +(新規作成)ボタンをクリックします。
- 下記を入力して、保存ボタンをクリックします。
- 名前:install_IIS
- SCMタイプ:手動
- Playbookディレクトリー:test_dir
※手動を選択してもPlaybookディレクトリーが表示されない場合、AWXサーバー構築時のansible-playbookを再度実行するとよいらしいです(参考:How to Create Manual SCM Project?)。
※手動タイプのプロジェクトは、1つのみ作成可能です。
ジョブテンプレート作成
ジョブテンプレートを作成します。
- プロジェクトinstall_IIS内、ジョブテンプレート > +ボタン > ジョブテンプレートをクリックします。
- 下記を入力して、保存ボタンをクリックします。
- 名前:test(任意)
- ジョブタイプ:(ドロップダウンから)実行を選択
- インベントリー:(虫眼鏡ボタン押して)winsvを選択
- プロジェクト:(虫眼鏡ボタン押して)install_IISを選択
- Playbook:(ドロップダウンから)test.ymlを選択
※Playbookのドロップダウンに予定したymlファイルが表示されない場合、yml不正の可能性が高いと思われます(参考:ドロップダウンリストに表示されない)。
実行
ジョブテンプレート一覧のロケットアイコン、もしくはジョブテンプレート設定時の起動ボタンをクリックして、Playbookを実行します。実行結果は画面に表示されます。
まとめ
Ansible AWXを用いることで、視覚的にプレイブックを構成できます。接続先や認証情報を管理できたり、プレイブック実行履歴を確認することが可能になり、運用上大変便利だと思います。また、実行対象がLinuxマシンでもWindowsマシンでも対応可能です。
以上、Ansible AWXでIISを構築する手順の紹介でした。
コメント