2019-02-23 09:23:41 -08:00
|
|
|
- name: Local or remote backend selector (remote)
|
|
|
|
template:
|
|
|
|
src: roles/main_infra/templates/remote-backend-selector.tf.j2
|
|
|
|
dest: roles/main_infra/files/remote-backend-selector.tf
|
|
|
|
when:
|
|
|
|
- backend|bool == true
|
|
|
|
|
|
|
|
- name: Local or remote backend selector (local)
|
|
|
|
file:
|
|
|
|
state: absent
|
|
|
|
dest: roles/main_infra/files/remote-backend-selector.tf
|
|
|
|
when:
|
|
|
|
- backend | default ('false') | bool != true
|
|
|
|
|
|
|
|
- name: Generating variables file
|
|
|
|
template:
|
|
|
|
src: roles/main_infra/templates/terraform.tfvars.j2
|
|
|
|
dest: roles/main_infra/files/terraform.tfvars
|
2019-04-23 17:02:33 -07:00
|
|
|
vars:
|
|
|
|
db_iops: "{{ chain_db_iops | default({}) }}"
|
2019-02-23 09:23:41 -08:00
|
|
|
|
|
|
|
- name: Generating backend file
|
|
|
|
template:
|
|
|
|
src: roles/main_infra/templates/backend.tfvars.j2
|
|
|
|
dest: roles/main_infra/files/backend.tfvars
|
|
|
|
when: backend|bool == true
|
|
|
|
|
2019-04-23 17:02:33 -07:00
|
|
|
- name: Generate Terraform files
|
|
|
|
template:
|
|
|
|
src: "{{ item.key }}"
|
|
|
|
dest: "{{ item.value }}"
|
|
|
|
with_dict: {roles/main_infra/templates/hosts.tf.j2: roles/main_infra/files/hosts.tf,roles/main_infra/templates/routing.tf.j2: roles/main_infra/files/routing.tf,roles/main_infra/templates/provider.tf.j2: roles/main_infra/files/provider.tf}
|
|
|
|
|
2019-02-26 06:33:46 -08:00
|
|
|
# This is due to the TF0.11 bug which do not allow to completely destroy resources if interpolation syntax is used in outputs.tf at edge cases
|
|
|
|
- name: Check if outputs.tf exists
|
|
|
|
stat: path=roles/main_infra/files/outputs.tf
|
|
|
|
register: outputs_stat
|
|
|
|
|
|
|
|
- name: Temporarily remove outputs.tf file
|
|
|
|
command: mv roles/main_infra/files/outputs.tf roles/main_infra/files/outputs.tf.backup
|
|
|
|
when: outputs_stat.stat.exists
|
|
|
|
|
2019-02-23 09:23:41 -08:00
|
|
|
- name: Terraform destroy main infra
|
|
|
|
shell: "echo yes | {{ terraform_location }} {{ item }}"
|
|
|
|
args:
|
|
|
|
chdir: "roles/main_infra/files"
|
|
|
|
with_items:
|
|
|
|
- "init {{ '-backend-config=backend.tfvars' if backend|bool == true else '' }}"
|
|
|
|
- destroy
|
|
|
|
|
2019-04-23 17:02:33 -07:00
|
|
|
- name: Delete vars from parameter store
|
|
|
|
include: parameter_store.yml
|
|
|
|
loop: "{{ chain_custom_environment.keys() }}"
|
|
|
|
loop_control:
|
|
|
|
loop_var: chain
|
|
|
|
index_var: index
|
|
|
|
|
2019-02-26 06:33:46 -08:00
|
|
|
- name: Check if outputs.tf.backup exists
|
|
|
|
stat: path=roles/main_infra/files/outputs.tf.backup
|
|
|
|
register: outputs_backup_stat
|
|
|
|
|
|
|
|
- name: Get back outputs.tf file
|
|
|
|
command: mv roles/main_infra/files/outputs.tf.backup roles/main_infra/files/outputs.tf
|
|
|
|
when: outputs_backup_stat.stat.exists
|
|
|
|
|
2019-02-26 09:04:47 -08:00
|
|
|
- name: User prompt
|
|
|
|
pause:
|
|
|
|
prompt: "Do you want to delete S3 bucket with state file and DynamoDB attached to it also? [Yes/No] Default: No"
|
|
|
|
register: user_answer
|
|
|
|
|
2019-02-23 09:23:41 -08:00
|
|
|
- name: Destroy S3 bucket
|
|
|
|
s3_bucket:
|
2019-02-27 04:23:26 -08:00
|
|
|
name: "{{ prefix }}-{{ bucket }}"
|
2019-02-23 09:23:41 -08:00
|
|
|
state: absent
|
2019-02-23 16:16:07 -08:00
|
|
|
force: yes
|
2019-04-23 17:02:33 -07:00
|
|
|
profile: "{{ profile }}"
|
|
|
|
aws_access_key: "{{ access_key }}"
|
|
|
|
aws_secret_key: "{{ secret_key }}"
|
|
|
|
region: "{{ region }}"
|
|
|
|
vars:
|
|
|
|
access_key: "{{ aws_access_key|default(omit) }}"
|
|
|
|
secret_key: "{{ aws_secret_key|default(omit) }}"
|
|
|
|
profile: "{{ aws_profile|default(omit) }}"
|
|
|
|
region: "{{ aws_region|default(omit) }}"
|
2019-02-26 09:04:47 -08:00
|
|
|
when: user_answer.user_input|bool == True
|
2019-02-23 09:23:41 -08:00
|
|
|
|
|
|
|
- dynamodb_table:
|
2019-02-27 04:23:26 -08:00
|
|
|
name: "{{ prefix }}-{{ dynamodb_table }}"
|
2019-02-23 09:23:41 -08:00
|
|
|
state: absent
|
2019-04-23 17:02:33 -07:00
|
|
|
profile: "{{ profile }}"
|
|
|
|
aws_access_key: "{{ access_key }}"
|
|
|
|
aws_secret_key: "{{ secret_key }}"
|
|
|
|
region: "{{ region }}"
|
|
|
|
vars:
|
|
|
|
access_key: "{{ aws_access_key|default(omit) }}"
|
|
|
|
secret_key: "{{ aws_secret_key|default(omit) }}"
|
|
|
|
profile: "{{ aws_profile|default(omit) }}"
|
|
|
|
region: "{{ aws_region|default(omit) }}"
|
2019-02-26 09:04:47 -08:00
|
|
|
when: user_answer.user_input|bool == True
|