Browse Source

cleaned up unused GCE host types, changed back to using gce.ini, and added a better ssh detection on launch.

Thomas Wiest 10 years ago
parent
commit
317d20d2cd

+ 1 - 1
.gitignore

@@ -13,4 +13,4 @@
 .sass-cache
 .rvmrc
 .DS_Store
-secrets.py
+gce.ini

+ 8 - 6
README_GCE.md

@@ -34,18 +34,20 @@ Convert a GCE service key into a pem (for ansible)
 1. Once this is done, put the original service key file (projectname-ef83bd90f261.p12) somewhere safe, or delete it (your call, I don not know what else we will use it for, and we can always regen it if needed).
 
 
-Create a secrets.py file for GCE
+Create a gce.ini file for GCE
 --------------------------------
-1. vi ~/.gce/secrets.py
+1. vi ~/.gce/gce.ini
 1. make the contents look like this:
 ```
-  GCE_PARAMS = ('long...@developer.gserviceaccount.com', '/full/path/to/projectname_priv_key.pem')
-  GCE_KEYWORD_PARAMS = {'project': 'my_project_id'}
+[gce]
+gce_service_account_email_address = long...@developer.gserviceaccount.com
+gce_service_account_pem_file_path = /full/path/to/projectname_priv_key.pem
+gce_project_id = my_project_id
 ```
-1. Setup a sym link so that gce.py will pick it up (must be in same dir as gce.py)
+1. Setup a sym link so that gce.py will pick it up (link must be in same dir as gce.py)
 ```
   cd openshift-online-ansible/inventory/gce
-  ln -s ~/.gce/secrets.py secrets.py
+  ln -s ~/.gce/gce.ini gce.ini
 ```
 
 

+ 9 - 0
playbooks/gce/openshift-master/launch.yml

@@ -34,5 +34,14 @@
 
     - debug: var=gce
 
+    - name: Wait for root user setup
+      command: "ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no -o ConnectTimeout=10 -o UserKnownHostsFile=/dev/null root@{{ item.public_ip }} echo root user is setup"
+      register: result
+      until: result.rc == 0
+      retries: 20
+      delay: 10
+      with_items: gce.instance_data
+
+
 # Apply the configs, separate so that just the configs can be run by themselves
 - include: config.yml

+ 9 - 0
playbooks/gce/openshift-minion/launch.yml

@@ -34,5 +34,14 @@
 
     - debug: var=gce
 
+    - name: Wait for root user setup
+      command: "ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no -o ConnectTimeout=10 -o UserKnownHostsFile=/dev/null root@{{ item.public_ip }} echo root user is setup"
+      register: result
+      until: result.rc == 0
+      retries: 20
+      delay: 10
+      with_items: gce.instance_data
+
+
 # Apply the configs, separate so that just the configs can be run by themselves
 - include: config.yml

+ 0 - 41
playbooks/gce/os3-master/config.yml

@@ -1,41 +0,0 @@
-- name: "populate oo_hosts_to_config host group if needed"
-  hosts: localhost
-  gather_facts: no
-  tasks:
-  - name: Evaluate oo_host_group_exp if it's set
-    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 minions in {{ oo_env }}"
-  hosts: "tag_env-host-type-{{ oo_env }}-os3-minion"
-  connection: ssh
-  user: root
-
-- name: "Set OO sepcific facts on localhost (for later use)"
-  hosts: localhost
-  gather_facts: no
-  tasks:
-    - name: Setting oo_minion_ips fact on localhost
-      set_fact:
-        oo_minion_ips: "{{ hostvars
-            | oo_select_keys(groups['tag_env-host-type-' + oo_env + '-os3-minion'])
-            | oo_collect(attribute='ansible_eth0.ipv4.address') }}"
-      when: groups['tag_env-host-type-' + oo_env + '-os3-minion'] 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/etcd
-    - {
-        role: ../../../roles/kubernetes_apiserver,
-        oo_minion_ips: "{{ hostvars['localhost'].oo_minion_ips | default(['']) }}"
-      }
-    - ../../../roles/kubernetes_controller_manager
-    - ../../../roles/pods

+ 0 - 38
playbooks/gce/os3-master/launch.yml

@@ -1,38 +0,0 @@
----
-- name: Launch instance(s)
-  hosts: localhost
-  connection: local
-  gather_facts: no
-
-  vars:
-    inst_names: "{{ oo_new_inst_names }}"
-    machine_type: n1-standard-1
-    image: libra-rhel7
-
-  vars_files:
-      - vars.yml
-
-  tasks:
-    - name: Launch instances
-      gce:
-        instance_names: "{{ inst_names }}"
-        machine_type: "{{ machine_type }}"
-        image: "{{ image }}"
-        service_account_email: "{{ gce_service_account_email }}"
-        pem_file: "{{ gce_pem_file }}"
-        project_id: "{{ gce_project_id }}"
-        tags: "{{ oo_new_inst_tags }}"
-      register: gce
-
-    - name: Add new instances public IPs to oo_hosts_to_config
-      add_host: "hostname={{ item.name }} ansible_ssh_host={{ item.public_ip }} groupname=oo_hosts_to_config"
-      with_items: gce.instance_data
-
-    - name: Wait for ssh
-      wait_for: "port=22 host={{ item.public_ip }}"
-      with_items: gce.instance_data
-
-    - debug: var=gce
-
-# Apply the configs, seprate so that just the configs can be run by themselves
-- include: config.yml

+ 0 - 38
playbooks/gce/os3-master/terminate.yml

@@ -1,38 +0,0 @@
-- name: "populate oo_hosts_to_terminate host group if needed"
-  hosts: localhost
-  gather_facts: no
-  tasks:
-    - debug: var=oo_host_group_exp
-
-    - name: Evaluate oo_host_group_exp if it's set
-      add_host: "name={{ item }} groups=oo_hosts_to_terminate"
-      with_items: "{{ oo_host_group_exp | default('') }}"
-      when: oo_host_group_exp is defined
-
-    - debug: msg="{{ groups['oo_hosts_to_terminate'] }}"
-
-- name: Terminate instances
-  hosts: localhost
-  connection: local
-  tasks:
-    - name: Terminate master instances
-      gce:
-        service_account_email: "{{ gce_service_account_email }}"
-        pem_file: "{{ gce_pem_file }}"
-        project_id: "{{ gce_project_id }}"
-        state: 'absent'
-        instance_names: "{{ groups['oo_hosts_to_terminate'] }}"
-        disks: "{{ groups['oo_hosts_to_terminate'] }}"
-      register: gce
-
-    - debug: var=gce
-
-    - name: Remove disks of instances
-      gce_pd:
-        service_account_email: "{{ gce_service_account_email }}"
-        pem_file: "{{ gce_pem_file }}"
-        project_id: "{{ gce_project_id }}"
-        name: "{{ item }}"
-        zone: "{{ gce.zone }}"
-        state: absent
-      with_items: gce.instance_names

+ 0 - 0
playbooks/gce/os3-master/vars.yml


+ 0 - 43
playbooks/gce/os3-minion/config.yml

@@ -1,43 +0,0 @@
-- 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 }}-os3-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 + '-os3-master'])
-            | oo_collect(attribute='ansible_eth0.ipv4.address') }}"
-      when: groups['tag_env-host-type-' + oo_env + '-os3-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/kubernetes_kubelet,
-        oo_master_ips: "{{ hostvars['localhost'].oo_master_ips | default(['']) }}"
-      }
-    - {
-        role: ../../../roles/kubernetes_proxy,
-        oo_master_ips: "{{ hostvars['localhost'].oo_master_ips | default(['']) }}"
-      }

+ 0 - 38
playbooks/gce/os3-minion/launch.yml

@@ -1,38 +0,0 @@
----
-- name: Launch instance(s)
-  hosts: localhost
-  connection: local
-  gather_facts: no
-
-  vars:
-    inst_names: "{{ oo_new_inst_names }}"
-    machine_type: n1-standard-1
-    image: libra-rhel7
-
-  vars_files:
-      - vars.yml
-
-  tasks:
-    - name: Launch instances
-      gce:
-        instance_names: "{{ inst_names }}"
-        machine_type: "{{ machine_type }}"
-        image: "{{ image }}"
-        service_account_email: "{{ gce_service_account_email }}"
-        pem_file: "{{ gce_pem_file }}"
-        project_id: "{{ gce_project_id }}"
-        tags: "{{ oo_new_inst_tags }}"
-      register: gce
-
-    - name: Add new instances public IPs to oo_hosts_to_config
-      add_host: "hostname={{ item.name }} ansible_ssh_host={{ item.public_ip }} groupname=oo_hosts_to_config"
-      with_items: gce.instance_data
-
-    - name: Wait for ssh
-      wait_for: "port=22 host={{ item.public_ip }}"
-      with_items: gce.instance_data
-
-    - debug: var=gce
-
-# Apply the configs, seprate so that just the configs can be run by themselves
-- include: config.yml

+ 0 - 40
playbooks/gce/os3-minion/terminate.yml

@@ -1,40 +0,0 @@
-- name: "populate oo_hosts_to_terminate host group if needed"
-  hosts: localhost
-  gather_facts: no
-  tasks:
-    - debug: var=oo_host_group_exp
-
-    - name: Evaluate oo_host_group_exp if it's set
-      add_host: "name={{ item }} groups=oo_hosts_to_terminate"
-      with_items: "{{ oo_host_group_exp | default('') }}"
-      when: oo_host_group_exp is defined
-
-    - debug: msg="{{ groups['oo_hosts_to_terminate'] }}"
-
-
-- name: Terminate instances
-  hosts: localhost
-  connection: local
-  tasks:
-    - name: Terminate minion instances
-      gce:
-        service_account_email: "{{ gce_service_account_email }}"
-        pem_file: "{{ gce_pem_file }}"
-        project_id: "{{ gce_project_id }}"
-        state: 'absent'
-        instance_names: "{{ groups['oo_hosts_to_terminate'] }}"
-        disks: "{{ groups['oo_hosts_to_terminate'] }}"
-      register: gce
-
-    - debug: var=gce
-
-    - name: Remove disks of instances
-      gce_pd:
-        service_account_email: "{{ gce_service_account_email }}"
-        pem_file: "{{ gce_pem_file }}"
-        project_id: "{{ gce_project_id }}"
-        name: "{{ item }}"
-        zone: "{{ gce.zone }}"
-        state: absent
-      with_items: gce.instance_names
-

+ 0 - 0
playbooks/gce/os3-minion/vars.yml


+ 0 - 17
playbooks/gce/os3-registry/config.yml

@@ -1,17 +0,0 @@
-- 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: "Configure instances"
-  hosts: oo_hosts_to_config
-  connection: ssh
-  user: root
-  vars_files:
-    - vars.yml
-  roles:
-    - ../../../roles/base_os

+ 0 - 38
playbooks/gce/os3-registry/launch.yml

@@ -1,38 +0,0 @@
----
-- name: Launch instance(s)
-  hosts: localhost
-  connection: local
-  gather_facts: no
-
-  vars:
-    inst_names: "{{ oo_new_inst_names }}"
-    machine_type: n1-standard-1
-    image: libra-rhel7
-
-  vars_files:
-      - vars.yml
-
-  tasks:
-    - name: Launch instances
-      gce:
-        instance_names: "{{ inst_names }}"
-        machine_type: "{{ machine_type }}"
-        image: "{{ image }}"
-        service_account_email: "{{ gce_service_account_email }}"
-        pem_file: "{{ gce_pem_file }}"
-        project_id: "{{ gce_project_id }}"
-        tags: "{{ oo_new_inst_tags }}"
-      register: gce
-
-    - name: Add new instances public IPs to oo_hosts_to_config
-      add_host: "hostname={{ item.name }} ansible_ssh_host={{ item.public_ip }} groupname=oo_hosts_to_config"
-      with_items: gce.instance_data
-
-    - name: Wait for ssh
-      wait_for: "port=22 host={{ item.public_ip }}"
-      with_items: gce.instance_data
-
-    - debug: var=gce
-
-# Apply the configs, seprate so that just the configs can be run by themselves
-- include: config.yml

+ 0 - 0
playbooks/gce/os3-registry/vars.yml


+ 0 - 17
playbooks/gce/os3-router/config.yml

@@ -1,17 +0,0 @@
-- 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: "Configure instances"
-  hosts: oo_hosts_to_config
-  connection: ssh
-  user: root
-  vars_files:
-    - vars.yml
-  roles:
-    - ../../../roles/base_os

+ 0 - 38
playbooks/gce/os3-router/launch.yml

@@ -1,38 +0,0 @@
----
-- name: Launch instance(s)
-  hosts: localhost
-  connection: local
-  gather_facts: no
-
-  vars:
-    inst_names: "{{ oo_new_inst_names }}"
-    machine_type: n1-standard-1
-    image: libra-rhel7
-
-  vars_files:
-      - vars.yml
-
-  tasks:
-    - name: Launch instances
-      gce:
-        instance_names: "{{ inst_names }}"
-        machine_type: "{{ machine_type }}"
-        image: "{{ image }}"
-        service_account_email: "{{ gce_service_account_email }}"
-        pem_file: "{{ gce_pem_file }}"
-        project_id: "{{ gce_project_id }}"
-        tags: "{{ oo_new_inst_tags }}"
-      register: gce
-
-    - name: Add new instances public IPs to oo_hosts_to_config
-      add_host: "hostname={{ item.name }} ansible_ssh_host={{ item.public_ip }} groupname=oo_hosts_to_config"
-      with_items: gce.instance_data
-
-    - name: Wait for ssh
-      wait_for: "port=22 host={{ item.public_ip }}"
-      with_items: gce.instance_data
-
-    - debug: var=gce
-
-# Apply the configs, seprate so that just the configs can be run by themselves
-- include: config.yml

+ 0 - 0
playbooks/gce/os3-router/vars.yml