Browse Source

Merge pull request #1238 from detiber/gce_fixes

GCE cloud provider updates
Thomas Wiest 9 years ago
parent
commit
ff8f2013a8

+ 30 - 10
README_GCE.md

@@ -42,12 +42,17 @@ Create a gce.ini file for GCE
 Mandatory customization variables (check the values according to your tenant):
 * zone = europe-west1-d
 * network = default
-* gce_machine_type = n1-standard-2
-* gce_machine_master_type = n1-standard-1
-* gce_machine_node_type = n1-standard-2
-* gce_machine_image = preinstalled-slave-50g-v5
-* gce_machine_master_image = preinstalled-slave-50g-v5
-* gce_machine_node_image = preinstalled-slave-50g-v5
+
+Optional Variable Overrides:
+* gce_ssh_user - ssh user, defaults to the current logged in user
+* gce_machine_type = n1-standard-1 - default machine type
+* gce_machine_etcd_type = n1-standard-1 - machine type for etcd hosts
+* gce_machine_master_type = n1-standard-1 - machine type for master hosts
+* gce_machine_node_type = n1-standard-1 - machine type for node hosts
+* gce_machine_image = centos-7 - default image
+* gce_machine_etcd_image = centos-7 - image for etcd hosts
+* gce_machine_master_image = centos-7 - image for master hosts
+* gce_machine_node_image = centos-7 - image for node hosts
 
 
 1. vi ~/.gce/gce.ini
@@ -62,9 +67,9 @@ network = default
 gce_machine_type = n1-standard-2
 gce_machine_master_type = n1-standard-1
 gce_machine_node_type = n1-standard-2
-gce_machine_image = preinstalled-slave-50g-v5
-gce_machine_master_image = preinstalled-slave-50g-v5
-gce_machine_node_image = preinstalled-slave-50g-v5
+gce_machine_image = centos-7
+gce_machine_master_image = centos-7
+gce_machine_node_image = centos-7
 
 ```
 1. Define the environment variable GCE_INI_PATH so gce.py can pick it up and bin/cluster can also read it
@@ -92,10 +97,15 @@ argument will result in all gce instances being listed)
 
 Creating a cluster
 ------------------
-1. To create a cluster with one master and two nodes
+1. To create a cluster with one master, one infra node, and two compute nodes
 ```
   bin/cluster create gce <cluster-id>
 ```
+1. To create a cluster with 3 masters, 3 etcd hosts, 2 infra nodes and 10
+compute nodes
+```
+  bin/cluster create gce -m 3 -e 3 -i 2 -n 10 <cluster-id>
+```
 
 Updating a cluster
 ---------------------
@@ -104,6 +114,16 @@ Updating a cluster
   bin/cluster update gce <cluster-id>
 ```
 
+Add additional nodes
+---------------------
+1. To add additional infra nodes
+```
+  bin/cluster add-nodes gce -i <num nodes> <cluster-id>
+```
+1. To add additional compute nodes
+```
+  bin/cluster add-nodes gce -n <num nodes> <cluster-id>
+```
 Terminating a cluster
 ---------------------
 1. To terminate the cluster

+ 43 - 0
playbooks/gce/openshift-cluster/add_nodes.yml

@@ -0,0 +1,43 @@
+---
+- name: Launch instance(s)
+  hosts: localhost
+  connection: local
+  become: no
+  gather_facts: no
+  vars_files:
+  - vars.yml
+  vars:
+    oo_extend_env: True
+  tasks:
+  - fail:
+      msg: Deployment type not supported for gce provider yet
+    when: deployment_type == 'enterprise'
+
+  - include: ../../common/openshift-cluster/tasks/set_node_launch_facts.yml
+    vars:
+      type: "compute"
+      count: "{{ num_nodes }}"
+  - include: tasks/launch_instances.yml
+    vars:
+      instances: "{{ node_names }}"
+      cluster: "{{ cluster_id }}"
+      type: "{{ k8s_type }}"
+      g_sub_host_type: "{{ sub_host_type }}"
+      gce_machine_type: "{{ lookup('env', 'gce_machine_node_type') | default(lookup('env', 'gce_machine_type'), true) }}"
+      gce_machine_image: "{{ lookup('env', 'gce_machine_node_image') | default(lookup('env', 'gce_machine_image'), true) }}"
+
+  - include: ../../common/openshift-cluster/tasks/set_node_launch_facts.yml
+    vars:
+      type: "infra"
+      count: "{{ num_infra }}"
+  - include: tasks/launch_instances.yml
+    vars:
+      instances: "{{ node_names }}"
+      cluster: "{{ cluster_id }}"
+      type: "{{ k8s_type }}"
+      g_sub_host_type: "{{ sub_host_type }}"
+      gce_machine_type: "{{ lookup('env', 'gce_machine_node_type') | default(lookup('env', 'gce_machine_type'), true) }}"
+      gce_machine_image: "{{ lookup('env', 'gce_machine_node_image') | default(lookup('env', 'gce_machine_image'), true) }}"
+
+- include: scaleup.yml
+- include: list.yml

+ 0 - 2
playbooks/gce/openshift-cluster/config.yml

@@ -1,6 +1,4 @@
 ---
-# TODO: fix firewall related bug with GCE and origin, since GCE is overriding
-# /etc/sysconfig/iptables
 - include: ../../common/openshift-cluster/config.yml
   vars_files:
   - ../../gce/openshift-cluster/vars.yml

+ 0 - 51
playbooks/gce/openshift-cluster/join_node.yml

@@ -1,51 +0,0 @@
----
-- name: Populate oo_hosts_to_update group
-  hosts: localhost
-  connection: local
-  become: no
-  gather_facts: no
-  vars_files:
-  - vars.yml
-  - cluster_hosts.yml
-  tasks:
-  - name: Evaluate oo_hosts_to_update
-    add_host:
-      name: "{{ node_ip }}"
-      groups: oo_hosts_to_update
-      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"
-      ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}"
-
-- include: ../../common/openshift-cluster/update_repos_and_packages.yml
-
-- name: Populate oo_masters_to_config host group
-  hosts: localhost
-  connection: local
-  become: no
-  gather_facts: no
-  vars_files:
-  - vars.yml
-  - cluster_hosts.yml
-  tasks:
-  - name: Evaluate oo_nodes_to_config
-    add_host:
-      name: "{{ node_ip }}"
-      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"
-      ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}"
-      groups: oo_nodes_to_config
-
-  - name: Evaluate oo_first_master
-    add_host:
-      name: "{{ master_hosts | first }}"
-      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"
-      ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}"
-      groups: oo_first_master
-    when: master_hosts is defined and master_hosts|length > 0
-
-#- include: config.yml
-- include: ../../common/openshift-node/config.yml
-  vars:
-    openshift_cluster_id: "{{ cluster_id }}"
-    openshift_debug_level: 4
-    openshift_deployment_type: "{{ deployment_type }}"
-    openshift_hostname: "{{ ansible_default_ipv4.address }}"
-    openshift_node_labels: "{{ lookup('oo_option', 'openshift_node_labels') }} "

+ 13 - 12
playbooks/gce/openshift-cluster/launch.yml

@@ -10,6 +10,17 @@
   - fail: msg="Deployment type not supported for gce provider yet"
     when: deployment_type == 'enterprise'
 
+  - include: ../../common/openshift-cluster/tasks/set_etcd_launch_facts.yml
+  - include: tasks/launch_instances.yml
+    vars:
+      instances: "{{ etcd_names }}"
+      cluster: "{{ cluster_id }}"
+      type: "{{ k8s_type }}"
+      g_sub_host_type: "default"
+      gce_machine_type: "{{ lookup('env', 'gce_machine_etcd_type') | default(lookup('env', 'gce_machine_type'), true) }}"
+      gce_machine_image: "{{ lookup('env', 'gce_machine_etcd_image') | default(lookup('env', 'gce_machine_image'), true) }}"
+
+
   - include: ../../common/openshift-cluster/tasks/set_master_launch_facts.yml
   - include: tasks/launch_instances.yml
     vars:
@@ -43,6 +54,8 @@
       cluster: "{{ cluster_id }}"
       type: "{{ k8s_type }}"
       g_sub_host_type: "{{ sub_host_type }}"
+      gce_machine_type: "{{ lookup('env', 'gce_machine_node_type') | default(lookup('env', 'gce_machine_type'), true) }}"
+      gce_machine_image: "{{ lookup('env', 'gce_machine_node_image') | default(lookup('env', 'gce_machine_image'), true) }}"
 
   - add_host:
       name: "{{ master_names.0 }}"
@@ -50,17 +63,5 @@
     when: master_names is defined and master_names.0 is defined
 
 - include: update.yml
-#
-#- name: Deploy OpenShift Services
-#  hosts: service_master
-#  connection: ssh
-#  gather_facts: yes
-#  roles:
-#  - openshift_registry
-#  - openshift_router
-#
-#- include: ../../common/openshift-cluster/create_services.yml
-#  vars:
-#     g_svc_master: "{{ service_master }}"
 
 - include: list.yml

+ 2 - 2
playbooks/gce/openshift-cluster/list.yml

@@ -14,7 +14,7 @@
   - add_host:
       name: "{{ item }}"
       groups: oo_list_hosts
-      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user | default(ansible_ssh_user, true) }}"
+      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"
       ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}"
     with_items: groups[scratch_group] | default([], true) | difference(['localhost']) | difference(groups.status_terminated | default([], true))
 
@@ -23,4 +23,4 @@
   gather_facts: no
   tasks:
   - debug:
-      msg: "private ip:{{ hostvars[inventory_hostname].gce_private_ip }}"
+      msg: "public ip: {{ hostvars[inventory_hostname].gce_public_ip }} private ip:{{ hostvars[inventory_hostname].gce_private_ip }}"

+ 2 - 2
playbooks/gce/openshift-cluster/service.yml

@@ -14,14 +14,14 @@
   - add_host:
       name: "{{ item }}"
       groups: g_service_nodes
-      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user | default(ansible_ssh_user, true) }}"
+      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"
       ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}"
     with_items: "{{ node_hosts | default([]) | difference(['localhost']) | difference(groups.status_terminated) }}"
 
   - add_host:
       name: "{{ item }}"
       groups: g_service_masters
-      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user | default(ansible_ssh_user, true) }}"
+      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"
       ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}"
     with_items: "{{ master_hosts | default([]) | difference(['localhost']) | difference(groups.status_terminated) }}"
 

+ 1 - 4
playbooks/gce/openshift-cluster/tasks/launch_instances.yml

@@ -1,7 +1,4 @@
 ---
-# TODO: when we are ready to go to ansible 1.9+ support only, we can update to
-# the gce task to use the disk_auto_delete parameter to avoid having to delete
-# the disk as a separate step on termination
 - name: Launch instance(s)
   gce:
     instance_names: "{{ instances }}"
@@ -41,7 +38,7 @@
   add_host:
     hostname: "{{ item.name }}"
     ansible_ssh_host: "{{ item.public_ip }}"
-    ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user | default(ansible_ssh_user, true) }}"
+    ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"
     ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}"
     groups: "{{ item.tags | oo_prepend_strings_in_list('tag_') | join(',') }}"
     gce_public_ip: "{{ item.public_ip }}"

+ 1 - 1
playbooks/gce/openshift-cluster/terminate.yml

@@ -10,7 +10,7 @@
   - add_host:
       name: "{{ item }}"
       groups: oo_hosts_to_terminate
-      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user | default(ansible_ssh_user, true) }}"
+      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"
       ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}"
     with_items: (groups['tag_clusterid-' ~ cluster_id] | default([])) | difference(['localhost'])
 

+ 1 - 1
playbooks/gce/openshift-cluster/update.yml

@@ -12,7 +12,7 @@
     add_host:
       name: "{{ item }}"
       groups: oo_hosts_to_update
-      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user | default(ansible_ssh_user, true) }}"
+      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"
       ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}"
     with_items: "{{ g_all_hosts | default([]) }}"
 

+ 3 - 3
playbooks/gce/openshift-cluster/vars.yml

@@ -4,14 +4,14 @@ debug_level: 2
 deployment_rhel7_ent_base:
   image: rhel-7
   machine_type: n1-standard-1
-  ssh_user:
+  ssh_user: "{{ lookup('env', 'gce_ssh_user') |  default(ansible_ssh_user, true) }}"
   sudo: yes
 
 deployment_vars:
   origin:
-    image: preinstalled-slave-50g-v5
+    image: centos-7
     machine_type: n1-standard-1
-    ssh_user: root
+    ssh_user: "{{ lookup('env', 'gce_ssh_user') |  default(ansible_ssh_user, true) }}"
     sudo: yes
   online:
     image: libra-rhel7

+ 0 - 27
playbooks/gce/openshift-cluster/wip.yml

@@ -1,27 +0,0 @@
----
-- name: WIP
-  hosts: localhost
-  become: no
-  connection: local
-  gather_facts: no
-  vars_files:
-  - vars.yml
-  tasks:
-  - name: Evaluate oo_masters_for_deploy
-    add_host:
-      name: "{{ item }}"
-      groups: oo_masters_for_deploy
-      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user | default(ansible_ssh_user, true) }}"
-      ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}"
-    with_items: "{{ g_master_hosts | default([]) }}"
-
-- name: Deploy OpenShift Services
-  hosts: oo_masters_for_deploy
-  connection: ssh
-  gather_facts: yes
-  user: root
-  vars_files:
-  - vars.yml
-  roles:
-  - openshift_registry
-  - openshift_router