Browse Source

more aws support for scaleup

Jason DeTiberus 9 years ago
parent
commit
b169e206f7

+ 25 - 0
bin/cluster

@@ -67,6 +67,21 @@ class Cluster(object):
 
         self.action(args, inventory, env, playbook)
 
+    def addNodes(self, args):
+        """
+        Add nodes to an existing cluster for given provider
+        :param args: command line arguments provided by user
+        """
+        env = {'cluster_id': args.cluster_id,
+               'deployment_type': self.get_deployment_type(args)}
+        playbook = "playbooks/{0}/openshift-cluster/addNodes.yml".format(args.provider)
+        inventory = self.setup_provider(args.provider)
+
+        env['num_nodes'] = args.nodes
+        env['num_infra'] = args.infra
+
+        self.action(args, inventory, env, playbook)
+
     def terminate(self, args):
         """
         Destroy OpenShift cluster
@@ -292,6 +307,16 @@ if __name__ == '__main__':
                                help='number of external etcd hosts to create in cluster')
     create_parser.set_defaults(func=cluster.create)
 
+
+    create_parser = action_parser.add_parser('addNodes', help='Add nodes to a cluster',
+                                             parents=[meta_parser])
+    create_parser.add_argument('-n', '--nodes', default=1, type=int,
+                               help='number of nodes to add to the cluster')
+    create_parser.add_argument('-i', '--infra', default=1, type=int,
+                               help='number of infra nodes to add to the cluster')
+    create_parser.set_defaults(func=cluster.addNodes)
+
+
     config_parser = action_parser.add_parser('config',
                                              help='Configure or reconfigure a cluster',
                                              parents=[meta_parser])

+ 58 - 0
playbooks/aws/openshift-cluster/addNodes.yml

@@ -0,0 +1,58 @@
+---
+- name: Launch instance(s)
+  hosts: localhost
+  connection: local
+  gather_facts: no
+  vars_files:
+  - vars.yml
+  - ["vars.{{ deployment_type }}.{{ cluster_id }}.yml", vars.defaults.yml]
+  tasks:
+  - fail:
+      msg: Deployment type not supported for aws 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"
+
+  - include: ../../common/openshift-cluster/tasks/set_master_launch_facts.yml
+  - include: tasks/launch_instances.yml
+    vars:
+      instances: "{{ master_names }}"
+      cluster: "{{ cluster_id }}"
+      type: "{{ k8s_type }}"
+      g_sub_host_type: "default"
+
+  - 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 }}"
+
+  - 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 }}"
+
+  - add_host:
+      name: "{{ master_names.0 }}"
+      groups: service_master
+    when: master_names is defined and master_names.0 is defined
+
+- include: update.yml
+- include: list.yml

+ 9 - 0
playbooks/aws/openshift-cluster/scaleup.yml

@@ -8,6 +8,15 @@
   - set_fact:
       g_ssh_user_tmp: "{{ deployment_vars[deployment_type].ssh_user }}"
       g_sudo_tmp: "{{ deployment_vars[deployment_type].sudo }}"
+  - name: Evaluate oo_hosts_to_update
+    add_host:
+      name: "{{ item }}"
+      groups: oo_hosts_to_update
+      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"
+      ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}"
+    with_items: groups.nodes_to_add
+
+- include: ../../common/openshift-cluster/update_repos_and_packages.yml
 
 - include: ../../common/openshift-cluster/scaleup.yml
   vars: