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
- 作者: 北山晋吾
- 出版社/メーカー: インプレス
- 発売日: 2016/12/15
- メディア: Kindle版
- この商品を含むブログ (1件) を見る