Ansible-varsからの1つ以上のパラメーターを使用してシェルコマンドを実行します

ジャレド

そのタイトルはおそらく最も明確ではありません。私は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]

編集
0

コメントを追加

0

関連記事

分類Dev

ファイルをコピーし、ansibleを使用して特定のコマンドを実行しますか?

分類Dev

Ansibleを使用して、実行中のDockerコンテナ内でシェルコマンドを実行します

分類Dev

ansibleのjinja2テンプレートでシェルコマンドを実行できますか?

分類Dev

Ansibleは私のコマンドをどのユーザーとして実行しますか?

分類Dev

kubectlまたはコマンド、スクリプトなどの他のansibleモジュールを使用して、ポッドでシェルコマンドを実行します

分類Dev

単一のアドホックコマンドを使用して、ansibleで複数のモジュールを実行できますか?

分類Dev

Ansible:シェルがないユーザーとしてコマンドを実行する方法

分類Dev

ansibleを使用してLinuxホストからWindowsターゲットホストでcmdコマンドを実行します

分類Dev

ansibleでシェルコマンドの出力を確認しています

分類Dev

現在の ansible プロセスの変数を使用して、ansible ホストから ansible-playbook でコマンドを実行する

分類Dev

--extra-varsを使用して、実行時に変数としてansibleロールを使用できますか?

分類Dev

Ansible-with_itemsを使用してシェルコマンドの出力にアクセスします

分類Dev

ansibleを使用してvarsフラグに基づいてファイルをマシンにコピーするにはどうすればよいですか?

分類Dev

別のsshユーザーとしてホストからリモートマシンにコピーする場合、ansibleコマンド/シェルを介したrsyncは永久に待機します

分類Dev

Ansibleによって実行されるシェルコマンドで変数を補間します

分類Dev

Ansibleを使用してコマンドを実行する

分類Dev

Ansibleを使用してPowerShellコマンドを実行する

分類Dev

Jenkinsパイプラインのシェルスクリプトを介してansibleプレイブックを実行すると、エコー出力がバッファリングされ、リアルタイムで表示されません

分類Dev

Ansible:「sudosu -c <COMMAND> <USER>」を使用して別のユーザーとしてコマンドを実行するにはどうすればよいですか?

分類Dev

Ansible でいくつかのコマンドを実行する

分類Dev

Ansible-シェルコマンドの出力を変数に渡します

分類Dev

ゼロを返すシェルコマンドのAnsibleエラー

分類Dev

シェルコマンドからの出力がない場合、Ansibleレジスタは失敗します

分類Dev

ローカルホストで1つのansibleプレイブックタスクを実行してから、リモートサーバーで別のタスクを実行します

分類Dev

Ansible:別のユーザーとしてコマンドを実行しますが、sudoでは実行しません

分類Dev

Ansibleを使用してパラメーターのリストをPowershellに渡す

分類Dev

アドホックコマンドを使用して、ホストまたはグループのすべてのAnsible変数を一覧表示しますか?

分類Dev

Ansible:コマンドラインからインベントリのansible_hostを上書きします

分類Dev

Python Ansible APIは、リモートノードではなくコントロールノードでのみコマンドを実行します

Related 関連記事

  1. 1

    ファイルをコピーし、ansibleを使用して特定のコマンドを実行しますか?

  2. 2

    Ansibleを使用して、実行中のDockerコンテナ内でシェルコマンドを実行します

  3. 3

    ansibleのjinja2テンプレートでシェルコマンドを実行できますか?

  4. 4

    Ansibleは私のコマンドをどのユーザーとして実行しますか?

  5. 5

    kubectlまたはコマンド、スクリプトなどの他のansibleモジュールを使用して、ポッドでシェルコマンドを実行します

  6. 6

    単一のアドホックコマンドを使用して、ansibleで複数のモジュールを実行できますか?

  7. 7

    Ansible:シェルがないユーザーとしてコマンドを実行する方法

  8. 8

    ansibleを使用してLinuxホストからWindowsターゲットホストでcmdコマンドを実行します

  9. 9

    ansibleでシェルコマンドの出力を確認しています

  10. 10

    現在の ansible プロセスの変数を使用して、ansible ホストから ansible-playbook でコマンドを実行する

  11. 11

    --extra-varsを使用して、実行時に変数としてansibleロールを使用できますか?

  12. 12

    Ansible-with_itemsを使用してシェルコマンドの出力にアクセスします

  13. 13

    ansibleを使用してvarsフラグに基づいてファイルをマシンにコピーするにはどうすればよいですか?

  14. 14

    別のsshユーザーとしてホストからリモートマシンにコピーする場合、ansibleコマンド/シェルを介したrsyncは永久に待機します

  15. 15

    Ansibleによって実行されるシェルコマンドで変数を補間します

  16. 16

    Ansibleを使用してコマンドを実行する

  17. 17

    Ansibleを使用してPowerShellコマンドを実行する

  18. 18

    Jenkinsパイプラインのシェルスクリプトを介してansibleプレイブックを実行すると、エコー出力がバッファリングされ、リアルタイムで表示されません

  19. 19

    Ansible:「sudosu -c <COMMAND> <USER>」を使用して別のユーザーとしてコマンドを実行するにはどうすればよいですか?

  20. 20

    Ansible でいくつかのコマンドを実行する

  21. 21

    Ansible-シェルコマンドの出力を変数に渡します

  22. 22

    ゼロを返すシェルコマンドのAnsibleエラー

  23. 23

    シェルコマンドからの出力がない場合、Ansibleレジスタは失敗します

  24. 24

    ローカルホストで1つのansibleプレイブックタスクを実行してから、リモートサーバーで別のタスクを実行します

  25. 25

    Ansible:別のユーザーとしてコマンドを実行しますが、sudoでは実行しません

  26. 26

    Ansibleを使用してパラメーターのリストをPowershellに渡す

  27. 27

    アドホックコマンドを使用して、ホストまたはグループのすべてのAnsible変数を一覧表示しますか?

  28. 28

    Ansible:コマンドラインからインベントリのansible_hostを上書きします

  29. 29

    Python Ansible APIは、リモートノードではなくコントロールノードでのみコマンドを実行します

ホットタグ

アーカイブ