目前,我们正在与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地址的任何可能性?
如果你需要一个屏幕截图,看看我的意思是,没有问题只写它,我会把它送给你!
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']