Ansibleで複数行のシェルスクリプトを実行する方法

ルガーデンフォックス:

現在、私は複数行にある場合にはるかに読みやすいansibleでシェルスクリプトを使用しています

- name: iterate user groups
  shell: groupmod -o -g {{ item['guid'] }} {{ item['username'] }} ....more stuff to do
  with_items: "{{ users }}"

Ansibleシェルモジュールで複数行スクリプトを許可する方法がわからない

ラーク:

Ansibleは、プレイブックでYAML構文を使用しています。YAMLにはいくつかのブロック演算子があります。

  • >折りたたみブロック演算子です。つまり、複数の行をスペースで結合します。次の構文:

    key: >
      This text
      has multiple
      lines
    

    に値This text has multiple lines\n割り当てますkey

  • |文字はリテラルブロック演算子です。これはおそらく、複数行のシェルスクリプトに必要なものです。次の構文:

    key: |
      This text
      has multiple
      lines
    

    に値This text\nhas multiple\nlines\n割り当てますkey

これは、次のような複数行のシェルスクリプトに使用できます。

- name: iterate user groups
  shell: |
    groupmod -o -g {{ item['guid'] }} {{ item['username'] }} 
    do_some_stuff_here
    and_some_other_stuff
  with_items: "{{ users }}"

注意点が1つあります。Ansibleはshellコマンドへの引数のぎこちない操作を行うため、上記は通常期待どおりに機能しますが、以下は機能しません。

- shell: |
    cat <<EOF
    This is a test.
    EOF

Ansibleは実際にテキストを先行スペースでレンダリングします。つまり、シェルはEOF行の先頭で文字列見つけることはありません次のcmdようなパラメーターを使用することで、Ansibleの役に立たないヒューリスティックを回避できます。

- shell:
    cmd: |
      cat <<EOF
      This is a test.
      EOF

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

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

編集
0

コメントを追加

0

関連記事

TOP 一覧

  1. 1

    どのように関係なく、それがどのように「悪い」、すべてのSSL証明書でのHttpClientを使用しないように

  2. 2

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  3. 3

    Modbus Python Schneider PM5300

  4. 4

    System.Data.OracleClient.OracleException:ORA-06550:行1、列7:

  5. 5

    scala.xmlノードを正しく比較する方法は?

  6. 6

    インデックス作成時のドキュメントの順序は、Elasticsearchの検索パフォーマンスを向上させますか?

  7. 7

    Elasticsearch - あいまい検索は、提案を与えていません

  8. 8

    グラフ(.PNG)ファイルをエクスポートするZabbix

  9. 9

    Ansibleで複数行のシェルスクリプトを実行する方法

  10. 10

    変数値を含むElasticSearch検索結果

  11. 11

    Elasticsearchでサーバー操作を最適化:低いディスク透かしに対処する

  12. 12

    Python / SciPyのピーク検出アルゴリズム

  13. 13

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  14. 14

    テキストフィールドの値に基づいて UIslider を移動します

  15. 15

    Chromeウェブアプリのウェブビューの高さの問題

  16. 16

    NGX-ブートストラップ:ドロップダウンに選択したアイテムが表示されない

  17. 17

    Reactでclsxを使用する方法

  18. 18

    STSでループプロセス「クラスパス通知の送信」のループを停止する方法

  19. 19

    Pushwooshで削除されたアプリデバイストークンを処理する方法は?

  20. 20

    ラベルとエントリがpythontkinterに表示されないのはなぜですか?

  21. 21

    Elasticsearchの場合、間隔を空けた単語を使用したワイルドカード検索

ホットタグ

アーカイブ