diff options
Diffstat (limited to 'playbooks/common')
7 files changed, 116 insertions, 52 deletions
diff --git a/playbooks/common/openshift-cluster/evaluate_groups.yml b/playbooks/common/openshift-cluster/evaluate_groups.yml index 17a177644..46932b27f 100644 --- a/playbooks/common/openshift-cluster/evaluate_groups.yml +++ b/playbooks/common/openshift-cluster/evaluate_groups.yml @@ -155,5 +155,5 @@        groups: oo_glusterfs_to_config        ansible_ssh_user: "{{ g_ssh_user | default(omit) }}"        ansible_become: "{{ g_sudo | default(omit) }}" -    with_items: "{{ g_glusterfs_hosts | default([]) }}" +    with_items: "{{ g_glusterfs_hosts | union(g_glusterfs_registry_hosts) | default([]) }}"      changed_when: no diff --git a/playbooks/common/openshift-cluster/upgrades/etcd/files/etcdctl.sh b/playbooks/common/openshift-cluster/upgrades/etcd/files/etcdctl.sh deleted file mode 120000 index 641e04e44..000000000 --- a/playbooks/common/openshift-cluster/upgrades/etcd/files/etcdctl.sh +++ /dev/null @@ -1 +0,0 @@ -../roles/etcd/files/etcdctl.sh
\ No newline at end of file diff --git a/playbooks/common/openshift-cluster/upgrades/library/openshift_upgrade_config.py b/playbooks/common/openshift-cluster/upgrades/library/openshift_upgrade_config.py index 673f11889..4eac8b067 100755 --- a/playbooks/common/openshift-cluster/upgrades/library/openshift_upgrade_config.py +++ b/playbooks/common/openshift-cluster/upgrades/library/openshift_upgrade_config.py @@ -1,7 +1,5 @@  #!/usr/bin/python  # -*- coding: utf-8 -*- -# vim: expandtab:tabstop=4:shiftwidth=4 -  """Ansible module for modifying OpenShift configs during an upgrade"""  import os diff --git a/playbooks/common/openshift-cluster/upgrades/pre/verify_upgrade_targets.yml b/playbooks/common/openshift-cluster/upgrades/pre/verify_upgrade_targets.yml index c83923dae..6a9f88707 100644 --- a/playbooks/common/openshift-cluster/upgrades/pre/verify_upgrade_targets.yml +++ b/playbooks/common/openshift-cluster/upgrades/pre/verify_upgrade_targets.yml @@ -1,21 +1,13 @@  ---  - name: Verify upgrade targets    hosts: oo_masters_to_config:oo_nodes_to_upgrade -  vars: -    openshift_docker_hosted_registry_network: "{{ hostvars[groups.oo_first_master.0].openshift.common.portal_net }}" -  pre_tasks: -  - fail: + +  tasks: +  - name: Fail when OpenShift is not installed +    fail:        msg: Verify OpenShift is already installed      when: openshift.common.version is not defined -  - fail: -      msg: Verify the correct version was found -    when: verify_upgrade_version is defined and openshift_version != verify_upgrade_version - -  - set_fact: -      g_new_service_name: "{{ 'origin' if deployment_type =='origin' else 'atomic-openshift' }}" -    when: not openshift.common.is_containerized | bool -    - name: Verify containers are available for upgrade      command: >        docker pull {{ openshift.common.cli_image }}:{{ openshift_image_tag }} @@ -23,19 +15,31 @@      changed_when: "'Downloaded newer image' in pull_result.stdout"      when: openshift.common.is_containerized | bool -  - name: Check latest available OpenShift RPM version -    command: > -      {{ repoquery_cmd }} --qf '%{version}' "{{ openshift.common.service_type }}" -    failed_when: false -    changed_when: false -    register: avail_openshift_version -    when: not openshift.common.is_containerized | bool +  - when: not openshift.common.is_containerized | bool +    block: +    - name: Check latest available OpenShift RPM version +      command: > +        {{ repoquery_cmd }} --qf '%{version}' "{{ openshift.common.service_type }}" +      failed_when: false +      changed_when: false +      register: avail_openshift_version -  - name: Verify OpenShift RPMs are available for upgrade -    fail: -      msg: "OpenShift {{ avail_openshift_version.stdout }} is available, but {{ openshift_upgrade_target }} or greater is required" -    when: not openshift.common.is_containerized | bool and not avail_openshift_version | skipped and avail_openshift_version.stdout | default('0.0', True) | version_compare(openshift_release, '<') +    - name: Fail when unable to determine available OpenShift RPM version +      fail: +        msg: "Unable to determine available OpenShift RPM version" +      when: +      - avail_openshift_version.stdout == '' -  - fail: +    - name: Verify OpenShift RPMs are available for upgrade +      fail: +        msg: "OpenShift {{ avail_openshift_version.stdout }} is available, but {{ openshift_upgrade_target }} or greater is required" +      when: +      - not avail_openshift_version | skipped +      - avail_openshift_version.stdout | default('0.0', True) | version_compare(openshift_release, '<') + +  - name: Fail when openshift version does not meet minium requirement for Origin upgrade +    fail:        msg: "This upgrade playbook must be run against OpenShift {{ openshift_upgrade_min }} or later" -    when: deployment_type == 'origin' and openshift.common.version | version_compare(openshift_upgrade_min,'<') +    when: +    - deployment_type == 'origin' +    - openshift.common.version | version_compare(openshift_upgrade_min,'<') diff --git a/playbooks/common/openshift-cluster/upgrades/rpm_upgrade.yml b/playbooks/common/openshift-cluster/upgrades/rpm_upgrade.yml index 03ac02e9f..164baca81 100644 --- a/playbooks/common/openshift-cluster/upgrades/rpm_upgrade.yml +++ b/playbooks/common/openshift-cluster/upgrades/rpm_upgrade.yml @@ -1,27 +1,39 @@  --- -# We verified latest rpm available is suitable, so just yum update. +# When we update package "a-${version}" and a requires b >= ${version} if we +# don't specify the version of b yum will choose the latest version of b +# available and the whole set of dependencies end up at the latest version. +# Since the package module, unlike the yum module, doesn't flatten a list +# of packages into one transaction we need to do that explicitly. The ansible +# core team tells us not to rely on yum module transaction flattening anyway. + +# TODO: If the sdn package isn't already installed this will install it, we +# should fix that -# Master package upgrade ends up depending on node and sdn packages, we need to be explicit -# with all versions to avoid yum from accidentally jumping to something newer than intended:  - name: Upgrade master packages -  package: name={{ item }} state=present -  when: component == "master" -  with_items: -  - "{{ openshift.common.service_type }}{{ openshift_pkg_version }}" -  - "{{ openshift.common.service_type }}-master{{ openshift_pkg_version }}" -  - "{{ openshift.common.service_type }}-node{{ openshift_pkg_version }}" -  - "{{ openshift.common.service_type }}-sdn-ovs{{ openshift_pkg_version }}" -  - "{{ openshift.common.service_type }}-clients{{ openshift_pkg_version }}" +  package: name={{ master_pkgs | join(',') }} state=present +  vars: +    master_pkgs: +      - "{{ openshift.common.service_type }}{{ openshift_pkg_version }}" +      - "{{ openshift.common.service_type }}-master{{ openshift_pkg_version }}" +      - "{{ openshift.common.service_type }}-node{{ openshift_pkg_version }}" +      - "{{ openshift.common.service_type }}-sdn-ovs{{ openshift_pkg_version}}" +      - "{{ openshift.common.service_type }}-clients{{ openshift_pkg_version }}" +      - "tuned-profiles-{{ openshift.common.service_type }}-node{{ openshift_pkg_version }}" +      - PyYAML +  when: +    - component == "master" +    - not openshift.common.is_atomic | bool  - name: Upgrade node packages -  package: name={{ item }} state=present -  when: component == "node" -  with_items: -  - "{{ openshift.common.service_type }}{{ openshift_pkg_version }}" -  - "{{ openshift.common.service_type }}-node{{ openshift_pkg_version }}" -  - "{{ openshift.common.service_type }}-sdn-ovs{{ openshift_pkg_version }}" -  - "{{ openshift.common.service_type }}-clients{{ openshift_pkg_version }}" - -- name: Ensure python-yaml present for config upgrade -  package: name=PyYAML state=present -  when: not openshift.common.is_atomic | bool +  package: name={{ node_pkgs | join(',') }} state=present +  vars: +    node_pkgs: +      - "{{ openshift.common.service_type }}{{ openshift_pkg_version }}" +      - "{{ openshift.common.service_type }}-node{{ openshift_pkg_version }}" +      - "{{ openshift.common.service_type }}-sdn-ovs{{ openshift_pkg_version }}" +      - "{{ openshift.common.service_type }}-clients{{ openshift_pkg_version }}" +      - "tuned-profiles-{{ openshift.common.service_type }}-node{{ openshift_pkg_version }}" +      - PyYAML +  when: +    - component == "node" +    - not openshift.common.is_atomic | bool diff --git a/playbooks/common/openshift-glusterfs/config.yml b/playbooks/common/openshift-glusterfs/config.yml index 75faf5ba8..1efdfb336 100644 --- a/playbooks/common/openshift-glusterfs/config.yml +++ b/playbooks/common/openshift-glusterfs/config.yml @@ -12,7 +12,9 @@      - service: glusterfs_bricks        port: "49152-49251/tcp"    roles: -  - os_firewall +  - role: os_firewall +    when: +    - openshift_storage_glusterfs_is_native | default(True)  - name: Configure GlusterFS    hosts: oo_first_master diff --git a/playbooks/common/openshift-glusterfs/registry.yml b/playbooks/common/openshift-glusterfs/registry.yml new file mode 100644 index 000000000..80cf7529e --- /dev/null +++ b/playbooks/common/openshift-glusterfs/registry.yml @@ -0,0 +1,49 @@ +--- +- include: config.yml + +- name: Initialize GlusterFS registry PV and PVC vars +  hosts: oo_first_master +  tags: hosted +  tasks: +  - set_fact: +      glusterfs_pv: [] +      glusterfs_pvc: [] + +  - set_fact: +      glusterfs_pv: +      - name: "{{ openshift.hosted.registry.storage.volume.name }}-glusterfs-volume" +        capacity: "{{ openshift.hosted.registry.storage.volume.size }}" +        access_modes: "{{ openshift.hosted.registry.storage.access.modes }}" +        storage: +          glusterfs: +            endpoints: "{{ openshift.hosted.registry.storage.glusterfs.endpoints }}" +            path: "{{ openshift.hosted.registry.storage.glusterfs.path }}" +            readOnly: "{{ openshift.hosted.registry.storage.glusterfs.readOnly }}" +      glusterfs_pvc: +      - name: "{{ openshift.hosted.registry.storage.volume.name }}-glusterfs-claim" +        capacity: "{{ openshift.hosted.registry.storage.volume.size }}" +        access_modes: "{{ openshift.hosted.registry.storage.access.modes }}" +    when: openshift.hosted.registry.storage.glusterfs.swap + +- name: Create persistent volumes +  hosts: oo_first_master +  tags: +  - hosted +  vars: +    persistent_volumes: "{{ hostvars[groups.oo_first_master.0] | oo_persistent_volumes(groups, glusterfs_pv) }}" +    persistent_volume_claims: "{{ hostvars[groups.oo_first_master.0] | oo_persistent_volume_claims(glusterfs_pvc) }}" +  roles: +  - role: openshift_persistent_volumes +    when: persistent_volumes | union(glusterfs_pv) | length > 0 or persistent_volume_claims | union(glusterfs_pvc) | length > 0 + +- name: Create Hosted Resources +  hosts: oo_first_master +  tags: +  - hosted +  pre_tasks: +  - set_fact: +      openshift_hosted_router_registryurl: "{{ hostvars[groups.oo_first_master.0].openshift.master.registry_url }}" +      openshift_hosted_registry_registryurl: "{{ hostvars[groups.oo_first_master.0].openshift.master.registry_url }}" +    when: "'master' in hostvars[groups.oo_first_master.0].openshift and 'registry_url' in hostvars[groups.oo_first_master.0].openshift.master" +  roles: +  - role: openshift_hosted  | 
