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

落ちた

私は、ansibleプレイブックを介して実行され、stdoutを介して次の出力を返すPythonスクリプトを作成しました。

- { username: ansible, admin: yes}
- { username: test, admin: no }

次に、出力を変数「users」に保存し、「with_items」(または新しい「loop」条件付き)を使用して、各ユーザーに適切なアクセス許可を個別に割り当てるために変数を反復処理します。

- name: execute python script
  command: "python3 /tmp/parse_string.py --user_permissions={{ user_permissions }}"
  register: output

- name: register
  set_fact:
    users: "{{ output.stdout }}"

- name: output
  debug: msg="{{ users }}"

- name: Add user to group -admin
  user:
    name={{ item.username }}
    groups=admin
    append=yes
    state=present
  when: "item.admin == yes"
  with_items: '{{users}}

ただし、プレイブックを起動すると、変数「users」には属性「username」がないと表示されます。

TASK [create_users : output] ***************************************************
ok: [ansible] => {
    "msg": "- { username: ansible, admin: yes }\n- { username: test, admin: no }\n- { username: test2, admin: no }"
}
TASK [create_users : Add user to group -admin ***************
fatal: [ansible]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'ansible.utils.unsafe_proxy.AnsibleUnsafeText object' has no attribute 'username'\n\nThe error appears to be in '***': line 29, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: \n  ^ here\n"}

誰かがこの事件で私を助けることができますか?

BR

Zeitounator

usersvarを文字列に設定しています。この文字列はデータ構造のyaml表現であることが起こりますが、ansibleには現時点ではそれについての手がかりがありません。

要件を達成するには、その文字列をyamlとして解析し、結果を登録する必要があります。幸いなことに、その目的のためのfrom_yamlフィルターがあります

set_factタスクを次のように変更するだけで、すべてが期待どおりに機能するはずです。

- name: register
  set_fact:
    users: "{{ output.stdout | from_yaml }}"

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

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

分類Dev

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

分類Dev

with_itemsを使用してAnsibleで複数のコマンドを実行するにはどうすればよいですか?

分類Dev

Kubectlコマンドを使用してAnsibleでRancherクラスターにアクセスする方法

分類Dev

Ansible Python APIを使用して、コード内のタスクレベルの出力にアクセスするにはどうすればよいですか?

分類Dev

Ansibleタスクの各アイテムを条件としてwith_itemsを選択しますか?

分類Dev

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

分類Dev

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

分類Dev

アドホックコマンドからコマンドラインにAnsible変数を出力します

分類Dev

Ansibleシェルとwith_items

分類Dev

ansibleのwith_itemsを使用してGoogleスプレッドシートAPIのデータの各行を解析するにはどうすればよいですか?

分類Dev

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

分類Dev

VMは、ansibleシェルタスクを使用して実行されたvirshコマンドには表示されません

分類Dev

AnsibleのADコマンド出力を消費します

分類Dev

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

分類Dev

ループ内でwith_dictを使用してAnsibleタスクを作成する方法(with_items)

分類Dev

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

分類Dev

コマンドの出力をansibleの変数に格納します

分類Dev

Ansibleプレイブックで「with_items」と「when」を使用してリポジトリのクローンを作成しようとしています

分類Dev

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

分類Dev

Ansibleはwith_itemsを条件付きでループしますか?

分類Dev

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

分類Dev

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

分類Dev

シェル/コマンドモジュールなしで「systemctlset-defaultgraphical.target」のAnsibleタスクを作成するにはどうすればよいですか?

分類Dev

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

分類Dev

ansibleでchownコマンドを使用していますか?

分類Dev

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

分類Dev

Ansible:ansibleはregexpをアセンブルして特定のファイルをアセンブルします

分類Dev

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

Related 関連記事

  1. 1

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

  2. 2

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

  3. 3

    with_itemsを使用してAnsibleで複数のコマンドを実行するにはどうすればよいですか?

  4. 4

    Kubectlコマンドを使用してAnsibleでRancherクラスターにアクセスする方法

  5. 5

    Ansible Python APIを使用して、コード内のタスクレベルの出力にアクセスするにはどうすればよいですか?

  6. 6

    Ansibleタスクの各アイテムを条件としてwith_itemsを選択しますか?

  7. 7

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

  8. 8

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

  9. 9

    アドホックコマンドからコマンドラインにAnsible変数を出力します

  10. 10

    Ansibleシェルとwith_items

  11. 11

    ansibleのwith_itemsを使用してGoogleスプレッドシートAPIのデータの各行を解析するにはどうすればよいですか?

  12. 12

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

  13. 13

    VMは、ansibleシェルタスクを使用して実行されたvirshコマンドには表示されません

  14. 14

    AnsibleのADコマンド出力を消費します

  15. 15

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

  16. 16

    ループ内でwith_dictを使用してAnsibleタスクを作成する方法(with_items)

  17. 17

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

  18. 18

    コマンドの出力をansibleの変数に格納します

  19. 19

    Ansibleプレイブックで「with_items」と「when」を使用してリポジトリのクローンを作成しようとしています

  20. 20

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

  21. 21

    Ansibleはwith_itemsを条件付きでループしますか?

  22. 22

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

  23. 23

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

  24. 24

    シェル/コマンドモジュールなしで「systemctlset-defaultgraphical.target」のAnsibleタスクを作成するにはどうすればよいですか?

  25. 25

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

  26. 26

    ansibleでchownコマンドを使用していますか?

  27. 27

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

  28. 28

    Ansible:ansibleはregexpをアセンブルして特定のファイルをアセンブルします

  29. 29

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

ホットタグ

アーカイブ