diff options
| -rw-r--r-- | README_GCE.md | 40 | ||||
| -rw-r--r-- | inventory/byo/hosts.aep.example | 2 | ||||
| -rw-r--r-- | inventory/byo/hosts.origin.example | 2 | ||||
| -rw-r--r-- | inventory/byo/hosts.ose.example | 2 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/add_nodes.yml | 43 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/config.yml | 2 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/join_node.yml | 51 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/launch.yml | 25 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/list.yml | 4 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/service.yml | 4 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/tasks/launch_instances.yml | 5 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/terminate.yml | 2 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/update.yml | 2 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/vars.yml | 6 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/wip.yml | 27 | 
15 files changed, 99 insertions, 118 deletions
| diff --git a/README_GCE.md b/README_GCE.md index ea673b44d..9439b569e 100644 --- a/README_GCE.md +++ b/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 diff --git a/inventory/byo/hosts.aep.example b/inventory/byo/hosts.aep.example index 05aef586f..31d662995 100644 --- a/inventory/byo/hosts.aep.example +++ b/inventory/byo/hosts.aep.example @@ -74,7 +74,7 @@ deployment_type=atomic-enterprise  #openshift_additional_repos=[{'id': 'aep-devel', 'name': 'aep-devel', 'baseurl': 'http://example.com/puddle/build/AtomicOpenShift/3.1/latest/RH7-RHOSE-3.0/$basearch/os', 'enabled': 1, 'gpgcheck': 0}]  # htpasswd auth -openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider', 'filename': '/etc/origin/htpasswd'}] +openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider', 'filename': '/etc/origin/master/htpasswd'}]  # Allow all auth  #openshift_master_identity_providers=[{'name': 'allow_all', 'login': 'true', 'challenge': 'true', 'kind': 'AllowAllPasswordIdentityProvider'}] diff --git a/inventory/byo/hosts.origin.example b/inventory/byo/hosts.origin.example index 7b240622d..9783c9809 100644 --- a/inventory/byo/hosts.origin.example +++ b/inventory/byo/hosts.origin.example @@ -79,7 +79,7 @@ deployment_type=origin  #openshift_additional_repos=[{'id': 'fedora-openshift-origin-copr', 'name': 'OpenShift Origin COPR for Fedora', 'baseurl': 'https://copr-be.cloud.fedoraproject.org/results/maxamillion/fedora-openshift/fedora-$releasever-$basearch/', 'enabled': 1, 'gpgcheck': 1, gpgkey: 'https://copr-be.cloud.fedoraproject.org/results/maxamillion/fedora-openshift/pubkey.gpg'}]  # htpasswd auth -openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider', 'filename': '/etc/origin/htpasswd'}] +openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider', 'filename': '/etc/origin/master/htpasswd'}]  # Allow all auth  #openshift_master_identity_providers=[{'name': 'allow_all', 'login': 'true', 'challenge': 'true', 'kind': 'AllowAllPasswordIdentityProvider'}] diff --git a/inventory/byo/hosts.ose.example b/inventory/byo/hosts.ose.example index e44d1abc9..a27a12260 100644 --- a/inventory/byo/hosts.ose.example +++ b/inventory/byo/hosts.ose.example @@ -74,7 +74,7 @@ deployment_type=openshift-enterprise  #openshift_additional_repos=[{'id': 'ose-devel', 'name': 'ose-devel', 'baseurl': 'http://example.com/puddle/build/AtomicOpenShift/3.1/latest/RH7-RHOSE-3.0/$basearch/os', 'enabled': 1, 'gpgcheck': 0}]  # htpasswd auth -openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider', 'filename': '/etc/origin/htpasswd'}] +openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider', 'filename': '/etc/origin/master/htpasswd'}]  # Allow all auth  #openshift_master_identity_providers=[{'name': 'allow_all', 'login': 'true', 'challenge': 'true', 'kind': 'AllowAllPasswordIdentityProvider'}] diff --git a/playbooks/gce/openshift-cluster/add_nodes.yml b/playbooks/gce/openshift-cluster/add_nodes.yml new file mode 100644 index 000000000..765e03fdc --- /dev/null +++ b/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 diff --git a/playbooks/gce/openshift-cluster/config.yml b/playbooks/gce/openshift-cluster/config.yml index 8bc9b1e53..d1aa31bc8 100644 --- a/playbooks/gce/openshift-cluster/config.yml +++ b/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 diff --git a/playbooks/gce/openshift-cluster/join_node.yml b/playbooks/gce/openshift-cluster/join_node.yml deleted file mode 100644 index 75343dffa..000000000 --- a/playbooks/gce/openshift-cluster/join_node.yml +++ /dev/null @@ -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') }} " diff --git a/playbooks/gce/openshift-cluster/launch.yml b/playbooks/gce/openshift-cluster/launch.yml index 562bf8d29..7532a678b 100644 --- a/playbooks/gce/openshift-cluster/launch.yml +++ b/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 diff --git a/playbooks/gce/openshift-cluster/list.yml b/playbooks/gce/openshift-cluster/list.yml index e67685912..f3004ede9 100644 --- a/playbooks/gce/openshift-cluster/list.yml +++ b/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 }}" diff --git a/playbooks/gce/openshift-cluster/service.yml b/playbooks/gce/openshift-cluster/service.yml index 8925de4cb..914f38c1f 100644 --- a/playbooks/gce/openshift-cluster/service.yml +++ b/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) }}" diff --git a/playbooks/gce/openshift-cluster/tasks/launch_instances.yml b/playbooks/gce/openshift-cluster/tasks/launch_instances.yml index 488b62eb9..8ebf71cd4 100644 --- a/playbooks/gce/openshift-cluster/tasks/launch_instances.yml +++ b/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 }}" diff --git a/playbooks/gce/openshift-cluster/terminate.yml b/playbooks/gce/openshift-cluster/terminate.yml index faa46c0d6..94b4ab14b 100644 --- a/playbooks/gce/openshift-cluster/terminate.yml +++ b/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']) diff --git a/playbooks/gce/openshift-cluster/update.yml b/playbooks/gce/openshift-cluster/update.yml index dadceae58..2dc540978 100644 --- a/playbooks/gce/openshift-cluster/update.yml +++ b/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([]) }}" diff --git a/playbooks/gce/openshift-cluster/vars.yml b/playbooks/gce/openshift-cluster/vars.yml index f004a9e6b..1ae73fd68 100644 --- a/playbooks/gce/openshift-cluster/vars.yml +++ b/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 diff --git a/playbooks/gce/openshift-cluster/wip.yml b/playbooks/gce/openshift-cluster/wip.yml deleted file mode 100644 index 0e3757546..000000000 --- a/playbooks/gce/openshift-cluster/wip.yml +++ /dev/null @@ -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 | 
