AnsibleでWindowsを操作するための準備手順を紹介

構成管理ツールである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オンライン相談会実施中▲相談会についてはこちら▲

Winserver紹介資料

Winserver紹介資料

Windows Server専門のホスティングサービス「Winserver(ウィンサーバー)」の基本資料です。
各サービスの概要、特徴をまとめています。

Winserver紹介資料

Winserver紹介資料

Windows Server専門のホスティングサービス「Winserver(ウィンサーバー)」の基本資料です。
各サービスの概要、特徴をまとめています。

資料をダウンロードする

Windows環境を利用するなら!
WinserverのVPS
稼働率99.99%・メモリ完全保証

▶ プランを見る

関連記事

サーバーの基礎知識

TOP
CLOSE