構成管理ツールであるAnsibleは、ネットワークやサーバーの構築、管理、運用に広く活用されています。
これにより、リモートで複数のサーバーやネットワーク機器を構成することが可能であり、
管理者の負担を軽減できます。
例えば、Ansibleを使うことで、Windowsホストに対して以下のような操作が行えるようになります。
- MSI のインストールとアンインストール
- Windows 機能の有効化と無効化
- Windows サービスの開始、停止、管理
- ローカルユーザーとグループの作成と管理
- Chocolatey パッケージマネージャーによる Windows パッケージの管理
- Windows の更新の管理とインストール
- リモートサイトからのファイルの取得
- PowerShell スクリプトのプッシュと実行
本記事では、Ubuntu 22.04 LTSからAnsibleでWindowsを操作する手順について解説します。
Windows VPSならWinserver!
★Microsoft Hyper-V ×最新OSで快適に操作可能★
\ 2週間無料でお試しできます! /
Windows VPSを使ってみる
目次
検証環境について
コントロールノード
今回は、WinserverのVPSを利用し、2台の仮想マシンを構築します。
1台はAnsibleコントロールノードで、Ubuntuを使用します。
Ansibleコントロールノードの仮想マシンのスペックは以下のとおりです。
- OS:Ubuntu 22.04.2 LTS
- CPU:4コア
- Memory:4GB
- Disk:SSD300GB
※Winserverと姉妹サービスであるミライサーバーではUbuntu 22.04.2 LTSなどのOSをインストールした状態からお使いいただけます。
ターゲットノード
次に、Ansibleで操作するターゲットノードは、Windowsを使用します。
ターゲットノードの仮想マシンのスペックは以下のとおりです。
- OS:Windows Server 2022
- CPU:6コア
- Memory:4GB
- Disk:250GB
※WinserverではWindowsをインストールした状態からお使いいただけます。
使用するソフトウェア
使用するソフトウェアとして、コントロールノード、ターゲットノードそれぞれに以下をインストールします。
コントロールノード
- Ansible:2.16.7
- Python:3.10.12
ターゲットノード
- Python:3.12.4
- PowerShell 3.0以降(Windowsの場合)
- NET Framework 4.0以降(Windowsの場合)
Ansibleを使用するにあたり、コントロールノード、ターゲットノード両方にPythonがインストールされている必要があることに注意しましょう。
対応するバージョンについては、こちらを御覧ください。
Ansibleのセットアップ
Ansibleのインストール(コントロールノード)
最初に、コントロールノードにAnsibleをインストールします。
Ansibleのインストールについては「Ansibleとは?基本的な知識からインストールまで解説」の記事で解説していますので、こちらを御覧ください。
ソフトウェアのインストール(ターゲットノード)
AnsibleでWindowsホストを操作するために必要なソフトウェアをインストールします。
インストールするソフトウェアは以下です。
- WinRM
- Pywinrm
Ansibleのインストールについては「Ansibleとは?基本的な知識からインストールまで解説」の記事で解説していますので、こちらを御覧ください。
\ 2週間無料でお試しできます! /
Windows VPSを使ってみる
手順1:WinRMのセットアップ
最初に、WinRMをセットアップします。
これは、Ansibleが接続できるためにWinRMサービスを利用するためです。
PowerShell(管理者権限で実行)で以下のコマンドを実行します。
$url = “https://raw.githubusercontent.com/ansible/ansible-
documentation/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
※注意
ここで使用している「ConfigureRemotingForAnsible.ps1」スクリプトは、Basic認証が有効となっているため、トレーニングや開発目的で使用いただき、運用環境での使用はお控えください。
作成したWinRMリスナーが実行されているか確認します。
winrm enumerate winrm/config/Listener |
手順2:WinRMの設定
今回の検証では、すでに作成されているListenerを使用しますが、環境構成に応じてWinRMを設定する場合は、以下の方法を行います。
設定方法は3つの方法があります。
Winrmコマンドを利用する
AnsibleとWindowsホストを接続する際に使用するプロトコルに応じて、次のコマンドを実行します。
- HTTP接続の場合
winrm quickconfig |
- HTTPS接続の場合
winrm quickconfig -transport:https |
グループポリシーオブジェクトを利用する
Windowsホストがドメインのメンバーの際は、こちらの利用がおすすめです。
グループポリシーオブジェクトの利用については、以下のサイトをご参考ください。
Group Policy Objects|Microsoft公式サイト
WinRM用のリスナーを作成する
個別にWinRM用のListenerを作成する場合は、以下のコマンドをPowerShellで実行します。
$selector_set = @{
Address = “*”
Transport = “HTTPS”
}
$value_set = @{
CertificateThumbprint = “E6CDAA82EEAF2ECE8546E05DB7F3E01AA47D76CE”
}
New-WSManInstance -ResourceURI “winrm/config/Listener” -SelectorSet $selector_set -ValueSet $value_set
\ 2週間無料でお試しできます! /
Windows VPSを使ってみる
手順3:Pywinrmのインストール(コントロールノード)
LinuxからWindowsコマンドを実行するために、Pywinrmをインストールします。
今回使用した環境では、すでにインストールされていました。
インストールされているかどうか、以下のコマンドで確認します。
$ pip3 list | grep pywinrm |
手順4:インベントリファイルの作成(コントロールノード)
Ansibleでは、操作するホストをインベントリファイルに記載します。
インベントリファイルは、INI形式とYAML形式の2つの方法で記載ができます。
どちらで記載してもかまいません。
・INI形式
[windows]
<ターゲットノードのホスト名またはIPアドレス>
[windows:vars]
ansible_user=<ターゲットノードのユーザー名>
ansible_password=<ターゲットノードのユーザーのパスワード>
ansible_port=5986
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
・YAML形式
windows:
hosts:
<ターゲットノードのホスト名またはIPアドレス>:
ansible_connection: winrm
ansible_user: <ターゲットノードのユーザー名>
ansible_password: <ターゲットノードのユーザーのパスワード>
ansible_winrm_server_cert_validation: ignore
今回の検証では、「hosts」という名称で以下のインベントリファイルを作成しました。
手順5:接続のテスト(コントロールノード)
最後に、コントロールノードからターゲットノードに接続できるか、テストを行います。
コマンドは、以下のとおりです。
$ ansible <グループ名> -i <インベントリファイル名> -m <モジュール名> |
接続確認を行うには「win_ping」モジュールを使用します。
インベントリファイルは「hosts」で作成しているため、コマンドは以下のようになります。
$ ansible windows -i hosts -m win_ping |
ホスト名もしくはIPアドレスの右に「success」と表示されたら、Ansibleとの接続が成功していることを示します。
\ 2週間無料でお試しできます! /
Windows VPSを使ってみる
まとめ
今回はAnsibleを使って、UbuntuからWindowsを接続するための具体的な手順をご紹介しました。
AnsibleではWindowsホストに限らず、さまざまな機器を複数操作することができるため、セットアップや運用の負荷を大幅に軽減できます。
WinserverのVPSを使用すれば、Linux環境と、Windows環境のいずれも簡単に構築・利用できます。
「Ansibleを試してみたいが、環境がない」という人は、ぜひWinserverのVPSもあわせてご利用ください。
Windows Serverなら「Winserver」にお任せ!
Winserverは、Windows Server専門のレンタルサーバーを国内で20年以上提供しているホスティングサービスです。
VPS、仮想デスクトップサービスなどの豊富なサービスを「高品質、低価格」でご用意しております。
また、サーバーの換装・オンプレミス環境からの移行など、サーバー運用のお困りごとを丁寧にサポートいたします。
無料オンライン相談会を実施中
Winserverでは、無料オンライン相談会を実施中です。
20年以上の運用実績があるWinserverの専門スタッフが、社内環境のクラウド化、OSのサポート終了に伴う対応方法などについて、丁寧に回答いたします。
オンライン形式の個別相談会ですので、ぜひどなたでもお気軽にお申込みください。
Winserver紹介資料
Windows Server専門のホスティングサービス「Winserver(ウィンサーバー)」の基本資料です。
各サービスの概要、特徴をまとめています。
Winserver紹介資料
Windows Server専門のホスティングサービス「Winserver(ウィンサーバー)」の基本資料です。
各サービスの概要、特徴をまとめています。