-
Notifications
You must be signed in to change notification settings - Fork 0
/
playbook_create_project.yaml
131 lines (109 loc) · 3.76 KB
/
playbook_create_project.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
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
- hosts: localhost
gather_facts: false
vars:
project: "OPTLC-OSPD_Basic-v13.7-bp"
api_user: "{{ guid }}"
vars_prompt:
- prompt: "Name of the BP"
name: project
private: no
- prompt: "GUID for the project?"
name: guid
private: no
- prompt: "USER for the project?"
name: user
private: no
- prompt: "ID for the external network"
name: external
private: no
- prompt: "Directory with stack_admin.yaml and stack_user.yaml"
name: directory
private: no
- prompt: "OSP Auth url"
name: auth_url
private: no
- prompt: "OSP Auth user"
name: auth_user
private: no
- prompt: "OSP Auth password"
name: auth_pass
private: no
tasks:
- set_fact: project_name="{{ project | replace('-bp','') | replace('OPTLC', 'OTLC-LAB-' + user) }}-{{ guid }}"
- set_fact: api_pass="{{ lookup('password', '/dev/null length=20 chars=ascii_letters') }}"
- name: Check if project exists
os_project_facts:
auth:
auth_url: "{{ auth_url }}"
project_name: admin
username: "{{ auth_user }}"
password: "{{ auth_pass }}"
user_domain_name: Default
project_domain_name: Default
name: "{{ project_name }}"
register: project_exists
- fail: msg="Project exists, can't continue"
when: project_exists.ansible_facts.openstack_projects
- command: "date +%s"
register: date
- name: Create project and assign permission
register: stack_admin_output
os_stack:
auth:
auth_url: "{{ auth_url }}"
project_name: admin
username: "{{ auth_user }}"
password: "{{ auth_pass }}"
user_domain_name: Default
project_domain_name: Default
name: "create-project-{{project_name}}"
template: "{{ directory }}/stack_admin.yaml"
parameters:
project_name: "{{ project_name }}"
project_guid: "{{ guid }}"
project_description: "created:{{ date.stdout }}"
project_api_user: "{{ api_user }}"
project_api_pass: "{{ api_pass }}"
blueprint: "{{ project }}"
- name: Create objects inside the project
register: stack_user_output
os_stack:
auth:
auth_url: "{{ auth_url }}"
project_name: "{{ project_name }}"
username: "{{ api_user }}"
password: "{{ api_pass }}"
user_domain_name: Default
project_domain_name: Default
name: "create-objects-{{project_name}}"
template: "{{ directory }}/stack_user.yaml"
parameters:
project_name: "{{ project_name }}"
public_net_id: "{{ external }}"
api_url: "{{ auth_url }}"
api_user: "{{ api_user }}"
api_pass: "{{ api_pass }}"
project_guid: "{{ guid }}"
#- set_fact: fip="{{ objects.stack.outputs[0].output_value }}"
#- debug: msg="Floating IP {{ fip }} assigned"
#
- name: Save infra_key content
set_fact:
infra_private_key_content: "{{ stack_user_output | json_query(query) }}"
vars:
query: "stack.outputs[?@.output_key=='openstack_project_infra_key'].output_value|[0]"
- name: Set infra_ssh_key path
set_fact:
infra_ssh_key: "{{ directory}}/{{ guid }}_infra_ssh_key.pem"
- name: Copy infra_key content to output_dir
copy:
dest: "{{ infra_ssh_key }}"
content: "{{ infra_private_key_content }}"
mode: 0600
- debug: var=stack_user_output
- name: print out user.info
debug:
msg: "user.info: ssh -i {{ directory}}/{{ guid }}_infra_ssh_key.pem cloud-user@{{ item.output_value }}"
when: '"_fip" in item.output_key'
loop:
"{{ stack_user_output.stack.outputs }}"