1. ホーム
  2. module

[解決済み] ansible : 複数のコマンドを渡す方法

2023-03-13 10:08:16

質問

こんなことをやってみました。

- command: ./configure chdir=/src/package/
- command: /usr/bin/make chdir=/src/package/
- command: /usr/bin/make install chdir=/src/package/

というのがあって、これはうまくいくのですが、もっと何か...きちんとしたものがあると思います。

そこで、これを試してみました。

から https://stackoverflow.com/questions/24043561/multiple-commands-in-the-same-line-for-bruker-topspin と表示され、「そのようなファイルやディレクトリはありません。

- command: ./configure;/usr/bin/make;/usr/bin/make install chdir=/src/package/

これも試してみました。 https://u.osu.edu/hasnan.1/2013/12/16/ansible-run-multiple-commands-using-command-module-and-with-items/

を入れるのですが、正しい構文が見つかりませんでした。

- command: "{{ item }}" chdir=/src/package/
  with_items:
      ./configure
      /usr/bin/make
      /usr/bin/make install

これは、引用の問題があると言って、動作しません。

誰かいませんか?

どのように解決するのですか?

YAML の値が中括弧で始まっている場合 ( { ) で始まる場合、YAML パーサーはその値が 辞書 . ですので、このように値の中に (Jinja2) 変数がある場合、YAML パーサーを混乱させないために、次の2つの戦略のうちの1つを採用する必要があります。

コマンド全体を引用する。

- command: "{{ item }} chdir=/src/package/"
  with_items:
  - ./configure
  - /usr/bin/make
  - /usr/bin/make install    

のようにするか、引数の順番を変更する。

- command: chdir=/src/package/ {{ item }}
  with_items:
  - ./configure
  - /usr/bin/make
  - /usr/bin/make install

RamondelaFuente の代替案をありがとうございました。