84
- name: Go to the folder
  command: chdir=/opt/tools/temp

プレイブックを実行すると、次のようになります。

TASK: [Go to the folder] ***************************** 
failed: [host] => {"failed": true, "rc": 256}
msg: no command given

どんな助けでも大歓迎です。

4

4 に答える 4

116

Ansible には現在のディレクトリの概念はありません。プレイブックで行ったように、特定のタスクの現在のディレクトリを指定できます。唯一欠けていたのは、実際に実行するコマンドでした。これを試して:

- name: Go to the folder and execute command
  command: chdir=/opt/tools/temp ls
于 2013-10-15T04:22:58.343 に答える
33

chdirこの質問は、 Ansible 1.9 に戻さなければならなかったときに「シェル」が自分のエントリを尊重していなかった理由を理解しようとしていたときの結果にありました。だから私は私の解決策を投稿します。

私が持っていた

- name: task name
  shell:
    cmd: touch foobar
    creates: foobar
    chdir: /usr/lib/foobar

Ansible > 2 で動作しましたが、1.9 では変更する必要がありました。

- name: task name
  shell: touch foobar
  args:
    creates: foobar
    chdir: /usr/lib/foobar

共有したかっただけです。

于 2016-04-28T20:37:55.193 に答える
10

ログイン コンソールが必要な場合 (バンドラー用など)、次のようなコマンドを実行する必要があります。

command: bash -lc "cd /path/to/folder && bundle install"

于 2014-06-02T12:53:25.143 に答える