瀏覽代碼

Adding the option to use 'stack_state' to allow for easy de-provisioning (#754)

* Adding 'openstack-stack-delete' role to allow for easy de-provisioning

* Updated per etsauer's comments
Øystein Bedin 7 年之前
父節點
當前提交
15be1ebcf1

+ 3 - 0
roles/openstack-stack/defaults/main.yml

@@ -1,4 +1,7 @@
 ---
+
+stack_state: 'present'
+
 ssh_ingress_cidr: 0.0.0.0/0
 node_ingress_cidr: 0.0.0.0/0
 master_ingress_cidr: 0.0.0.0/0

+ 6 - 0
roles/openstack-stack/tasks/cleanup.yml

@@ -0,0 +1,6 @@
+---
+
+- name: cleanup temp files
+  file:
+    path: "{{ stack_template_pre.path }}"
+    state: absent

+ 32 - 0
roles/openstack-stack/tasks/generate-templates.yml

@@ -0,0 +1,32 @@
+---
+- name: create HOT stack template prefix
+  register: stack_template_pre
+  tempfile:
+    state: directory
+    prefix: casl-ansible
+
+- name: set template paths
+  set_fact:
+    stack_template_path: "{{ stack_template_pre.path }}/stack.yaml"
+    user_data_template_path: "{{ stack_template_pre.path }}/user-data"
+
+- name: generate HOT stack template from jinja2 template
+  template:
+    src: heat_stack.yaml.j2
+    dest: "{{ stack_template_path }}"
+
+- name: generate HOT server template from jinja2 template
+  template:
+    src: heat_stack_server.yaml.j2
+    dest: "{{ stack_template_pre.path }}/server.yaml"
+
+- name: generate HOT server w/o floating IPs template from jinja2 template
+  template:
+    src: heat_stack_server_nofloating.yaml.j2
+    dest: "{{ stack_template_pre.path }}/server_nofloating.yaml"
+  when: use_bastion|bool
+
+- name: generate user_data from jinja2 template
+  template:
+    src: user_data.j2
+    dest: "{{ user_data_template_path }}"

+ 15 - 39
roles/openstack-stack/tasks/main.yml

@@ -1,51 +1,27 @@
 ---
-- name: create HOT stack template prefix
-  register: stack_template_pre
-  tempfile:
-    state: directory
-    prefix: casl-ansible
 
-- name: set template paths
-  set_fact:
-    stack_template_path: "{{ stack_template_pre.path }}/stack.yaml"
-    user_data_template_path: "{{ stack_template_pre.path }}/user-data"
+- name: Generate the templates
+  include: generate-templates.yml
+  when:
+  - stack_state == 'present'
 
-- name: generate HOT stack template from jinja2 template
-  template:
-    src: heat_stack.yaml.j2
-    dest: "{{ stack_template_path }}"
-
-- name: generate HOT server template from jinja2 template
-  template:
-    src: heat_stack_server.yaml.j2
-    dest: "{{ stack_template_pre.path }}/server.yaml"
-
-- name: generate HOT server w/o floating IPs template from jinja2 template
-  template:
-    src: heat_stack_server_nofloating.yaml.j2
-    dest: "{{ stack_template_pre.path }}/server_nofloating.yaml"
-  when: use_bastion|bool
-
-- name: generate user_data from jinja2 template
-  template:
-    src: user_data.j2
-    dest: "{{ user_data_template_path }}"
-
-- name: create stack
+- name: Handle the Stack (create/delete)
   ignore_errors: False
   register: stack_create
   os_stack:
     name: "{{ stack_name }}"
-    state: present
-    template: "{{ stack_template_path }}"
+    state: "{{ stack_state }}"
+    template: "{{ stack_template_path | default(omit) }}"
     wait: yes
 
 # NOTE(bogdando) OS::Neutron::Subnet doesn't support live updates for
 # dns_nameservers, so we can't do that for the "create stack" task.
 - include: subnet_update_dns_servers.yaml
-  when: private_dns_server is defined
-
-- name: cleanup temp files
-  file:
-    path: "{{ stack_template_pre.path }}"
-    state: absent
+  when:
+  - private_dns_server is defined
+  - stack_state == 'present'
+
+- name: CleanUp
+  include: cleanup.yml
+  when:
+  - stack_state == 'present'