Ansibleを使ってWindows環境を構築する編 [その1]

このブログは、N高等学校とVRChatの世界からやってきた株式会社ArmorisアルバイトのShaderoが書いています。
あるもりすぶろぐの内容は個人の意見です。

弊社が提供する様々なトレーニングプログラムでは、トレーニングを行う際に、演習端末としてWindows環境を用意しています。
そこで先日、Ansibleというツールを使用して、端末の環境構築を効率的に行えるようにしました。
もっとも、実際に使いこなすには様々な試行錯誤がありました。
そこで今回は備忘も兼ねて、その際にいろいろ試したことなども含めてまとめました。

本記事ではAnsibleを用いてホストサーバーに接続するための準備を行います。
すでにAnsibleサーバーとホストサーバー(Windows)のセットアップ及び疎通確認が完了している方は、本記事に書かれている操作を行う必要はありません。

Ansibleとは

オープンソースの構成管理ツールです。

Playbookと呼ばれるYAML形式のファイルに処理を書くことで、環境を自動的に構築することが出来ます。
また、Playbookがあればコマンド一つで複数のデバイスを自動的に設定することもできるため、手作業で行うよりも大幅に時間を短縮する事が出来ます。

環境

ホストサーバー

Name Version
Windows 10 Pro 20H2
WinRM 3.0

Ansibleサーバー

Name Version
MacOS Big Sur 11.4
Ansible 2.11.6

WinRMの設定

さっそくAnsibleのインストール!と行きたいのですが、その前にホストサーバー側でWinRMと呼ばれるWindowsを遠隔で操作する際に必要になる管理プロトコルの設定を、Ansibleが使えるように変更します。

下記のスクリプトを管理者権限で起動されたPowerShell上で実行します。

$url = "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"
$file = "$env:temp\ConfigureRemotingForAnsible.ps1"

(New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)

powershell.exe -ExecutionPolicy ByPass -File $file

Ansibleのインストール

ここから先はAnsibleサーバー側での作業になります。

下記のコマンドを実行してAnsibleをインストールします。

$ brew install ansible

またAnsibleでWindowsを動かす場合に必要になるpywinrmもインストールします。

$ pip3 install pywinrm

hostsファイルの編集

/etc/ansible/ディレクトリ内にあるhostsファイルを下記のように編集します。
ファイル、またはディレクトリが無かったら作ってください。

[servers]
(ホストサーバーのIPアドレス)

[servers:vars]
ansible_user='(Ansibleでログインする際に使うホストサーバーのユーザー名)'
ansible_password='(Ansibleでログインする際に使うホストサーバーのユーザーのパスワード)'
ansible_port=5986
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore

接続テスト

正常にホストサーバーと接続できるかを確認するため、下記のコマンドを実行します。
エラーが出なければ成功です。

$ ansible -m win_ping (ホストサーバーのIPアドレス)

f:id:Armoris:20220201161623p:plain

あとがき

今回はAnsibleでホストサーバーに接続できるよう準備を行いました。
次回は実際にホストサーバーの環境を構築するためのPlaybookを書いていく予定です!

本記事がお役に立てましたら幸いです。