diff options
Diffstat (limited to 'playbooks')
8 files changed, 113 insertions, 48 deletions
diff --git a/playbooks/byo/openshift-cluster/openshift-metrics.yml b/playbooks/byo/openshift-cluster/openshift-metrics.yml new file mode 100644 index 000000000..5ad3a1a01 --- /dev/null +++ b/playbooks/byo/openshift-cluster/openshift-metrics.yml @@ -0,0 +1,4 @@ +--- +- include: initialize_groups.yml + +- include: ../../common/openshift-cluster/openshift_metrics.yml diff --git a/playbooks/byo/openshift-cluster/upgrades/README.md b/playbooks/byo/openshift-cluster/upgrades/README.md index 0425ba518..0f64f40f3 100644 --- a/playbooks/byo/openshift-cluster/upgrades/README.md +++ b/playbooks/byo/openshift-cluster/upgrades/README.md @@ -4,5 +4,6 @@ cluster. Additional notes for the associated upgrade playbooks are  provided in their respective directories.  # Upgrades available -- [OpenShift Enterprise 3.4 to 3.5](v3_5/README.md) (works also to upgrade OpenShift origin from 1.4.x to 1.5.x) -- [OpenShift Enterprise 3.3 to 3.4](v3_4/README.md) (works also to upgrade OpenShift origin from 1.3.x to 1.4.x) +- [OpenShift Container Platform 3.5 to 3.6](v3_6/README.md) (works also to upgrade OpenShift Origin from 1.5.x to 3.6.x) +- [OpenShift Container Platform 3.4 to 3.5](v3_5/README.md) (works also to upgrade OpenShift Origin from 1.4.x to 1.5.x) +- [OpenShift Container Platform 3.3 to 3.4](v3_4/README.md) (works also to upgrade OpenShift Origin from 1.3.x to 1.4.x) diff --git a/playbooks/byo/openshift-cluster/upgrades/v3_6/README.md b/playbooks/byo/openshift-cluster/upgrades/v3_6/README.md index 930cc753c..797af671a 100644 --- a/playbooks/byo/openshift-cluster/upgrades/v3_6/README.md +++ b/playbooks/byo/openshift-cluster/upgrades/v3_6/README.md @@ -1,11 +1,10 @@ -# v3.5 Major and Minor Upgrade Playbook +# v3.6 Major and Minor Upgrade Playbook  ## Overview -This playbook currently performs the -following steps. +This playbook currently performs the following steps.   * Upgrade and restart master services - * Unschedule node. + * Unschedule node   * Upgrade and restart docker   * Upgrade and restart node services   * Modifies the subset of the configuration necessary @@ -15,4 +14,7 @@ following steps.   * Updates image streams and quickstarts  ## Usage + +```  ansible-playbook -i ~/ansible-inventory openshift-ansible/playbooks/byo/openshift-cluster/upgrades/v3_6/upgrade.yml +``` diff --git a/playbooks/common/openshift-cluster/openshift_metrics.yml b/playbooks/common/openshift-cluster/openshift_metrics.yml index 9f38ceea6..bcff4a1a1 100644 --- a/playbooks/common/openshift-cluster/openshift_metrics.yml +++ b/playbooks/common/openshift-cluster/openshift_metrics.yml @@ -1,4 +1,6 @@  --- +- include: evaluate_groups.yml +  - name: OpenShift Metrics    hosts: oo_first_master    roles: diff --git a/playbooks/common/openshift-cluster/redeploy-certificates/ca.yml b/playbooks/common/openshift-cluster/redeploy-certificates/ca.yml index 3b26abcc7..4fa7f9cdf 100644 --- a/playbooks/common/openshift-cluster/redeploy-certificates/ca.yml +++ b/playbooks/common/openshift-cluster/redeploy-certificates/ca.yml @@ -130,7 +130,7 @@        state: absent      changed_when: false -- include: ../openshift-etcd/restart.yml +- include: ../../openshift-etcd/restart.yml  # Update master config when ca-bundle not referenced. Services will be  # restarted below after new CA certificate has been distributed. @@ -322,7 +322,7 @@        group: "{{ 'root' if item == 'root' else _ansible_ssh_user_gid.stdout  }}"      with_items: "{{ client_users }}" -- include: ../openshift-master/restart.yml +- include: ../../openshift-master/restart.yml  - name: Distribute OpenShift CA certificate to nodes    hosts: oo_nodes_to_config @@ -371,4 +371,4 @@        state: absent      changed_when: false -- include: ../openshift-node/restart.yml +- include: ../../openshift-node/restart.yml 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/disable_excluder.yml b/playbooks/common/openshift-cluster/upgrades/disable_excluder.yml index d1e431c5e..a30952929 100644 --- a/playbooks/common/openshift-cluster/upgrades/disable_excluder.yml +++ b/playbooks/common/openshift-cluster/upgrades/disable_excluder.yml @@ -5,12 +5,13 @@    tasks:    - include: pre/validate_excluder.yml      vars: -      #repoquery_cmd: repoquery_cmd -      #openshift_upgrade_target: openshift_upgrade_target -      excluder: "{{ item }}" -    with_items: -    - "{{ openshift.common.service_type }}-docker-excluder" -    - "{{ openshift.common.service_type }}-excluder" +      excluder: "{{ openshift.common.service_type }}-docker-excluder" +    when: enable_docker_excluder | default(enable_excluders) | default(True) | bool +  - include: pre/validate_excluder.yml +    vars: +      excluder: "{{ openshift.common.service_type }}-excluder" +    when: enable_openshift_excluder | default(enable_excluders) | default(True) | bool +    # disable excluders based on their status    - include_role: 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  | 
