2017-01-27 21 views
-1

私はこのようなパッケージを(例として)ubuntuにインストールしようとすると、apt-ableに変数を登録しないでください

- name: Install gcc 
    apt: 
    name: gcc 
    state: present 
    allow_unauthenticated: yes 
    register: aptout 

gccがインストールされていないかどうかに関わらず、私はaptoutのためにこれを取得します。

- debug: 
    msg: "Status is {{ aptout }}" 

"msg": "Status is {'skipped': True, 'changed': False, 'skip_reason': u'Conditional check failed'}" 

私はパッケージが既にnot aptout.changedaptout.changedを使用してインストールされている場合、私はタスクをスキップできるように、このチェックを登録したかったが、それは適切に変数を登録することがないように思われます。

これは、redhat/centosでうまく動作しますが、Ubuntuで問題を把握できません。

+1

[MCVE](https://stackoverflow.com/help/mcve)を投稿してください。何をすべきか混乱している場合は、この質問のコード(現在実行しているコードではなく)から開始し、投稿したエラーが発生するまで追加します。あなたがそれを手に入れたら、完全なコード(現在実行している完全なものではなく、問題を再現するために必要な最小限のコード)を投稿してください。 – techraf

+0

お試し[これ](http://chaosmail.github.io/programming/2015/03/04/install-deb-packages-in-ansible/) – Roopendra

答えて

1

すべてが期待通りに機能します。

apt_out = { 'skipped': True, 
      'changed': False, 
      'skip_reason': u'Conditional check failed'} 

Ansibleは、あなたのタスクが実行されていないことを言う:(なぜあなたは例の中に含まれていませんでした?)skipped: true、理由偽条件で。

イベントがこのタスクを開始しなかったため、gccがインストールされているかどうかはわかりません。

+0

あなたは2.1または2.2を使用していますか(私は2.1を使用しています) ? gccがインストールされているかどうかにかかわらず、問題はそれが続けているということです。もともとサーバ上になければスキップされてはいけません。 – user1165419

+0

@ user1165419あなたはあなたのプレイブックの実行中にfalseと評価される 'when'ステートメントを使用します。これがあなたのタスクがスキップされた理由です。 'when'ステートメントを削除すると、タスクは常に' changed'値を与えて実行されます。 –

+0

あなたは正しいです。私は完全なプレイブックを投稿する必要がある、私は起こっていると思うのは、同じ変数を使用して、ubuntuとcentosの両方のgccをインストールしようとしているということです。だから私はubuntu用にインストールしたいときに、それをインストールし(変数を '変更'として登録する)、次にセントロをスキップします(スキップされた同じ変数を登録します)。タスクがスキップされたときに変数の登録を避ける方法を見つける必要があります。 – user1165419

関連する問題