私はansibleの操作から戻るためにこのコマンドを使用しています。
成功していることを確認してください。
以下はPlaybookのコードの例です。
- name: Install JDK8
shell: cd /tmp/install/ && tar -zxvf jdk-8u51-linux-x64.tar.gz
- name: Echo Install JDK8
shell: echo $?
端末でプレイブックを実行すると、戻り値は得られません。
echoコマンドを使用して戻り値を取得できますか?
答え1
$を取得しようとしますか?示されたAnsibleコンテキストでは、Ansibleがリモートで実行した最後のコマンドを正常な状態にすることは機能しません。
ドル?現在のシェルで実行された最後のコマンドの状態を返すために使用される変数。
私たちに示した設定では、最後のコマンドの実行がAnsibleに示されているコマンドであるか、同じシェルであるかを保証することはできず、SSHクライアント構成によっては同じSSHセッションではない可能性があります。
Ansible公式ガイドの例によれば、最後に実行されたタスク/コマンドが成功したかどうかに応じて他のタスクを実行するには、次のようにします。
tasks:
- command: /bin/false
register: result
ignore_errors: True
- command: /bin/something
when: result is failed
- command: /bin/something_else
when: result is succeeded
詳細については、次を参照してください。ドキュメント->Ansible->条件
答え2
コード内の2つのシェルコマンドは異なるシェルで実行されます。これは、ansibleが最初のシェルを終了し、2番目のコマンドに対して新しいシェルを起動することを意味します。
シェルコマンドの戻り値が必要な場合は、次の場所に保存されますresult.rc
。
- name: Install JDK8
shell: cd /tmp/install/ && tar -zxvf jdk-8u51-linux-x64.tar.gz
register: result
ignore_errors: true
- debug:
msg: "The return value was: {{ result.rc }}"
shell
タスクは冪等性を好まない。たとえば、このモジュールを試すことができますpackage
。