Ansible: 前のジョブの状態を返す

Ansible: 前のジョブの状態を返す

私は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

関連情報