Ansible返回值 - 需要IP地址(Ansible Return Value - Need IP

2019-09-28 04:33发布

目前,我们正在与OpenStack的结合使用Ansible。 我写了一个剧本(通过OpenStack的部署新的服务器),其中我使用该模块os_server这里我使用auto_ip: yes ,新的服务器将成为从OpenStack的服务器分配一个IP地址。

如果我使用-vvvv输出命令,我得到其中在输出中间的IP地址列出了一个很长的输出

所以,因为我是一个懒惰的家伙,我希望把眼前这个IP地址的变量,让我显示此IP地址的额外字段。 它应该是这样的:

"........output stuf.....
................................
.............................
..............................
..............................."

"The IP Adress of the New server is ....."

有没有你知道把这些IP地址字段中的变量或以滤除输出到IP地址的任何可能性?

如果你需要一个屏幕截图,看看我的意思是,没有问题只写它,我会把它送给你!

Answer 1:

Ansible OpenStack的模块采用shade Python包来创建服务器。

根据shade源代码, create_server方法返回表示创建的服务器的字典。

尝试注册的结果os_server和调试。 IP地址应该在那里。

例如:

- name: launch a compute instance
  hosts: localhost
  tasks:
  - name: launch an instance
    os_server:
      state: present
      ...
      auto_ip: yes
    register: result

- debug: var=result

此外,您还可以看看这个样本剧本这正是这一点。

下面是摘录:

- name: create cluster notebook VM
  register: notebook_vm
  os_server:
    name: "{{ cluster_name }}-notebook"
    flavor: "{{ notebook_flavor }}"
    image: "CentOS-7.0"
    key_name: "{{ ssh_key }}"
    network: "{{ network_name }}"
    security_groups:
      - "{{ cluster_name }}-notebook"
    auto_ip: yes
    boot_from_volume: "{{ notebook_boot_from_volume }}"
    terminate_volume: yes
    volume_size: 25

- name: add notebook to inventory
  add_host:
    name: "{{ cluster_name }}-notebook"
    groups: notebooks
    ansible_ssh_host: "{{ notebook_vm.openstack.private_v4 }}"
    ansible_ssh_user: cloud-user
    public_ip: "{{ notebook_vm.openstack.public_v4 }}"
    public_name: "{{ lookup('dig', notebook_vm.openstack.public_v4 + '/PTR', wantlist=True)[0] }}"
  tags: ['vm_creation']


文章来源: Ansible Return Value - Need IP Adress