管理者がansible-playbookを使用してリモートWindowsシステムで実行できるいくつかの操作を紹介します.
Ansibleは、今日の市場で最も使用されているDevOpsツールの1つです。これは、Windowsサーバーの構成と管理に使用される一連のWindowsモジュールを提供します。 Windowsサーバーを管理する場所から既にWindowsにAnsibleがインストールされていると思います.
以下は、Windows管理者が日常的に実行する一般的に使用されるタスクの一部です。あなたはそれがAnsibleを使用してWindowsがいかに簡単に管理されるかを見て驚かれることでしょう.
Ansible WindowsコントローラーマシンのIPアドレスは192.168.0.106で、リモートWindowsシステムのIPアドレスは192.168.0.102です。始める前に、win_pingモジュールを実行して、Windowsリモートサーバーに接続できるかどうかを確認してください。.
[メール保護] 〜
$ ansible win -m win_ping
192.168.0.102 |成功=> {
"かわった":false,
"ping": "ピンポン"
}
リモートホストへの接続が成功した.
それでは、Ansible Playbooksから始めましょう…
Contents
ファイルをコピーする
win_copyは、ローカルサーバーからリモートWindowsホストにファイルをコピーするansibleモジュールです。このモジュールを使用して単一のPDFをコピーします.
以下のYAMLコードを使用して、ソースと宛先のパスを指定します.
[メール保護] 〜
$ vi copy.yml
—
– ホスト:勝利
タスク:
– 名前:ファイルのコピー
win_copy:
src:C:\ output.pdf
宛先:C:\ ansible_examples \
remote_src:はい
win_copyのansible-playbookを実行します。.
[メール保護] 〜
$ ansible-playbook copy.yml
PLAY [勝利] ********************************************** ************************************************** ***********************************
タスク[情報収集] ********************************************* ************************************************** ************************
ok:[192.168.0.102]
タスク[ファイルのコピー] ********************************************* ************************************************** ******************************
変更:[192.168.0.102]
再生の要約************************************************ ************************************************** *********************************
192.168.0.102
:ok = 2変更済み= 1到達不能= 0失敗= 0
スキップ= 0救出= 0無視= 0
ファイルは、リモートWindowsシステムの宛先の場所に正常にコピーされました.
MSIのインストール/アンインストール
MSIファイルを使用してアプリケーションをインストールするには、win_get_urlを使用してダウンロードするMSIファイルのパスを記述し、win_packageモジュールを使用してインストールする必要があります。現在の状態とは、MSIがマシンにインストールされ、アプリケーションが現在の状態であることを意味します.
ここでは、Apacheをインストールしています.
使用するYAMLコード:
[メール保護] 〜
$ vi msi.yml
—
– 名前:Apache MSIのインストール
ホスト:勝利
タスク:
– 名前:Apacheインストーラーをダウンロード
win_get_url:
url:https://archive.apache.org/dist/httpd/binaries/win32/httpd-2.2.25-win32-x86-no_ssl.msi
dest:C:\ ansible_examples \ httpd-2.2.25-win32-x86-no_ssl.msi
– 名前:MSIをインストールします
win_package:
パス:C:\ ansible_examples \ httpd-2.2.25-win32-x86-no_ssl.msi
状態:あり
MSIを使用してインストールするansible-playbookを実行します.
[メール保護] 〜
$ ansible-playbook msi.yml
PLAY [Apache MSIのインストール] ******************************************** ************************************************** *******************
タスク[情報収集] ********************************************* ************************************************** ************************
ok:[192.168.0.102]
TASK [Apacheインストーラーをダウンロード] ******************************************* ************************************************** ************
変更:[192.168.0.102]
タスク[MSIのインストール] ********************************************* ************************************************** ****************************
変更:[192.168.0.102]
再生の要約************************************************ ************************************************** *********************************
192.168.0.102
:ok = 3 changed = 2 unreachable = 0 failed = 0
スキップ= 0救出= 0無視= 0
次に、Windowsシステムに移動し、Apacheアプリケーションが正常にインストールされたかどうかを確認します.
C:\ Users \ geekflare>cd C:\ Program Files(x86)\ Apache Software Foundation \ Apache2.2 \ bin
C:\ Program Files(x86)\ Apache Software Foundation \ Apache2.2 \ bin>httpd -v
サーバーのバージョン:Apache / 2.2.25(Win32)
サーバーの構築:2013年7月10日01:52:12
引数付きのMSIを使用してアプリケーションをインストールすることもできます。以下は上記と同じ例ですが、状態の代わりに、インストール引数を使用してApacheをインストールしています.
使用するYAMLコード:
—
– 名前:Apache MSIのインストール
ホスト:勝利
タスク:
– 名前:Apacheインストーラーをダウンロード
win_get_url:
url:https://archive.apache.org/dist/httpd/binaries/win32/httpd-2.2.25-win32-x86-no_ssl.msi
dest:C:\ ansible_examples \ httpd-2.2.25-win32-x86-no_ssl.msi
– 名前:MSIをインストールします
win_package:
パス:C:\ ansible_examples \ httpd-2.2.25-win32-x86-no_ssl.msi
引数:
– /インストール
– /受動的
– / norestart
MSIファイルを使用してアプリケーションをアンインストールするには、win_packageモジュールを使用する必要があります。状態がない場合、アプリケーションはMSIファイルを使用してアンインストールされます.
ここでは、Apacheをアンインストールしています.
[メール保護] 〜
$ vi uninstall_msi.yml
—
– 名前:Apache MSIのアンインストール
ホスト:勝利
タスク:
– 名前:MSIのアンインストール
win_package:
パス:C:\ ansible_examples \ httpd-2.2.25-win32-x86-no_ssl.msi
状態:不在
ansible-playbookを実行して、MSIを使用してアンインストールします.
[メール保護] 〜
$ ansible-playbook uninstall_msi.yml
PLAY [Apache MSIのアンインストール] ******************************************** ************************************************** *******************
タスク[情報収集] ********************************************* ************************************************** ************************
ok:[192.168.0.102]
タスク[MSIのアンインストール] ********************************************* ************************************************** **************************
変更:[192.168.0.102]
再生の要約************************************************ ************************************************** *********************************
192.168.0.102
:ok = 2変更済み= 1到達不能= 0失敗= 0
スキップ= 0救出= 0無視= 0
今、私がApacheのバージョンを確認すると、アプリケーションがアンインストールされたときに以下の出力が得られます.
C:\ Program Files(x86)\ Apache Software Foundation \ Apache2.2 \ bin>httpd -v ‘httpd’は内部または外部コマンドとして認識されません,
操作可能なプログラムまたはバッチファイル.
ソフトウェアのアンインストール(.EXE)
また、そのソフトウェアの製品IDを使用して、.exeファイルでソフトウェアをアンインストールすることもできます。.
[メール保護] 〜
$ vi uninstall.yml
—
– ホスト:勝利
タスク:
– 名前:exeから7-Zipをアンインストールします
win_package:
パス:C:\ Program Files \ 7-Zip \ Uninstall.exe
product_id:7-Zip
引数:/ S
状態:不在
ansible-playbookを実行して7-Zipをアンインストールします.
[メール保護] 〜
$ ansible-playbook uninstall.yml
PLAY [勝利] ********************************************** ************************************************** ************************************************** ***********************************
タスク[情報収集] ********************************************* ************************************************** ************************************************** ************************
ok:[192.168.0.102]
タスク[exeから7-Zipをアンインストール] **************************************** ************************************************** ************************************************** ***************
変更:[192.168.0.102]
再生の要約************************************************ ************************************************** ************************************************** *********************************
192.168.0.102:ok = 2変更済み= 1到達不能= 0失敗= 0スキップ済み= 0救出済み= 0無視済み= 0
Windowsサービスの停止/開始/再起動
win_service ansibleモジュールは、サービスを開始、停止、または再起動するために使用されます。ここでは、tomcatサービスを停止する方法を紹介します.
YAMLファイルでサービス名を記述し、状態を停止に設定する必要があります.
[メール保護] 〜
$ vi service.yml
—
– ホスト:勝利
タスク:
– 名前:サービスTomcatを停止します
win_service:
名前:Tomcat8
状態:停止
ansible-playbookを実行してTomcatサービスを停止します.
[メール保護] 〜
$ ansible-playbook service.yml
PLAY [勝利] ********************************************** ************************************************** ***********************************
タスク[情報収集] ********************************************* ************************************************** ************************
ok:[192.168.0.102]
TASK [サービスTomcatの停止] ******************************************** ************************************************** ******************
変更:[192.168.0.102]
再生の要約************************************************ ************************************************** *********************************
192.168.0.102
:ok = 2変更済み= 1到達不能= 0失敗= 0
スキップ= 0救出= 0無視= 0
WindowsシステムでTomcatサービスを確認すると、停止状態になっています.
サービスのステータスを変更するために、開始または再起動または一時停止する状態を定義できます.
事実の収集
win_disk_facts ansibleモジュールを使用すると、ターゲットホストのすべてのディスク情報を取得できます.
[メール保護] 〜
$ vi disk.yml
—
– ホスト:勝利
タスク:
– 名前:ディスクファクトを取得する
win_disk_facts:
– 名前:最初のディスクサイズを出力
デバッグ:
変数:ansible_facts.disks [0] .size
– 名前:最初のシステムディスクをさまざまな形式に変換する
デバッグ:
msg: ‘{{disksize_gib}} vs {{disksize_gib_human}}’
変数:
#最初のシステムディスクを取得する
ディスク: ‘{{ansible_facts.disks | selectattr("system_disk")|最初の}} ‘
#ディスクサイズをギビバイトで表示
disksize_gib_human: ‘{{disk.size | filesizeformat(true)}}’
disksize_gib: ‘{{(disk.size / 1024 | pow(3))| round | int}} GiB’
ansible-playbookを実行してディスク情報を取得します.
[メール保護] 〜
$ ansible-playbook disk.yml
PLAY [勝利] ********************************************** ************************************************** ***********************************
タスク[情報収集] ********************************************* ************************************************** ************************
ok:[192.168.0.102]
タスク[ディスクファクトの取得] ******************************************** ************************************************** **************************
ok:[192.168.0.102]
TASK [最初のディスクサイズを出力] ******************************************* ************************************************** *******************
ok:[192.168.0.102] => {
"ansible_facts.disks [0] .size": "1000204886016"
}
タスク[最初のシステムディスクをさまざまな形式に変換する] **************************************** ************************************************
ok:[192.168.0.102] => {
"メッセージ": "932 GiB対931.5 GiB"
}
再生の要約************************************************ ************************************************** *********************************
192.168.0.102
:ok = 4 changed = 0 unreachable = 0 failed = 0
スキップ= 0救出= 0無視= 0
win_command ansibleモジュールを使用して、リモートホストでコマンドを実行し、CPU情報、デバイスの詳細などを取得できます.
[メール保護] 〜
$ vi check.yml
—
– ホスト:勝利
タスク:
– 名前:ディスクファクトを取得する
win_command:wmic cpu get caption、deviceid、name、numberofcores、maxclockspeed、status
登録:使用法
– デバッグ:msg ="{{usage.stdout}}"
ansible-playbookを実行してリモートシステム情報を取得する.
[メール保護] 〜
$ ansible-playbook check.yml
PLAY [勝利] ********************************************** ************************************************** ***********************************
タスク[情報収集] ********************************************* ************************************************** ************************
ok:[192.168.0.102]
タスク[事実を入手] ********************************************* ************************************************** *************************
変更:[192.168.0.102]
タスク[デバッグ] ********************************************** ************************************************** *********************************
ok:[192.168.0.102] => {
"メッセージ": "キャプションDeviceID MaxClockSpeed
名前
NumberOfCoresステータス\ r \ r \ nIntel64ファミリー6モデル142ステッピング9 CPU0 2712 Intel(R)Core(TM)i5-7200U CPU @ 2.50GHz 2 OK \ r \ r \ n \ r \ r \ n"
}
再生の要約************************************************ ************************************************** *********************************
192.168.0.102
:ok = 3変更済み= 1到達不能= 0失敗= 0
skipped = 0、rescued = 0
無視されました= 0
コマンドの実行
ウィンドウで実行するコマンドが何であれ、それらはansible win_commandモジュールを介して実行できます。 YAMLファイルでコマンドを指定するだけです。ここでは、ディレクトリを作成しています.
[メール保護] 〜
$ vi commands.yml
—
– ホスト:勝利
タスク:
– 名前:win_commandを使用して実行可能ファイルを実行します
win_command:whoami.exe
– 名前:cmdコマンドを実行する
win_command:cmd.exe / c mkdir C:\ test
ansible-playbookを実行してwin_command操作を実行します.
[メール保護] 〜
$ ansible-playbook commands.yml
PLAY [勝利] ********************************************** ************************************************** ***********************************
タスク[情報収集] ********************************************* ************************************************** ************************
ok:[192.168.0.102]
TASK [win_commandを使用して実行可能ファイルを実行] ****************************************** ************************************************** *******
変更:[192.168.0.102]
TASK [cmdコマンドを実行] ******************************************* ************************************************** ************************
変更:[192.168.0.102]
再生の要約************************************************ ************************************************** *********************************
192.168.0.102
:ok = 3 changed = 2 unreachable = 0 failed = 0
スキップ= 0救出= 0無視= 0
環境変数
Windowsシステムには、JAVA_HOMEなどの複数の環境変数があります。 win_environment ansibleモジュールを使用すると、Windowsシステムで環境変数を追加または変更できます。この例では、Windows環境変数リストに新しい変数を追加しています.
[メール保護] 〜
$ vi env.yml
—
– ホスト:勝利
タスク:
– name:すべてのユーザーの環境変数を設定します
win_environment:
状態:あり
名前:NewVariable
値:新しい値
レベル:機械
ansible-playbookを実行して、リモートのWindowsマシンに環境変数を追加します。.
[メール保護] 〜
$ ansible-playbook env.yml
PLAY [勝利] ********************************************** ************************************************** ***********************************
タスク[情報収集] ********************************************* ************************************************** ************************
ok:[192.168.0.102]
TASK [すべてのユーザーの環境変数を設定] **************************************** ************************************************** ***
変更:[192.168.0.102]
再生の要約************************************************ ************************************************** *********************************
192.168.0.102
:ok = 2変更済み= 1到達不能= 0失敗= 0
スキップ= 0救出= 0無視= 0
環境変数ウィンドウに移動します。追加したばかりの新しい変数がここに表示されます.
レジストリの追加/編集
win_regedit ansibleモジュールは、リモートのWindowsマシンでレジストリの詳細を追加または編集するために使用されます。追加/更新するレジストリとコンテンツのパスを指定する必要があります。ここで、HKLM:\ SOFTWAREパス内に新しいレジストリエントリGeekFlareを作成し、このレジストリに名前とデータを追加しています。.
[メール保護] 〜
$ vi registry.yml
—
– ホスト:勝利
タスク:
– 名前:レジストリの作成
win_regedit:
パス:HKLM:\ SOFTWARE \ GeekFlare
– 名前:レジストリの変更、名前とデータの追加
win_regedit:
パス:HKLM:\ SOFTWARE \ GeekFlare
名前:オタク
データ:フレア
ansible-playbookを実行してレジストリを追加します.
[メール保護] 〜
$ ansible-playbook registry.yml
PLAY [勝利] ********************************************** ************************************************** ***********************************
タスク[情報収集] ********************************************* ************************************************** ************************
ok:[192.168.0.102]
タスク[レジストリの作成] ******************************************** ************************************************** *********************
変更:[192.168.0.102]
タスク[レジストリの変更、名前とデータの追加] *************************************** ************************************************** ***
変更:[192.168.0.102]
再生の要約************************************************ ************************************************** *********************************
192.168.0.102
:ok = 3 changed = 2 unreachable = 0 failed = 0
スキップ= 0救出= 0無視= 0
リモートシステムのレジストリエディターに移動すると、このレジストリがNameパラメーターとDataパラメーターで正常に追加されていることがわかります。.
ログを削除
win_eventlog ansibleモジュールは、WindowsシステムからWindowsイベントログを追加、クリア、または削除するために使用されます.
Windows Powershellに移動し、リモートWindowsマシンに存在するEventLogsをリストします.
PS C:\ Users \ Geekflare> Get-EventLog -List
Max(K)オーバーフローアクションエントリログを保持
—— —— ————– ——- —
20,480 0 OverwriteAsNeeded 33,549アプリケーション
20,480 0 OverwriteAsNeeded 0 HardwareEvents
512 7 OverwriteOlder 20 Internet Explorer
20,480 0 OverwriteAsNeeded 0キー管理サービス
128 0 OverwriteAsNeeded 190 Oアラート
安全保障
20,480 0 OverwriteAsNeeded 44,828システム
15,360 0 OverwriteAsNeeded 3,662 Windows PowerShell
次に、Internet Explorerのすべてのソースからログを削除する方法を示します.
[メール保護] 〜
$ vi log.yml
—
– ホスト:勝利
タスク:
– 名前:Internet Explorerログを削除
win_eventlog:
名前:Internet Explorer
状態:不在
ansible-playbookを実行して、リモートのWindowsマシンからInternet Explorerを削除します。.
[メール保護] 〜
$ ansible-playbook log.yml
PLAY [勝利] ********************************************** ************************************************** ************************************************** ***********************************
タスク[情報収集] ********************************************* ************************************************** ************************************************** ************************
ok:[192.168.0.102]
タスク[Internet Explorerログを削除] ******************************************* ************************************************** *************************************************
変更:[192.168.0.102]
再生の要約************************************************ ************************************************** ************************************************** *********************************
192.168.0.102:ok = 2変更済み= 1到達不能= 0失敗= 0スキップ済み= 0救出済み= 0無視済み= 0
ここで、EventLogsを再度一覧表示すると、Internet Explorerのログが削除されていることがわかります.
PS C:\ Users \ Geekflare> Get-EventLog -List
Max(K)オーバーフローアクションエントリログを保持
—— —— ————– ——- —
20,480 0 OverwriteAsNeeded 33,549アプリケーション
20,480 0 OverwriteAsNeeded 0 HardwareEvents
20,480 0 OverwriteAsNeeded 0キー管理サービス
128 0 OverwriteAsNeeded 190 Oアラート
安全保障
20,480 0 OverwriteAsNeeded 44,835システム
15,360 0 OverwriteAsNeeded 56 Windows PowerShell
つまり、リモートWindows管理に使用できるAnsibleプレイブックについては以上です。これらのプレイブックを試してみてください。また、他の Ansible Windowsモジュール 利用可能.
タグ:
アンシブル