为什么通过Ansible创建小滴会抱怨“ dopy”依赖项失败?

时间:2018-12-02 14:40:25

标签: ansible digital-ocean

我正在尝试使用Ansible在DigitalOcean上创建一个Droplet。我为此编写了以下脚本

- 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本地-i本地主机

但是我总是遇到以下错误

> 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

我正在使用以下方式安装该dopy东西:

  

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

但这也无济于事。

任何建议都出了什么问题...或者还有另一种在DigitalOcean上创建小滴的方法。

1 个答案:

答案 0 :(得分:1)

  

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

在不知道您正在使用什么ansible_python_interpreter的情况下会有所帮助,因为-c local要求ansible使用本地来包含模块,而不是您针对pip运行的任何随机python 。我强烈怀疑ansible将默认设置为/usr/bin/python,这可能很好,但是我猜测在您的情况下并非不是您不会问这个问题。

很有可能您可以通过ansible-playbook -e ansible_python_interpreter=$(which python) ...获得成功,因为pip中的$PATHpython中的{em>可能你的路。当然,您可以在同一终端上通过python -c "import dopy"确定并确保没有爆炸。