Почему создание капли через Ansible терпит неудачу и жалуется на зависимость от «dopy»? - PullRequest
0 голосов
/ 02 декабря 2018

Я пытаюсь создать каплю на DigitalOcean с помощью Ansible.Я написал следующий скрипт для этого

- name: launch DO droplet
  hosts: localhost
  gather_facts: False
  tasks:
    - name: spin up DO droplet
      local_action:
        module: digital_ocean
             state=present
             command=droplet
             name=test1
             api_token=***
             ssh_key_ids=DigitalOcean_MAC
             size_id=2gb
             region_id=ams2
             image_id=ubuntu-18-04-x64
             wait_timeout=500
      register: my_droplet
    - name: print info about my_droplet
      local_action:
        module:  debug
            msg="ID is {{ my_droplet.droplet.id }} IP is {{ my_droplet.droplet.ip_address }}"

    - name: Add new droplet to host group
      local_action: add_host hostname={{ my_droplet.droplet.ip_address }} groupname=launched

    - name: Wait for SSH to come up
      local_action: wait_for host={{ my_droplet.droplet.ip_address }} port=22 delay=60 timeout=320 state=started

Я выполняю его через

ansible-playbook create_droplet.yml -c local -i localhosts

Но я всегда получаю следующую ошибку

> PLAY [launch DO droplet]
> ****************************************************************************************************************
> 
> TASK [spin up DO droplet]
> *************************************************************************************************************** fatal: [localhost -> localhost]: FAILED! => {"changed": false, "msg":
> "dopy >= 0.3.2 required for this module"}     to retry, use: --limit
> @/Users/wim/Dropbox/Programming/Ansible/DigitalOcean/create_droplet.retry
> 
> > PLAY RECAP
> > ****************************************************************************************************************************** localhost                  : ok=0    changed=0    unreachable=0   
> > failed=1

Я устанавливаю эту копию с помощью:

sudo pip install 'dopy> = 0.3.5,<= 0.3.5 '</p>

Но это также не помогает.

Есть предложения, что не так ... или есть другой способ создать каплю в DigitalOcean.

1 Ответ

0 голосов
/ 03 декабря 2018

sudo pip install 'dopy> = 0.3.5, <= 0.3.5' </p>

Не поможет, не зная, какой ansible_python_interpreter вы используете, начиная с -c localтребует локального, который использует ansible, для содержания модуля, а не любого случайного питона, с которым вы запускали pip.У меня есть сильное подозрение, что ansible по умолчанию будет /usr/bin/python, что может быть хорошо, но я предполагаю, что в ваших обстоятельствах это не так, иначе вы бы не задавали этот вопрос.

Скорее всего, вы можете достичьуспех через ansible-playbook -e ansible_python_interpreter=$(which python) ..., поскольку pip от вашего $PATH равен , вероятно то же самое от python на вашем пути.Конечно, вы можете быть уверены через python -c "import dopy" в том же терминале и убедиться, что ничего не взорвалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...