インストールされているすべてのyumパッケージをRHELマシンに取得しようとしています。べき等ではないシェルコマンドを使用して簡単に取得でき、代わりにyumコマンドを使用したいと思います。
シェルコマンドは正常に機能します:
- name: yum list packages
shell: yum list installed > build_server_info.config
しかし、yumコマンドを使おうとすると、実行されるだけで結果が得られません。
- name: yum_command
action: yum list=${pkg} list=available
べき等ではないシェルコマンドを使用して簡単に取得できます
マシンの現在の状態を照会しているときは、べき等について実際に話すことはできません。
「Idempontent」とは、特定のタスクを何度実行しても、タスクがマシンを目的の状態に保つことを意味します。
現在の状態を照会するとき、目的の状態を記述しません。何をするにしても、どの方法を使用するにしても、「べき等」という用語は当てはまりません。
結果が得られない例については、同じ引数を2回繰り返したlist
ので、タスクは失敗するはずです(失敗しない、Ansibleの癖のように見えます)。
インストールされているパッケージのリストを取得するには、次を使用する必要があります。
- name: yum_command
yum:
list=installed
register: yum_packages
- debug:
var: yum_packages
各パッケージを説明する辞書のリストを変数に保存しますyum_packages
。
次に、JSONクエリフィルターを使用して単一のパッケージを取得できます(tar
):
- debug: var=item
with_items: "{{yum_packages|json_query(jsonquery)}}"
vars:
jsonquery: "results[?name=='tar']"
このような結果を得るには:
"item": {
"arch": "x86_64",
"epoch": "2",
"name": "tar",
"nevra": "2:tar-1.26-31.el7.x86_64",
"release": "31.el7",
"repo": "installed",
"version": "1.26",
"yumstate": "installed"
}
またはそのバージョンのみ:
- debug: var=item
with_items: "{{yum_packages|json_query(jsonquery)}}"
vars:
jsonquery: "results[?name=='tar'].version"
"item": "1.26"
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加