我正在尝试使用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上创建小滴的方法。
答案 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
中的$PATH
与python
中的{em>可能你的路。当然,您可以在同一终端上通过python -c "import dopy"
确定并确保没有爆炸。