2016-07-04 4 views
6

this post을 검사하고 두 답변에서 수정 사항을 수행했지만 어느 것도 작동하지 않았습니다. 그 때문에 부분적으로 새 게시물을 여는 중이며 부분적으로는 문제가 동일 할 수도 있지만 약간 다른 오류가 발생하기 때문입니다.Anagers는 도커가 설치된 경우에도 py를 가져올 수 없습니다.

Ansible 호스트 :

$ ansible --version 
ansible 2.1.0.0 
    config file = /etc/ansible/ansible.cfg 
    configured module search path = Default w/o overrides 

대상 클라이언트 MYSERVER :

$ pip list | egrep 'six|docker|websocket_client' 
docker-py (1.2.3) 
six (1.10.0) 

test.yml :

--- 
- hosts: myserver 
    remote_user: root 
    tasks: 
    - name: stop any running docker registries 
    docker_container: 
     name: registry 
     state: stopped 
... 

Ansible 서버 (ansible-플레이 북 AP 별칭) :

,999,145,

출력 :

(아마도 외부 출력은 냈다) :

fatal: [myserver]: FAILED! => { 
    "changed": false, 
    "failed": true, 
    "invocation": { 
     "module_args": { 
      "api_version": null, 
      "blkio_weight": null, 
      "cacert_path": null, 
      "capabilities": null, 
      "cert_path": null, 
      "command": null, 
      "cpu_period": null, 
      "cpu_quota": null, 
      "cpu_shares": null, 
      "cpuset_cpus": null, 
      "cpuset_mems": null, 
      "debug": false, 
      "detach": true, 
      "devices": null, 
      "dns_opts": null, 
      "dns_search_domains": null, 
      "dns_servers": null, 
      "docker_host": null, 
      "entrypoint": null, 
      "env": null, 
      "etc_hosts": null, 
      "exposed_ports": null, 
      "filter_logger": false, 
      "force_kill": false, 
      "groups": null, 
      "hostname": null, 
      "image": null, 
      "interactive": false, 
      "ipc_mode": null, 
      "keep_volumes": true, 
      "kernel_memory": null, 
      "key_path": null, 
      "kill_signal": null, 
      "labels": null, 
      "links": null, 
      "log_driver": 
      "json-file", 
      "log_options": null, 
      "mac_address": null, 
      "memory": "0", 
      "memory_reservation": null, 
      "memory_swap": null, 
      "memory_swappiness": null, 
      "name": "registry", 
      "network_mode": null, 
      "networks": null, 
      "oom_killer": null, 
      "paused": false, 
      "pid_mode": null, 
      "privileged": false, 
      "published_ports": null, 
      "pull": false, 
      "read_only": false, 
      "recreate": false, 
      "restart": false, 
      "restart_policy": null, 
      "restart_retries": 0, 
      "security_opts": null, 
      "shm_size": null, 
      "ssl_version": null, 
      "state": "stopped", 
      "stop_signal": null, 
      "stop_timeout": null, 
      "timeout": null, 
      "tls": null, 
      "tls_hostname": null, 
      "tls_verify": null, 
      "trust_image_content": false, 
      "tty": false, 
      "ulimits": null, 
      "user": null, 
      "uts": null, 
      "volume_driver": null, 
      "volumes": null, 
      "volumes_from": null 
     }, 
     "module_name": "docker_container" 
    }, 
    "msg": 

합니다 (관련 오류) : 나는 다운 그레이드 할 때 "Failed to import docker-py - cannot import name NotFound. Try pip install docker-py"}

내가 같은 오류가 참조 된 게시물의 첫 번째 답변에 따라 docker-py 모듈을 1.1.0으로 설정합니다. 또한 디렉토리를 chmod를 위해 시도하고 차이하지 : chmod -R go+rx docker*에서

(/usr/lib/python2.7/site-packages) myserver$ ls -lad docker* 
drwxr-xr-x. 6 root root 4096 Jul 4 10:57 docker/ 
drwxr-xr-x. 2 root root 4096 Jul 4 10:57 docker_py-1.2.3-py2.7.egg-info/ 

합니다.

이전에 본 사람이 있습니까? 나는 모듈을 설치하기 위해 pip 안전 모듈을 사용해 보았다. 수동으로 제거한 후에 참조 된 포스트에서 수동으로 다시 설치했다. 2.1.0.0도 사용하고 있습니다. 보시다시피,이 문제를 해결하기로되어있었습니다.

답변

0

* 모듈은 최신 정말하지 않은 고정 표시기에 대한 ansible의 설명서에 고정 표시기-PY 모듈에 대한 요구 사항은, 그러나 일반적으로 여기에 몇 가지 ansible입니다 - 작동합니다 고정 표시기 - 평 쌍 :

  • 2.1.0.0은 적어도 docker-py 버전 1.7.0 이상이 필요하며, 적어도 클라이언트에 docker 1.9가 설치되어 있어야합니다.

  • docker의 이전 버전을 사용해야하는 경우 docker 1.7을 2.0.1.0 및 docker-py 1.4.0 버전과 함께 사용할 수 있습니다. 당신이 고정 표시기의 경우에도 이전 버전이 필요하면

  • , 1.6처럼 당신은 파이썬 모듈 dockerdocker-py의 새 버전이 ansible 사용이 호환되지 그 때문이다

  • 1.9 ansible
+1

건배,하지만 난 서버에 2.1.0.0있어,와 함께 1.7.0 고정 표시기-평을 시도으로 1.11 도커에서! avail. 필자는 레지스트리 컨테이너를 항상 name = registry로 시작한 다음 불량배에'docker ps --filter = name = registry -q'를 사용하여 출력을 var로 등록한 다음에 좌절 된 사람들을위한 해결 방법을 제시합니다. 'docker stop {{docker_regID.stdout}}'등의 쉘 명령을 사용하십시오. – volvox

+0

@SztupY 리모컨에 Docker가 설치되어 있거나 로컬에 설치되어 있어야합니다. 실제로 Docker Daemon을 통해 통신하고 있습니까? – Breedly

3

함께 붙어있다. 나는 PIP 패키지의 다음 버전을 지정할 다시 명시 적으로 복귀했다 :

  • 고정 표시기 : 2.0.0
  • 고정 표시기-평 : 1.10.이 6

샘플 각본 작업 :

- name: install certain python modules for docker 
    pip: 
    name: "{{ item.name }}" 
    version: "{{ item.version }}" 
    state: present 
    with_items: 
    - { name: docker, version: 2.0.0 } 
    - { name: docker-py, version: 1.10.6 } 

내 모든 놀이 책은 그 이후 잘 작동합니다.

2

나를 위해 docker-py 경로를 지정했습니다.

- hosts: <host> 
    environment: 
    PYTHONPATH: "/home/path/.local/lib/python2.7/site-packages" 

기본적으로 가능성이 잘못된 디렉토리를 찾고 있습니다. 문제에 대한 그의 위대한 기사를위한 클레이 그레이엄에

전체 신용 :

https://medium.com/dronzebot/ansible-and-docker-py-path-issues-and-resolving-them-e3834d5bb79a

+0

문제의 포인터 주셔서 감사합니다. 문제는 원격 Docker 호스트 (RHEL7)가 python-urllib3 패키지를 /usr/lib/python2.6/에/usr/lib/python2.7 /. 클레이 그래함 (Clay Graham)이 묘사 한대로 필자의 가능한 스크립트에서 PYTHONPATH를 확장하면 다시 나에게 갈거야. – Bernie

관련 문제