Skip to content

Commit 569ace2

Browse files
authored
Apimon playbook for cbr (#102)
Apimon playbook for cbr created playbook for cbr Reviewed-by: Vladimir Hasko <[email protected]> Reviewed-by: jmiskani
1 parent 35deeb3 commit 569ace2

File tree

1 file changed

+199
-0
lines changed

1 file changed

+199
-0
lines changed

playbooks/scenario47_cbr.yaml

+199
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
---
2+
3+
# Scenario to test CBR ECS server backup
4+
# A VPC is created and VM is being started in different AZs
5+
6+
- name: Scenario 47 - CBR server backup
7+
hosts: localhost
8+
vars:
9+
prefix: scenario47-
10+
11+
tasks:
12+
- set_fact:
13+
prefix: "{{ (prefix + ( lookup('env', 'TASK_EXECUTOR_JOB_ID') | default(99999999 | random | to_uuid | hash('md5'), true) ) ) }}"
14+
15+
- set_fact:
16+
test_server_fqdn: "{{ (prefix + '.host') }}"
17+
test_security_group_name: "{{ (prefix + '-sg') }}"
18+
test_keypair_name: "{{ (prefix + '-kp') }}"
19+
test_network_name: "{{ ( prefix + '-net') }}"
20+
test_vault_name: "{{ ( prefix + '-vault' ) }}"
21+
test_server_name: "{{ (prefix + '-test_server_apimon') }}"
22+
test_policy_name: "{{ (prefix + '-test_policy_apimon') }}"
23+
24+
- name: Query specific flavor
25+
openstack.cloud.compute_flavor_info:
26+
register: flavor_result
27+
28+
- name: Query OS image
29+
openstack.cloud.image_info:
30+
register: images
31+
32+
# Set CentOS latest
33+
- set_fact:
34+
test_image: "{{ images.images | selectattr( 'name', 'search', 'CentOS') | map(attribute='name') | first }}"
35+
36+
# Set ECS flavor
37+
- set_fact:
38+
test_flavor: "{{ flavor_result.flavors | sort(attribute='ram') | map(attribute='name') | first }}"
39+
40+
- block:
41+
42+
# Prepare infrastructure and ECS server
43+
- name: Create KeyPair
44+
include_role:
45+
name: opentelekomcloud.keypair
46+
vars:
47+
keypair_name: "{{ test_keypair_name }}"
48+
state: present
49+
50+
- name: Create VPC
51+
include_role:
52+
name: vpc
53+
vars:
54+
network_name: "{{ test_network_name }}"
55+
56+
- name: Create Security Group
57+
openstack.cloud.security_group:
58+
name: "{{ test_security_group_name }}"
59+
description: "dummy"
60+
61+
- name: Create Security Group Rule
62+
openstack.cloud.security_group_rule:
63+
security_group: "{{ test_security_group_name }}"
64+
protocol: tcp
65+
port_range_min: 22
66+
port_range_max: 22
67+
remote_ip_prefix: 0.0.0.0/0
68+
69+
- name: Create ECS Server in default AZ
70+
openstack.cloud.server:
71+
auto_ip: false
72+
name: "{{ test_server_name }}"
73+
image: "{{ test_image }}"
74+
flavor: "{{ test_flavor }}"
75+
key_name: "{{ test_keypair_name }}"
76+
network: "{{ test_network_name }}"
77+
register: server
78+
79+
- name: Get ECS server ID
80+
set_fact:
81+
server_id: "{{ server.server.id }}"
82+
83+
# Create CBR backup policy create / update
84+
- name: Create CBR Backup Policy
85+
opentelekomcloud.cloud.cbr_policy:
86+
name: "{{ test_policy_name }}"
87+
count_day_backups: 0
88+
count_month_backups: 0
89+
retention_duration_days: 5
90+
count_year_backups: 0
91+
timezone: "UTC+08:00"
92+
pattern:
93+
- "FREQ=WEEKLY;BYHOUR=14;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYMINUTE=00"
94+
95+
- name: Update CBR backup policy
96+
opentelekomcloud.cloud.cbr_policy:
97+
name: "{{ test_policy_name }}"
98+
count_day_backups: 5
99+
pattern:
100+
- "FREQ=WEEKLY;BYHOUR=14;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYMINUTE=00"
101+
is_enabled: False
102+
103+
# CBR create vault create backup and restore ECS server
104+
- name: Create CBR server Backup Vault
105+
opentelekomcloud.cloud.cbr_vault:
106+
name: "{{ test_vault_name }}"
107+
auto_bind: false
108+
auto_expand: false
109+
policy: "{{ test_policy_name }}"
110+
billing:
111+
consistent_level: "crash_consistent"
112+
object_type: "server"
113+
protect_type: "backup"
114+
size: 40
115+
register: vault
116+
117+
- name: Associate resouces to CBR vault
118+
opentelekomcloud.cloud.cbr_vault:
119+
name: "{{ test_vault_name }}"
120+
resources:
121+
- id: "{{ server_id }}"
122+
type: "OS::Nova::Server"
123+
action: "associate_resources"
124+
register: vault
125+
126+
- name: Create CBR restore point
127+
opentelekomcloud.cloud.cbr_restore_point:
128+
vault: "{{ test_vault_name }}"
129+
wait: false
130+
ignore_errors: true
131+
132+
- name: Query backups for CBR vault
133+
opentelekomcloud.cloud.cbr_backup_info:
134+
vault: "{{ test_vault_name }}"
135+
register: backups
136+
until: backups.backups[0].status == "available"
137+
retries: 20
138+
delay: 30
139+
ignore_errors: false
140+
141+
- name: Get CBR backup ID
142+
set_fact:
143+
backup_id: "{{ backups.backups.0.id }}"
144+
145+
- name: Restore ECS server from CBR backup
146+
opentelekomcloud.cloud.cbr_backup:
147+
name: "{{ backup_id }}"
148+
server_id: "{{ server_id }}"
149+
power_on: true
150+
151+
- name: Query backups for CBR vault
152+
opentelekomcloud.cloud.cbr_backup_info:
153+
vault: "{{ test_vault_name }}"
154+
register: backups
155+
until: backups.backups[0].status == "available"
156+
retries: 20
157+
delay: 30
158+
159+
always:
160+
# Clean created resourcesd
161+
- block:
162+
163+
- name: Delete ECS server
164+
openstack.cloud.server:
165+
state: absent
166+
name: "{{ server_id }}"
167+
168+
- name: Delete CBR server Backup Vault
169+
opentelekomcloud.cloud.cbr_vault:
170+
name: "{{ test_vault_name }}"
171+
state: absent
172+
register: vault
173+
174+
- name: Delete CBR backup policy
175+
opentelekomcloud.cloud.cbr_policy:
176+
name: "{{ test_policy_name }}"
177+
state: absent
178+
179+
- name: Delete Security Group
180+
openstack.cloud.security_group:
181+
name: "{{ test_security_group_name }}"
182+
state: absent
183+
184+
- name: Delete VPC
185+
include_role:
186+
name: vpc
187+
vars:
188+
state: absent
189+
network_name: "{{ test_network_name }}"
190+
191+
- name: Delete KeyPair
192+
include_role:
193+
name: keypair
194+
vars:
195+
keypair_name: "{{ test_keypair_name }}"
196+
state: absent
197+
force_delete_key: true
198+
199+
ignore_errors: true

0 commit comments

Comments
 (0)