使用Packstack和Ansible部署新VM

使用Packstack和Ansible部署新VM,ansible,virtual-machine,openstack,Ansible,Virtual Machine,Openstack,我已经安装了Packstack和Ansible 2.7.5,我想使用Ansible进行测试并部署VM。我正在使用以下代码: --- #Deploy an instance - name: Deploy an instance hosts: localhost gather_facts: false tasks: - name: Deploy an instance os_server: state: present auth:

我已经安装了Packstack和Ansible 2.7.5,我想使用Ansible进行测试并部署VM。我正在使用以下代码:

--- #Deploy an instance
- name: Deploy an instance
  hosts: localhost
  gather_facts: false
  tasks: 
  - name: Deploy an instance
    os_server: 
       state: present
       auth: 
         auth_url: http://127.0.0.1:5000/v2.0/
         username: admin
         password: 712e207207aa4083 
         project_name: admin 
       name: webserver
       image: cirros
       key_name: root
       timeout: 200  
       flavor: 1
       nics:
        - net-id: fa6af4e6-c44e-439c-a91c-03bcae55e587
       meta:
        hostname: webserver.localdomain
当我运行它时,我得到以下错误:

TASK [Deploy an instance] *****************************************************************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "To utilize this module, the installed version ofthe openstacksdk library MUST be >=0.12.0"}
    to retry, use: --limit @/home/dante/Openstack/deployment.retry

PLAY RECAP ********************************************************************************************************************************************************************************************************
localhost                  : ok=0    changed=0    unreachable=0    failed=1   
我还试图安装Openstacksdk 0.12.0,但我遇到了一些与依赖项相关的其他错误:

[dante@localhost Openstack]$ sudo pip install openstacksdk==0.12.0
...
Installing collected packages: ipaddress, os-service-types, PyYAML, openstacksdk
  Found existing installation: ipaddress 1.0.16
Cannot uninstall 'ipaddress'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
有没有办法纠正这个问题?或者,如果这个模块是全新的,并且有太多的bug,是否有其他方法可以使用Ansible在Openstack中创建VM?我也检查了nova_计算模块的版本,但是它说这个Ansible模块在Ansible 2.0之后被弃用了

致以最良好的祝愿,
Romain

尽管在hosts:is localhost中,您仍然需要告诉它连接类型,以便可以使用delegate_to:localhost或connection:localhost。这对于与API通信或不需要ssh连接来执行任务的任何模块都是必需的。例如,aws、gitlab、github、nios模块。

最终通过安装openstacksdk及其所有依赖项解决了这个问题。代码如下:

--- #Deploy an instance
- name: Deploy an instance
  hosts: localhost
  gather_facts: false
  tasks: 
  - name: Deploy an instance
    os_server: 
       state: present
       auth: 
         auth_url: http://<URL TAKEN FROM SOURCE FILE> 
         username: <USERNAME>
         password: <PASSWORD> 
       name: webserver
       image: <ID OF THE IMAGE>
       timeout: 700  
       flavor: 1
       auto_floating_ip: yes
    register: webserver
——#部署一个实例
-名称:部署实例
主机:本地主机
收集事实:错误
任务:
-名称:部署实例
os_服务器:
国家:现在
认证:
验证url:http://
用户名:
密码:
名称:Web服务器
图片:
超时:700
口味:1
自动浮动ip:是
注册:Web服务器

感谢您的回复,但最终,通过安装该数据包及其所有必需的依赖项,问题得以解决。我错过了这一部分。您正在使用ansible的一个非常旧的版本。您应该尝试一个更新的版本,因为它更容易做到这一点。我认为Ansible的最后一个版本是:2.7.52.7.5在开发中,尚未正式发布。2.6.2是最新版本。您从哪里获得Ansible 2.7.5?@techraf:我正在使用一些EC2服务器,这是该回购协议可用的Ansible的最后一个版本。很有趣,因为到今天为止,最新的版本是2.6.2。可能他指的是Python 2.7.5?