Ansibleのset_factを使用して、レジスタの結果から辞書を作成する
2023-08-30 16:26:56
質問
Ansibleで、私は
register
という変数にタスクの結果を保存します。
people
. いらないものを省くと、こんな構造になっている。
{
"results": [
{
"item": {
"name": "Bob"
},
"stdout": "male"
},
{
"item": {
"name": "Thelma"
},
"stdout": "female"
}
]
}
に続く
set_fact
タスクで、このような辞書を持つ新しい変数を生成します。
{
"Bob": "male",
"Thelma": "female"
}
これは可能かもしれませんが、今のところうまくいかずに堂々巡りをしています。
どのように解決するのですか?
最終的にたどり着いたと思います。
タスクはこんな感じです。
- name: Populate genders
set_fact:
genders: "{{ genders|default({}) | combine( {item.item.name: item.stdout} ) }}"
with_items: "{{ people.results }}"
これは、各ダイコンをループして (
item
) をループします。
people.results
のような新しいディクショナリーを作成します。
{Bob: "male"}
のような新しいディクショナリーを作成し、さらに
combine()
は、その新しいディクショ ンを
genders
のような配列で終わります。
{
"Bob": "male",
"Thelma": "female"
}
キーを想定している(
name
は一意であると仮定しています。
を使ってループさせるのがずっと簡単なので、私は実際に辞書のリストが欲しいことに気づきました。
with_items
:
- name: Populate genders
set_fact:
genders: "{{ genders|default([]) + [ {'name': item.item.name, 'gender': item.stdout} ] }}"
with_items: "{{ people.results }}"
これは、既存のリストと単一のdictを含むリストとを結合し続けています。最終的には
genders
のような配列になります。
[
{'name': 'Bob', 'gender': 'male'},
{'name': 'Thelma', 'gender': 'female'}
]
関連
-
[解決済み] リモートシステムでAnsibleタスクを使用してファイルを移動/リネームする方法
-
[解決済み] Ansibleでディレクトリを作成する方法
-
[解決済み] Ansibleのロールのdefaultsとvarsの違いは何ですか?
-
[解決済み] Ansible - 変数が定義されていない場合は、デフォルトを使用する
-
[解決済み] 現在実行中の ansible-playbook へのパスを持つ変数?
-
[解決済み] ansibleのインベントリファイルでhost_key_checking=falseを設定するには?
-
[解決済み] Ansible playbook の hosts 変数をコマンドラインからオーバーライドする
-
[解決済み] ansibleでファイルをロールに相対的にコピーする方法とは?
-
[解決済み] Ansibleで任意のリモートユーザーのホームディレクトリを取得する方法とは?
-
[解決済み] Ansibleです。Ansible Playbook で Active Directory を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ansible共通モジュール
-
[解決済み] YAML の文字列を複数行に渡って分割するには?
-
[解決済み] Ansibleのロールのdefaultsとvarsの違いは何ですか?
-
[解決済み] Ansible hosts ファイルに定義されている現在のマシンのホスト名を取得する方法は?
-
[解決済み] Ansible がホームディレクトリに .retry ファイルを作成しないようにするにはどうすればよいですか?
-
[解決済み] Ansible - 変数が定義されていない場合は、デフォルトを使用する
-
[解決済み] Ansible playbook の hosts 変数をコマンドラインからオーバーライドする
-
[解決済み] ホストがグループに属していない場合のみ、タスクを実行する
-
[解決済み] テンプレートモジュールを異なる変数セットで使用するには?
-
[解決済み] Ansibleです。Ansible Playbook で Active Directory を変更するには?