-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathxen2osp.yaml
92 lines (89 loc) · 2.39 KB
/
xen2osp.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
---
- hosts: all
tasks:
- name: mount nfs share
mount:
name: '{{ nfs_mount }}'
src: '{{ nfs_share }}'
fstype: nfs
state: mounted
opts: noauto
- hosts: xenserver
tasks:
- name: get vm power state
shell: xe vm-list name-label={{ vm_name }} | grep 'power-state' | awk '{print $4}'
register: power_state
- debug: var=power_state verbosity=2
- name: stop vm
command: xe vm-shutdown vm={{ vm_name }}
when:
- power_state.stdout == 'running'
- name: export image
command: xe vm-export filename={{ nfs_mount }}/{{ vm_name }}.xva vm={{ vm_name }}
args:
creates: '{{ nfs_mount }}/{{ vm_name }}.xva'
- hosts: builder
tasks:
- name: install required packages
yum:
name: '{{ item }}'
state: present
with_items:
- virt-v2v
- cmake
- gcc-c++
- python-glanceclient
- name: clone xva-img git repo
git:
repo: 'https://github.com/eriklax/xva-img.git'
dest: '/opt/xva-img'
tags:
- gitrepo
- name: run cmake on project
command: cmake .
args:
chdir: '/opt/xva-img'
creates: '/opt/xva-img/Makefile'
tags:
- cmake
- name: make and install xva-img binary
command: make install
args:
chdir: '/opt/xva-img'
creates: '/usr/local/bin/xva-img'
- name: create dir for unpacked image
file:
path: '{{ nfs_mount }}/{{ vm_name }}'
state: directory
- name: unpack xva tarball
unarchive:
src: '{{ nfs_mount }}/{{ vm_name }}.xva'
dest: '{{ nfs_mount }}/{{ vm_name }}'
remote_src: yes
register: tarball
tags:
- tarball
- name: get weird Ref number
shell: ls {{ nfs_mount }}/{{ vm_name }} | grep Ref
register: ref
- debug: var=ref verbosity=2
- name: convert xva to raw
command: xva-img -p disk-export {{ nfs_mount }}/{{ vm_name }}/{{ ref.stdout }}/ {{ nfs_mount }}/{{ vm_name }}.raw
args:
creates: '{{ nfs_mount }}/{{ vm_name }}.raw'
- name: prep image and upload to glance
command: virt-v2v -i disk '{{ nfs_mount }}/{{ vm_name }}.raw' -o glance
tags:
- virtv2v
environment: '{{ osp_env }}'
- name: boot an instance in nova
os_server:
state: present
name: '{{ vm_name }}'
image: '{{ vm_name }}'
key_name: user0
flavor: 2
floating_ip_pools: nova
register: os_server
environment: '{{ osp_env }}'
- debug: var=os_server.server.accessIPv4