2016-03-26 20 views
6

Docker-composeとdockerのすべての依存関係がインストールされていますが、docker-composeをインストールするとエラーが発生します。ドロッパーはCentOS7環境で作成します。Docker-composeをインストールする際にエラーが発生する

#ensure docker-compose and chmod +x /usr/local/bin/docker-compose 
    - name: Ensure docker-compose is installed and available 
    command: curl -L https://github.com/docker/compose/releases/download/1.7.0-rc1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose 
    - name: Ensure permissions docker-compose 
    command: chmod +x /usr/local/bin/docker-compose 

次のエラーが表示されます

TASK: [Ensure docker-compose is installed and available] ********************** 
failed: [nutrilife-aws] => {"changed": true, "cmd": ["curl", "-L", "https://github.com/docker/compose/releases/download/1.7.0-rc1/docker-compose-`uname", "-s`-`uname", "-m`", ">", "/usr/local/bin/docker-compose"], "delta": "0:00:00.004592", "end": "2016-03-26 14:19:41.852780", "rc": 2, "start": "2016-03-26 14:19:41.848188", "warnings": ["Consider using get_url module rather than running curl"]} 
stderr: curl: option -s`-`uname: is unknown 
curl: try 'curl --help' or 'curl --manual' for more information 

FATAL: all hosts have already failed -- aborting 

PLAY RECAP ******************************************************************** 
      to retry, use: --limit @/home/mmaia/playbook.retry 

nutrilife-aws    : ok=4 changed=0 unreachable=0 failed=1 

私は一種の時間のカップルのために、この単純なエラーで立ち往生しています。私は標準のドッカーサイトからコマンドを受け取り、シェルで直接テストして動作します。 私はまた、二重引用符を使用して、コマンド "curl ..."のようなコマンドをラップすることを試みましたが、エラーを変更しませんでした。

答えて

13

pointed outhelloVとして、あなたは、シェル拡張またはシェルの環境変数のようなものを利用したい場合はshellモジュールを使用する必要があります。

しかし、Ansibleでは、通常、上位モジュールを使用する方がよく、別のモジュールで必要なことを行うことができない場合は、shellまたはcommandモジュールに頼ってください。このアプローチは、簡単な冪等性やより良い出力の可視性など、自由に実行できるように制御します。

get_url(あなたがこのモジュールでもっと良いと思われるカールで殻をつけようとすると、Anabilitiesは実際にあなたに警告すると思いますが)インターネットから物事を取り出すことができます。上記のタスクは、あなたのタスクは、LinuxシステムまたはOSのいずれかで細かい実行する必要がありますように、ターゲットとホスト上gathering factsによって返される特別な変数を使用しています

- name: Ensure docker-compose is installed and available 
    get_url: 
     url : https://github.com/docker/compose/releases/download/1.7.0-rc1/docker-compose-{{ ansible_system }}-{{ ansible_userspace_architecture }} 
     dest: /usr/local/bin/docker-compose 
     mode: 'u+x,g+x' 

あなたのケースでは、あなたのタスクは、次のようになりますX(Windowsリンクが動作するには条件付き接尾辞.exeが必要です。もちろん、別の宛先パスなどが必要です)。

また、fileモジュールのmodeパラメータを使用して、ユーザーとグループの実行権限を追加して、chmodタスクを回避できます。

+0

これは賢明な提案のように見えますが、より良い "良い習慣"と思われるので、試してみてください。ありがとうございました! –

+0

あなたの答えは私を大いに助けました。 yamlリストに 'linux-image-extra-$(uname -r)'をパッケージとしてインストールする必要がありましたが、できませんでした。 Gooleが私にこのページを紹介しました。あなたが「事実を集める」ことについてのあなたの意見は私を助けました。 これで 'linux-image-extra - {{ansible_kernel}}'でインストールできます。 ありがとう –

+1

インターネットでファイルをダウンロードする際に 'checksum'を使うことをお勧めします。 –

5

commandはシェルで処理されません。 shellを使用してください。

- name: Ensure docker-compose is installed and available 
    shell: curl -L https://github.com/docker/compose/releases/download/1.7.0-rc1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose 
+0

ええ、それはうまくいきました。本当にありがとう。 –

関連する問題