Ansible: Docker_container рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП docker-py рдЖрдпрд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓

рдХреЛ рдирд┐рд░реНрдорд┐рдд 20 рдЬрдире░ 2017  ┬╖  64рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ansible/ansible

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░

  • рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ
рдШрдЯрдХ рдХрд╛ рдирд╛рдо


docker_container

рдЙрддреНрддрд░ рд╕рдВрд╕реНрдХрд░рдг
- рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджреНрдзрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ "ansible --version" рд╕реЗ рд╡рд░реНрдмреЗрдЯрд┐рдо рдЖрдЙрдЯрдкреБрдЯ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ
ansible 2.3.0 (devel 216e2c8813) last updated 2017/01/20 09:22:29 (GMT +000)
ansible 2.2.0.0 (detached HEAD cdec853e37) last updated 2017/01/20 09:25:31 (GMT +000)
рд╡рд┐рдиреНрдпрд╛рд╕

рдХреБрдЫ рдирд╣реАрдВ рдмрджрд▓рд╛

рдУрдПрд╕ / рдкрд░реНрдпрд╛рд╡рд░рдг


рд▓рд┐рдирдХреНрд╕ рдорд╢реАрди 1 3.16.0-4-amd64 # 1 рдПрд╕рдПрдордкреА рдбреЗрдмрд┐рдпрди 3.16.36-1 + deb8u1 (2016-09-03) x86_64 GNU / рд▓рд┐рдирдХреНрд╕

рдкрд╛рдЗрдк рд╕реВрдЪреА:

pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
backports.ssl-match-hostname (3.5.0.1)
cached-property (1.3.0)
chardet (2.3.0)
colorama (0.3.7)
defusedxml (0.4.1)
docker (2.0.2)
docker-compose (1.10.0)
docker-py (1.10.6)
docker-pycreds (0.2.1)
dockerpty (0.4.1)
docopt (0.6.2)
docutils (0.12)
enum34 (1.1.6)
functools32 (3.2.3.post2)
iotop (0.6)
ipaddress (1.0.18)
jsonschema (2.5.1)
Pillow (2.6.1)
pip (9.0.1)
Pygments (2.0.1)
python-apt (0.9.3.12)
python-debian (0.1.27)
python-debianbts (1.11)
PyYAML (3.12)
reportbug (6.6.3)
requests (2.11.1)
roman (2.0.0)
setuptools (5.5.1)
six (1.10.0)
SOAPpy (0.12.22)
texttable (0.8.7)
websocket-client (0.40.0)
wstools (0.4.3)

рдЕрдЬрдЧрд░ - рдлреИрд▓рд╛рд╡
Python 2.7.9

docker рдЬрд╛рдирдХрд╛рд░реА

Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.12.3
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 0
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge null overlay host
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options:
Kernel Version: 3.16.0-4-amd64
Operating System: Debian GNU/Linux 8 (jessie)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.963 GiB
Name: machine1
ID: PD6F:VQDI:VAK4:O3YU:PWDT:HFAG:T3Z4:FNP5:QLT7:C3TO:7OKS:OODH
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: No memory limit support
WARNING: No swap limit support
WARNING: No kernel memory limit support
WARNING: No oom kill disable support
WARNING: No cpu cfs quota support
WARNING: No cpu cfs period support
Insecure Registries:
 127.0.0.0/8
рд╕рд╛рд░рд╛рдВрд╢

рдЬрдм рдореЙрдбреНрдпреВрд▓ docker_container рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╣рд░ рдмрд╛рд░ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ

"Failed to import docker-py - cannot import name Client. Try `pip install docker-py`"
рдкреНрд░рдЬрдирди рдХрд░рдиреЗ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛
- рдмрдЧ рдХреЗ рд▓рд┐рдП, рдиреНрдпреВрдирддрдо рдкрд░реАрдХреНрд╖рдг-рдорд╛рдорд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рд╕реЗ рдХреИрд╕реЗ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПред рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рджрд┐рдЦрд╛рдПрдВ рдХрд┐ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

  - docker_container:
      image: hello-world
      name: hello
- рдЖрдк рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП gist.github.com рд▓рд┐рдВрдХ рднреА рдкреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо

рдЫрд╡рд┐ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реИред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдгрд╛рдо
- рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ рдерд╛? рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд╛рдЪрд╛рд▓рддрд╛ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдПрдВ (-vvvv)

TASK [docker-registry : docker_container] **************************************
task path: /vagrant/service-playbooks/roles/docker-registry/tasks/registry-server.yml:56
Using module file /home/vagrant/ansible/lib/ansible/modules/core/cloud/docker/docker_container.py
<192.168.77.201> ESTABLISH SSH CONNECTION FOR USER: deploy
<192.168.77.201> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=deploy -o ConnectTimeout=10 -o ControlPath=/home/vagrant/.ansible/cp/ansible-ssh-%h-%p-%r 192.168.77.201 '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1484904632.51-163570270155817 `" && echo ansible-tmp-1484904632.51-163570270155817="` echo $HOME/.ansible/tmp/ansible-tmp-1484904632.51-163570270155817 `" ) && sleep 0'"'"''
<192.168.77.201> PUT /tmp/tmpeXfDvf TO /home/deploy/.ansible/tmp/ansible-tmp-1484904632.51-163570270155817/docker_container.py
<192.168.77.201> SSH: EXEC sftp -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=deploy -o ConnectTimeout=10 -o ControlPath=/home/vagrant/.ansible/cp/ansible-ssh-%h-%p-%r '[192.168.77.201]'
<192.168.77.201> ESTABLISH SSH CONNECTION FOR USER: deploy
<192.168.77.201> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=deploy -o ConnectTimeout=10 -o ControlPath=/home/vagrant/.ansible/cp/ansible-ssh-%h-%p-%r 192.168.77.201 '/bin/sh -c '"'"'chmod u+x /home/deploy/.ansible/tmp/ansible-tmp-1484904632.51-163570270155817/ /home/deploy/.ansible/tmp/ansible-tmp-1484904632.51-163570270155817/docker_container.py && sleep 0'"'"''
<192.168.77.201> ESTABLISH SSH CONNECTION FOR USER: deploy
<192.168.77.201> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=deploy -o ConnectTimeout=10 -o ControlPath=/home/vagrant/.ansible/cp/ansible-ssh-%h-%p-%r -tt 192.168.77.201 '/bin/sh -c '"'"'/usr/bin/python /home/deploy/.ansible/tmp/ansible-tmp-1484904632.51-163570270155817/docker_container.py; rm -rf "/home/deploy/.ansible/tmp/ansible-tmp-1484904632.51-163570270155817/" > /dev/null 2>&1 && sleep 0'"'"''
fatal: [machine_1]: FAILED! => {
    "changed": false,
    "failed": true,
    "invocation": {
        "module_args": {
            "api_version": null,
            "blkio_weight": null,
            "cacert_path": null,
            "capabilities": null,
            "cert_path": null,
            "cleanup": false,
            "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,
            "env_file": null,
            "etc_hosts": null,
            "exposed_ports": null,
            "filter_logger": false,
            "force_kill": false,
            "groups": null,
            "hostname": null,
            "ignore_image": false,
            "image": "hello-world",
            "interactive": false,
            "ipc_mode": null,
            "keep_volumes": true,
            "kernel_memory": null,
            "key_path": null,
            "kill_signal": null,
            "labels": null,
            "links": null,
            "log_driver": null,
            "log_options": null,
            "mac_address": null,
            "memory": "0",
            "memory_reservation": null,
            "memory_swap": null,
            "memory_swappiness": null,
            "name": "hello",
            "network_mode": null,
            "networks": null,
            "oom_killer": null,
            "oom_score_adj": null,
            "paused": false,
            "pid_mode": null,
            "privileged": false,
            "published_ports": null,
            "pull": false,
            "purge_networks": false,
            "read_only": false,
            "recreate": false,
            "restart": false,
            "restart_policy": null,
            "restart_retries": null,
            "security_opts": null,
            "shm_size": null,
            "ssl_version": null,
            "state": "started",
            "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 Client. Try `pip install docker-py`"
}
    to retry, use: --limit @/vagrant/service-playbooks/microservice-infrastructure-no-elastic.retry
affects_2.2 bug cloud docker module

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

docker-py рд╕рд┐рд░реНрдл рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рд╣реИред рдпрд╣ рдбреЙрдХрдЯрд░ рдирд╛рдо рдХреЗ рдПрдХ рдЕрдЬрдЧрд░ рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рджреМрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП:

# python
Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import docker
>>> print(docker.version)
1.10.6
>>>

рдбреЙрдХрд┐рдВрдЧ-рдХрдВрдкреЛрдЬрд╝рд┐рдВрдЧ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╕реЗ рдбреЙрдХ рдкреИрдХреЗрдЬ рдХреЛ рдбреЙрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдирд╣реАрдВ рд╣рдЯрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЖрдкрдХреЗ рдкрд┐рдк рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдареАрдХ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП:

pip uninstall docker
pip uninstall docker-py
pip uninstall docker-compose
pip install docker-compose==1.9.0

рд╕рднреА 64 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@guenhter рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдп 192.168.77.201 рдХреЛ "рддреИрдирд╛рдд" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИред рд╡рд┐рд╡рд░рдг рдореЗрдВ "рдкрд╛рдЗрдк рд╕реВрдЪреА" рдЖрдЙрдЯрдкреБрдЯ рдЙрд╕ рд╣реЛрд╕реНрдЯ рдкрд░ рдЙрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛?

ssh [email protected] 'python -c "import docker-py"'

needs_info

@guenhter
рдпрд╣ рдЖрдкрдХреЗ рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдХрд╛рд░рдг рд╣реИред
Docker-py рдкреИрдХреЗрдЬ рдХреЛ рд╕рдВрд╕реНрдХрд░рдг 2.0 (https://github.com/docker/docker-py/releases/tag/2.0.0) рдореЗрдВ docker рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, Docker.Client рдХреЛ docker.APIClient рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдбреЙрдХрдЯрд░-рд░рдЪрдирд╛ 1.10+ рдХреЛ рдЕрдм docker-py рдХреЗ рдмрдЬрд╛рдп docker рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рдЙрд╕рдХреЗ рдирд╛рдо рдХреЗ рдХрд╛рд░рдг docker рдХрд╛ рдкреИрдХреЗрдЬ docker-py рд╕реЗ рдкрд╣рд▓реЗ PYTHONPATH рдореЗрдВ рдЖрдпрд╛рдд рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рдгреА рд╣реИред
рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдЕрдкрдиреЗ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬ рд╡рд░реНрдЬрди рдХреЛ 1.9.0 рдкрд░ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рдЬрдм рдЖрдВрд╕рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп docker_container рдореЙрдбреНрдпреВрд▓ docker-py рд╕реЗ рдбреЙрдХрдЯрд░ рддрдХ рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред

@jctanner
рдкрд╛рдЗрдк рд╕реВрдЪреА рдЖрдЙрдЯрдкреБрдЯ рдЙрд╕ рд╣реЛрд╕реНрдЯ рд╕реЗ рдерд╛ред рдиреАрдЪреЗ рдХреБрдЫ рдФрд░ рдХрдорд╛рдВрдб рджреЗрдЦреЗрдВ:

ssh [email protected] 'python --version'
--> Python 2.7.9

ssh [email protected] 'python -c "import docker-py"'

--> File "<string>", line 1
    import docker-py
                 ^
SyntaxError: invalid syntax



ssh [email protected] 'pip list'
-->DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
backports.ssl-match-hostname (3.5.0.1)
cached-property (1.3.0)
chardet (2.3.0)
colorama (0.3.7)
defusedxml (0.4.1)
docker (2.0.2)
docker-compose (1.10.0)
docker-py (1.10.6)
docker-pycreds (0.2.1)
dockerpty (0.4.1)
docopt (0.6.2)
docutils (0.12)
enum34 (1.1.6)
functools32 (3.2.3.post2)
iotop (0.6)
ipaddress (1.0.18)
jsonschema (2.5.1)
Pillow (2.6.1)
pip (9.0.1)
Pygments (2.0.1)
python-apt (0.9.3.12)
python-debian (0.1.27)
python-debianbts (1.11)
PyYAML (3.12)
reportbug (6.6.3)
requests (2.11.1)
roman (2.0.0)
setuptools (5.5.1)
six (1.10.0)
SOAPpy (0.12.22)
texttable (0.8.7)
websocket-client (0.40.0)
wstools (0.4.3)

@jpiron
рдореИрдВрдиреЗ docker-compse -> рдЙрд╕реА рддреНрд░реБрдЯрд┐ рдХреЛ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛
рдЗрд╕рдХреА рд╕реНрдерд╛рдкрдирд╛ рд░рджреНрдж рдХрд░рдиреЗ рд╕реЗ рднреА рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реАред

docker-py рд╕рд┐рд░реНрдл рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рд╣реИред рдпрд╣ рдбреЙрдХрдЯрд░ рдирд╛рдо рдХреЗ рдПрдХ рдЕрдЬрдЧрд░ рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рджреМрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП:

# python
Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import docker
>>> print(docker.version)
1.10.6
>>>

рдбреЙрдХрд┐рдВрдЧ-рдХрдВрдкреЛрдЬрд╝рд┐рдВрдЧ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╕реЗ рдбреЙрдХ рдкреИрдХреЗрдЬ рдХреЛ рдбреЙрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдирд╣реАрдВ рд╣рдЯрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЖрдкрдХреЗ рдкрд┐рдк рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдареАрдХ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП:

pip uninstall docker
pip uninstall docker-py
pip uninstall docker-compose
pip install docker-compose==1.9.0

@jpiron
рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!

рд▓реЗрдХрд┐рди IMO рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЙрдкрд╛рдп рд╣реИ рддрд╛рдХрд┐ рдЪреАрдЬреЗрдВ рдЪрд▓рддреА рд░рд╣реЗрдВред
рдлрд┐рд░ рднреА рдбрд╛рдЙрди-рдбреВ-рдХрдореНрдкреЛрдЬрд╝рд┐рдВрдЧ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕ рдкрд░ рдХреЛрдИ рднреА рд╕рдорд╛рдЪрд╛рд░?

рдореИрдВ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ docker_image рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдХреНрдпрд╛ рдореБрдЭреЗ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдХреНрдпрд╛ рдпрд╣ рд╡рд╣реА рдореБрджреНрджрд╛ рд╣реИ?


- name: Test docker install by pulling hello world image
      docker_image:
        name: hello-world

fatal: [devhost]: FAILED! => {"changed": false, "failed": true, "msg": "Failed to import docker-py - cannot import name Client. Try `pip install docker-py`"}

pip list | grep docker

docker (2.0.2)
docker-compose (1.9.0)
docker-py (1.10.6)
docker-pycreds (0.2.1)
dockerpty (0.4.1)

рдпрд╣ docker рдФрд░ docker-py рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЖрдкрдХреЛ docker рдХреЛ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ docker-py рдХреЛ рдкреБрди: рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

pip uninstall docker
pip install --ignore-installed docker-py

рдЗрд╕рд╕реЗ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рдХрдорд┐рдЯ e2a1ce2916e9b87fe1ad4a1011c04ef8d2faf046 рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрдм рддрдХ рдпрд╣ рдЬрд╛рд░реА рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ <= 1.9.0 рд╣реИред

рд╣рдореЗрдВ 1.10 (рдкрд┐рдк-рд╡рд░реНрдЬрди), рдФрд░ рдЗрд╕рдХреЗ рд╕рднреА рдЖрд╢реНрд░рд┐рддреЛрдВ (рдЬреНрдпрд╛рджрд╛рддрд░ рдореЙрдбреНрдпреВрд▓ рдбреЙрдХ) рдХреЗ рд▓рд┐рдП рдбреЙрдХ-рдХрдВрдкреЛрдЬ рдХреЛ рд╣рдЯрд╛рдирд╛ рдкрдбрд╝рд╛ред рд╣рдордиреЗ рдПрдХ рд╕рд╛рдл рд░рд╛рдЬреНрдп рдФрд░ "рдкреНрд░рджреВрд╖рд┐рдд" рд░рд╛рдЬреНрдп рд╕реЗ рдПрдХ рдЕрдВрддрд░ рдХрд┐рдпрд╛ (рдкрд╛рдЗрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд 1.10 рдХреЗ рд╕рд╛рде рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝): рд░рд┐рд╡рд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдХрд┐рдпрд╛:
for pipPackage in cached-property colorama docker docker-compose dockerpty docopt functools32 jsonschema texttable docker-py ; do sudo pip uninstall -y ${pipPackage} 2>&1 | logger -i -t TestRemove ; done
рдлрд┐рд░ рд╣рдордиреЗ рдХрд░реНрд▓ рдореЗрдердб (рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдбреЙрдХ рджреЗрдЦреЗрдВ) рдХреЗ рд╕рд╛рде рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд┐рдЯ 1.10 рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред Docker_container рд╕рдВрд╕рд╛рдзрди рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред Docker_service рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдЬрдЧрд░ рдореЗрдВ docker-compose рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо docker_service рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдкрд┐рдк рдирд┐рд░реНрднрд░рддрд╛ рдПрдХ рдирд░рдХ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЕрднреА рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ !! рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред

рдпрд╣ рдкреНрд░рддрд┐рдмрджреНрдз e2a1ce2 рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рдкреИрдЪ Ansible 2.2.1.0 рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

рдореИрдВрдиреЗ tags/v2.2.2.0-0.2.rc2 рд╕рд╛рде рдЖрдЬ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХреА
рд▓реЗрдХрд┐рди рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рд╣реИ:

deploy<strong i="8">@machine1</strong>:/home/vagrant$ pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
backports.ssl-match-hostname (3.5.0.1)
cached-property (1.3.0)
chardet (2.3.0)
colorama (0.3.7)
defusedxml (0.4.1)
docker (2.1.0)
docker-compose (1.11.2)
docker-py (1.10.6)
docker-pycreds (0.2.1)
dockerpty (0.4.1)
docopt (0.6.2)
docutils (0.12)
enum34 (1.1.6)
functools32 (3.2.3.post2)
iotop (0.6)
ipaddress (1.0.18)
jsonschema (2.6.0)
Pillow (2.6.1)
pip (9.0.1)
Pygments (2.0.1)
python-apt (0.9.3.12)
python-debian (0.1.27)
python-debianbts (1.11)
PyYAML (3.12)
reportbug (6.6.3)
requests (2.13.0)
roman (2.0.0)
setuptools (5.5.1)
six (1.10.0)
SOAPpy (0.12.22)
texttable (0.8.7)
websocket-client (0.40.0)
wstools (0.4.3)

deploy<strong i="9">@machine1</strong>:/home/vagrant$ docker-compose
ERROR: Dependency conflict: an older version of the 'docker-py' package is polluting the namespace. Run the following command to remedy the issue:
pip uninstall docker docker-py; pip install docker

рджреВрд╕рд░реА рдУрд░, рдЬрдм docker-py рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ( pip uninstall docker-py ) рдЕрдирдЬрд╛рдиреЗ рд╢рд┐рдХрд╛рдпрддреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ:

Failed to import docker-py - No module named docker. Try `pip install docker-py`

@guenhter ,
рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп 2.3.0 (devel): pip install git+git://github.com/ansible/ansible.git@devel
рдЗрд╕рдореЗрдВ рдЕрдм e2a1ce2916e9b87fe1ad4a1011c04ef8d2faf046 рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рд╕рдВрдЧрддрддрд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдПрдХ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдХрдм рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛?

рдЗрд╕ рдкрд░ рдХреЛрдИ рднреА рд╕рдорд╛рдЪрд╛рд░?

рдЬреИрд╕рд╛ @viossat рдиреЗ рдХрд╣рд╛, e2a1ce2916e9b87fe1ad4a1011c04ef8d2faf046 2.3.0 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдпрд╣ docker рдФрд░ рдкреБрд░рд╛рдиреЗ docker-py рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд╕рд╛рде рднреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ:

virtualenv -p /usr/bin/python2.7 /tmp/venv
source /tmp/venv/bin/activate
pip install https://github.com/ansible/ansible/archive/v2.3.0.0-0.1.rc1.zip
pip install docker docker-py
ansible localhost -m docker_container -a "name=foo image=busybox"

рдирдП рдбреЙрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЛ 2.3 2.3 рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдпрд╣ (IMO) docker-py v2 рдХреЗ рд▓рд┐рдП рдирдП рд╕рдорд░реНрдерди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реА рдмреИрдХрдкреЙрдЯ рдкреЙрд▓рд┐рд╕реА рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред

2.3 рдХреЗ рд╕рд╛рде рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдореБрдЭреЗ рдмрд╕ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдерд╛, рдХрд┐ docker-py рдЕрдм рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди docker рдЙрдкрд▓рдмреНрдз рд╣реИ (рдкрд╛рдЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)ред

рдЖрдкрдХрд╛ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

рдЬреИрд╕рд╛ рдХрд┐ @guenhter рдХрд╣рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдкреБрд░рд╛рдиреЗ docker-py рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рддреЛ рдпрд╣ Ansible 2.3 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

- name: remove docker-py
  pip:
    name: docker-py
    state: absent

- name: Install docker python module
  pip:
    name: "docker-compose==1.12.0"

@martonsz рд╣реИрд▓реЛ, рдореЗрд░реЗ рдкрд╛рд╕ 2.3 2.3 рд╣реИ, рд▓реЗрдХрд┐рди

 - name: Test docker install by pulling hello world image
   docker_container:
     name: hello-world

рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдордд рдХрд░реЛред

рдкрд╛рдЗрдк рд╕реВрдЪреА:

backports.ssl-match-hostname (3.5.0.1)
cached-property (1.3.0)
cffi (1.5.2)
chardet (2.3.0)
click (6.7)
colorama (0.3.7)
configobj (5.0.6)
Django (1.9.4)
django-debug-toolbar (1.4)
docker (2.2.1)
docker-compose (1.12.0)
docker-pycreds (0.2.1)
dockerpty (0.4.1)
docopt (0.6.2)
html5lib (0.999)
jsonschema (2.6.0)
misaka (2.0.0)
mycli (1.8.1)
mysqlclient (1.3.7)
okapi2 (0.0.1)
pip (8.1.1)
prompt-toolkit (1.0.13)
pycparser (2.14)
pycrypto (2.6.1)
Pygments (2.2.0)
pygobject (3.14.0)
PyMySQL (0.7.10)
python-apt (0.9.3.12)
PyYAML (3.12)
requests (2.11.1)
setuptools (5.5.1)
six (1.8.0)
sqlparse (0.2.1)
texttable (0.8.8)
unattended-upgrades (0.1)
urllib3 (1.9.1)
uWSGI (2.0.12)
virtualenv (15.0.1)
wcwidth (0.1.7)
websocket-client (0.40.0)

рддреНрд░реБрдЯрд┐:

TASK [confluence : Test docker install by pulling hello world image] *************************************
fatal: [web1-vultr]: FAILED! => {"changed": false, "failed": true, "msg": "Failed to import docker-py - No module named docker. Try `pip install docker-py`"}
        to retry, use: --limit @/home/martin/Work/ansible/site.retry

ansible --version:

ansible 2.3.0.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides
  python version = 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609]

@Applemann рдореИрдВрдиреЗ рдкрд╣рд▓реЗ " pip uninstall docker; pip install docker рдФрд░ рдлрд┐рд░ рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ ... рдкрддрд╛ рдирд╣реАрдВ рдХреНрдпрд╛ рд╣реБрдЖред

рдЬрдм рдореИрдВрдиреЗ ansible-playbook рдЪрд▓рд╛рдпрд╛ рддреЛ @matti рдиреЗ рдкреИрд░рд╛рдореАрдЯрд░ -e 'ansible_python_interpreter=/usr/bin/python3' рдЬреЛрдбрд╝рдХрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред
рдХреНрдпреЛрдВрдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ python3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ python 2.7 рдерд╛

рдореБрдЭреЗ рдЕрднреА рднреА 2.3.0.0 рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЖ рд░рд╣реА рд╣реИред

рдпрд╣рд╛рдВ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: http://stackoverflow.com/a/43975079/10/1064619

рдкреНрд░рдЬрдирди рдХрд░рдиреЗ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛:

рдореИрдВрдиреЗ рдПрдХ рдирдпрд╛ VirtualEnv рдмрдирд╛рдпрд╛:

zoidberg:foley chris$ virtualenv ansible-test
New python executable in /Users/chris/src/hc/foley/ansible-test/bin/python2.7
Also creating executable in /Users/chris/src/hc/foley/ansible-test/bin/python
Installing setuptools, pip, wheel...done.

рд╕реНрдерд╛рдкрд┐рдд

(ansible-test) zoidberg:foley chris$ pip install ansible
Collecting ansible
Collecting pycrypto>=2.6 (from ansible)
Collecting paramiko (from ansible)
  Using cached paramiko-2.1.2-py2.py3-none-any.whl
Collecting jinja2 (from ansible)
  Using cached Jinja2-2.9.6-py2.py3-none-any.whl
Requirement already satisfied: setuptools in ./ansible-test/lib/python2.7/site-packages (from ansible)
Collecting PyYAML (from ansible)
Collecting cryptography>=1.1 (from paramiko->ansible)
  Using cached cryptography-1.8.1-cp27-cp27m-macosx_10_10_intel.whl
Collecting pyasn1>=0.1.7 (from paramiko->ansible)
  Using cached pyasn1-0.2.3-py2.py3-none-any.whl
Collecting MarkupSafe>=0.23 (from jinja2->ansible)
Requirement already satisfied: six>=1.6.0 in ./ansible-test/lib/python2.7/site-packages (from setuptools->ansible)
Requirement already satisfied: packaging>=16.8 in ./ansible-test/lib/python2.7/site-packages (from setuptools->ansible)
Requirement already satisfied: appdirs>=1.4.0 in ./ansible-test/lib/python2.7/site-packages (from setuptools->ansible)
Collecting idna>=2.1 (from cryptography>=1.1->paramiko->ansible)
  Using cached idna-2.5-py2.py3-none-any.whl
Collecting enum34 (from cryptography>=1.1->paramiko->ansible)
  Using cached enum34-1.1.6-py2-none-any.whl
Collecting ipaddress (from cryptography>=1.1->paramiko->ansible)
  Using cached ipaddress-1.0.18-py2-none-any.whl
Collecting cffi>=1.4.1 (from cryptography>=1.1->paramiko->ansible)
  Using cached cffi-1.10.0-cp27-cp27m-macosx_10_6_intel.whl
Collecting asn1crypto>=0.21.0 (from cryptography>=1.1->paramiko->ansible)
  Using cached asn1crypto-0.22.0-py2.py3-none-any.whl
Requirement already satisfied: pyparsing in ./ansible-test/lib/python2.7/site-packages (from packaging>=16.8->setuptools->ansible)
Collecting pycparser (from cffi>=1.4.1->cryptography>=1.1->paramiko->ansible)
Installing collected packages: pycrypto, idna, enum34, ipaddress, pycparser, cffi, asn1crypto, cryptography, pyasn1, paramiko, MarkupSafe, jinja2, PyYAML, ansible
Successfully installed MarkupSafe-1.0 PyYAML-3.12 ansible-2.3.0.0 asn1crypto-0.22.0 cffi-1.10.0 cryptography-1.8.1 enum34-1.1.6 idna-2.5 ipaddress-1.0.18 jinja2-2.9.6 paramiko-2.1.2 pyasn1-0.2.3 pycparser-2.17 pycrypto-2.6.1

рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдБрдЪ рдХреА:

(ansible-test) zoidberg:foley chris$ ansible --version
ansible 2.3.0.0
  config file =
  configured module search path = Default w/o overrides
  python version = 2.7.13 (default, May 14 2017, 22:38:03) [GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)]

рд╕реНрдерд╛рдкрд┐рдд docker рдФрд░ docker-py:

(ansible-test) zoidberg:foley chris$ pip list | grep docker
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
docker (2.0.0)
docker-py (1.10.6)
docker-pycreds (0.2.1)

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

(ansible-test) zoidberg:foley chris$ ansible-playbook -i inventory/local build.yml -vvvv
No config file found; using defaults
Loading callback plugin default of type stdout, v2.0 from /Users/chris/src/hc/foley/ansible-test/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc

PLAYBOOK: build.yml **********************************************************************************************************************************************************
1 plays in build.yml

PLAY [Build foley docker images] *********************************************************************************************************************************************
META: ran handlers

TASK [docker_image] **********************************************************************************************************************************************************
task path: /Users/chris/src/hc/foley/build.yml:12
Using module file /Users/chris/src/hc/foley/ansible-test/lib/python2.7/site-packages/ansible/modules/cloud/docker/docker_image.py
<localhost> ESTABLISH LOCAL CONNECTION FOR USER: chris
<localhost> EXEC /bin/sh -c 'echo ~ && sleep 0'
<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /Users/chris/.ansible/tmp/ansible-tmp-1494837576.9-236428678313889 `" && echo ansible-tmp-1494837576.9-236428678313889="` echo /Users/chris/.ansible/tmp/ansible-tmp-1494837576.9-236428678313889 `" ) && sleep 0'
<localhost> PUT /var/folders/zn/cfj4ng250293z1g5s19w3zdh0000gn/T/tmp_SRwg6 TO /Users/chris/.ansible/tmp/ansible-tmp-1494837576.9-236428678313889/docker_image.py
<localhost> EXEC /bin/sh -c 'chmod u+x /Users/chris/.ansible/tmp/ansible-tmp-1494837576.9-236428678313889/ /Users/chris/.ansible/tmp/ansible-tmp-1494837576.9-236428678313889/docker_image.py && sleep 0'
<localhost> EXEC /bin/sh -c '/usr/bin/python /Users/chris/.ansible/tmp/ansible-tmp-1494837576.9-236428678313889/docker_image.py; rm -rf "/Users/chris/.ansible/tmp/ansible-tmp-1494837576.9-236428678313889/" > /dev/null 2>&1 && sleep 0'
fatal: [127.0.0.1 -> localhost]: FAILED! => {
    "changed": false,
    "failed": true,
    "invocation": {
        "module_args": {
            "api_version": null,
            "archive_path": null,
            "buildargs": {
                "PRIVATE_REPO_PASSWORD": "6c50ef3a91e9b5cd47251f921f3fb53d1e53afa5",
                "PRIVATE_REPO_USERNAME": "hexagonalwax"
            },
            "cacert_path": null,
            "cert_path": null,
            "container_limits": null,
            "debug": false,
            "docker_host": null,
            "dockerfile": null,
            "filter_logger": false,
            "force": false,
            "http_timeout": null,
            "key_path": null,
            "load_path": null,
            "name": "honeycomb/foley",
            "nocache": "False",
            "path": ".",
            "pull": true,
            "push": false,
            "repository": null,
            "rm": true,
            "ssl_version": null,
            "state": "present",
            "tag": "latest",
            "timeout": null,
            "tls": null,
            "tls_hostname": null,
            "tls_verify": null,
            "use_tls": "no"
        }
    },
    "msg": "Failed to import docker-py - No module named docker. Try `pip install docker-py`"
}
  to retry, use: --limit @/Users/chris/src/hc/foley/build.retry

PLAY RECAP *******************************************************************************************************************************************************************
127.0.0.1                  : ok=0    changed=0    unreachable=0    failed=1

рдпрд╣рд╛рдБ рдореЗрд░реА рдкреНрд▓реЗрдмреБрдХ рд╣реИ:

(ansible-test) zoidberg:foley chris$ cat build.yml
---
- name: Build foley docker images
  hosts: 127.0.0.1
  connection: local
  gather_facts: false

  vars_files:
    - "ansible/vars/build_secrets.yml"

  tasks:

    - docker_image:
         path: .
         name: worldofchris/foley
         buildargs:
           PRIVATE_REPO_USERNAME: "{{ PRIVATE_REPO_USERNAME }}"
           PRIVATE_REPO_PASSWORD: "{{ PRIVATE_REPO_PASSWORD }}"
      delegate_to: localhost

рдФрд░ рдореЗрд░реА рд╕реВрдЪреА:

(ansible-test) zoidberg:foley chris$ cat inventory/local
[localhost]
127.0.0.1 ansible_connection=local

рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдореИрдВ рдЧрд▓рдд рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ?

рдзрдиреНрдпрд╡рд╛рдж

@worldofchris docker -py рдкреБрд░рд╛рдирд╛ рдореЙрдбреНрдпреВрд▓ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ 2.3.0.0 ansible рдореЗрдВ рдХреЗрд╡рд▓ docker-pris рдХреЗ рдмрд┐рдирд╛ docker рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

pip uninstall docker
pip uninstall docker-py
pip install docker

рдФрд░ рдЕрдкрдиреА рдкреНрд▓реЗрдмреБрдХ рдЪрд▓рд╛рдПрдВред

рдЕрдЧрд░ рдХреЛрдИ рд╕рд╛рдл рд╕реЗрдВрдЯреЛрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЦрд░реЛрдВрдЪ рд╕реЗ рдЦреБрдж рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдПрдВрд╕рд┐рдмрд▓ рдХреЛ рдбреЙрдХрдЯрд░ рдкрд╛рдИ рдХреЗ рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдХреНрдпрд╛ рд╣рдореЗрдВ рдкрд╣рд▓реА рдмрд╛рд░ рдкрд╛рдЗрдк рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

@Applemann рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЕрдкрдиреЗ рд╕реБрдЭрд╛рд╡ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:

(ansible-test) zoidberg:foley chris$ pip uninstall docker
    Uninstalling docker-2.0.0:
    ...
      Successfully uninstalled docker-2.0.0
    (ansible-test) zoidberg:foley chris$ pip uninstall docker-py
    Uninstalling docker-py-1.10.6:
    ...
      Successfully uninstalled docker-py-1.10.6
    (ansible-test) zoidberg:foley chris$ pip list | grep docker
    DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
    docker-pycreds (0.2.1)
    (ansible-test) zoidberg:foley chris$ pip install docker
    Collecting docker
      Using cached docker-2.2.1-py2.py3-none-any.whl
    Requirement already satisfied: backports.ssl-match-hostname>=3.5; python_version < "3.5" in ./ansible-test/lib/python2.7/site-packages (from docker)
    Requirement already satisfied: ipaddress>=1.0.16; python_version < "3.3" in ./ansible-test/lib/python2.7/site-packages (from docker)
    Requirement already satisfied: docker-pycreds>=0.2.1 in ./ansible-test/lib/python2.7/site-packages (from docker)
    Requirement already satisfied: requests!=2.11.0,!=2.12.2,>=2.5.2 in ./ansible-test/lib/python2.7/site-packages (from docker)
    Requirement already satisfied: websocket-client>=0.32.0 in ./ansible-test/lib/python2.7/site-packages (from docker)
    Requirement already satisfied: six>=1.4.0 in ./ansible-test/lib/python2.7/site-packages (from docker)
    Installing collected packages: docker
    Successfully installed docker-2.2.1
    (ansible-test) zoidberg:foley chris$ pip list | grep docker
    DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
    docker (2.2.1)
    docker-pycreds (0.2.1)
    (ansible-test) zoidberg:foley chris$ ansible-playbook -i inventory/local build.yml -vvvv
    No config file found; using defaults
    Loading callback plugin default of type stdout, v2.0 from /Users/chris/src/hc/foley/ansible-test/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc

    PLAYBOOK: build.yml **********************************************************************************************************************************************************
    1 plays in build.yml

    PLAY [Build foley docker images] *********************************************************************************************************************************************
    META: ran handlers

    TASK [docker_image] **********************************************************************************************************************************************************
    task path: /Users/chris/src/hc/foley/build.yml:12
    Using module file /Users/chris/src/hc/foley/ansible-test/lib/python2.7/site-packages/ansible/modules/cloud/docker/docker_image.py
    <localhost> ESTABLISH LOCAL CONNECTION FOR USER: chris
    <localhost> EXEC /bin/sh -c 'echo ~ && sleep 0'
    <localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /Users/chris/.ansible/tmp/ansible-tmp-1494842343.37-265680192802324 `" && echo ansible-tmp-1494842343.37-265680192802324="` echo /Users/chris/.ansible/tmp/ansible-tmp-1494842343.37-265680192802324 `" ) && sleep 0'
    <localhost> PUT /var/folders/zn/cfj4ng250293z1g5s19w3zdh0000gn/T/tmph0iFSY TO /Users/chris/.ansible/tmp/ansible-tmp-1494842343.37-265680192802324/docker_image.py
    <localhost> EXEC /bin/sh -c 'chmod u+x /Users/chris/.ansible/tmp/ansible-tmp-1494842343.37-265680192802324/ /Users/chris/.ansible/tmp/ansible-tmp-1494842343.37-265680192802324/docker_image.py && sleep 0'
    <localhost> EXEC /bin/sh -c '/usr/bin/python /Users/chris/.ansible/tmp/ansible-tmp-1494842343.37-265680192802324/docker_image.py; rm -rf "/Users/chris/.ansible/tmp/ansible-tmp-1494842343.37-265680192802324/" > /dev/null 2>&1 && sleep 0'
    fatal: [127.0.0.1 -> localhost]: FAILED! => {
        "changed": false,
        "failed": true,
        "invocation": {
            "module_args": {
                "api_version": null,
                "archive_path": null,
                "buildargs": {
                    "PRIVATE_REPO_PASSWORD": "6c50ef3a91e9b5cd47251f921f3fb53d1e53afa5",
                    "PRIVATE_REPO_USERNAME": "hexagonalwax"
                },
                "cacert_path": null,
                "cert_path": null,
                "container_limits": null,
                "debug": false,
                "docker_host": null,
                "dockerfile": null,
                "filter_logger": false,
                "force": false,
                "http_timeout": null,
                "key_path": null,
                "load_path": null,
                "name": "honeycomb/foley",
                "nocache": "False",
                "path": ".",
                "pull": true,
                "push": false,
                "repository": null,
                "rm": true,
                "ssl_version": null,
                "state": "present",
                "tag": "latest",
                "timeout": null,
                "tls": null,
                "tls_hostname": null,
                "tls_verify": null,
                "use_tls": "no"
            }
        },
        "msg": "Failed to import docker-py - No module named docker. Try `pip install docker-py`"
    }
      to retry, use: --limit @/Users/chris/src/hc/foley/build.retry

    PLAY RECAP *******************************************************************************************************************************************************************
    127.0.0.1                  : ok=0    changed=0    unreachable=0    failed=1

рдХреНрдпрд╛ рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рд╣реИ?

рдЪрд┐рдпрд░реНрд╕

рдХреНрд░рд┐рд╕

@worldofchris рдЖрдк рдЕрдЬрдЧрд░ 2.7 рдХреЗ рдмрдЬрд╛рдп python3 рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдпрд╣рд╛рдБ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдереА: https://github.com/ansible/ansible/issues/20492#issuecomment -293644891
рдФрд░ рдореИрдВрдиреЗ python3 рдХреЗ рддрд╣рдд рдкреНрд▓реЗрдмреБрдХ рдЪрд▓рд╛рдХрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред

рдзрдиреНрдпрд╡рд╛рдж @Applemann рдиреЗ рдЗрд╕реЗ рдкрд╛рдпрдерди 3 рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдкрд╛рдпрдерди 3 рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЙрддрдирд╛ рд╣реА рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рдХреЛрдИ рднреАред

рдЪреАрдпрд░реНрд╕!

рдзрдиреНрдпрд╡рд╛рдж @Applemann рдиреЗ python3 рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдФрд░ virtualenv рдореЗрдВ рдЕрдЬрдЧрд░ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП рднреА рдХрд╛рдо рдХрд┐рдпрд╛ред

ansible-playbook docker-test.yml \
       -e 'ansible_python_interpreter=/data/python/envs/ansible/bin/python3'

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде рднреА рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛

`` `
рдкрд╛рдпрдерди 2.7.13
рдкрд╛рдЗрдк 9.0.1 рд╕реЗ /rr/lib/python2.7/dist-packages (рдкрд╛рдпрдерди 2.7)
ansible 2.3.0.0 (рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░)

рдЧреНрд░рд╛рд╣рдХ:
рд╕рдВрд╕реНрдХрд░рдг: 1.12.6
рдПрдкреАрдЖрдИ рд╕рдВрд╕реНрдХрд░рдг: 1.24
рдЬрд╛рдУ рд╕рдВрд╕реНрдХрд░рдг: go1.7.4
Git рдкреНрд░рддрд┐рдмрджреНрдз: 78d1802
рдирд┐рд░реНрдорд┐рдд: рдордВрдЧрд▓ рдорд╛рд░реНрдЪ 14 09:47:15 2017
OS / Arch: linux / amd64

рд╕рд░реНрд╡рд░:
рд╕рдВрд╕реНрдХрд░рдг: 1.12.6
рдПрдкреАрдЖрдИ рд╕рдВрд╕реНрдХрд░рдг: 1.24
рдЬрд╛рдУ рд╕рдВрд╕реНрдХрд░рдг: go1.7.4
Git рдкреНрд░рддрд┐рдмрджреНрдз: 78d1802
рдирд┐рд░реНрдорд┐рдд: рдордВрдЧрд▓ рдорд╛рд░реНрдЪ 14 09:47:15 2017
OS / Arch: linux / amd64
`` ``

рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЗ рд░реВрдк рдореЗрдВ python3 рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдерд╛ред рд╕реБрдЭрд╛рд╡ рдХреЗ рдЕрдиреБрд╕рд╛рд░ pip install docker docker-compose ( docker-py ) рдХрд░рдХреЗ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд┐рдпрд╛ред рдмрд┐рдирд╛ docker-compose рдкрд╛рдЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ docker_container ansible рдореЙрдбреНрдпреВрд▓ рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛, docker_service рдирд╣реАрдВред

рдЗрд╕рдХрд╛ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред Docker_service рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП Ansible рдХреЛ рд╣рдореЗрд╢рд╛ docker-compose рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, docker рдФрд░ docker-py рдЗрд╕ рд╕рдордп рд╕рдВрдпреЛрдЧ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рджреЛрдиреЛрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рд╕рдВрднрд╡рддрдГ рд╕рдорд╕реНрдпрд╛рдПрдБ рдкреИрджрд╛ рд╣реЛрдВрдЧреАред

рдпрд╣ рдЕрдм 2.3.0 рдореЗрдВ рддрдп рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЖрдкрдХреЛ рд░рд┐рдореЛрдЯ рдкрд░ рдкрд╛рдЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╡реАрдирддрдо рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬрд╝ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдлрд┐рд░ рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдпрд╣ рдЖрдкрдХреЛ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рдЖрдкрдХреЛ рдХреМрди рд╕реЗ рдкреБрд░рд╛рдиреЗ рдкреИрдХреЗрдЬ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрд╣ рдореБрджреНрджрд╛ рдЕрднреА рднреА рдХреНрдпреЛрдВ рдЦреБрд▓рд╛ рд╣реИ?

рдЕрднреА рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрдВрд╕рд┐рдмрд▓ 2.3.0 рдкрд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реИ:

$ ansible --version                                                        
ansible 2.3.0.0              
  config file = /vagrant/ansible/ansible.cfg       
  configured module search path = [u'./library']
  python version = 2.7.6 (default, Oct 26 2016, 20:30:19) [GCC 4.8.4]      
$ pip freeze | grep docker                                                        
docker==2.3.0                                       
docker-compose==1.14.0
docker-pycreds==0.2.1
dockerpty==0.4.1  

рдореЙрдбреНрдпреВрд▓ docker_container рд╕рд╛рде Playbook рддреНрд░реБрдЯрд┐:

рдЕрдиреБрддреНрддреАрд░реНрдг рд╣реЛрдирд╛! => {"рдкрд░рд┐рд╡рд░реНрддрд┐рдд": рдЧрд▓рдд, "рд╡рд┐рдлрд▓": рд╕рдЪ, "рд╕рдВрджреЗрд╢": "docker-py рдЖрдпрд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ - docker рдирд╛рдо рдХрд╛ рдХреЛрдИ рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВред pip install docker-py рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ"

OS: Ubuntu 14.04.5 3.13.0-121-рдЬреЗрдиреЗрд░рд┐рдХ x86_64 (рдЖрд╡рд╛рд░рд╛ рдмреЙрдХреНрд╕) рдХреЗ рд╕рд╛рде
рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг: 2.7.6

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ TARGET рдмреЙрдХреНрд╕ рдореЗрдВ рдпреЗ рдкрд╛рдЗрдк рдореЙрдбреНрдпреВрд▓ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рди рдХрд┐ рдХреЗрд╡рд▓ рдЙрд╕ рдмреЙрдХреНрд╕ рдХреЛ, рдЬреЛ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ:

- name: Ensure old module not present
  pip:
    name: docker-py
    state: absent
- name: Install pip modules on target box
  pip:
    name: "{{ item }}"
    state: present
  with_items:
    - docker
    - docker-compose

рдЕрднреА рднреА рдореЗрд░реЗ рд▓рд┐рдП 2.3.1.0 ansible рдкрд░ рд╣реЛрддрд╛ рд╣реИ:

$ ansible --version
ansible 2.3.1.0
  config file = /home/reegnz/demo/ansible.cfg
  configured module search path = Default w/o overrides
  python version = 2.7.5 (default, Aug  2 2016, 04:20:16) [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)]

рдореИрдВ рдХреЗрд╡рд▓ рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬрд╝ рдпреБрдХреНрдд рдПрдХ рд╡рд░реНрдЪреБрдЕрд╡реЗрди рддреИрдпрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣ рдПрдХ рдЪрд┐рд░рд╕реНрдерд╛рдпреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдбреЙрдХрдЯрд░ рдореЗрдВ рдЦреАрдВрдЪрддрд╛ рд╣реИред

$ virtualenv venv
$ source venv/bin/activate
(venv) $ pip install --upgrade pip
Downloading/unpacking pip from https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9
  Downloading pip-9.0.1.tar.gz (1.2MB): 1.2MB downloaded
  Running setup.py egg_info for package pip
    /usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'python_requires'
      warnings.warn(msg)

    warning: no previously-included files found matching '.coveragerc'
    warning: no previously-included files found matching '.mailmap'
    warning: no previously-included files found matching '.travis.yml'
    warning: no previously-included files found matching '.landscape.yml'
    warning: no previously-included files found matching 'pip/_vendor/Makefile'
    warning: no previously-included files found matching 'tox.ini'
    warning: no previously-included files found matching 'dev-requirements.txt'
    warning: no previously-included files found matching 'appveyor.yml'
    no previously-included directories found matching '.github'
    no previously-included directories found matching '.travis'
    no previously-included directories found matching 'docs/_build'
    no previously-included directories found matching 'contrib'
    no previously-included directories found matching 'tasks'
    no previously-included directories found matching 'tests'
Installing collected packages: pip
  Found existing installation: pip 1.4.1
    Uninstalling pip:
      Successfully uninstalled pip
  Running setup.py install for pip
    /usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'python_requires'
      warnings.warn(msg)

    warning: no previously-included files found matching '.coveragerc'
    warning: no previously-included files found matching '.mailmap'
    warning: no previously-included files found matching '.travis.yml'
    warning: no previously-included files found matching '.landscape.yml'
    warning: no previously-included files found matching 'pip/_vendor/Makefile'
    warning: no previously-included files found matching 'tox.ini'
    warning: no previously-included files found matching 'dev-requirements.txt'
    warning: no previously-included files found matching 'appveyor.yml'
    no previously-included directories found matching '.github'
    no previously-included directories found matching '.travis'
    no previously-included directories found matching 'docs/_build'
    no previously-included directories found matching 'contrib'
    no previously-included directories found matching 'tasks'
    no previously-included directories found matching 'tests'
    Installing pip script to /home/reegnz/test/venv/bin
    Installing pip2.7 script to /home/test/venv/bin
    Installing pip2 script to /home/test/venv/bin
Successfully installed pip
Cleaning up...
(venv) $ pip install docker-compose
Collecting docker-compose
  Using cached docker_compose-1.14.0-py2.py3-none-any.whl
Collecting cached-property<2,>=1.2.0 (from docker-compose)
  Using cached cached_property-1.3.0-py2.py3-none-any.whl
Collecting backports.ssl-match-hostname>=3.5; python_version < "3.5" (from docker-compose)
Collecting ipaddress>=1.0.16; python_version < "3.3" (from docker-compose)
  Using cached ipaddress-1.0.18-py2-none-any.whl
Collecting jsonschema<3,>=2.5.1 (from docker-compose)
  Using cached jsonschema-2.6.0-py2.py3-none-any.whl
Collecting texttable<0.9,>=0.8.1 (from docker-compose)
Collecting six<2,>=1.3.0 (from docker-compose)
  Using cached six-1.10.0-py2.py3-none-any.whl
Collecting docker<3.0,>=2.3.0 (from docker-compose)
  Using cached docker-2.4.0-py2.py3-none-any.whl
Collecting enum34<2,>=1.0.4; python_version < "3.4" (from docker-compose)
  Using cached enum34-1.1.6-py2-none-any.whl
Collecting websocket-client<1.0,>=0.32.0 (from docker-compose)
  Using cached websocket_client-0.44.0-py2.py3-none-any.whl
Collecting PyYAML<4,>=3.10 (from docker-compose)
Collecting colorama<0.4,>=0.3.7 (from docker-compose)
  Using cached colorama-0.3.9-py2.py3-none-any.whl
Collecting requests!=2.11.0,<2.12,>=2.6.1 (from docker-compose)
  Using cached requests-2.11.1-py2.py3-none-any.whl
Collecting docopt<0.7,>=0.6.1 (from docker-compose)
Collecting dockerpty<0.5,>=0.4.1 (from docker-compose)
Collecting functools32; python_version == "2.7" (from jsonschema<3,>=2.5.1->docker-compose)
Collecting docker-pycreds>=0.2.1 (from docker<3.0,>=2.3.0->docker-compose)
  Using cached docker_pycreds-0.2.1-py2.py3-none-any.whl
Installing collected packages: cached-property, backports.ssl-match-hostname, ipaddress, functools32, jsonschema, texttable, six, websocket-client, docker-pycreds, requests, docker, enum34, PyYAML, colorama, docopt, dockerpty, docker-compose
Successfully installed PyYAML-3.12 backports.ssl-match-hostname-3.5.0.1 cached-property-1.3.0 colorama-0.3.9 docker-2.4.0 docker-compose-1.14.0 docker-pycreds-0.2.1 dockerpty-0.4.1 docopt-0.6.2 enum34-1.1.6 functools32-3.2.3.post2 ipaddress-1.0.18 jsonschema-2.6.0 requests-2.11.1 six-1.10.0 texttable-0.8.8 websocket-client-0.44.0

(venv) $ pip freeze > venv-requirements.txt

Venv-requirement.txt рдлрд╝рд╛рдЗрд▓ рдХреБрдЫ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

( venv) $ cat venv-requirements.txt
backports.ssl-match-hostname==3.5.0.1
cached-property==1.3.0
colorama==0.3.9
docker==2.4.0
docker-compose==1.14.0
docker-pycreds==0.2.1
dockerpty==0.4.1
docopt==0.6.2
enum34==1.1.6
functools32==3.2.3.post2
ipaddress==1.0.18
jsonschema==2.6.0
PyYAML==3.12
requests==2.11.1
six==1.10.0
texttable==0.8.8
websocket-client==0.44.0

рдореИрдВ рдЕрдкрдиреА рд░рд┐рдореЛрдЯ рдорд╢реАрди рдкрд░ рдПрдХ virtualenv рдХреЛ рдКрдкрд░ рдХреА рдкрд╛рдЗрдк рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде / рдСрдкреНрдЯ / ansible / venv рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ ansible_python_interpreter рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ / рдСрдкреНрдЯ / ansible / python-venv рдХреЗ рд╕рд╛рде рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реВрдВ:

#!/bin/bash
source /opt/ansible/venv/bin/activate
python "$@"

рдореБрдЭреЗ рдЕрднреА рднреА ansible-playbook рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

fatal: [localhost]: FAILED! => {
    "changed": false,
    "failed": true,
    "invocation": {
        "module_args": {
            "api_version": null,
            "build": false,
            "cacert_path": null,
            "cert_path": null,
            "debug": false,
            "definition": null,
            "dependencies": true,
            "docker_host": null,
            "files": null,
            "filter_logger": false,
            "hostname_check": false,
            "key_path": null,
            "nocache": false,
            "project_name": null,
            "project_src": "/opt/test",
            "pull": true,
            "recreate": "smart",
            "remove_images": null,
            "remove_orphans": false,
            "remove_volumes": false,
            "restarted": false,
            "scale": null,
            "services": null,
            "ssl_version": null,
            "state": "present",
            "stopped": false,
            "timeout": 10,
            "tls": null,
            "tls_hostname": null,
            "tls_verify": null
        }
    },
    "msg": "Failed to import docker-py - No module named docker. Try `pip install docker-py`"
}

рдореИрдВрдиреЗ рднреА рдХреЛрдИ рд▓рд╛рдн рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП docker-compose рдФрд░ docker-py рдкреИрдХреЗрдЬ рджреЛрдиреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдореБрдЭреЗ рддрдм рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИред

рдореЗрд░реЗ рдЙрджреНрдзреГрдд рдЕрдЬрдЧрд░-рд╡реАрд╡реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЧрд▓рдд рдерд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдореЗрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдереА, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЙрджреНрдзреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ ...

#!/bin/bash
source /opt/ansible/bin/activate
python "$@"

рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдЧрд╛рдпрдм 'рд╡реЗрдирд╡' рдХреА рд╕реВрдЪрдирд╛ред

рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛, рдЗрд╕реАрд▓рд┐рдП рдореБрдЭреЗ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рдордп рд▓рдЧрд╛ред Json рдореЗрдВ рдЕрдЬрдЧрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред
рдЕрд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред

ansible 2.3.0.0
рдЕрдЬрдЧрд░ рд╕рдВрд╕реНрдХрд░рдг = 2.7.13

$ рдкрд╛рдЗрдк рд╕реВрдЪреА | grep docker
рд╡рд┐рд╡рд░рдг: рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрд╡рд░реВрдк рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреЙрд▓рдо рдкрд░ рд╕реНрд╡рд┐рдЪ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЕрдкрдиреЗ pip.conf [рдкрд╛рдЗрдк] рдХреЗ рддрд╣рдд рдЕрдкрдиреЗ рд╕рдВрдЧрдарди рдореЗрдВ --format = (рд╡рд┐рд░рд╛рд╕рдд | рдХреЙрд▓рдо) (рдпрд╛ рдПрдХ рдкреНрд░рд╛рд░реВрдк = (рд╡рд┐рд░рд╛рд╕рдд | рдХреЙрд▓рдо)) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдбреЙрдХрдЯрд░ (2.4.2)
рдбреЙрдХ-рдХрдореНрдкреЛрдЬрд╝ (1.14.0)
docker-pycreds (0.2.1)
рдбреЙрдХрдЯрд░реЙрдк (0.4.1)

рддреНрд░реБрдЯрд┐: рд╡рд┐рдлрд▓! => {"рдкрд░рд┐рд╡рд░реНрддрд┐рдд": рдЕрд╕рддреНрдп, "рд╡рд┐рдлрд▓": рд╕рддреНрдп, "рд╕рдВрджреЗрд╢": "docker-py рдЖрдпрд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ - docker рдирд╛рдо рдХрд╛ рдХреЛрдИ рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВред pip install docker-py "} рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред}

Pls рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрдкрд╛рдп рд╕реБрдЭрд╛рдПрдВред рдореИрдВ рдЕрднреА рддрдХ рдпрд╣ virtualenv рдкрд░ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣рд╛ рд╣реВрдБ, reegnz рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред

рдЖрд▓рд╕реА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдБ рд╣рд░ рдкреЛрд╕реНрдЯ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП:
2.3 рдХреЗ рдмрд╛рдж рд╕реЗ, рдирд┐рд░реНрднрд░рддрд╛ рдореБрджреНрджрд╛ docker-py рддрдп рд╣реЛ рдЧрдИ рд╣реИ:

  • рдпрджрд┐ рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ python 2.7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ docker рдореЙрдбреНрдпреВрд▓ рдХреЛ docker-py рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ

  • рдпрджрд┐ рдЖрдк рдЕрдЬрдЧрд░ 3 ( -e 'ansible_python_interpreter=/usr/bin/python3' ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрд╕реЗ docker-py рдХреЗ рдмрдЬрд╛рдп docker рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
    рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, pip uninstall docker docker-py docker-compose рд╕рд╛рдл рдХрд░реЗрдВ
    рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛
    pip install docker-compose

рдЕрдЬрдЧрд░ 3 рд╕реЗрдВрдЯреЛрд╕ / рдЖрд░рдПрдЪрдИрдПрд▓ рдЬреИрд╕реЗ рдмрдбрд╝реЗ рд╡рд┐рддрд░рдгреЛрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реИред

рдореИрдВ @antoinetran рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ docker-compose рдЦреБрд╢ред
-> рдбреЙрдХрд░реНрд╕ рдФрд░ рдбреЙрдХ-рд▓реЙрдЧрд┐рди рдЬреИрд╕реЗ ansible рдореЙрдбреНрдпреВрд▓ рдХреЛ docker-py рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
-> рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдХреЛ рдбреЙрдХрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдФрд░ рдбреЙрдХрдЯрд░ рдФрд░ рдбреЙрдХ-рдкрд╛рдИ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ):

docker-compose
WARNING: Dependency conflict: an older version of the 'docker-py' package may be polluting the namespace. If you're experiencing crashes, run the following command to remedy the issue:
pip uninstall docker-py; pip uninstall docker; pip install docker

рддреЛ рдпрд╣ рдпрд╛ рддреЛ рдХрд╛рдо рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдпрд╛ docker- рд░рдЪрдирд╛ рд╣реИред рдпрд╣ рдЧрдиреНрджрд╛ рд╣реИред
рдореБрдЭреЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдХреНрдпреЛрдВ рдмрдВрдж рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХреЛ docker-py рдХреЗ рдмрдЬрд╛рдп docker рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ 2.7 рдХреЗ рд▓рд┐рдП рднреА, рдЬреИрд╕реЗ docker-compose рдиреЗ рдХрд┐рдпрд╛ рдерд╛ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ - рдХрд╛рдо рдХрд░ рд░рд╣реЗ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддреНрд░реБрдЯрд┐: рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рдмрдЧ рдирд╣реАрдВ рдерд╛ред рдХрд┐рд╕реА рдФрд░ рдХреЛ рдпрд╣ рдЕрдиреБрднрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, -vvv рдХреЗ рд╕рд╛рде ansible рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ ansible /usr/bin/python рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореБрдЭреЗ virtualenv рдореЗрдВ рдЕрдкрдиреЗ рд╣реЛрд╕реНрдЯ рдорд╢реАрди рдкрд░ рдЕрдЬрдЧрд░ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ansible_python_interpreter рд╕реЗрдЯ рдХрд░рдирд╛ рдерд╛ рдЬрд╣рд╛рдВ рдкрд╛рдЗрдк рдЪреАрдЬреЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛ред рдЙрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдпрд╣ рдПрд╣рд╕рд╛рд╕ рджрд┐рд▓рд╛рдпрд╛ рдХрд┐ рд╕рднреА рддреНрд░реБрдЯрд┐ рд▓рдХреНрд╖реНрдп рдорд╢реАрди рд╕реЗ рдЖ рд░рд╣реА рдереАред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЯрд╛рд░рдЧреЗрдЯ рдорд╢реАрди рдХреЗ рдЕрдЬрдЧрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП ansible_python_interpreter рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛, рдЯрд╛рд░рдЧреЗрдЯ рдорд╢реАрди рдкрд░ docker-py рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛, рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рд░реНрднрд░рддрд╛ (рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдпрд╛ рдЕрдиреБрд░реЛрдз рдпрд╛ рдХреБрдЫ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред рдлрд┐рд░ рдореИрдВрдиреЗ рдЯрд╛рд░рдЧреЗрдЯ рдорд╢реАрди рдкрд░ docker / docker-py рдХреЛ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдФрд░ docker-compose рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ред рдлрд┐рд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░ рдЧрдпрд╛ред


рдореВрд▓ рдкрд╛рда - рдкреВрд░реНрд╡-рд╕рдВрдкрд╛рджрди:

рдмрд╕ рдПрдХ рдЕрд╕рдлрд▓ рдкреНрд░рдгрд╛рд▓реА рдкрд░ рдХреБрдЫ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдЕрджреНрдпрддрдиред

рдореИрдХ 10.12.6
рдбреЙрдХрд░ рд╕рдВрд╕реНрдХрд░рдг 17.09.0-ce-mac35 (19611)
ansible 2.4.0.0
рдкрд┐рдк рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ docker-py docker-compose
рдкрд╛рдЗрдк рд╕реНрдерд╛рдкрд┐рдд docker- рд░рдЪрдирд╛

docker_image

FAILED! => {"changed": false, "failed": true, "msg": "Failed to import docker-py - No module named requests.exceptions. Try `pip install docker-py`"}
ansible localhost -m shell -a "python -c 'import requests.exceptions'"
localhost | SUCCESS | rc=0 >>

рдореБрдЭреЗ рдирдореВрдирд╛ рд╕рдорд╕реНрдпрд╛ рдереА,
fatal: [localhost -> localhost]: FAILED! => {"changed": false, "msg": "Failed to import docker-py - No module named requests.exceptions. Try 'pip install docker-py'"}

рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХреБрдЫ рднреА рдорджрдж рдирд╣реАрдВ рдХреАред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдиреАрдЪрд╛ рджрд┐рдЦрд╛рдпрд╛, рдФрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд┐рдпрд╛ред
pip install ansible==2.3.3.0

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рд╡рд░реНрд╖ рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧрддреЗ рд░рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдЯрд┐рдХрдЯ рдХреНрдпреЛрдВ рдмрдВрдж рд╣реИ?

рддрд┐рдореЛ рд╕реЛрдЗрдирд┐

рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛, рдореИрдХ рдкрд░ "рдирд┐рдпрдВрддреНрд░рдХ", рдЖрд░рдкреАрдЖрдИ рдкрд░ "рдкреНрд░рдмрдВрдзрд┐рдд-рд╣реЛрд╕реНрдЯ", 3 рд╕рдкреНрддрд╛рд╣ рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдореБрджреНрджреЗ рдХреЛ рд▓реЙрдЧ рдЗрди рдХрд┐рдпрд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛, рддреЛ рд╣рдо рдпрд╣рд╛рдВ рд╕реЗ рдХрд╣рд╛рдВ рдЬрд╛рдПрдВ?

рдпрд╣рд╛рдБ рдореИрдВрдиреЗ рдЬреЛ рдЦреЛрд▓рд╛, рдФрд░ рддреБрд░рдВрдд рдмрдВрдж рд╣реЛ рдЧрдпрд╛ред https://github.com/ansible/ansible/issues/34851

"рдпрд╣ ansible рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛ upstream docker-py / docker: docker / docker-py # 1353

рд▓реЗрдХрд┐рди рдКрдкрд░ рд▓рд┐рдВрдХ рдкрд░ рдХреЛрдИ рдЬрд╡рд╛рдм рдирд╣реАрдВред

рдореИрдВ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ "рдкрд┐рдк рдЗрдВрд╕реНрдЯреЙрд▓ рдбреЙрдХрдЯрд░-рдкреА" рдЪрд▓ рд░рд╣рд╛ рдерд╛, рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдиреЗ рдХрд╣рд╛ рдерд╛ред рдЙрддреНрддрд░ рджреЗрдиреЗ рдпреЛрдЧреНрдп 2.4.2.0ред

рдпрд╣ рдореБрджреНрджрд╛ рдХреНрдпреЛрдВ рдмрдВрдж рд╣реИ? рд╣рдордиреЗ рдирд╡реАрдирддрдо RedHat 7.4 рдореЗрдВ рдирд╡реАрдирддрдо 2.4.2.0 ansible рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдЦрд░реЛрдВрдЪ рд╕реЗ рдПрдХ рд╕рд╛рдл рдорд╢реАрди рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП docker-py рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ python3 рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИред Ansible RPM docker.py рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ docker-py рдирд╣реАрдВред рдпрд╣ docker.py рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ docker-py.py рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Ansible рдХрд╛ рдЕрд╕рдВрдЧрдд рд╣реИред

рдореИрдВ ansible==2.5.0 рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХрд┐рд╕реА рднреА рд╕рд╣рд╛рдпрддрд╛рдХреЛ рдмрд╣реБрдд рд╕рд░рд╛рд╣рд╛ рдЬрд╛рдПрдЧрд╛ред

рдХреГрдкрдпрд╛ рдпрд╣рд╛рдВ рдмрддрд╛рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред https://github.com/ansible/ansible/issues/20492#issuecomment -361724244 - Ansible рдореЗрдВ рдПрдХ рдбреЙрдХ рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ DoK SDK (docker daemon рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛) рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@ рдЖрд░реНрдпрдиреНрд╕рдм рдореИрдВ python3 рдкрд░ Ansible 2.5.0 рдХреЗ рд╕рд╛рде рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВред

fatal: [db01]: FAILED! => {"changed": false, "msg": "Failed to import docker-py - No module named requests.exceptions. Try `pip install docker-py`"}

рдмрд╛рд╡рдЬреВрдж:

$ pip3 freeze |grep docker
docker-py==1.10.6
docker-pycreds==0.2.2

2.4.5 Ansред рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ py2 рдмрдирд╛рдо py3 рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА py2 рдкрд░ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИред

FWIW рдореИрдВ рдЗрд╕реЗ рдЙрдмрдВрдЯреВ рдФрд░ рдлреЗрдбреЛрд░рд╛ рджреЛрдиреЛрдВ рдкрд░ рдХрдВрдЯреНрд░реЛрд▓ рдиреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред

рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХреНрд╕ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдХреЗ рд╕рд╛рде ansible рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛
рдЕрдЬрдЧрд░ рдкрд░ рд╕рд╣реА рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдЬрдЧрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╣реАрдВ рд╣реИ
рдкрдеред рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдЕрдкрд╕реНрдЯреНрд░реАрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ
рдореБрджреНрджрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдирд┐рдХреНрд╕ рдХреЛ рд░реЛрдХ рд░рд╣реА рд╣реИ
рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмрд╣реБрдд рд╕рдлрд╛рдИ рд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

рд╕реЛрдо, рдЕрдкреНрд░реИрд▓ 2, 2018 рдХреЛ, 18:31 рдбреЗрд╡рд┐рдб рдореЛрд░реЛ рд╕рд┐рдорд░рд╛рд░реНрдб рд╕реВрдЪрдирд╛рдПрдВ @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

@ryansb https://github.com/ryansb рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ
рдкрд╛рдпрдерди 3 рдкрд░ Ans 2.5 2.5ред

рдШрд╛рддрдХ: [db01]: рд╡рд┐рдлрд▓! => {"рдкрд░рд┐рд╡рд░реНрддрд┐рдд": рдЕрд╕рддреНрдп, "рд╕рдВрджреЗрд╢": "docker-py рдЖрдпрд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ - рдХреЛрдИ рднреА рдореЙрдбреНрдпреВрд▓ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо .exception рдирд╣реАрдВ рд╣реИред pip install docker-py " рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ}}

рдмрд╛рд╡рдЬреВрдж:

$ pip3 рдлреНрд░реАрдЬ | grep docker
рдбреЛрдХрд░-py == 1.10.6
рдбреЛрдХрд░-pycreds == 0.2.2

2.4.5 Ansред рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ py2 рдмрдирд╛рдо py3 рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рдирд╣реАрдВ рдХрд░рддрд╛
рдЕрднреА py2 рдкрд░ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

FWIW рдореИрдВ рдЗрд╕реЗ рдЙрдмрдВрдЯреВ рдФрд░ рдлреЗрдбреЛрд░рд╛ рджреЛрдиреЛрдВ рдкрд░ рдХрдВрдЯреНрд░реЛрд▓ рдиреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдЗрд╕ рдзрд╛рдЧреЗ рдХреА рд╕рджрд╕реНрдпрддрд╛ рджреА рдЧрдИ рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/ansible/ansible/issues/20492#issuecomment-378067072 ,
рдпрд╛ рдзрд╛рдЧрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AAnvxX5ctoUwDA-3VUVyTjh_k3vyMIa8ks5tkqbRgaJpZM4LpGqv
ред

@ryansb рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЗрд╕рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдХреБрдЫ рднреА рддреЛ рдирд╣реАрдВ

> nix-env -qa|grep sible
python2.7-ansible-2.1.4.0
python2.7-ansible-2.2.1.0
python2.7-ansible-2.3.2.0
python2.7-ansible-2.4.2.0
python2.7-ansible-lint-3.4.20
vimplugin-sensible-2018-01-22
> nix-env -i python2.7-ansible-2.4.2.0

рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВред

@jpiron рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрджреНрдпрддрди рд╕реНрдерд┐рддрд┐ рд╣реИ?

рдкреВрд░реЗ рдзрд╛рдЧреЗ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛, рдХреЛрдИ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред

fatal: [172.16.101.44]: FAILED! => {"changed": false, "msg": "Failed to import docker-py - No module named 'docker'. Try `pip install docker-py`"}

@lifenautjoe рдЖрдкрдиреЗ https://github.com/ansible/ansible/issues/20492#issuecomment -307642085 рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ

рдпрджрд┐ рдЖрдкрдиреЗ docker-py рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрднреА рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рддреЛ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк Ansible рдХреЗ рд╕рд╛рде рд╕рд╣реА Python рджреБрднрд╛рд╖рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╛рдпрдерди 2 рдФрд░ 3 рджреЛрдиреЛрдВ рд╣реИрдВ рдФрд░ pip3 install docker-py рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди Ansible рдкрд╛рдпрдерди 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдирд╣реАрдВ рджреЗрдЦреЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╛рдпрдерди 3 рд╕рд╛рдЗрдЯ-рдкреИрдХреЗрдЬ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдЕрдкрдиреА рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдореЗрдВ рд╣реЛрд╕реНрдЯ рдкрд░ ansible_python_interpreter рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред ansible_python_interpreter рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП http://docs.ansible.com/ansible/latest/reference_appendices/python_3_support.html рджреЗрдЦреЗрдВред

рдпрд╣ рдПрдХ Ansible рдмрдЧ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдкрд╛рдпрдерди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рд╣рд╛рдп @antoinetran , рдореИрдВрдиреЗ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ python3 рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХреА рдФрд░ рдЕрдм python2 рдХреЛ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд┐рдпрд╛ред рдЕрднреА рднреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдм рдЕрдиреБрд░реЛрдз рдкреИрдХреЗрдЬ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ (рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдпрд╛ рддреЛ рдЗрд╕реЗ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ) to

@lifenautjoe рдпрд╣ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдПрдХ рдореБрджреНрджрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рд╕рд╣рд╛рдпрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рд╕рдореБрджрд╛рдп рд╕реЗ рд╕рд▓рд╛рд╣ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП Google рд╕рдореВрд╣ рдпрд╛ Freenode рдкрд░ #ansible рдЪреИрдирд▓ рдкрд░ рдЬрд╛рдПрдВред https://docs.ansible.com/ansible/latest/community/communication.html

tldr; рд▓рдХреНрд╖реНрдп рдореЗрдЬрдмрд╛рди рдкрд░ рдКрдкрд░ рд╕рдВрдпреБрдХреНрдд рд░рд╛рд╖реНрдЯреНрд░ / рдкреНрд░рддрд┐рд╖реНрдард╛рдиреЛрдВ рдХрд░реЗрдВред

рдореИрдВ docker_service рдФрд░ docker_container ansible рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдорд╛рд░ рд░рд╣рд╛ рдерд╛ред рдореИрдВрдиреЗ рдКрдкрд░ рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдХреЛрдИ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рд╢рд░реНрдордирд╛рдХ рд░реВрдк рд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЬрдм рддрдХ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рд╣реБрдЖ рдХрд┐ рддреНрд░реБрдЯрд┐ рдореЗрд░реЗ рджреВрд░рд╕реНрде рд▓рдХреНрд╖реНрдп рд╕реЗ рдЖ рд░рд╣реА рд╣реИ ... рдореБрдЭреЗ рдХреЗрд╡рд▓ рдХрд░рдирд╛ рдерд╛ @jpiron рдЯрд┐рдкреНрдкрдгреА рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдореЛрдЯ рдкрд░ 1.9.0- compose рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд╕реНрдерд╛рдиреАрдп рд╡реЗрд╡ рдХреЗ рдмрдЬрд╛рдп рд▓рдХреНрд╖реНрдп рдЬрд╣рд╛рдВ рдореЗрд░реА рдкреНрд▓реЗрдмреБрдХ рдореМрдЬреВрдж рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд┐рдпрд╛ред

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рд░рд╣рд╕реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

рджреВрд╕рд░реЛрдВ рдХреА рддрд░рд╣, рдореИрдВ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рдерд╛ рдПрдХ рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдмрд┐рд▓реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ docker-py рдЖрдпрд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ред

pip install --user --upgrade pip

рдореЗрд░реЗ рд▓рд┐рдП рдЪреАрдЬреЗрдВ рддреЛрдбрд╝ рд░рд╣рд╛ рдерд╛ред рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдорд╛рд╣реМрд▓ рд╣реИ:

Ubuntu 16.04
- python 2.7.12
- pip 8.1.1
- ansible 2.5.1
- docker 18.03.0-ce
- docker-compose 1.21.0

рдЙрдореНрдореАрдж рд╣реИ рдХреА рд╡реЛ рдорджрдж рдХрд░рджреЗред

рдЕрднреА рднреА 2.5.3 рдореЗрдВ рдЗрд╕ рдкреИрдХреЗрдЬ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред рдЬрдм Python2.7 рдХреЗ рднреАрддрд░ docker-py рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдкрд░, docker-container рдореЙрдбреНрдпреВрд▓ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди docker-service рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП Docker рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

Ansible pip install docker-compose рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╕рдордп, рдпрд╣ docker рдкреИрдХреЗрдЬ рдХреЗ рдкрд╛рдпрдерди 3 рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ docker-container рдореЙрдбреНрдпреВрд▓ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИред рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ docker рд╣рдЯрд╛рдиреЗ рд╕реЗ рдпрд╛ рддреЛ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ рдФрд░ рдлрд┐рд░ рднреА docker-py_ рд╕рдВрджреЗрд╢ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдореЗрдВ _ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред

рдпрд╣ рдмрд╣реБрдд рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдЬрд╛рд░реА рд░рдЦреЗрдВ рдФрд░ рджреЛрдиреЛрдВ рдореЙрдбреНрдпреВрд▓ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдпрд╣ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдмрдВрдж рд╣реИ рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ Ansible Developers рдЕрдм рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рди рджреЗрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

RaymiiOrg picture RaymiiOrg  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

hryamzik picture hryamzik  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mverwijs picture mverwijs  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

iven picture iven  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Pallokala picture Pallokala  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ