2015-06-02 3 views
2

Я использую Ansible playbook для управления установкой контейнеров Docker. У меня есть следующий плей-лист, который устанавливает Cassandra:Проблемы с доступом к работе с Boot2Docker

Я хочу запустить эту игрушку локально и установить ее в Boot2Docker. Я могу SSH в Boot2Docker, используя инструкции из this answer:

$ ssh -i $HOME/.ssh/id_boot2docker -p 2022 [email protected] 
         ##  . 
        ## ## ##  == 
       ## ## ## ##  === 
      /""""""""""""""""\___/ === 
     ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~/===- ~~~ 
      \______ o   __/ 
      \ \  __/ 
       \____\______/ 
_     _ ____  _   _ 
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __ 
| '_ \/_ \/_ \| __| __)/_` |/ _ \/__| |//_ \ '__| 
| |_) | (_) | (_) | |_/__/ (_| | (_) | (__| < __/ | 
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_| 
Boot2Docker version 1.4.1, build master : 86f7ec8 - Tue Dec 16 23:11:29 UTC 2014 
Docker version 1.4.1, build 5bc2ff8 
[email protected]:~$ 

Я сделал файл инвентаризации с теми же настройками SSH:

[local] 
localhost ansible_ssh_port=2022 ansible_ssh_user=docker ansible_ssh_private_key_file=~/.ssh/id_boot2docker 

Но когда я бегу пьес, он терпит неудачу с ошибкой «/bin/sh: /usr/bin/python: not found»:

$ ansible-playbook db-setup.yml -i hosts.local 

PLAY [local] ****************************************************************** 

GATHERING FACTS *************************************************************** 
failed: [localhost] => {"failed": true, "parsed": false} 
/bin/sh: /usr/bin/python: not found 
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011 
debug1: Reading configuration data /etc/ssh_config 
debug1: /etc/ssh_config line 20: Applying options for * 
debug1: /etc/ssh_config line 102: Applying options for * 
debug1: auto-mux: Trying existing master 
debug1: mux_client_request_session: master session id: 2 
Shared connection to localhost closed. 


TASK: [Database] ************************************************************** 
FATAL: no hosts matched or all hosts have already failed -- aborting 


PLAY RECAP ******************************************************************** 
     to retry, use: --limit @/Users/bryan/db-setup.retry 
localhost     : ok=0 changed=0 unreachable=0 failed=1 

я все еще получаю ошибку, даже если „собрать факты“ выключен. Если я SSH в Boot2Docker, я могу видеть, что существует /usr/bin/python:

$ ssh -i $HOME/.ssh/id_boot2docker -p 2022 [email protected] 
... 
[email protected]:~$ which python 

ответ

1

Решение было простым: Python не устанавливается по умолчанию, Boot2Docker.

Для установки запустите

$ boot2docker ssh "wget http://www.tinycorelinux.net/6.x/x86/tcz/python.tcz && tce-load -i python.tcz && rm -f python.tcz" 

Я создал скрипт, чтобы сделать это автоматически, см https://gist.github.com/bcattle/90e64fbe808b3409ec2f

3

boot2docker ssh "tce-load -w -i python.tcz" делает трюк, а также (вам нужен интернет ;-)) для грузчика и анзибль вас потребуется "Докер-ру"

  1. Setup пип, войдите в boot2docker
  2. wget https://bootstrap.pypa.io/get-pip.py
  3. python get-pip.py
  4. pip install docker-py

также добавить в свой файл инвентаризации:

dockerhost ansible_connection=ssh ansible_ssh_host=192.168.59.103 ansible_ssh_user=docker ansible_ssh_private_key_file=~/.ssh/id_boot2docker ansible_python_interpreter=/usr/local/bin/python