Openstack使用Ansible获取新创建的端口ID

时间:2018-08-01 14:17:42

标签: ansible openstack id

我目前已使用os_port模块创建了一个nic端口,现在我试图获取新创建的端口的ID,并将其用于Ansible中的下一个任务。

  - os_port:
       state: present
       fixed_ips:
        - ip_address: 172.30.137.138
       allowed_address_pairs:
        - ip_address: 172.30.137.128/27
       name: port-3
       security_groups: sg_default
       network: nw1
    register: port3
    tags: neutron_ports

如何在Ansible中访问新创建的端口的ID?我已经尝试过类似的操作:{{port3.port_id}},但是它不起作用。我需要在下一个任务中使用此ID。

EDIT1

我发现端口ID是port3.id,但是当我尝试下一个功能(使用该特定端口创建VM)时,出现错误:

- name: Create a VM
    os_server: 
      state: present
      flavor: m1.small  
      name: vm1
      image: cirros
      availability_zone: internal 
      nics: 
      - port-id: port3.id
    tags: vm1

错误:

  

致命:[localhost]:失败! => {“更改”:false,“额外数据”:null,   “ msg”:“ BadRequestException:400:URL的客户端错误:   http://192.168.111.130:8774/v2.1/4f8c49b18a4347df90f28cbe39414f0e/servers,   {\“ badRequest \”:{\“ message \”:\“字段/属性的无效输入   港口。值:port3.id。 u'port3.id'在任何给定的条件下均无效   schemas \“,\” code \“:400}}”}

EDIT2: 我还没有在“ {{}}”中引入变量。之后,Ansible脚本运行了,但是在实例创建时出现大量JSON数据时出现错误,但最后一行显示:

  

创建服务器时出错

如果我正在查看仪表板,则会看到该实例,但其状态为“错误”。在VM内,我收到以下消息:“未找到有效的主机”和500代码。 当我查看主机时,所有主机都在运行并且可用:

[dante@localhost roles(keystone_admin)]$ nova service-list
+--------------------------------------+------------------+-----------------------+----------+---------+-------+----------------------------+-----------------+-------------+
| Id                                   | Binary           | Host                  | Zone     | Status  | State | Updated_at                 | Disabled Reason | Forced down |
+--------------------------------------+------------------+-----------------------+----------+---------+-------+----------------------------+-----------------+-------------+
| 21ac1600-fc5a-481e-a725-3e12265bdb66 | nova-conductor   | localhost.localdomain | internal | enabled | up    | 2018-08-07T17:08:38.000000 | -               | False       |
| 6d9393da-42ea-4290-83f6-af4af2c377e3 | nova-scheduler   | localhost.localdomain | internal | enabled | up    | 2018-08-07T17:08:40.000000 | -               | False       |
| 6eb82482-d6df-4fb7-ad77-46bdacf442de | nova-consoleauth | localhost.localdomain | internal | enabled | up    | 2018-08-07T17:08:38.000000 | -               | False       |
| 46b5e512-da96-4066-b45e-57336da6cfec | nova-compute     | localhost.localdomain | nova     | enabled | up    | 2018-08-07T17:08:40.000000 | -               | False       |

有什么想法吗?

非常感谢,

罗曼

1 个答案:

答案 0 :(得分:0)

尝试一下:

更改:

- port-id: port3.id

收件人:

- port-id: "{{ port3.id }}"