[解決済み] Ansibleで複数行のシェルスクリプトを実行する方法
2022-04-25 18:22:16
質問
今、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つ注意点があります。
shell
コマンドを使用するため、上記は一般的に期待通りに動作しますが、以下は期待通りには動作しません。
- shell: |
cat <<EOF
This is a test.
EOF
Ansibleは実際にそのテキストを先行するスペースでレンダリングします。
EOF
を行頭に置くことができます。 Ansibleの役に立たないヒューリスティックを避けるには、行頭で
cmd
パラメータは次のようになります。
- shell:
cmd: |
cat <<EOF
This is a test.
EOF
関連
-
[解決済み] パラメータを指定したZSHエイリアス
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] シェルで、「2>&1」はどういう意味ですか?
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] Bashシェルスクリプトの入力引数の存在確認
-
[解決済み] シェルスクリプトでYYYY-MM-DD形式の日付にする
-
[解決済み] シェルスクリプトで部分文字列を別の文字列に置き換える
-
[解決済み] パターンの前に改行を挿入するには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] date: 余分なオペランド %d' エラー
-
シェルwhileループのエラー曖昧なリダイレクトとwhileループの変数割り当て失敗問題
-
シェルスクリプト、判定文エラー [: 引数が多すぎる
-
[解決済み] makefileでシェル環境変数を取得するには?
-
[解決済み】Bashで複数行のコメントを作成する方法は?
-
[解決済み】シェルスクリプトの終了時にバックグラウンドプロセスやジョブを強制終了するにはどうすればいいですか?
-
[解決済み】Curlでレスポンスと一緒にhttpステータスコードも返すようにした
-
[解決済み】2つのファイルに共通する行を検索するシェルコマンド
-
[解決済み] POSIX shで文字列が他の文字列を含んでいるかどうかを判断するにはどうすればよいですか?
-
[解決済み] makefileでシェル環境変数を取得するには?