create stacks with more generic role things
[awsible] / roles / autoscalinggroup / tasks / main.yml
diff --git a/roles/autoscalinggroup/tasks/main.yml b/roles/autoscalinggroup/tasks/main.yml
new file mode 100644 (file)
index 0000000..d0c1692
--- /dev/null
@@ -0,0 +1,48 @@
+---
+- assert:
+    that:
+    - zone in ('pub', 'priv')
+    - module != ''
+    - version != ''
+    - region|default(vpc_region) != ''
+  tags: ['check_vars']
+
+- set_fact:
+    asg_n:
+    - "{{ module }}"
+    - "{{ stack }}"
+    - "{{ country|ternary('c0', '') }}{{ country|default('') }}"
+    - "{{ phase|ternary('d0', '') }}{{ phase|default('') }}"
+
+- name: suss out our subnets
+  ec2_vpc_subnet_facts:
+    region: "{{ vpc_region }}"
+    filters:
+      vpc_id: "{{ vpc.vpc.id }}"
+      "tag:zone": "{{ zone }}"
+  register: partial_subnet_ids
+
+- name: autoscalinggroup
+  ec2_asg:
+    region: "{{ vpc_region }}"
+    name: "{{ asg_n|select|join('-') }}"
+    min_size: "{{ min_size|default(0) }}"
+    max_size: "{{ max_size|default(omit) }}"
+    desired_capacity: "{{ desired_capacity|default(omit) }}"
+    default_cooldown: 10
+    vpc_zone_identifier: "{{ partial_subnet_ids.subnets|default([])|map(attribute='id')|list }}"
+    launch_config_name: "{{ asg_n|select|join('-') }}-{{ version }}"
+    notification_topic: "{{ management_topic.sns_arn }}"
+    load_balancers: "{{ load_balancers|default(omit) }}"
+    tags:
+    - account: "{{ ACCT_NAME }}"
+      propagate_at_launch: yes
+    - module: "{{ module }}"
+      propagate_at_launch: yes
+    - stack: "{{ stack }}"
+      propagate_at_launch: yes
+    - country: "{{ country }}"
+      propagate_at_launch: yes
+    - phase: "{{ phase }}"
+      propagate_at_launch: yes
+