diff options
Diffstat (limited to 'playbooks')
6 files changed, 96 insertions, 33 deletions
diff --git a/playbooks/aws/openshift-cluster/cluster_hosts.yml b/playbooks/aws/openshift-cluster/cluster_hosts.yml index fbaf81dec..119df9c7d 100644 --- a/playbooks/aws/openshift-cluster/cluster_hosts.yml +++ b/playbooks/aws/openshift-cluster/cluster_hosts.yml @@ -8,6 +8,8 @@ g_lb_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type_lb'] | default([])  g_nfs_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type_nfs'] | default([])) }}" +g_glusterfs_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type-glusterfs'] | default([])) }}" +  g_master_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type_master'] | default([])) }}"  g_new_master_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type_new_master'] | default([])) }}" diff --git a/playbooks/common/openshift-cluster/redeploy-certificates/router.yml b/playbooks/common/openshift-cluster/redeploy-certificates/router.yml index a7b614341..9f14f2d69 100644 --- a/playbooks/common/openshift-cluster/redeploy-certificates/router.yml +++ b/playbooks/common/openshift-cluster/redeploy-certificates/router.yml @@ -67,7 +67,66 @@          service.alpha.openshift.io/serving-cert-secret-name=router-certs          --config={{ mktemp.stdout }}/admin.kubeconfig          -n default -    when: l_router_dc.rc == 0 and 'router-certs' in router_secrets +    when: l_router_dc.rc == 0 and 'router-certs' in router_secrets and openshift_hosted_router_certificate is undefined + +  - block: +    - assert: +        that: +        - "'certfile' in openshift_hosted_router_certificate" +        - "'keyfile' in openshift_hosted_router_certificate" +        - "'cafile' in openshift_hosted_router_certificate" +        msg: |- +          openshift_hosted_router_certificate has been set in the inventory but is +          missing one or more required keys. Ensure that 'certfile', 'keyfile', +          and 'cafile' keys have been specified for the openshift_hosted_router_certificate +          inventory variable. + +    - name: Read router certificate and key +      become: no +      local_action: +        module: slurp +        src: "{{ item }}" +      register: openshift_router_certificate_output +      # Defaulting dictionary keys to none to avoid deprecation warnings +      # (future fatal errors) during template evaluation. Dictionary keys +      # won't be accessed unless openshift_hosted_router_certificate is +      # defined and has all keys (certfile, keyfile, cafile) which we +      # check above. +      with_items: +      - "{{ (openshift_hosted_router_certificate | default({'certfile':none})).certfile }}" +      - "{{ (openshift_hosted_router_certificate | default({'keyfile':none})).keyfile }}" +      - "{{ (openshift_hosted_router_certificate | default({'cafile':none})).cafile }}" + +    - name: Write temporary router certificate file +      copy: +        content: "{% for certificate in openshift_router_certificate_output.results -%}{{ certificate.content | b64decode }}{% endfor -%}" +        dest: "{{ mktemp.stdout }}/openshift-hosted-router-certificate.pem" +        mode: 0600 + +    - name: Write temporary router key file +      copy: +        content: "{{ (openshift_router_certificate_output.results +                         | oo_collect('content', {'source':(openshift_hosted_router_certificate | default({'keyfile':none})).keyfile}))[0] | b64decode }}" +        dest: "{{ mktemp.stdout }}/openshift-hosted-router-certificate.key" +        mode: 0600 + +    - name: Replace router-certs secret +      shell: > +        {{ openshift.common.client_binary }} secrets new router-certs +        tls.crt="{{ mktemp.stdout }}/openshift-hosted-router-certificate.pem" +        tls.key="{{ mktemp.stdout }}/openshift-hosted-router-certificate.key" +        --type=kubernetes.io/tls +        --confirm +        -o json | {{ openshift.common.client_binary }} replace -f - + +    - name: Remove temporary router certificate and key files +      file: +        path: "{{ item }}" +        state: absent +      with_items: +      - "{{ mktemp.stdout }}/openshift-hosted-router-certificate.pem" +      - "{{ mktemp.stdout }}/openshift-hosted-router-certificate.key" +    when: l_router_dc.rc == 0 and 'router-certs' in router_secrets and openshift_hosted_router_certificate is defined    - name: Redeploy router      command: > diff --git a/playbooks/common/openshift-cluster/upgrades/etcd/backup.yml b/playbooks/common/openshift-cluster/upgrades/etcd/backup.yml index 7ef79afa9..fb51a0061 100644 --- a/playbooks/common/openshift-cluster/upgrades/etcd/backup.yml +++ b/playbooks/common/openshift-cluster/upgrades/etcd/backup.yml @@ -3,8 +3,8 @@    hosts: etcd_hosts_to_backup    vars:      embedded_etcd: "{{ groups.oo_etcd_to_config | default([]) | length == 0 }}" -    timestamp: "{{ lookup('pipe', 'date +%Y%m%d%H%M%S') }}"      etcdctl_command: "{{ 'etcdctl' if not openshift.common.is_containerized or embedded_etcd else 'docker exec etcd_container etcdctl' if not openshift.common.is_etcd_system_container else 'runc exec etcd etcdctl' }}" +    timestamp: "{{ lookup('pipe', 'date +%Y%m%d%H%M%S') }}"    roles:    - openshift_facts    tasks: @@ -13,29 +13,20 @@        role: etcd        local_facts: {}      when: "'etcd' not in openshift" - -  - stat: path=/var/lib/openshift -    register: var_lib_openshift - -  - stat: path=/var/lib/origin -    register: var_lib_origin - -  - name: Create origin symlink if necessary -    file: src=/var/lib/openshift/ dest=/var/lib/origin state=link -    when: var_lib_openshift.stat.exists == True and var_lib_origin.stat.exists == False +  - set_fact: +      etcd_backup_dir: "{{ openshift.etcd.etcd_data_dir }}/openshift-backup-{{ backup_tag | default('') }}{{ timestamp }}"    # TODO: replace shell module with command and update later checks -  # We assume to be using the data dir for all backups.    - name: Check available disk space for etcd backup -    shell: df --output=avail -k {{ openshift.common.data_dir }} | tail -n 1 +    shell: df --output=avail -k {{ openshift.etcd.etcd_data_dir }} | tail -n 1      register: avail_disk      # AUDIT:changed_when: `false` because we are only inspecting      # state, not manipulating anything      changed_when: false    # TODO: replace shell module with command and update later checks -  - name: Check current embedded etcd disk usage -    shell: du -k {{ openshift.etcd.etcd_data_dir }} | tail -n 1 | cut -f1 +  - name: Check current etcd disk usage +    shell: du --exclude='*openshift-backup*' -k {{ openshift.etcd.etcd_data_dir }} | tail -n 1 | cut -f1      register: etcd_disk_usage      when: embedded_etcd | bool      # AUDIT:changed_when: `false` because we are only inspecting @@ -52,37 +43,42 @@    # For non containerized and non embedded we should have the correct version of    # etcd installed already. So don't do anything.    # -  # For embedded or containerized we need to use the latest because OCP 3.3 uses -  # a version of etcd that can only be backed up with etcd-3.x and if it's -  # containerized then etcd version may be newer than that on the host so -  # upgrade it. -  # -  # On atomic we have neither yum nor dnf so ansible throws a hard to debug error -  # if you use package there, like this: "Could not find a module for unknown." -  # see https://bugzilla.redhat.com/show_bug.cgi?id=1408668 +  # For containerized installs we now exec into etcd_container    # -  # TODO - We should refactor all containerized backups to use the containerized -  # version of etcd to perform the backup rather than relying on the host's -  # binaries. Until we do that we'll continue to have problems backing up etcd -  # when atomic host has an older version than the version that's running in the -  # container whether that's embedded or not -  - name: Install latest etcd for containerized or embedded +  # For embedded non containerized we need to ensure we have the latest version +  # etcd on the host. +  - name: Install latest etcd for embedded      package:        name: etcd        state: latest -    when: ( embedded_etcd | bool or openshift.common.is_containerized ) and not openshift.common.is_atomic +    when: +    - embedded_etcd | bool +    - not openshift.common.is_atomic | bool    - name: Generate etcd backup      command: >        {{ etcdctl_command }} backup --data-dir={{ openshift.etcd.etcd_data_dir }} -      --backup-dir={{ openshift.common.data_dir }}/etcd-backup-{{ backup_tag | default('') }}{{ timestamp }} +      --backup-dir={{ etcd_backup_dir }} + +  # According to the docs change you can simply copy snap/db +  # https://github.com/openshift/openshift-docs/commit/b38042de02d9780842dce95cfa0ef45d53b58bc6 +  - name: Check for v3 data store +    stat: +      path: "{{ openshift.etcd.etcd_data_dir }}/member/snap/db" +    register: v3_db + +  - name: Copy etcd v3 data store +    command: > +      cp -a {{ openshift.etcd.etcd_data_dir }}/member/snap/db +      {{ etcd_backup_dir }}/member/snap/ +    when: v3_db.stat.exists    - set_fact:        etcd_backup_complete: True    - name: Display location of etcd backup      debug: -      msg: "Etcd backup created in {{ openshift.common.data_dir }}/etcd-backup-{{ backup_tag | default('') }}{{ timestamp }}" +      msg: "Etcd backup created in {{ etcd_backup_dir }}"  - name: Gate on etcd backup    hosts: localhost diff --git a/playbooks/gce/openshift-cluster/cluster_hosts.yml b/playbooks/gce/openshift-cluster/cluster_hosts.yml index 74e2420db..05a58db73 100644 --- a/playbooks/gce/openshift-cluster/cluster_hosts.yml +++ b/playbooks/gce/openshift-cluster/cluster_hosts.yml @@ -8,6 +8,8 @@ g_lb_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type-lb'] | default([])  g_nfs_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type-nfs'] | default([])) }}" +g_glusterfs_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type-glusterfs'] | default([])) }}" +  g_master_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type-master'] | default([])) }}"  g_new_master_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type-new-master'] | default([])) }}" diff --git a/playbooks/libvirt/openshift-cluster/cluster_hosts.yml b/playbooks/libvirt/openshift-cluster/cluster_hosts.yml index 74e2420db..05a58db73 100644 --- a/playbooks/libvirt/openshift-cluster/cluster_hosts.yml +++ b/playbooks/libvirt/openshift-cluster/cluster_hosts.yml @@ -8,6 +8,8 @@ g_lb_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type-lb'] | default([])  g_nfs_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type-nfs'] | default([])) }}" +g_glusterfs_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type-glusterfs'] | default([])) }}" +  g_master_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type-master'] | default([])) }}"  g_new_master_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type-new-master'] | default([])) }}" diff --git a/playbooks/openstack/openshift-cluster/cluster_hosts.yml b/playbooks/openstack/openshift-cluster/cluster_hosts.yml index 98434439c..505f7b3a8 100644 --- a/playbooks/openstack/openshift-cluster/cluster_hosts.yml +++ b/playbooks/openstack/openshift-cluster/cluster_hosts.yml @@ -8,6 +8,8 @@ g_lb_hosts: "{{ g_all_hosts | intersect(groups['meta-host-type_lb'] | default([]  g_nfs_hosts: "{{ g_all_hosts | intersect(groups['meta-host-type_nfs'] | default([])) }}" +g_glusterfs_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type-glusterfs'] | default([])) }}" +  g_master_hosts: "{{ g_all_hosts | intersect(groups['meta-host-type_master'] | default([])) }}"  g_new_master_hosts: "{{ g_all_hosts | intersect(groups['meta-host-type_new_master'] | default([])) }}"  | 
