インストールされているWindows機能を確認するためのプレイブックを作成しようとしています。それらがインストールされている場合、それらをスキップする必要があります。そうでなければ、私のvarsのリストからインストールしてください。jsonとの互換性のあるwith_items条件付きチェック
- name: win command
win_command: 'powershell.exe "Get-WindowsFeature | Where Installed | Select -exp Name | ConvertTo-Json"'
register: result
- name: Register vars
set_fact:
featureinstalled: '{{ result.stdout | from_json }}'
- name: Installing features
win_feature:
name: '{{ item }}'
state: Present
with_items:
'{{features_to_install}}'
when: '{{ item }} != {{ featureinstalled }}'
マイfeatures_to_installのVARS別々の/ VARS /ファイルに:
---
features_to_install: [FileAndStorage-Services,File-Services,.....]
私は機能がJSONに存在する場合脚本は機能のインストールをスキップしたいです。 。Imは取得エラー:
は{ "失敗":真、 "MSGを":「'!{{}} = {{featureinstalled}}アイテムの失敗エラーが条件付きのチェックだった:しばらくテンプレートエラーテンプレートテンプレート: トークン '、'、 'got' string:{%ならFileAndStorage-Services!= [u'FileAndStorage-Services '、 u'Storage-Services'、u'FS-SMB1 '、u 'WoW64-Support']%} True {%else%} False {%endif%} \ n \ nエラーは '/tmp/worldengine/src/roles/webserver/tasks/windows_features.yml' : 行31、列3、ただし、正確な構文の問題 に応じて、ファイル内の他の場所に\ nがある可能性があります。\ n \ nTセットを操作するために利用できる handy filtersがあり
コードを書く前に[docs on 'when](http://docs.ansible.com/ansible/latest/playbooks_conditionals.html#the-when-statement)を読むのはどうですか?また、 '!='演算子はまったく間違っています - "等しくない"とはあなたがチェックしようとしているものではありません - 人間の言葉で表現を声に出して、それを理解します。 – techraf
うまくいってくれました – firebolt