- 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
どんな助けでも大歓迎です。
- 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
どんな助けでも大歓迎です。
Ansible には現在のディレクトリの概念はありません。プレイブックで行ったように、特定のタスクの現在のディレクトリを指定できます。唯一欠けていたのは、実際に実行するコマンドでした。これを試して:
- name: Go to the folder and execute command
command: chdir=/opt/tools/temp ls
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
共有したかっただけです。
ログイン コンソールが必要な場合 (バンドラー用など)、次のようなコマンドを実行する必要があります。
command: bash -lc "cd /path/to/folder && bundle install"