アプリケーション自体の前にいくつかの前提条件(Visual C++ランタイムとdotNetフレームワーク)をインストールする必要があるWindowsアプリケーションを展開するためのプレイブックを作成しています。これらの前提条件は.EXEファイルであり、すべて特定のフォルダーに含まれています。
(特に)パラメータ「/ install/passive」を使用して、必須フォルダ内の各.EXEファイルを実行するAnsibleプレイブックを作成したい
プレイブックで各ファイル名を指定する必要はありません。
私のアイデアは、最初に「win_file」モジュールを使用して前提条件のセットアップファイルを見つけ、その結果を変数に割り当て、変数を反復処理して、含まれるファイルごとに「win_command」モジュールを実行することでした。
残念ながら、registerステートメントを使用してwin_findの結果を変数に割り当てることはできません。それは、単に何もしません。
これが私が試したものです:
- hosts: "{{ target }}"
tasks:
- name: Find files in path
win_find:
register: myvar
paths: E:\Temp\Prognosis_11.2\Prerequisites
- name: debug
debug:
msg: "{{ myvar }}"
そして、-v(詳細モード)で実行したときのプレイブックの出力:
タスク[パス内のファイルを検索] ******************************************* ************************************************** ************************************************** ***********
ok:[SMN001] => {"changed":false、 "examined":5、 "files":[{"attributes": "Archive"、 "checksum": "3049a85843eaf65e89e2336d5fe6e85e416797be"、 "creationtime":1550942958.6690862、 "extension ":"。exe "、"ファイル名 ":" NDP46-KB3045557-x86-x64-AllOS-ENU.exe "、" isarchive ":true、" isdir ":false、" ishidden ":false、" islnk ":false 、 "isreadonly":false、 "isshared":false、 "lastaccesstime":1550942958.6690862、 "lastwritetime":1459427148、 "owner": "BUILTIN\Administrators"、 "path": "E:\ Temp\Prognosis_11.2\Prerequisites\NDP46-KB3045557-x86-x64-AllOS-ENU.exe "、" size ":65444688}、{" attributes ":" Archive "、" checksum ":" 8bf41ba9eef02d30635a10433817dbb6886da5a2 "、" creationtime ":1550942958.7627323、" extension " ".exe"、 "filename": "vcredist2013_x64.exe"、 "isarchive":true、 "isdir":false、 "ishidden":false、 "islnk":false、 "isreadonly":false、 "isshared":false 、 "lastaccesstime":1550942958.7627323、 "lastwritetime":1489501866、 "owner": "BUILTIN\Administrators"、 "path": "E:\ Temp\Prognosis_11.2\Prerequisite s\vcredist2013_x64.exe "、" size ":7194312}、{"属性 ":"アーカイブ "、"チェックサム ":" df7f0a73bfa077e483e51bfb97f5e2eceedfb6a3 "、"作成時間 ":1550942958.7779777、"拡張子 ":"。exe "vcredist2013_x86.exe"、 "isarchive":true、 "isdir":false、 "ishidden":false、 "islnk":false、 "isreadonly":false、 "isshared":false、 "lastaccesstime":1550942958.7779777、 "lastwritetime ":1489501866、"所有者 ":" BUILTIN\Administrators "、"パス ":" E:\ Temp\Prognosis_11.2\Prerequisites\vcredist2013_x86.exe "、"サイズ ":6503984}、{"属性 ":"アーカイブ " 、 "チェックサム": "007064d974a55940838f19cd0b0e3aaf27ca06a7"、 "creationtime":1550942958.7939014、 "extension": ".exe"、 "filename": "vcredist2017_x64.exe"、 "isarchive":true、 "isdir":false、 "ishidden": false、 "islnk":false、 "isreadonly":false、 "isshared":false、 "lastaccesstime":1550942958.7939014、 "lastwritetime":1488965662、 "owner": "BUILTIN\Administrators"、 "path": "E:\ Temp\Prognosis_11.2\Prerequisites\vcredist2017_x64.exe "、" size ":15261400}、{" attrib utes ":"アーカイブ "、"チェックサム ":" ba1f7e7cace62f7c55ab948cd3b29acc4e8e2329 "、" creationtime ":1550942958.8406758、" extension ":" .exe "、" filename ":" vcredist2017_x86.exe "、" isarchive ":true、" isdir false、「ishidden」:false、「islnk」:false、「isreadonly」:false、「isshared」:false、「lastaccesstime」:1550942958.8406758、「lastwritetime」:1488965662、「所有者」:「BUILTIN\Administrators」、「パス":" E:\ Temp\Prognosis_11.2\Prerequisites\vcredist2017_x86.exe "、" size ":14401656}]、" matched ":5}
タスク[デバッグ] ********************************************** ************************************************** ************************************************** *********************
致命的:[SMN001]:失敗しました! => {"msg": "タスクに未定義の変数を持つオプションが含まれています。エラーは次のとおりです: 'myvar'は未定義です\ n\nエラーは '/etc/ansible/playbooks/test_find_files.yaml'にあったようです:行18、列5。ただし、正確な構文の問題によっては、\ nファイルの別の場所にある可能性があります。\ n\n問題の行は次のようです:\ n\n\n-名前:デバッグ\ n ^ここ\ n "}
ご覧のとおり、ファイルは適切に検出されていますが、「myvar」変数は割り当てられているはずですが、存在していません。
このページによると、このロジックはLinuxホストで機能するようです: http://www.mydailytutorials.com/using-ansible-find-module-search-filesfolder/ (ref "ファイルの保存ページ下部の「レジスター内の名前」)。
Win_findモジュール自体に問題があるのでしょうか。何かご意見は?
ありがとう!
それは単なるタイプミスです、あなたのregister:
インデントが大きすぎます。
次のように表示されます。
- name: Find files in path
win_find:
paths: E:\Temp\Prognosis_11.2\Prerequisites
register: myvar