-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexercise7-fix.yaml
More file actions
156 lines (141 loc) · 4.57 KB
/
exercise7-fix.yaml
File metadata and controls
156 lines (141 loc) · 4.57 KB
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
- name: Fixing the exercise7
hosts: localhost
gather_facts: true
vars:
user: "{{ lookup('env', 'USER') }}"
tasks:
- name: Clean the exercise7
kubernetes.core.k8s:
state: absent
template: "exercise7-vm.yaml.j2"
register: cleanvm
until: cleanvm is succeeded
retries: 60
delay: 10
failed_when: cleanvm is failed or cleanvm.failed
- name: Wait for the Virtual Machine to be removed
kubernetes.core.k8s_info:
kind: VirtualMachine
namespace: "namespace-{{ user }}"
name: "exercise7"
register: cleanvm
retries: 60
delay: 2
until: cleanvm.resources | length == 0
- name: Remove exercise7-restoresnapshot.yaml script
ansible.builtin.file:
path: '/home/{{ user }}/exercise7-restoresnapshot.yaml'
state: absent
- name: Creating the exercise7 virtual machine
kubernetes.core.k8s:
state: present
template: "exercise7-vm.yaml.j2"
register: breakvm
until: breakvm is succeeded
retries: 60
delay: 10
failed_when: breakvm is failed or breakvm.failed
- name: Wait for VM to be running
kubernetes.core.k8s_info:
api_version: kubevirt.io/v1
kind: VirtualMachineInstance
namespace: "namespace-{{ user }}"
name: "exercise7"
register: exercise7info
until: "exercise7info.resources | length > 0 and exercise7info.resources[0].status.phase == 'Running'"
retries: 60
delay: 10
failed_when: exercise7info.resources | length == 0
- name: Create the VM snapshot
kubernetes.core.k8s:
kind: VirtualMachineSnapshot
namespace: 'namespace-{{ user }}'
definition:
apiVersion: snapshot.kubevirt.io/v1alpha1
kind: VirtualMachineSnapshot
metadata:
name: exercise7-snapshot
spec:
source:
apiGroup: kubevirt.io
kind: VirtualMachine
name: exercise7
- name: Create exercise7-restoresnapshot.yaml script
ansible.builtin.template:
src: 'exercise7-restoresnapshot.yaml.j2'
dest: '/home/{{ user }}/exercise7-restoresnapshot.yaml'
mode: '0644'
- name: Check if exercise7 VM exists
kubernetes.core.k8s_info:
namespace: "namespace-{{ user }}"
kind: VirtualMachine
name: exercise7
register: ex1vm
failed_when: false
- name: Fail if not executed break first
ansible.builtin.fail:
msg: "You must run 'lab break exercise7' before run the lab fix"
when: ex1vm.resources | length == 0
- name: Stop VM exercise7 if it exists
kubernetes.core.k8s:
namespace: "namespace-{{ user }}"
kind: VirtualMachine
name: exercise7
state: present
definition:
spec:
running: false
register: stopvm
until: stopvm is succeeded
retries: 60
delay: 10
when: ex1vm.resources | length > 0
- name: Wait for VirtualMachine to stop
kubernetes.core.k8s_info:
kind: VirtualMachineInstance
namespace: "namespace-{{ user }}"
name: "exercise7"
register: exercise7vm
retries: 60
delay: "10"
until: exercise7vm.resources | length == 0
- name: Restore the snapshot
kubernetes.core.k8s:
kind: VirtualMachineRestore
namespace: 'namespace-{{ user }}'
definition:
apiVersion: snapshot.kubevirt.io/v1alpha1
kind: VirtualMachineRestore
metadata:
name: restore-exercise7-snapshot
spec:
target:
apiGroup: kubevirt.io
kind: VirtualMachine
name: exercise7
virtualMachineSnapshotName: exercise7-snapshot
- name: Set VM to start state
kubernetes.core.k8s:
namespace: "namespace-{{ user }}"
kind: VirtualMachine
name: exercise7
state: present
definition:
spec:
running: true
register: startvm
until: startvm is succeeded
retries: 60
delay: 10
failed_when: startvm is failed or startvm.failed
- name: Wait for VM to be running
kubernetes.core.k8s_info:
api_version: kubevirt.io/v1
kind: VirtualMachineInstance
namespace: "namespace-{{ user }}"
name: "exercise7"
register: exercise7info
until: "exercise7info.resources | length > 0 and exercise7info.resources[0].status.phase == 'Running'"
retries: 60
delay: 10
failed_when: exercise7info.resources | length == 0