diff options
Diffstat (limited to 'playbooks/common')
| -rw-r--r-- | playbooks/common/openshift-cluster/config.yml | 67 | ||||
| -rw-r--r-- | playbooks/common/openshift-cluster/evaluate_groups.yml | 76 | ||||
| -rw-r--r-- | playbooks/common/openshift-cluster/scaleup.yml | 16 | ||||
| -rw-r--r-- | playbooks/common/openshift-cluster/tasks/set_etcd_launch_facts.yml (renamed from playbooks/common/openshift-cluster/set_etcd_launch_facts_tasks.yml) | 0 | ||||
| -rw-r--r-- | playbooks/common/openshift-cluster/tasks/set_master_launch_facts.yml (renamed from playbooks/common/openshift-cluster/set_master_launch_facts_tasks.yml) | 0 | ||||
| -rw-r--r-- | playbooks/common/openshift-cluster/tasks/set_node_launch_facts.yml (renamed from playbooks/common/openshift-cluster/set_node_launch_facts_tasks.yml) | 0 | ||||
| -rw-r--r-- | playbooks/common/openshift-master/config.yml | 97 | 
7 files changed, 188 insertions, 68 deletions
| diff --git a/playbooks/common/openshift-cluster/config.yml b/playbooks/common/openshift-cluster/config.yml index 4c74f96db..a8bd634d3 100644 --- a/playbooks/common/openshift-cluster/config.yml +++ b/playbooks/common/openshift-cluster/config.yml @@ -1,68 +1,5 @@  --- -- name: Populate config host groups -  hosts: localhost -  gather_facts: no -  tasks: -  - fail: -      msg: This playbook rquires g_etcd_group to be set -    when: g_etcd_group is not defined - -  - fail: -      msg: This playbook rquires g_masters_group to be set -    when: g_masters_group is not defined - -  - fail: -      msg: This playbook rquires g_nodes_group to be set -    when: g_nodes_group is not defined - -  - name: Evaluate oo_etcd_to_config -    add_host: -      name: "{{ item }}" -      groups: oo_etcd_to_config -      ansible_ssh_user: "{{ g_ssh_user | default(omit) }}" -      ansible_sudo: "{{ g_sudo | default(omit) }}" -    with_items: groups[g_etcd_group] | default([]) - -  - name: Evaluate oo_masters_to_config -    add_host: -      name: "{{ item }}" -      groups: oo_masters_to_config -      ansible_ssh_user: "{{ g_ssh_user | default(omit) }}" -      ansible_sudo: "{{ g_sudo | default(omit) }}" -    with_items: groups[g_masters_group] | default([]) - -  - name: Evaluate oo_nodes_to_config -    add_host: -      name: "{{ item }}" -      groups: oo_nodes_to_config -      ansible_ssh_user: "{{ g_ssh_user | default(omit) }}" -      ansible_sudo: "{{ g_sudo | default(omit) }}" -    with_items: groups[g_nodes_group] | default([]) - -  - name: Evaluate oo_nodes_to_config -    add_host: -      name: "{{ item }}" -      groups: oo_nodes_to_config -      ansible_ssh_user: "{{ g_ssh_user | default(omit) }}" -      ansible_sudo: "{{ g_sudo | default(omit) }}" -    with_items: groups[g_masters_group] | default([]) -    when: g_nodeonmaster is defined and g_nodeonmaster == true - -  - name: Evaluate oo_first_etcd -    add_host: -      name: "{{ groups[g_etcd_group][0] }}" -      groups: oo_first_etcd -      ansible_ssh_user: "{{ g_ssh_user | default(omit) }}" -      ansible_sudo: "{{ g_sudo | default(omit) }}" -    when: g_etcd_group in groups and (groups[g_etcd_group] | length) > 0 - -  - name: Evaluate oo_first_master -    add_host: -      name: "{{ groups[g_masters_group][0] }}" -      groups: oo_first_master -      ansible_ssh_user: "{{ g_ssh_user | default(omit) }}" -      ansible_sudo: "{{ g_sudo | default(omit) }}" -    when: g_masters_group in groups and (groups[g_masters_group] | length) > 0 +- include: evaluate_groups.yml  - include: ../openshift-etcd/config.yml @@ -71,4 +8,4 @@  - include: ../openshift-node/config.yml    vars:      osn_cluster_dns_domain: "{{ hostvars[groups.oo_first_master.0].openshift.dns.domain }}" -    osn_cluster_dns_ip: "{{ hostvars[groups.oo_first_master.0].openshift.dns.ip }}" +    osn_cluster_dns_ip: "{{ hostvars[groups.oo_first_master.0].cluster_dns_ip }}" diff --git a/playbooks/common/openshift-cluster/evaluate_groups.yml b/playbooks/common/openshift-cluster/evaluate_groups.yml new file mode 100644 index 000000000..2bb69614f --- /dev/null +++ b/playbooks/common/openshift-cluster/evaluate_groups.yml @@ -0,0 +1,76 @@ +--- +- name: Populate config host groups +  hosts: localhost +  gather_facts: no +  tasks: +  - fail: +      msg: This playbook requires g_etcd_group to be set +    when: g_etcd_group is not defined + +  - fail: +      msg: This playbook requires g_masters_group to be set +    when: g_masters_group is not defined + +  - fail: +      msg: This playbook requires g_nodes_group to be set +    when: g_nodes_group is not defined + +  - fail: +      msg: This playbook requires g_lb_group to be set +    when: g_lb_group is not defined + +  - name: Evaluate oo_etcd_to_config +    add_host: +      name: "{{ item }}" +      groups: oo_etcd_to_config +      ansible_ssh_user: "{{ g_ssh_user | default(omit) }}" +      ansible_sudo: "{{ g_sudo | default(omit) }}" +    with_items: groups[g_etcd_group] | default([]) + +  - name: Evaluate oo_masters_to_config +    add_host: +      name: "{{ item }}" +      groups: oo_masters_to_config +      ansible_ssh_user: "{{ g_ssh_user | default(omit) }}" +      ansible_sudo: "{{ g_sudo | default(omit) }}" +    with_items: groups[g_masters_group] | default([]) + +  - name: Evaluate oo_nodes_to_config +    add_host: +      name: "{{ item }}" +      groups: oo_nodes_to_config +      ansible_ssh_user: "{{ g_ssh_user | default(omit) }}" +      ansible_sudo: "{{ g_sudo | default(omit) }}" +    with_items: groups[g_nodes_group] | default([]) + +  - name: Evaluate oo_nodes_to_config +    add_host: +      name: "{{ item }}" +      groups: oo_nodes_to_config +      ansible_ssh_user: "{{ g_ssh_user | default(omit) }}" +      ansible_sudo: "{{ g_sudo | default(omit) }}" +    with_items: groups[g_masters_group] | default([]) +    when: g_nodeonmaster is defined and g_nodeonmaster == true + +  - name: Evaluate oo_first_etcd +    add_host: +      name: "{{ groups[g_etcd_group][0] }}" +      groups: oo_first_etcd +      ansible_ssh_user: "{{ g_ssh_user | default(omit) }}" +    when: g_etcd_group in groups and (groups[g_etcd_group] | length) > 0 + +  - name: Evaluate oo_first_master +    add_host: +      name: "{{ groups[g_masters_group][0] }}" +      groups: oo_first_master +      ansible_ssh_user: "{{ g_ssh_user | default(omit) }}" +      ansible_sudo: "{{ g_sudo | default(omit) }}" +    when: g_masters_group in groups and (groups[g_masters_group] | length) > 0 + +  - name: Evaluate oo_lb_to_config +    add_host: +      name: "{{ item }}" +      groups: oo_lb_to_config +      ansible_ssh_user: "{{ g_ssh_user | default(omit) }}" +      ansible_sudo: "{{ g_sudo | default(omit) }}" +    with_items: groups[g_lb_group] | default([]) diff --git a/playbooks/common/openshift-cluster/scaleup.yml b/playbooks/common/openshift-cluster/scaleup.yml new file mode 100644 index 000000000..6d2777732 --- /dev/null +++ b/playbooks/common/openshift-cluster/scaleup.yml @@ -0,0 +1,16 @@ +--- +- include: evaluate_groups.yml +  vars: +    g_etcd_group: "{{ 'etcd' }}" +    g_masters_group: "{{ 'masters' }}" +    g_nodes_group: "{{ 'nodes' }}" +    g_lb_group: "{{ 'lb' }}" +    openshift_cluster_id: "{{ cluster_id | default('default') }}" +    openshift_debug_level: 2 +    openshift_deployment_type: "{{ deployment_type }}" + +- include: ../openshift-node/config.yml +  vars: +    osn_cluster_dns_domain: "{{ hostvars[groups.oo_first_master.0].openshift.dns.domain }}" +    osn_cluster_dns_ip: "{{ hostvars[groups.oo_first_master.0].openshift.dns.ip }}" +    openshift_deployment_type: "{{ deployment_type }}" diff --git a/playbooks/common/openshift-cluster/set_etcd_launch_facts_tasks.yml b/playbooks/common/openshift-cluster/tasks/set_etcd_launch_facts.yml index 1a6580795..1a6580795 100644 --- a/playbooks/common/openshift-cluster/set_etcd_launch_facts_tasks.yml +++ b/playbooks/common/openshift-cluster/tasks/set_etcd_launch_facts.yml diff --git a/playbooks/common/openshift-cluster/set_master_launch_facts_tasks.yml b/playbooks/common/openshift-cluster/tasks/set_master_launch_facts.yml index 36d7b7870..36d7b7870 100644 --- a/playbooks/common/openshift-cluster/set_master_launch_facts_tasks.yml +++ b/playbooks/common/openshift-cluster/tasks/set_master_launch_facts.yml diff --git a/playbooks/common/openshift-cluster/set_node_launch_facts_tasks.yml b/playbooks/common/openshift-cluster/tasks/set_node_launch_facts.yml index 278942f8b..278942f8b 100644 --- a/playbooks/common/openshift-cluster/set_node_launch_facts_tasks.yml +++ b/playbooks/common/openshift-cluster/tasks/set_node_launch_facts.yml diff --git a/playbooks/common/openshift-master/config.yml b/playbooks/common/openshift-master/config.yml index 1dec923fc..64376040f 100644 --- a/playbooks/common/openshift-master/config.yml +++ b/playbooks/common/openshift-master/config.yml @@ -34,7 +34,9 @@        - role: common          local_facts:            hostname: "{{ openshift_hostname | default(None) }}" +          ip: "{{ openshift_ip | default(None) }}"            public_hostname: "{{ openshift_public_hostname | default(None) }}" +          public_ip: "{{ openshift_public_ip | default(None) }}"            deployment_type: "{{ openshift_deployment_type }}"        - role: master          local_facts: @@ -44,7 +46,6 @@            public_api_url: "{{ openshift_master_public_api_url | default(None) }}"            cluster_hostname: "{{ openshift_master_cluster_hostname | default(None) }}"            cluster_public_hostname: "{{ openshift_master_cluster_public_hostname | default(None) }}" -          cluster_defer_ha: "{{ openshift_master_cluster_defer_ha | default(None) }}"            console_path: "{{ openshift_master_console_path | default(None) }}"            console_port: "{{ openshift_master_console_port | default(None) }}"            console_url: "{{ openshift_master_console_url | default(None) }}" @@ -168,6 +169,10 @@      masters_needing_certs: "{{ hostvars                                 | oo_select_keys(groups['oo_masters_to_config'] | difference(groups['oo_first_master']))                                 | oo_filter_list(filter_attr='master_certs_missing') }}" +    master_hostnames: "{{ hostvars +                               | oo_select_keys(groups['oo_masters_to_config']) +                               | oo_collect('openshift.common.all_hostnames') +                               | oo_flatten | unique }}"      sync_tmpdir: "{{ hostvars.localhost.g_master_mktemp.stdout }}"    roles:    - openshift_master_certificates @@ -199,12 +204,84 @@        validate_checksum: yes      with_items: masters_needing_certs +- name: Inspect named certificates +  hosts: oo_first_master +  tasks: +  - name: Collect certificate names +    set_fact: +      parsed_named_certificates: "{{ openshift_master_named_certificates | oo_parse_certificate_names(master_cert_config_dir, openshift.common.internal_hostnames) }}" +    when: openshift_master_named_certificates is defined + +- name: Compute haproxy_backend_servers +  hosts: localhost +  connection: local +  sudo: false +  gather_facts: no +  tasks: +  - set_fact: +      haproxy_backend_servers: "{{ hostvars | oo_select_keys(groups['oo_masters_to_config']) | oo_haproxy_backend_masters }}" + +- name: Configure load balancers +  hosts: oo_lb_to_config +  vars: +    sync_tmpdir: "{{ hostvars.localhost.g_master_mktemp.stdout }}" +    haproxy_frontends: +    - name: atomic-openshift-api +      mode: tcp +      options: +      - tcplog +      binds: +      - "*:{{ hostvars[groups.oo_first_master.0].openshift.master.api_port }}" +      default_backend: atomic-openshift-api +    haproxy_backends: +    - name: atomic-openshift-api +      mode: tcp +      option: tcplog +      balance: source +      servers: "{{ hostvars.localhost.haproxy_backend_servers }}" +  roles: +  - role: haproxy +    when: groups.oo_masters_to_config | length > 1 + +- name: Generate master session keys +  hosts: oo_first_master +  tasks: +  - fail: +      msg: "Both openshift_master_session_auth_secrets and openshift_master_session_encryption_secrets must be provided if either variable is set" +    when: (openshift_master_session_auth_secrets is defined and openshift_master_session_encryption_secrets is not defined) or (openshift_master_session_encryption_secrets is defined and openshift_master_session_auth_secrets is not defined) +  - fail: +      msg: "openshift_master_session_auth_secrets and openshift_master_encryption_secrets must be equal length" +    when: (openshift_master_session_auth_secrets is defined and openshift_master_session_encryption_secrets is defined) and (openshift_master_session_auth_secrets | length != openshift_master_session_encryption_secrets | length) +  - name: Generate session authentication key +    command: /usr/bin/openssl rand -base64 24 +    register: session_auth_output +    with_sequence: count=1 +    when: openshift_master_session_auth_secrets is undefined +  - name: Generate session encryption key +    command: /usr/bin/openssl rand -base64 24 +    register: session_encryption_output +    with_sequence: count=1 +    when: openshift_master_session_encryption_secrets is undefined +  - set_fact: +      session_auth_secret: "{{ openshift_master_session_auth_secrets +                                | default(session_auth_output.results +                                | map(attribute='stdout') +                                | list) }}" +      session_encryption_secret: "{{ openshift_master_session_encryption_secrets +                                      | default(session_encryption_output.results +                                      | map(attribute='stdout') +                                      | list) }}" +  - name: Configure master instances    hosts: oo_masters_to_config +  serial: 1    vars: +    named_certificates: "{{ hostvars[groups['oo_first_master'][0]]['parsed_named_certificates'] | default([])}}"      sync_tmpdir: "{{ hostvars.localhost.g_master_mktemp.stdout }}"      openshift_master_ha: "{{ groups.oo_masters_to_config | length > 1 }}" -    embedded_etcd: "{{ openshift.master.embedded_etcd }}" +    openshift_master_count: "{{ groups.oo_masters_to_config | length }}" +    openshift_master_session_auth_secrets: "{{ hostvars[groups['oo_first_master'][0]]['session_auth_secret'] }}" +    openshift_master_session_encryption_secrets: "{{ hostvars[groups['oo_first_master'][0]]['session_encryption_secret'] }}"    pre_tasks:    - name: Ensure certificate directory exists      file: @@ -233,11 +310,25 @@      omc_cluster_hosts: "{{ groups.oo_masters_to_config | join(' ')}}"    roles:    - role: openshift_master_cluster -    when: openshift_master_ha | bool +    when: openshift_master_ha | bool and openshift.master.cluster_method == "pacemaker"    - openshift_examples    - role: openshift_cluster_metrics      when: openshift.common.use_cluster_metrics | bool +- name: Determine cluster dns ip +  hosts: oo_first_master +  tasks: +  - name: Get master service ip +    command: "{{ openshift.common.client_binary }} get -o template svc kubernetes --template=\\{\\{.spec.clusterIP\\}\\}" +    register: master_service_ip_output +    when: openshift.common.version_greater_than_3_1_or_1_1 | bool +  - set_fact: +      cluster_dns_ip: "{{ hostvars[groups.oo_first_master.0].openshift.dns.ip }}" +    when: not openshift.common.version_greater_than_3_1_or_1_1 | bool +  - set_fact: +      cluster_dns_ip: "{{ master_service_ip_output.stdout }}" +    when: openshift.common.version_greater_than_3_1_or_1_1 | bool +  - name: Enable cockpit    hosts: oo_first_master    vars: | 
