そのタイトルはおそらく最も明確ではありません。私はansibleを使用して、次の形式でシェルコマンド(このためのモジュールはありません)を介して何かを構成しようとしています:
dsconf dirname backend index add --index-type arg1 --index-type arg2 --attr attr1 userRoot
私をつまずかせているのは、-index-typeオプション-異なるパラメーターを使用して1回以上呼び出される可能性があることです。
次の変数を定義しています。
indexes:
- name: "attr1"
indextype:
- "arg1"
- name: "attr2"
indextype:
- "arg1"
- "arg2"
しかし、-index-typeの可変数のパラメーターを処理するタスクを作成する方法がわかりません。単純で明らかに間違った例として:
- command: "dsconf {{ host_name }} backend index add --reindex --index-type {{ item.indextype }} --attr {{ item.name }} userRoot"
register: index
with_items:
- "{{ indexes }}"
これにより、「-index-type [arg1、arg2]」になります。「--index-typearg1--index-type arg2」のように、引数ごとに--index-typeを繰り返す必要があります。
ネストされたアイテムとサブ要素を使用して組み込みでこれに対処する方法について、いくつかの良い例(このリンクなど)を見つけましたが、それをシェルコマンドに変換する方法がわかりません。また、このスタックオーバーフローの質問は近いものでしたが、ネストされたアイテムを引数のパラメーターとして使用し、必要な回数だけ引数を繰り返すのではなく、ネストされたアイテム自体を引数として結合しています。
これを行う良い方法はありますか?このようにサブ要素リストに完全な引数とパラメーターを含めてから、2番目の例のように結合することができます。
- name: "attr2"
indextype:
- "--index-type arg1"
- "--index-type arg2"
しかし、少しきれいなものを望んでいました。任意のアイデアをいただければ幸いです。または、そうであれば、なぜ私がこれを完全に間違っているのかについての説明。:-)ありがとう。
---編集---
そうですね、次のようにリファクタリングすると機能します。
- name: "attr1"
parameters:
- "--index-type arg1"
- "--index-type arg1"
- command: "dsconf {{ host_name }} backend index add --reindex {{ item.parameters | join(' ') }} --attr {{ item.name }} userRoot"
register: index
with_items:
- "{{ indexes }}"
最初に尋ねられたようにこれに対処する方法があるかどうかはまだ興味がありますが、必要に応じてこのアプローチで確実に作業できます。
Q:「-index-typeの可変数のパラメーターを処理します」
A:それがJinjaの目的です。例えば
- debug:
msg: "{{ cmd_part1 }}{{ cmd_part2 }}{{ cmd_part3 }}"
loop: "{{ indexes }}"
vars:
cmd_part1: "dsconf options"
cmd_part3: " --attr {{ item.name }} userRoot"
cmd_part2: |-
{% for i in item.indextype %} --index-type {{ i }}{% endfor %}
与える(要約)
msg: dsconf options --index-type arg1 --attr attr1 userRoot
msg: dsconf options --index-type arg1 --index-type arg2 --attr attr2 userRoot
YAMLブロックスタイルを参照してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加