2

Ansible の Docker モジュールを使用してプライベート DockerHub リポジトリから Docker イメージをプルする際に問題が発生したため、コードの健全性を確認するために、最初にシェルを使用して問題のイメージをプルすることにしました。これも失敗します。何が起きてる?ボックスに SSH で接続すると、シェルでまったく同じコマンドを実行でき、適切なイメージをプルして機能します。

分離されたプレイ例:

---
- hosts: <host-ip>
  gather_facts: True
  remote_user: ubuntu
  sudo: yes

  tasks:
  - include_vars: vars/client_vars.yml
  - name: Pull stardog docker image [private]
    shell: sudo docker pull {{stardog_docker_repo}}

  - name: Tag stardog docker image [private]
    shell: sudo docker tag {{stardog_docker_repo}} stardog_tag

出力されているエラーは次のとおりです。

failed: [<host-ip>] => {"changed": true, "cmd": "sudo docker pull <org>/<image>:latest", "delta": "0:00:01.395931", "end": "2015-08-05 17:35:22.480811", "rc": 1, "start": "2015-08-05 17:35:21.084880", "warnings": []}
stderr: Error: image <org>/<image>:latest not found
stdout: Pulling repository <org>/<image>

FATAL: all hosts have already failed -- aborting

注意: 私は自分の<org>and を<image>サニタイズしましたが、Playbook のイメージ識別子とエラー ログが完全に一致することを保証します。

$ sudo docker pull <org>/<image>:latest

私はさまざまな GitHub の問題 ( Docker モジュールを使用したときに発生したものなど)、ライブラリに関連するパッチなどを認識docker-pyしていますが、ここでは Ansibleshellモジュールを使用しているだけです。私は何を逃したのですか?

4

2 に答える 2

3

私の同僚が何かを指摘しました - をログに記録すると、make がデフォルトで docker コマンドを実行するため、ユーザーの Docker 資格情報が取得されないenvことがわかります。このプレイブックは機能します (このプレイブックに関連して、フォルダーに有効なものがあると仮定します。sudo: yesrootubuntudockercfg.jsondocker

---
- hosts: <host-ip>
  gather_facts: True
  remote_user: ubuntu
  sudo: yes

  tasks:
  - include_vars: vars/client_vars.yml
  # run the docker tasks

  - name: Add docker credentials for ubuntu user
    copy: src=docker/dockercfg.json dest=/root/.dockercfg

  - name: Get env
    shell: sudo env
    register: sudo_env

  - name: Debug
    debug: msg="{{sudo_env}}"

  - name: Pull stardog docker image [private]
    shell: docker pull {{stardog_docker_repo}}

  - name: Tag stardog docker image [private]
    shell: docker tag {{stardog_docker_repo}} stardog_tag

これによりroot、適切な DockerHub クレデンシャルが付与されます。または、各プレイに追加sudo: falseし、各shell呼び出しで sudo inline を使用してubuntuユーザーとして実行することもできます。

于 2015-08-05T17:38:18.807 に答える