かべぎわブログ

技術的なことについてかけたらいいな…

AnsibleからWindowsServerへファイルをコピーする方法

Ansibleを利用してWindowsServerへファイルをコピーする方法をご紹介します。

設定手順

AnsibleからWindowsを操作するためにはWindows側とAnsible側の両方にすこし準備が必要です。
AnsibleはターゲットのサーバにWindows Remote Manager(WinRM)を利用してアクセスを行いますので、それを有効にする必要があります。

WindowsServerの設定

PowerShellのバージョンを確認する

AnsibleでWindowsを操作するためにはWindows側にPowershell3.0以上がインストールされている必要があります。
ただ、基本的にWindows Server2012R2=4.x WindowsServer2016=5.x なのでよっぽど古いバージョンを使用していない限りは何も問題無いかと思います。

PS C:\Users\Administrator> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.14393.1358
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.14393.1358
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

セットアップスクリプトを実行してWinRMを有効化する

Ansible公式が提供しているWinRMのセットアップスクリプトをダウンロードして実行していきます。

セットアップスクリプトのダウンロード

PS C:\Users\Administrator> Invoke-WebRequest -Uri https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1 -OutFile ConfigureRemotingForAnsible.ps1

セットアップスクリプトの実行

PS C:\Users\Administrator> powershell -ExecutionPolicy RemoteSigned .\ConfigureRemotingForAnsible.ps1 -SkipNetworkProfileCheck

Ansibleの設定

pipでpywinrmをインストールします
これだけです

[ec2-user@ip-172-22-68-157 ~]$ sudo pip install pywinrm

動作確認

設定が完了したので動作確認としてAnsibleでテキストファイルをWindowsServer上のディレクトリに配置できるかどうかためして見たいと思います。

コマンド実行

Ansibleサーバ上のtest.txtをWindowsServer上のC:\work\配下にコピーするコマンドを実行してみます。

$ ansible windows  -i ansible_hosts -m win_copy -a "src=./test.txt dest=C:\work\\"

Ansibleに読み込ませるhostsファイル

以下のファイルをansible_hostsとして読み込ませてコマンドを実行してみます。

[windows]
172.14.1.1

[windows:vars]
ansible_user=kabegiwa
ansible_password=wawawa
ansible_port=5986
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore

** 実行結果確認 WindowsServer上にtest.txtが無事格納されていることがわかります。

PS C:\work> dir test.txt

    ディレクトリ: C:\work

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2018/01/16     17:22              0 test.txt

Ansible実践ガイド

Ansible実践ガイド