From 7c7cb82fdd5583784fd5832b92886abf86934325 Mon Sep 17 00:00:00 2001 From: Jhon Honce Date: Fri, 6 Mar 2015 13:52:20 -0700 Subject: Use ansible playbook to initialize openshift cluster * Added playbooks/gce/openshift-cluster * Added bin/cluster (will replace cluster.sh) --- playbooks/gce/openshift-node/config.yml | 12 ++++++++++-- playbooks/gce/openshift-node/terminate.yml | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) (limited to 'playbooks/gce/openshift-node') diff --git a/playbooks/gce/openshift-node/config.yml b/playbooks/gce/openshift-node/config.yml index 78047cf40..57b9e3198 100644 --- a/playbooks/gce/openshift-node/config.yml +++ b/playbooks/gce/openshift-node/config.yml @@ -1,5 +1,4 @@ ---- -- name: "populate oo_hosts_to_config host group if needed" +- name: "node/config.yml, populate oo_hosts_to_config host group if needed" hosts: localhost gather_facts: no tasks: @@ -12,6 +11,11 @@ hosts: "tag_env-host-type-{{ oo_env }}-openshift-master" connection: ssh user: root + gather_facts: yes + tasks: + - command: 'curl "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip" -H "Metadata-Flavor: Google"' + register: output + - set_fact: gce_public_ip="{{ output.stdout }}" - name: "Set OO sepcific facts on localhost (for later use)" hosts: localhost @@ -36,6 +40,10 @@ user: root vars_files: - vars.yml + + tasks: + - debug: var=gce_public_ip + roles: - { role: openshift_node, diff --git a/playbooks/gce/openshift-node/terminate.yml b/playbooks/gce/openshift-node/terminate.yml index 8d60f27b3..d4555084b 100644 --- a/playbooks/gce/openshift-node/terminate.yml +++ b/playbooks/gce/openshift-node/terminate.yml @@ -12,7 +12,7 @@ - debug: msg="{{ groups['oo_hosts_to_terminate'] }}" -- name: Terminate instances +- name: Terminate node instances hosts: localhost connection: local tasks: -- cgit v1.2.3 From 9199379f94f6b11a4841e31f6c58a11c1e9f8c3a Mon Sep 17 00:00:00 2001 From: Jason DeTiberus Date: Fri, 13 Mar 2015 03:58:23 -0400 Subject: Various fixes - playbooks/gce/openshift-cluster: - Remove some stray debugging statements - Some minor formatting fixes - removing un-necessary quotes - cleaning up some jinja templates for readability - add a play to the launch playbook to apply the os_update_latest role on all hosts in the new environment - improve setting groups and gce_public_ip when using add_host module - set gce_public_ip as a variable for the host using the returned gce instance_data - add a group for each tag configured on the host (pre-pending tag_ to the tag name) - update the openshift-master/config.yml and openshift-node/config.yml includes to use the tag_env-host-type groups - openshift-{master,node}/config.yml - Some cleanup - remove some extraneous quotes - remove connection: ssh from remote hosts, since it is the default - remove user: root and instead set ansible_ssh_user in inventory/gce/group_vars/all - set openshift_public_ip and openshift_env to templated values in inventory/gce/group_vars/all as well - no longer set openshift_node_ips for the master host, since nodes will register themselves now when they are configured (prevent reboot on adding nodes) - move setting openshift_master_ips and openshift_public_master_ips using set_fact and instead use the vars: of the 'Configure Instances' play --- playbooks/gce/openshift-node/config.yml | 148 +++++++++++++++++++++++--------- 1 file changed, 108 insertions(+), 40 deletions(-) (limited to 'playbooks/gce/openshift-node') diff --git a/playbooks/gce/openshift-node/config.yml b/playbooks/gce/openshift-node/config.yml index 57b9e3198..17631d578 100644 --- a/playbooks/gce/openshift-node/config.yml +++ b/playbooks/gce/openshift-node/config.yml @@ -1,56 +1,124 @@ -- name: "node/config.yml, populate oo_hosts_to_config host group if needed" +- name: node/config.yml, populate oo_nodes_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" + add_host: "name={{ item }} groups=oo_nodes_to_config" with_items: "{{ oo_host_group_exp | default('') }}" when: oo_host_group_exp is defined + - name: Find masters for env + add_host: "name={{ item }} groups=oo_masters_for_node_config" + with_items: groups['tag_env-host-type-' + oo_env + '-openshift-master'] -- name: "Gather facts for masters in {{ oo_env }}" +- name: Gather facts for masters in {{ oo_env }} hosts: "tag_env-host-type-{{ oo_env }}-openshift-master" - connection: ssh - user: root - gather_facts: yes tasks: - - command: 'curl "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip" -H "Metadata-Flavor: Google"' - register: output - - set_fact: gce_public_ip="{{ output.stdout }}" + - set_fact: + openshift_master_ip: "{{ openshift_ip }}" + openshift_master_api_url: "{{ openshift_api_url }}" + openshift_master_webui_url: "{{ openshift_webui_url }}" + openshift_master_hostname: "{{ openshift_hostname }}" + openshift_master_public_ip: "{{ openshift_public_ip }}" + openshift_master_api_public_url: "{{ openshift_api_public_url }}" + openshift_master_webui_public_url: "{{ openshift_webui_public_url }}" + openshift_master_public_hostnames: "{{ openshift_public_hostname }}" -- name: "Set OO sepcific facts on localhost (for later use)" - hosts: localhost - gather_facts: no +- name: Gather facts for hosts to configure + hosts: tag_env-host-type-{{ oo_env }}-openshift-node tasks: - - name: Setting openshift_master_ips fact on localhost - set_fact: - openshift_master_ips: "{{ hostvars - | oo_select_keys(groups['tag_env-host-type-' + oo_env + '-openshift-master']) - | oo_collect(attribute='ansible_default_ipv4.address') }}" - when: groups['tag_env-host-type-' + oo_env + '-openshift-master'] is defined - - name: Setting openshift_master_public_ips fact on localhost - set_fact: - openshift_master_public_ips: "{{ hostvars - | oo_select_keys(groups['tag_env-host-type-' + oo_env + '-openshift-master']) - | oo_collect(attribute='gce_public_ip') }}" - 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 + - set_fact: + openshift_node_hostname: "{{ openshift_hostname }}" + openshift_node_name: "{{ openshift_hostname }}" + openshift_node_cpu: "{{ openshift_node_cpu if openshift_node_cpu else ansible_processor_cores }}" + openshift_node_memory: "{{ openshift_node_memory if openshift_node_memory else (ansible_memtotal_mb|int * 1024 * 1024 * 0.75)|int }}" + openshift_node_pod_cidr: "{{ openshift_node_pod_cidr if openshift_node_pod_cidr else None }}" + openshift_node_host_ip: "{{ openshift_ip }}" + openshift_node_labels: "{{ openshift_node_labels if openshift_node_labels else {} }}" + openshift_node_annotations: "{{ openshift_node_annotations if openshift_node_annotations else {} }}" +- name: Register nodes + hosts: tag_env-host-type-{{ oo_env }}-openshift-master[0] + vars: + openshift_node_group: tag_env-host-type-{{ oo_env }}-openshift-node + openshift_nodes: "{{ hostvars + | oo_select_keys(groups[openshift_node_group]) }}" + openshift_master_group: tag_env-host-type-{{ oo_env }}-openshift-master + openshift_master_urls: "{{ hostvars + | oo_select_keys(groups[openshift_master_group]) + | oo_collect(attribute='openshift_master_api_url') }}" + openshift_master_public_urls: "{{ hostvars + | oo_select_keys(groups[openshift_master_group]) + | oo_collect(attribute='openshift_master_api_public_url') }}" + pre_tasks: + roles: + - openshift_register_nodes tasks: - - debug: var=gce_public_ip + - name: Create local temp directory for syncing certs + local_action: command /usr/bin/mktemp -d /tmp/openshift-ansible-XXXXXXX + register: mktemp + - name: Sync master certs to localhost + synchronize: + mode: pull + checksum: yes + src: /var/lib/openshift/openshift.local.certificates + dest: "{{ mktemp.stdout }}" + +# TODO: sync generated certs between masters +# +- name: Configure instances + hosts: oo_nodes_to_config + vars_files: + - vars.yml + vars: + openshift_master_group: tag_env-host-type-{{ oo_env }}-openshift-master + openshift_master_ips: "{{ hostvars + | oo_select_keys(groups[openshift_master_group]) + | oo_collect(attribute='openshift_master_ip') }}" + openshift_master_hostnames: "{{ hostvars + | oo_select_keys(groups[openshift_master_group]) + | oo_collect(attribute='openshift_master_hostname') }}" + openshift_master_public_ips: "{{ hostvars + | oo_select_keys(groups[openshift_master_group]) + | oo_collect(attribute='openshift_master_public_ip') }}" + openshift_master_public_hostnames: "{{ hostvars + | oo_select_keys(groups[openshift_master_group]) + | oo_collect(attribute='openshift_master_public_hostname') }}" + cert_parent_rel_path: openshift.local.certificates + cert_rel_path: "{{ cert_parent_rel_path }}/node-{{ openshift_node_name }}" + cert_base_path: /var/lib/openshift + cert_parent_path: "{{ cert_base_path }}/{{ cert_parent_rel_path }}" + cert_path: "{{ cert_base_path }}/{{ cert_rel_path }}" + pre_tasks: + - name: Ensure certificate directories exists + file: + path: "{{ item }}" + state: directory + with_items: + - "{{ cert_path }}" + - "{{ cert_parent_path }}/ca" + + # TODO: only sync to a node if it's certs have been updated + # TODO: notify restart openshift-node and/or restart openshift-sdn-node, + # possibly test service started time against certificate/config file + # timestamps in openshift-node or openshift-sdn-node to trigger notify + # TODO: also copy ca cert: /var/lib/openshift/openshift.local.certificates/ca/cert.crt + - name: Sync certs to nodes + synchronize: + checksum: yes + src: "{{ item.src }}" + dest: "{{ item.dest }}" + owner: no + group: no + with_items: + - src: "{{ hostvars[groups[openshift_master_group][0]].mktemp.stdout }}/{{ cert_rel_path }}" + dest: "{{ cert_parent_path }}" + - src: "{{ hostvars[groups[openshift_master_group][0]].mktemp.stdout }}/{{ cert_parent_rel_path }}/ca/cert.crt" + dest: "{{ cert_parent_path }}/ca/cert.crt" + - local_action: file name={{ hostvars[groups[openshift_master_group][0]].mktemp.stdout }} state=absent + run_once: true roles: - - { - role: openshift_node, - openshift_master_ips: "{{ hostvars['localhost'].openshift_master_ips | default(['']) }}", - openshift_master_public_ips: "{{ hostvars['localhost'].openshift_master_public_ips | default(['']) }}", - openshift_public_ip: "{{ gce_public_ip }}", - openshift_env: "{{ oo_env }}", - } - - docker + - openshift_node - os_env_extras + - os_env_extras_node + -- cgit v1.2.3 From 3324b6c8889074ee17d7be05588de8b58aa3774f Mon Sep 17 00:00:00 2001 From: Jhon Honce Date: Fri, 6 Mar 2015 13:52:20 -0700 Subject: Use ansible playbook to initialize openshift cluster * Added playbooks/gce/openshift-cluster * Added bin/cluster (will replace cluster.sh) --- playbooks/gce/openshift-node/config.yml | 1 + 1 file changed, 1 insertion(+) (limited to 'playbooks/gce/openshift-node') diff --git a/playbooks/gce/openshift-node/config.yml b/playbooks/gce/openshift-node/config.yml index 17631d578..7f80b90a7 100644 --- a/playbooks/gce/openshift-node/config.yml +++ b/playbooks/gce/openshift-node/config.yml @@ -53,6 +53,7 @@ roles: - openshift_register_nodes tasks: + tasks: - name: Create local temp directory for syncing certs local_action: command /usr/bin/mktemp -d /tmp/openshift-ansible-XXXXXXX register: mktemp -- cgit v1.2.3 From 13dc8505feb93adc311a4a2d8e714c7d1e61cf1f Mon Sep 17 00:00:00 2001 From: Jason DeTiberus Date: Mon, 16 Mar 2015 15:15:03 -0400 Subject: Fix openshift_master_ips and openshift_master_public_ips resolution - don't use set_fact on localhost for openshift_master_ips and openshift_master_public_ips - we are only using it for the configure play - move definition to vars section of configure play - otherwise we'd have to set openshift_master_ips and openshift_master_public_ips from hostvars['localhost'] and since we aren't refrerencing it anywhere else, might as well just do it in vars instead of set_fact on locahost. --- playbooks/gce/openshift-node/config.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'playbooks/gce/openshift-node') diff --git a/playbooks/gce/openshift-node/config.yml b/playbooks/gce/openshift-node/config.yml index 7f80b90a7..9d87c4e8f 100644 --- a/playbooks/gce/openshift-node/config.yml +++ b/playbooks/gce/openshift-node/config.yml @@ -53,7 +53,6 @@ roles: - openshift_register_nodes tasks: - tasks: - name: Create local temp directory for syncing certs local_action: command /usr/bin/mktemp -d /tmp/openshift-ansible-XXXXXXX register: mktemp @@ -69,7 +68,7 @@ # - name: Configure instances hosts: oo_nodes_to_config - vars_files: +vars_files: - vars.yml vars: openshift_master_group: tag_env-host-type-{{ oo_env }}-openshift-master -- cgit v1.2.3 From 9575258e5a1b8f9ee8ec7ffc7ad74fa5dfeabc00 Mon Sep 17 00:00:00 2001 From: Jason DeTiberus Date: Wed, 18 Mar 2015 13:25:18 -0400 Subject: replace oo_hosts_to_config with oo_nodes_to_config and oo_masters_to_config --- playbooks/gce/openshift-node/config.yml | 1 - playbooks/gce/openshift-node/launch.yml | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) (limited to 'playbooks/gce/openshift-node') diff --git a/playbooks/gce/openshift-node/config.yml b/playbooks/gce/openshift-node/config.yml index 9d87c4e8f..d24acb8fa 100644 --- a/playbooks/gce/openshift-node/config.yml +++ b/playbooks/gce/openshift-node/config.yml @@ -121,4 +121,3 @@ vars_files: - openshift_node - os_env_extras - os_env_extras_node - diff --git a/playbooks/gce/openshift-node/launch.yml b/playbooks/gce/openshift-node/launch.yml index 935599efd..ca2914d8a 100644 --- a/playbooks/gce/openshift-node/launch.yml +++ b/playbooks/gce/openshift-node/launch.yml @@ -24,8 +24,8 @@ 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" + - name: Add new instances public IPs to oo_nodes_to_config + add_host: "hostname={{ item.name }} ansible_ssh_host={{ item.public_ip }} groupname=oo_nodes_to_config" with_items: gce.instance_data - name: Wait for ssh @@ -48,10 +48,10 @@ # Always bounce service to pick up new credentials #- name: "Restart instances" -# hosts: oo_hosts_to_config +# hosts: oo_nodes_to_config # connection: ssh # user: root # tasks: -# - debug: var=groups.oo_hosts_to_config +# - debug: var=groups.oo_nodes_to_config # - name: Restart OpenShift # service: name=openshift-node enabled=yes state=restarted -- cgit v1.2.3 From 557cc0ca9ecc22a9d90f9cf9ce549186fe286492 Mon Sep 17 00:00:00 2001 From: Jhon Honce Date: Mon, 23 Mar 2015 09:15:08 -0700 Subject: * Updates from code reviews --- playbooks/gce/openshift-node/terminate.yml | 1 + 1 file changed, 1 insertion(+) (limited to 'playbooks/gce/openshift-node') diff --git a/playbooks/gce/openshift-node/terminate.yml b/playbooks/gce/openshift-node/terminate.yml index d4555084b..9aa8a48c1 100644 --- a/playbooks/gce/openshift-node/terminate.yml +++ b/playbooks/gce/openshift-node/terminate.yml @@ -15,6 +15,7 @@ - name: Terminate node instances hosts: localhost connection: local + gather_facts: no tasks: - name: Terminate node instances gce: -- cgit v1.2.3 From 01ee65e99d39265f7d8db3ddbeca5d59ddfa2038 Mon Sep 17 00:00:00 2001 From: Jason DeTiberus Date: Mon, 23 Mar 2015 23:37:19 -0400 Subject: gce inventory/playbook updates for node registration changes --- playbooks/gce/openshift-node/config.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'playbooks/gce/openshift-node') diff --git a/playbooks/gce/openshift-node/config.yml b/playbooks/gce/openshift-node/config.yml index d24acb8fa..bf28fc81d 100644 --- a/playbooks/gce/openshift-node/config.yml +++ b/playbooks/gce/openshift-node/config.yml @@ -6,12 +6,12 @@ add_host: "name={{ item }} groups=oo_nodes_to_config" with_items: "{{ oo_host_group_exp | default('') }}" when: oo_host_group_exp is defined - - name: Find masters for env + - name: Find masters for env add_host: "name={{ item }} groups=oo_masters_for_node_config" with_items: groups['tag_env-host-type-' + oo_env + '-openshift-master'] - name: Gather facts for masters in {{ oo_env }} - hosts: "tag_env-host-type-{{ oo_env }}-openshift-master" + hosts: tag_env-host-type-{{ oo_env }}-openshift-master tasks: - set_fact: openshift_master_ip: "{{ openshift_ip }}" @@ -68,7 +68,7 @@ # - name: Configure instances hosts: oo_nodes_to_config -vars_files: + vars_files: - vars.yml vars: openshift_master_group: tag_env-host-type-{{ oo_env }}-openshift-master -- cgit v1.2.3 From 41740bc6e177e58a0aa817e2d940e60be51d3bfe Mon Sep 17 00:00:00 2001 From: Jhon Honce Date: Tue, 24 Mar 2015 09:43:36 -0700 Subject: Revert "Jwhonce wip/cluster" --- playbooks/gce/openshift-node/config.yml | 1 - 1 file changed, 1 deletion(-) (limited to 'playbooks/gce/openshift-node') diff --git a/playbooks/gce/openshift-node/config.yml b/playbooks/gce/openshift-node/config.yml index bf28fc81d..e0d074572 100644 --- a/playbooks/gce/openshift-node/config.yml +++ b/playbooks/gce/openshift-node/config.yml @@ -120,4 +120,3 @@ roles: - openshift_node - os_env_extras - - os_env_extras_node -- cgit v1.2.3