From f929f3f94c7c89e40f9c8e2b85293f496101aebe Mon Sep 17 00:00:00 2001
From: Akram Ben Aissi <akram@free.fr>
Date: Thu, 11 Dec 2014 13:52:16 +0100
Subject: Adding AWS support to openshift-ansible module - Update documentation
 to say that ssh configuration need to point to the private key file -
 Removing the -p argument when calling time .... because it is misintrepreted
 by ruby - Turning the cluster.sh to agnostic in its help/error message by
 replacing explicit reference to GCE by a a variable - Fixing a bug within the
 playbooks that incorrectly references the minions and master fact group. -
 Adding playbooks for AWS, which are almost of copy/paste for those of GCE -
 Added environment variable OO_PROVIDER to allow definition of the provider.
 Defaults is gce - TODO implement the terminate.yml cookbook

---
 playbooks/aws/openshift-minion/config.yml | 40 ++++++++++++++++++
 playbooks/aws/openshift-minion/launch.yml | 69 +++++++++++++++++++++++++++++++
 playbooks/aws/openshift-minion/vars.yml   |  0
 3 files changed, 109 insertions(+)
 create mode 100644 playbooks/aws/openshift-minion/config.yml
 create mode 100644 playbooks/aws/openshift-minion/launch.yml
 create mode 100644 playbooks/aws/openshift-minion/vars.yml

(limited to 'playbooks/aws/openshift-minion')

diff --git a/playbooks/aws/openshift-minion/config.yml b/playbooks/aws/openshift-minion/config.yml
new file mode 100644
index 000000000..b59ba5a9b
--- /dev/null
+++ b/playbooks/aws/openshift-minion/config.yml
@@ -0,0 +1,40 @@
+- name: "populate oo_hosts_to_config host group if needed"
+  hosts: localhost
+  gather_facts: no
+  tasks:
+  - name: Evaluate oo_host_group_exp
+    add_host: "name={{ item }} groups=oo_hosts_to_config"
+    with_items: "{{ oo_host_group_exp | default('') }}"
+    when: oo_host_group_exp is defined
+
+- name: "Gather facts for masters in {{ oo_env }}"
+  hosts: "tag_env-host-type_{{ oo_env }}-openshift-master"
+  connection: ssh
+  user: root
+
+- name: "Set OO sepcific facts on localhost (for later use)"
+  hosts: localhost
+  gather_facts: no
+  tasks:
+    - name: Setting oo_master_ips fact on localhost
+      set_fact:
+        oo_master_ips: "{{ hostvars
+            | oo_select_keys(groups['tag_env-host-type_' + oo_env + '-openshift-master'])
+            | oo_collect(attribute='ansible_eth0.ipv4.address') }}"
+      when: groups['tag_env-host-type_' + oo_env + '-openshift-master'] is defined
+
+- name: "Configure instances"
+  hosts: oo_hosts_to_config
+  connection: ssh
+  user: root
+  vars_files:
+    - vars.yml
+  roles:
+    - ../../../roles/base_os
+    - ../../../roles/repos
+    - ../../../roles/docker
+    - {
+        role: ../../../roles/openshift_minion,
+        oo_master_ips: "{{ hostvars['localhost'].oo_master_ips | default(['']) }}",
+        oo_bind_ip: "{{ hostvars[inventory_hostname].ansible_eth0.ipv4.address | default(['']) }}"
+      }
diff --git a/playbooks/aws/openshift-minion/launch.yml b/playbooks/aws/openshift-minion/launch.yml
new file mode 100644
index 000000000..a889b93be
--- /dev/null
+++ b/playbooks/aws/openshift-minion/launch.yml
@@ -0,0 +1,69 @@
+---
+- name: Launch instance(s)
+  hosts: localhost
+  connection: local
+  gather_facts: no
+
+  vars:
+    inst_region: us-east-1
+    atomic_ami: ami-86781fee
+    user_data_file: user_data.txt
+
+  vars_files:
+    - vars.yml
+
+  tasks:
+    - name: Launch instances
+      ec2:
+        state: present
+        region: "{{ inst_region }}"
+        keypair: libra
+        group: ['public']
+        instance_type: m3.large
+        image: "{{ atomic_ami }}"
+        count: "{{ oo_new_inst_names | oo_len }}"
+        user_data: "{{ lookup('file', user_data_file) }}"
+        wait: yes
+      register: ec2
+
+    - name: Add new instances public IPs to the atomic proxy host group
+      add_host: "hostname={{ item.public_ip }} groupname=new_ec2_instances"
+      with_items: ec2.instances
+
+    - name: Add Name and environment tags to instances
+      ec2_tag: "resource={{ item.1.id }} region={{ inst_region }} state=present"
+      with_together:
+        - oo_new_inst_names
+        - ec2.instances
+      args:
+        tags:
+          Name: "{{ item.0 }}"
+
+    - name: Add other tags to instances
+      ec2_tag: "resource={{ item.id }} region={{ inst_region }} state=present"
+      with_items: ec2.instances
+      args:
+        tags: "{{ oo_new_inst_tags }}"
+
+    - name: Add new instances public IPs to oo_hosts_to_config
+      add_host: "hostname={{ item.0 }} ansible_ssh_host={{ item.1.dns_name }} groupname=oo_hosts_to_config"
+      with_together:
+        - oo_new_inst_names
+        - ec2.instances
+
+    - debug: var=ec2
+
+    - name: Wait for ssh
+      wait_for: "port=22 host={{ item.dns_name }}"
+      with_items: ec2.instances
+
+    - name: Wait for root user setup
+      command: "ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no -o ConnectTimeout=10 -o UserKnownHostsFile=/dev/null root@{{ item.dns_name }} echo root user is setup"
+      register: result
+      until: result.rc == 0
+      retries: 20
+      delay: 10
+      with_items: ec2.instances
+
+# Apply the configs, seprate so that just the configs can be run by themselves
+- include: config.yml
diff --git a/playbooks/aws/openshift-minion/vars.yml b/playbooks/aws/openshift-minion/vars.yml
new file mode 100644
index 000000000..e69de29bb
-- 
cgit v1.2.3