create stacks with more generic role things
[awsible] / roles / launchconfig / tasks / main.yml
diff --git a/roles/launchconfig/tasks/main.yml b/roles/launchconfig/tasks/main.yml
new file mode 100644 (file)
index 0000000..59768fd
--- /dev/null
@@ -0,0 +1,71 @@
+---
+- assert:
+    that:
+    - module != ''
+    - version != ''
+    - ami|default(DEFAULT_AMI) != ''
+    - region|default(vpc_region) != ''
+    - security_group_ids != ''
+    - instance_type != ''
+  tags: ['check_vars']
+
+- set_fact:
+    ud_cluster:
+    - "{{ module }}"
+    - "{{ country|ternary('c0', '') }}{{ country|default('') }}"
+    - "{{ phase|ternary('d0', '') }}{{ phase|default('') }}"
+
+- set_fact:
+    ud_asgn:
+    - "{{ module }}"
+    - "{{ stack|default('') }}"
+    - "{{ country|ternary('c0', '') }}{{ country|default('') }}"
+    - "{{ phase|ternary('d0', '') }}{{ phase|default('') }}"
+
+- set_fact:
+    lc_n:
+    - "{{ module }}"
+    - "{{ stack|default('') }}"
+    - "{{ country|ternary('c0', '') }}{{ country|default('') }}"
+    - "{{ phase|ternary('d0', '') }}{{ phase|default('') }}"
+    - "{{ version }}"
+
+- name: assemble user data
+  set_fact:
+    user_data:
+      EC2_REGION: "{{ region|default(vpc_region) }}"
+      CLOUD_COUNTRIES: "{{ country|default() }}"
+      CLOUD_ENVIRONMENT: "{{ ACCT_NAME }}"
+      CLOUD_MONITOR_BUCKET: "{{ module }}"
+      CLOUD_APP: "{{ module }}"
+      CLOUD_STACK: "{{ stack|default('None') }}"
+      CLOUD_DEV_PHASE: "{{ phase|default() }}"
+      CLOUD_CLUSTER: "{{ ud_cluster|select|join('-') }}"
+      CLOUD_AUTO_SCALE_GROUP: "{{ ud_asgn|select|join('-') }}"
+      CLOUD_LAUNCH_CONFIG: "{{ lc_n|select|join('-') }}"
+
+- name: launchconfig
+  ec2_lc:
+    region: "{{ region|default(vpc_region) }}"
+    name: "{{ lc_n|select|join('-') }}"
+    image_id: "{{ ami|default(DEFAULT_AMI) }}"
+    key_name: "{{ MANAGEMENT_KEY_NAME }}"
+    instance_profile_name: "{{ module }}"
+    security_groups: "{{ security_group_ids }}"
+    instance_type: "{{ instance_type}}"
+    volumes:
+# setting the root volume seems to prevent instances from launching
+#    - device_name: /dev/sda
+#      volume_size: 8
+#      volume_type: gp2
+#      delete_on_termination: true
+    - device_name: /dev/sdb
+      ephemeral: ephemeral0
+    - device_name: /dev/sdc
+      ephemeral: ephemeral1
+    - device_name: /dev/sdd
+      ephemeral: ephemeral2
+    - device_name: /dev/sde
+      ephemeral: ephemeral3
+    user_data: "{{ lookup('template', 'userdata.sh.j2') }}"
+  register: launchconfig