diff options
76 files changed, 425 insertions, 215 deletions
diff --git a/.tito/packages/openshift-ansible b/.tito/packages/openshift-ansible index b7dc52080..3cc7946d7 100644 --- a/.tito/packages/openshift-ansible +++ b/.tito/packages/openshift-ansible @@ -1 +1 @@ -3.0.19-1 ./ +3.0.20-1 ./ diff --git a/README_libvirt.md b/README_libvirt.md index fd0250781..3e5df2dca 100644 --- a/README_libvirt.md +++ b/README_libvirt.md @@ -115,9 +115,10 @@ Configuration  The following options can be passed via the `-o` flag of the `create` command or as environment variables: -* `image_url` (default to `http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2`): URL of the QCOW2 image to download +* `image_url` (default to `http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2.xz`): URL of the QCOW2 image to download  * `image_name` (default to `CentOS-7-x86_64-GenericCloud.qcow2`): Name of the QCOW2 image to boot the VMs on -* `image_sha256` (default to `e324e3ab1d24a1bbf035ddb365e7f9058c0b454acf48d7aa15c5519fae5998ab`): Expected SHA256 checksum of the downloaded image +* `image_compression` (default to `xz`): Source QCOW2 compression (only xz supported at this time) +* `image_sha256` (default to `9461006300d65172f5668d8875f2aad7b54f7ba4e9c5435d65a84a5a2d66e39b`): Expected SHA256 checksum of the downloaded image  * `skip_image_download` (default to `no`): Skip QCOW2 image download. This requires the `image_name` QCOW2 image to be already present in `$HOME/libvirt-storage-pool-openshift-ansible`  Creating a cluster diff --git a/README_origin.md b/README_origin.md index 343ecda3d..12e79791e 100644 --- a/README_origin.md +++ b/README_origin.md @@ -15,7 +15,7 @@    * There is currently a known issue with ansible-1.9.0, you can downgrade to 1.8.4 on Fedora by installing one of the builds from Koji: http://koji.fedoraproject.org/koji/packageinfo?packageID=13842    * Available in Fedora channels    * Available for EL with EPEL and Optional channel -* One or more RHEL 7.1 or CentOS 7.1 VMs +* One or more RHEL 7.1+, CentOS 7.1+, or Fedora 23+ VMs  * Either ssh key based auth for the root user or ssh key based auth for a user    with sudo access (no password)  * A checkout of openshift-ansible from https://github.com/openshift/openshift-ansible/ @@ -1,14 +1,16 @@  #!/usr/bin/env python +''' +Ohi = Openshift Host Inventory + +This script provides an easy way to look at your host inventory. + +This depends on multi_inventory being setup correctly. +'''  # vim: expandtab:tabstop=4:shiftwidth=4  import argparse -import traceback  import sys  import os -import re -import tempfile -import time -import subprocess  import ConfigParser  from openshift_ansible import awsutil @@ -20,6 +22,9 @@ CONFIG_HOST_TYPE_ALIAS_SECTION = 'host_type_aliases'  class Ohi(object): +    ''' +        Class for managing openshift host inventory +    '''      def __init__(self):          self.host_type_aliases = {}          self.file_path = os.path.join(os.path.dirname(os.path.realpath(__file__))) @@ -35,6 +40,10 @@ class Ohi(object):          self.aws = awsutil.AwsUtil(self.host_type_aliases)      def run(self): +        ''' +            Call into awsutil and retrieve the desired hosts and environments +        ''' +          if self.args.list_host_types:              self.aws.print_host_types()              return 0 @@ -43,18 +52,24 @@ class Ohi(object):          if self.args.host_type is not None and \             self.args.env is not None:              # Both env and host-type specified -            hosts = self.aws.get_host_list(host_type=self.args.host_type, \ -                                           envs=self.args.env) +            hosts = self.aws.get_host_list(host_type=self.args.host_type, +                                           envs=self.args.env, +                                           version=self.args.openshift_version, +                                           cached=self.args.cache_only)          if self.args.host_type is None and \             self.args.env is not None:              # Only env specified -            hosts = self.aws.get_host_list(envs=self.args.env) +            hosts = self.aws.get_host_list(envs=self.args.env, +                                           version=self.args.openshift_version, +                                           cached=self.args.cache_only)          if self.args.host_type is not None and \             self.args.env is None:              # Only host-type specified -            hosts = self.aws.get_host_list(host_type=self.args.host_type) +            hosts = self.aws.get_host_list(host_type=self.args.host_type, +                                           version=self.args.openshift_version, +                                           cached=self.args.cache_only)          if hosts is None:              # We weren't able to determine what they wanted to do @@ -69,6 +84,9 @@ class Ohi(object):          return 0      def parse_config_file(self): +        ''' +            Parse the config file for ohi +        '''          if os.path.isfile(self.config_path):              config = ConfigParser.ConfigParser()              config.read(self.config_path) @@ -85,23 +103,27 @@ class Ohi(object):          parser = argparse.ArgumentParser(description='OpenShift Host Inventory') -        parser.add_argument('--list-host-types', default=False, action='store_true', -                       help='List all of the host types') +        parser.add_argument('--list-host-types', default=False, action='store_true', help='List all of the host types') -        parser.add_argument('-e', '--env', action="store", -                       help="Which environment to use") +        parser.add_argument('-e', '--env', action="store", help="Which environment to use") -        parser.add_argument('-t', '--host-type', action="store", -                       help="Which host type to use") +        parser.add_argument('-t', '--host-type', action="store", help="Which host type to use") -        parser.add_argument('-l', '--user', action='store', default=None, -                               help='username') +        parser.add_argument('-l', '--user', action='store', default=None, help='username') +        parser.add_argument('-c', '--cache-only', action='store_true', default=False, +                            help='Retrieve the host inventory by cache only. Default is false.') -        self.args = parser.parse_args() +        parser.add_argument('-o', '--openshift-version', action='store', default='2', +                            help='Specify the openshift version. Default is 2') -if __name__ == '__main__': +        self.args = parser.parse_args() + +def main(): +    ''' +    Ohi will do its work here +    '''      if len(sys.argv) == 1:          print "\nError: No options given. Use --help to see the available options\n"          sys.exit(0) @@ -110,5 +132,9 @@ if __name__ == '__main__':          ohi = Ohi()          exitcode = ohi.run()          sys.exit(exitcode) -    except ArgumentError as e: -        print "\nError: %s\n" % e.message +    except ArgumentError as err: +        print "\nError: %s\n" % err.message + +if __name__ == '__main__': +    main() + diff --git a/bin/openshift_ansible/awsutil.py b/bin/openshift_ansible/awsutil.py index 45345007c..1ea2f914c 100644 --- a/bin/openshift_ansible/awsutil.py +++ b/bin/openshift_ansible/awsutil.py @@ -46,19 +46,22 @@ class AwsUtil(object):                  self.alias_lookup[value] = key      @staticmethod -    def get_inventory(args=None): +    def get_inventory(args=None, cached=False):          """Calls the inventory script and returns a dictionary containing the inventory."          Keyword arguments:          args -- optional arguments to pass to the inventory script          """          minv = multi_inventory.MultiInventory(args) -        minv.run() +        if cached: +            minv.get_inventory_from_cache() +        else: +            minv.run()          return minv.result      def get_environments(self):          """Searches for env tags in the inventory and returns all of the envs found.""" -        pattern = re.compile(r'^tag_environment_(.*)') +        pattern = re.compile(r'^tag_env_(.*)')          envs = []          inv = self.get_inventory() @@ -106,13 +109,13 @@ class AwsUtil(object):          inst_by_env = {}          for _, host in inv['_meta']['hostvars'].items():              # If you don't have an environment tag, we're going to ignore you -            if 'ec2_tag_environment' not in host: +            if 'ec2_tag_env' not in host:                  continue -            if host['ec2_tag_environment'] not in inst_by_env: -                inst_by_env[host['ec2_tag_environment']] = {} +            if host['ec2_tag_env'] not in inst_by_env: +                inst_by_env[host['ec2_tag_env']] = {}              host_id = "%s:%s" % (host['ec2_tag_Name'], host['ec2_id']) -            inst_by_env[host['ec2_tag_environment']][host_id] = host +            inst_by_env[host['ec2_tag_env']][host_id] = host          return inst_by_env @@ -154,7 +157,7 @@ class AwsUtil(object):      def gen_env_tag(env):          """Generate the environment tag          """ -        return "tag_environment_%s" % env +        return "tag_env_%s" % env      def gen_host_type_tag(self, host_type):          """Generate the host type tag @@ -168,11 +171,12 @@ class AwsUtil(object):          host_type = self.resolve_host_type(host_type)          return "tag_env-host-type_%s-%s" % (env, host_type) -    def get_host_list(self, host_type=None, envs=None): +    def get_host_list(self, host_type=None, envs=None, version=None, cached=False):          """Get the list of hosts from the inventory using host-type and environment          """ +        retval = set([])          envs = envs or [] -        inv = self.get_inventory() +        inv = self.get_inventory(cached=cached)          # We prefer to deal with a list of environments          if issubclass(type(envs), basestring): @@ -183,29 +187,25 @@ class AwsUtil(object):          if host_type and envs:              # Both host type and environment were specified -            retval = []              for env in envs: -                env_host_type_tag = self.gen_env_host_type_tag(host_type, env) -                if env_host_type_tag in inv.keys(): -                    retval += inv[env_host_type_tag] -            return set(retval) +                retval.update(inv.get('tag_environment_%s' % env, [])) +            retval.intersection_update(inv.get(self.gen_host_type_tag(host_type), [])) -        if envs and not host_type: +        elif envs and not host_type:              # Just environment was specified -            retval = []              for env in envs:                  env_tag = AwsUtil.gen_env_tag(env)                  if env_tag in inv.keys(): -                    retval += inv[env_tag] -            return set(retval) +                    retval.update(inv.get(env_tag, [])) -        if host_type and not envs: +        elif host_type and not envs:              # Just host-type was specified -            retval = []              host_type_tag = self.gen_host_type_tag(host_type)              if host_type_tag in inv.keys(): -                retval = inv[host_type_tag] -            return set(retval) +                retval.update(inv.get(host_type_tag, [])) + +        # If version is specified then return only hosts in that version +        if version: +            retval.intersection_update(inv.get('oo_version_%s' % version, [])) -        # We should never reach here! -        raise ArgumentError("Invalid combination of parameters") +        return retval @@ -138,7 +138,7 @@ class Oscp(object):          # attempt to select the correct environment if specified          if self.env: -            results = filter(lambda result: result[1]['ec2_tag_environment'] == self.env, results) +            results = filter(lambda result: result[1]['ec2_tag_env'] == self.env, results)          if results:              return results @@ -167,7 +167,7 @@ class Oscp(object):                      name = server_info['ec2_tag_Name']                      ec2_id = server_info['ec2_id']                      ip = server_info['ec2_ip_address'] -                    print '{ec2_tag_Name:<35} {ec2_tag_environment:<8} {ec2_id:<15} {ec2_ip_address:<18} {ec2_private_ip_address}'.format(**server_info) +                    print '{ec2_tag_Name:<35} {ec2_tag_env:<8} {ec2_id:<15} {ec2_ip_address:<18} {ec2_private_ip_address}'.format(**server_info)                  if limit:                      print @@ -180,7 +180,7 @@ class Oscp(object):                      name = server_info['ec2_tag_Name']                      ec2_id = server_info['ec2_id']                      ip = server_info['ec2_ip_address'] -                    print '{ec2_tag_Name:<35} {ec2_tag_environment:<8} {ec2_id:<15} {ec2_ip_address:<18} {ec2_private_ip_address}'.format(**server_info) +                    print '{ec2_tag_Name:<35} {ec2_tag_env:<8} {ec2_id:<15} {ec2_ip_address:<18} {ec2_private_ip_address}'.format(**server_info)      def scp(self):          '''scp files to or from a specified host @@ -209,7 +209,7 @@ class Oscp(object):              if len(results) > 1:                  print "Multiple results found for %s." % self.host                  for result in results: -                    print "{ec2_tag_Name:<35} {ec2_tag_environment:<5} {ec2_id:<10}".format(**result[1]) +                    print "{ec2_tag_Name:<35} {ec2_tag_env:<5} {ec2_id:<10}".format(**result[1])                  return # early exit, too many results              # Assume we have one and only one. @@ -127,7 +127,7 @@ class Ossh(object):          # attempt to select the correct environment if specified          if self.env: -            results = filter(lambda result: result[1]['ec2_tag_environment'] == self.env, results) +            results = filter(lambda result: result[1]['ec2_tag_env'] == self.env, results)          if results:              return results @@ -156,7 +156,7 @@ class Ossh(object):                      name = server_info['ec2_tag_Name']                      ec2_id = server_info['ec2_id']                      ip = server_info['ec2_ip_address'] -                    print '{ec2_tag_Name:<35} {ec2_tag_environment:<8} {ec2_id:<15} {ec2_ip_address:<18} {ec2_private_ip_address}'.format(**server_info) +                    print '{ec2_tag_Name:<35} {ec2_tag_env:<8} {ec2_id:<15} {ec2_ip_address:<18} {ec2_private_ip_address}'.format(**server_info)                  if limit:                      print @@ -169,7 +169,7 @@ class Ossh(object):                      name = server_info['ec2_tag_Name']                      ec2_id = server_info['ec2_id']                      ip = server_info['ec2_ip_address'] -                    print '{ec2_tag_Name:<35} {ec2_tag_environment:<8} {ec2_id:<15} {ec2_ip_address:<18} {ec2_private_ip_address}'.format(**server_info) +                    print '{ec2_tag_Name:<35} {ec2_tag_env:<8} {ec2_id:<15} {ec2_ip_address:<18} {ec2_private_ip_address}'.format(**server_info)      def ssh(self):          '''SSH to a specified host @@ -195,7 +195,7 @@ class Ossh(object):              if len(results) > 1:                  print "Multiple results found for %s." % self.host                  for result in results: -                    print "{ec2_tag_Name:<35} {ec2_tag_environment:<5} {ec2_id:<10}".format(**result[1]) +                    print "{ec2_tag_Name:<35} {ec2_tag_env:<5} {ec2_id:<10}".format(**result[1])                  return # early exit, too many results              # Assume we have one and only one. diff --git a/bin/ossh_bash_completion b/bin/ossh_bash_completion index 997ff0f9c..440fa0a45 100755 --- a/bin/ossh_bash_completion +++ b/bin/ossh_bash_completion @@ -1,12 +1,12 @@  __ossh_known_hosts(){      if python -c 'import openshift_ansible' &>/dev/null; then -      /usr/bin/python -c 'from openshift_ansible import multi_inventory; m=multi_inventory.MultiInventory(); m.run(); z=m.result; print "\n".join(["%s.%s" % (host["ec2_tag_Name"],host["ec2_tag_environment"]) for dns, host in z["_meta"]["hostvars"].items() if all(k in host for k in ("ec2_tag_Name", "ec2_tag_environment"))])' +      /usr/bin/python -c 'from openshift_ansible import multi_inventory; m=multi_inventory.MultiInventory(); m.run(); z=m.result; print "\n".join(["%s.%s" % (host["ec2_tag_Name"],host["ec2_tag_env"]) for dns, host in z["_meta"]["hostvars"].items() if all(k in host for k in ("ec2_tag_Name", "ec2_tag_env"))])'      elif [[ -f /dev/shm/.ansible/tmp/multi_inventory.cache ]]; then -      /usr/bin/python -c 'import json; loc="/dev/shm/.ansible/tmp/multi_inventory.cache"; z=json.loads(open(loc).read()); print "\n".join(["%s.%s" % (host["ec2_tag_Name"],host["ec2_tag_environment"]) for dns, host in z["_meta"]["hostvars"].items() if all(k in host for k in ("ec2_tag_Name", "ec2_tag_environment"))])' +      /usr/bin/python -c 'import json; loc="/dev/shm/.ansible/tmp/multi_inventory.cache"; z=json.loads(open(loc).read()); print "\n".join(["%s.%s" % (host["ec2_tag_Name"],host["ec2_tag_env"]) for dns, host in z["_meta"]["hostvars"].items() if all(k in host for k in ("ec2_tag_Name", "ec2_tag_env"))])'      elif [[ -f ~/.ansible/tmp/multi_inventory.cache ]]; then -      /usr/bin/python -c 'import json,os; loc="%s" % os.path.expanduser("~/.ansible/tmp/multi_inventory.cache"); z=json.loads(open(loc).read()); print "\n".join(["%s.%s" % (host["ec2_tag_Name"],host["ec2_tag_environment"]) for dns, host in z["_meta"]["hostvars"].items() if all(k in host for k in ("ec2_tag_Name", "ec2_tag_environment"))])' +      /usr/bin/python -c 'import json,os; loc="%s" % os.path.expanduser("~/.ansible/tmp/multi_inventory.cache"); z=json.loads(open(loc).read()); print "\n".join(["%s.%s" % (host["ec2_tag_Name"],host["ec2_tag_env"]) for dns, host in z["_meta"]["hostvars"].items() if all(k in host for k in ("ec2_tag_Name", "ec2_tag_env"))])'      fi  } diff --git a/bin/ossh_zsh_completion b/bin/ossh_zsh_completion index 3c4018636..f9454357b 100644 --- a/bin/ossh_zsh_completion +++ b/bin/ossh_zsh_completion @@ -2,13 +2,13 @@  _ossh_known_hosts(){      if python -c 'import openshift_ansible' &>/dev/null; then -      print $(/usr/bin/python -c 'from openshift_ansible import multi_inventory; m=multi_inventory.MultiInventory(); m.run(); z=m.result; print "\n".join(["%s.%s" % (host["ec2_tag_Name"],host["ec2_tag_environment"]) for dns, host in z["_meta"]["hostvars"].items() if all(k in host for k in ("ec2_tag_Name", "ec2_tag_environment"))])') +      print $(/usr/bin/python -c 'from openshift_ansible import multi_inventory; m=multi_inventory.MultiInventory(); m.run(); z=m.result; print "\n".join(["%s.%s" % (host["ec2_tag_Name"],host["ec2_tag_env"]) for dns, host in z["_meta"]["hostvars"].items() if all(k in host for k in ("ec2_tag_Name", "ec2_tag_env"))])')      elif [[ -f /dev/shm/.ansible/tmp/multi_inventory.cache ]]; then -      print $(/usr/bin/python -c 'import json; loc="/dev/shm/.ansible/tmp/multi_inventory.cache"; z=json.loads(open(loc).read()); print "\n".join(["%s.%s" % (host["ec2_tag_Name"],host["ec2_tag_environment"]) for dns, host in z["_meta"]["hostvars"].items() if all(k in host for k in ("ec2_tag_Name", "ec2_tag_environment"))])') +      print $(/usr/bin/python -c 'import json; loc="/dev/shm/.ansible/tmp/multi_inventory.cache"; z=json.loads(open(loc).read()); print "\n".join(["%s.%s" % (host["ec2_tag_Name"],host["ec2_tag_env"]) for dns, host in z["_meta"]["hostvars"].items() if all(k in host for k in ("ec2_tag_Name", "ec2_tag_env"))])')      elif [[ -f ~/.ansible/tmp/multi_inventory.cache ]]; then -      print $(/usr/bin/python -c 'import json,os; loc="%s" % os.path.expanduser("~/.ansible/tmp/multi_inventory.cache"); z=json.loads(open(loc).read()); print "\n".join(["%s.%s" % (host["ec2_tag_Name"],host["ec2_tag_environment"]) for dns, host in z["_meta"]["hostvars"].items() if all(k in host for k in ("ec2_tag_Name", "ec2_tag_environment"))])') +      print $(/usr/bin/python -c 'import json,os; loc="%s" % os.path.expanduser("~/.ansible/tmp/multi_inventory.cache"); z=json.loads(open(loc).read()); print "\n".join(["%s.%s" % (host["ec2_tag_Name"],host["ec2_tag_env"]) for dns, host in z["_meta"]["hostvars"].items() if all(k in host for k in ("ec2_tag_Name", "ec2_tag_env"))])')      fi diff --git a/bin/zsh_functions/_ossh b/bin/zsh_functions/_ossh index d205e1055..e34ca5bd4 100644 --- a/bin/zsh_functions/_ossh +++ b/bin/zsh_functions/_ossh @@ -2,7 +2,7 @@  _ossh_known_hosts(){    if [[ -f ~/.ansible/tmp/multi_inventory.cache ]]; then -    print $(/usr/bin/python -c 'import json,os; z = json.loads(open("%s"%os.path.expanduser("~/.ansible/tmp/multi_inventory.cache")).read()); print "\n".join(["%s.%s" % (host["ec2_tag_Name"],host["ec2_tag_environment"]) for dns, host in z["_meta"]["hostvars"].items()])') +    print $(/usr/bin/python -c 'import json,os; z = json.loads(open("%s"%os.path.expanduser("~/.ansible/tmp/multi_inventory.cache")).read()); print "\n".join(["%s.%s" % (host["ec2_tag_Name"],host["ec2_tag_env"]) for dns, host in z["_meta"]["hostvars"].items()])')    fi  } diff --git a/filter_plugins/oo_filters.py b/filter_plugins/oo_filters.py index 1a854f637..48e27a24a 100644 --- a/filter_plugins/oo_filters.py +++ b/filter_plugins/oo_filters.py @@ -433,6 +433,7 @@ class FilterModule(object):              '''              for tag in tags:                  # Skip tag_env-host-type to avoid ambiguity with tag_env +                # Removing env-host-type tag but leaving this here                  if tag[:17] == 'tag_env-host-type':                      continue                  if tag[:len(key)+4] == 'tag_' + key: diff --git a/inventory/multi_inventory.py b/inventory/multi_inventory.py index 232f2402d..20fc48aa9 100755 --- a/inventory/multi_inventory.py +++ b/inventory/multi_inventory.py @@ -56,15 +56,6 @@ class MultiInventory(object):          else:              self.config_file = None # expect env vars - -    def run(self): -        '''This method checks to see if the local -           cache is valid for the inventory. - -           if the cache is valid; return cache -           else the credentials are loaded from multi_inventory.yaml or from the env -           and we attempt to get the inventory from the provider specified. -        '''          # load yaml          if self.config_file and os.path.isfile(self.config_file):              self.config = self.load_yaml_config() @@ -91,6 +82,15 @@ class MultiInventory(object):          if self.config.has_key('cache_location'):              self.cache_path = self.config['cache_location'] +    def run(self): +        '''This method checks to see if the local +           cache is valid for the inventory. + +           if the cache is valid; return cache +           else the credentials are loaded from multi_inventory.yaml or from the env +           and we attempt to get the inventory from the provider specified. +        ''' +          if self.args.get('refresh_cache', None):              self.get_inventory()              self.write_to_cache() diff --git a/openshift-ansible.spec b/openshift-ansible.spec index 4f3cdbed1..563ea3cae 100644 --- a/openshift-ansible.spec +++ b/openshift-ansible.spec @@ -5,7 +5,7 @@  }  Name:           openshift-ansible -Version:        3.0.19 +Version:        3.0.20  Release:        1%{?dist}  Summary:        Openshift and Atomic Enterprise Ansible  License:        ASL 2.0 @@ -259,6 +259,22 @@ Atomic OpenShift Utilities includes  %changelog +* Thu Dec 10 2015 Thomas Wiest <twiest@redhat.com> 3.0.20-1 +- Revert "Automatic commit of package [openshift-ansible] release [3.0.20-1]." +  (twiest@redhat.com) +- Automatic commit of package [openshift-ansible] release [3.0.20-1]. +  (twiest@redhat.com) +- Install base package in openshift_common for version facts +  (abutcher@redhat.com) +- Make the install of openshift_examples optional (jtslear@gmail.com) +- add support for remote command actions no support for anything but custom +  scripts at this time (jdiaz@redhat.com) +- Remove yum / dnf duplication (sdodson@redhat.com) +- Remove hacluster user during uninstall. (abutcher@redhat.com) +- Simplify session secrets overrides. (abutcher@redhat.com) +- Squash pcs install into one task. (abutcher@redhat.com) +- Bump ansible requirement to 1.9.4 (sdodson@redhat.com) +  * Wed Dec 09 2015 Brenton Leanhardt <bleanhar@redhat.com> 3.0.19-1  - Fix version dependent image streams (sdodson@redhat.com)  - atomic-openshift-installer: Error handling on yaml loading diff --git a/playbooks/adhoc/create_pv/create_pv.yaml b/playbooks/adhoc/create_pv/create_pv.yaml index 4f0ef7a75..0ca040ee1 100644 --- a/playbooks/adhoc/create_pv/create_pv.yaml +++ b/playbooks/adhoc/create_pv/create_pv.yaml @@ -1,20 +1,22 @@  --- -#example run:  +#example run:  # ansible-playbook -e "cli_volume_size=1" \  #                  -e "cli_device_name=/dev/xvdf" \  #                  -e "cli_hosttype=master" \ -#                  -e "cli_environment=ops" \ +#                  -e "cli_env=ops" \  #                  create_pv.yaml -# FIXME: we need to change "environment" to "clusterid" as that's what it really is now. +# FIXME: we need to change "env" to "clusterid" as that's what it really is now.  #  - name: Create a volume and attach it to master    hosts: localhost +  connection: local +  become: no    gather_facts: no    vars:      cli_volume_type: gp2      cli_volume_iops: ''      oo_name: "{{ groups['tag_host-type_' ~ cli_hosttype] | -                 intersect(groups['tag_environment_' ~ cli_environment]) | +                 intersect(groups['tag_env_' ~ cli_env]) |                   first }}"    pre_tasks:    - fail: @@ -24,7 +26,7 @@      - cli_volume_size      - cli_device_name      - cli_hosttype -    - cli_environment +    - cli_env    - name: set oo_name fact      set_fact: @@ -55,7 +57,7 @@      args:        tags:          Name: "pv-{{ hostvars[oo_name]['ec2_tag_Name'] }}" -        env: "{{cli_environment}}" +        env: "{{cli_env}}"      register: voltags    - debug: var=voltags @@ -103,7 +105,7 @@      filesystem:        dev: "{{ cli_device_name }}"        fstype: ext4 -     +    - name: Mount the dev      mount:        name: "{{ pv_mntdir }}" @@ -112,7 +114,7 @@        state: mounted    - name: chgrp g+rwXs -    file:  +    file:        path: "{{ pv_mntdir }}"        mode: 'g+rwXs'        recurse: yes @@ -154,6 +156,6 @@    - debug: var=oc_output -  - fail:  +  - fail:        msg: "Failed to add {{ pv_template }} to master."      when: oc_output.rc != 0 diff --git a/playbooks/adhoc/docker_loopback_to_lvm/docker_loopback_to_direct_lvm.yml b/playbooks/adhoc/docker_loopback_to_lvm/docker_loopback_to_direct_lvm.yml index b6a2d2f26..89128dd3c 100644 --- a/playbooks/adhoc/docker_loopback_to_lvm/docker_loopback_to_direct_lvm.yml +++ b/playbooks/adhoc/docker_loopback_to_lvm/docker_loopback_to_direct_lvm.yml @@ -113,7 +113,7 @@      args:        tags:          Name: "{{ ec2_tag_Name }}" -        env: "{{ ec2_tag_environment }}" +        env: "{{ ec2_tag_env}}"      register: voltags    - name: Wait for volume to attach diff --git a/playbooks/adhoc/grow_docker_vg/grow_docker_vg.yml b/playbooks/adhoc/grow_docker_vg/grow_docker_vg.yml index 63d473146..b4bcb25da 100644 --- a/playbooks/adhoc/grow_docker_vg/grow_docker_vg.yml +++ b/playbooks/adhoc/grow_docker_vg/grow_docker_vg.yml @@ -151,7 +151,7 @@      args:        tags:          Name: "{{ ec2_tag_Name }}" -        env: "{{ ec2_tag_environment }}" +        env: "{{ ec2_tag_env }}"      register: voltags    - name: check for attached drive diff --git a/playbooks/adhoc/noc/create_host.yml b/playbooks/adhoc/noc/create_host.yml index d250e6e69..2d2cae2b5 100644 --- a/playbooks/adhoc/noc/create_host.yml +++ b/playbooks/adhoc/noc/create_host.yml @@ -1,6 +1,8 @@  ---  - name: 'Create a host object in zabbix'    hosts: localhost +  connection: local +  become: no    gather_facts: no    roles:      - os_zabbix @@ -23,6 +25,8 @@  #ansible-playbook -e 'oo_desc=kwoodson test' -e 'oo_name=kwoodson test name' -e 'oo_start=1435715357' -e 'oo_stop=1435718985' -e 'oo_hostids=11549' create_maintenance.yml  - name: 'Create a host object in zabbix'    hosts: localhost +  connection: local +  become: no    gather_facts: no    roles:      - os_zabbix diff --git a/playbooks/adhoc/noc/create_maintenance.yml b/playbooks/adhoc/noc/create_maintenance.yml index c0ec57ce1..8ad5fa0e2 100644 --- a/playbooks/adhoc/noc/create_maintenance.yml +++ b/playbooks/adhoc/noc/create_maintenance.yml @@ -2,6 +2,8 @@  #ansible-playbook -e 'oo_desc=kwoodson test' -e 'oo_name=kwoodson test name' -e 'oo_start=1435715357' -e 'oo_stop=1435718985' -e 'oo_hostids=11549' create_maintenance.yml  - name: 'Create a maintenace object in zabbix'    hosts: localhost +  connection: local +  become: no    gather_facts: no    roles:      - os_zabbix diff --git a/playbooks/adhoc/noc/get_zabbix_problems.yml b/playbooks/adhoc/noc/get_zabbix_problems.yml index 4b94fa228..79cae24ab 100644 --- a/playbooks/adhoc/noc/get_zabbix_problems.yml +++ b/playbooks/adhoc/noc/get_zabbix_problems.yml @@ -1,6 +1,8 @@  ---  - name: 'Get current hosts who have triggers that are alerting by trigger description'    hosts: localhost +  connection: local +  become: no    gather_facts: no    roles:      - os_zabbix diff --git a/playbooks/adhoc/s3_registry/s3_registry.yml b/playbooks/adhoc/s3_registry/s3_registry.yml index 4dcef1a42..071c2cf46 100644 --- a/playbooks/adhoc/s3_registry/s3_registry.yml +++ b/playbooks/adhoc/s3_registry/s3_registry.yml @@ -6,7 +6,7 @@  # The AWS access/secret keys should be the keys of a separate user (not your main user), containing only the necessary S3 access role.  # The 'clusterid' is the short name of your cluster. -- hosts: tag_env-host-type_{{ clusterid }}-openshift-master +- hosts: tag_env_{{ clusterid }}:&tag_host-type_openshift-master    remote_user: root    gather_facts: False diff --git a/playbooks/adhoc/zabbix_setup/clean_zabbix.yml b/playbooks/adhoc/zabbix_setup/clean_zabbix.yml index 1e884240a..09f7c76cc 100644 --- a/playbooks/adhoc/zabbix_setup/clean_zabbix.yml +++ b/playbooks/adhoc/zabbix_setup/clean_zabbix.yml @@ -1,6 +1,8 @@  ---  - hosts: localhost    gather_facts: no +  connection: local +  become: no    vars:      g_server: http://localhost:8080/zabbix/api_jsonrpc.php      g_user: '' diff --git a/playbooks/adhoc/zabbix_setup/oo-config-zaio.yml b/playbooks/adhoc/zabbix_setup/oo-config-zaio.yml index e2b8150c6..ec28564cf 100755 --- a/playbooks/adhoc/zabbix_setup/oo-config-zaio.yml +++ b/playbooks/adhoc/zabbix_setup/oo-config-zaio.yml @@ -2,6 +2,8 @@  ---  - hosts: localhost    gather_facts: no +  connection: local +  become: no    vars:      g_server: http://localhost/zabbix/api_jsonrpc.php      g_user: Admin diff --git a/playbooks/aws/ansible-tower/config.yml b/playbooks/aws/ansible-tower/config.yml index efd1b9911..eb3f1a1da 100644 --- a/playbooks/aws/ansible-tower/config.yml +++ b/playbooks/aws/ansible-tower/config.yml @@ -2,6 +2,8 @@  - name: "populate oo_hosts_to_config host group if needed"    hosts: localhost    gather_facts: no +  connection: local +  become: no    tasks:    - name: Evaluate oo_host_group_exp if it's set      add_host: "name={{ item }} groups=oo_hosts_to_config" diff --git a/playbooks/aws/ansible-tower/launch.yml b/playbooks/aws/ansible-tower/launch.yml index fd6b15c32..d40529435 100644 --- a/playbooks/aws/ansible-tower/launch.yml +++ b/playbooks/aws/ansible-tower/launch.yml @@ -2,6 +2,7 @@  - name: Launch instance(s)    hosts: localhost    connection: local +  become: no    gather_facts: no    vars: diff --git a/playbooks/aws/openshift-cluster/addNodes.yml b/playbooks/aws/openshift-cluster/addNodes.yml index fff3e401b..3d88e6b23 100644 --- a/playbooks/aws/openshift-cluster/addNodes.yml +++ b/playbooks/aws/openshift-cluster/addNodes.yml @@ -2,6 +2,7 @@  - name: Launch instance(s)    hosts: localhost    connection: local +  become: no    gather_facts: no    vars_files:    - vars.yml diff --git a/playbooks/aws/openshift-cluster/config.yml b/playbooks/aws/openshift-cluster/config.yml index 5aa6b0f9b..50fe42d6c 100644 --- a/playbooks/aws/openshift-cluster/config.yml +++ b/playbooks/aws/openshift-cluster/config.yml @@ -1,6 +1,8 @@  ---  - hosts: localhost    gather_facts: no +  connection: local +  become: no    vars_files:    - vars.yml    tasks: @@ -10,10 +12,10 @@  - include: ../../common/openshift-cluster/config.yml    vars: -    g_etcd_group: "{{ 'tag_env-host-type_' ~ cluster_id ~ '-openshift-etcd' }}" -    g_lb_group: "{{ 'tag_env-host-type_' ~ cluster_id ~ '-openshift-lb' }}" -    g_masters_group: "{{ 'tag_env-host-type_' ~ cluster_id ~ '-openshift-master' }}" -    g_nodes_group: "{{ 'tag_env-host-type_' ~ cluster_id ~ '-openshift-node' }}" +    g_etcd_hosts:   "{{ (groups['tag_host-type_etcd']|default([]))   | intersect((groups['tag_env_' ~ cluster_id]|default([]))) }}" +    g_lb_hosts:     "{{ (groups['tag_host-type_lb']|default([]))     | intersect((groups['tag_env_' ~ cluster_id]|default([]))) }}" +    g_master_hosts: "{{ (groups['tag_host-type_master']|default([])) | intersect((groups['tag_env_' ~ cluster_id]|default([]))) }}" +    g_node_hosts:   "{{ (groups['tag_host-type_node']|default([]))   | intersect((groups['tag_env_' ~ cluster_id]|default([]))) }}"      g_ssh_user: "{{ hostvars.localhost.g_ssh_user_tmp }}"      g_sudo: "{{ hostvars.localhost.g_sudo_tmp }}"      g_nodeonmaster: true diff --git a/playbooks/aws/openshift-cluster/launch.yml b/playbooks/aws/openshift-cluster/launch.yml index 09bf34666..15b83dfad 100644 --- a/playbooks/aws/openshift-cluster/launch.yml +++ b/playbooks/aws/openshift-cluster/launch.yml @@ -2,6 +2,7 @@  - name: Launch instance(s)    hosts: localhost    connection: local +  become: no    gather_facts: no    vars_files:    - vars.yml diff --git a/playbooks/aws/openshift-cluster/list.yml b/playbooks/aws/openshift-cluster/list.yml index 04fcdc0a1..8341ba9c1 100644 --- a/playbooks/aws/openshift-cluster/list.yml +++ b/playbooks/aws/openshift-cluster/list.yml @@ -2,6 +2,8 @@  - name: Generate oo_list_hosts group    hosts: localhost    gather_facts: no +  connection: local +  become: no    vars_files:    - vars.yml    tasks: diff --git a/playbooks/aws/openshift-cluster/scaleup.yml b/playbooks/aws/openshift-cluster/scaleup.yml index 4415700a3..9c9118286 100644 --- a/playbooks/aws/openshift-cluster/scaleup.yml +++ b/playbooks/aws/openshift-cluster/scaleup.yml @@ -2,6 +2,8 @@  - hosts: localhost    gather_facts: no +  connection: local +  become: no    vars_files:    - vars.yml    tasks: @@ -20,10 +22,10 @@  - include: ../../common/openshift-cluster/scaleup.yml    vars: -    g_etcd_group: "{{ 'tag_env-host-type_' ~ cluster_id ~ '-openshift-etcd' }}" -    g_lb_group: "{{ 'tag_env-host-type_' ~ cluster_id ~ '-openshift-lb' }}" -    g_masters_group: "{{ 'tag_env-host-type_' ~ cluster_id ~ '-openshift-master' }}" -    g_new_nodes_group: 'nodes_to_add' +    g_etcd_hosts:   "{{ (groups['tag_host-type_etcd']|default([]))   | intersect((groups['tag_env_' ~ cluster_id]|default([]))) }}" +    g_lb_hosts:     "{{ (groups['tag_host-type_lb']|default([]))     | intersect((groups['tag_env_' ~ cluster_id]|default([]))) }}" +    g_master_hosts: "{{ (groups['tag_host-type_master']|default([])) | intersect((groups['tag_env_' ~ cluster_id]|default([]))) }}" +    g_new_node_hosts: "{{ groups.nodes_to_add }}"      g_ssh_user: "{{ hostvars.localhost.g_ssh_user_tmp }}"      g_sudo: "{{ hostvars.localhost.g_sudo_tmp }}"      g_nodeonmaster: true diff --git a/playbooks/aws/openshift-cluster/service.yml b/playbooks/aws/openshift-cluster/service.yml index 25cf48505..ce0992a45 100644 --- a/playbooks/aws/openshift-cluster/service.yml +++ b/playbooks/aws/openshift-cluster/service.yml @@ -1,6 +1,8 @@  ---  - name: Call same systemctl command for openshift on all instance(s)    hosts: localhost +  connection: local +  become: no    gather_facts: no    vars_files:    - vars.yml @@ -14,7 +16,7 @@        groups: g_service_masters        ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"        ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" -    with_items: groups["tag_env-host-type_{{ cluster_id }}-openshift-master"] | default([]) +    with_items: "{{ g_master_hosts | default([]) }}"    - name: Evaluate g_service_nodes      add_host: @@ -22,7 +24,7 @@        groups: g_service_nodes        ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"        ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" -    with_items: groups["tag_env-host-type_{{ cluster_id }}-openshift-node"] | default([]) +    with_items: "{{ g_node_hosts | default([]) }}"  - include: ../../common/openshift-node/service.yml  - include: ../../common/openshift-master/service.yml diff --git a/playbooks/aws/openshift-cluster/tasks/launch_instances.yml b/playbooks/aws/openshift-cluster/tasks/launch_instances.yml index 99f0577fc..1fbd71a75 100644 --- a/playbooks/aws/openshift-cluster/tasks/launch_instances.yml +++ b/playbooks/aws/openshift-cluster/tasks/launch_instances.yml @@ -3,7 +3,6 @@      created_by: "{{ lookup('env', 'LOGNAME')|default(cluster, true) }}"      docker_vol_ephemeral: "{{ lookup('env', 'os_docker_vol_ephemeral') | default(false, true) }}"      env: "{{ cluster }}" -    env_host_type: "{{ cluster }}-openshift-{{ type }}"      host_type: "{{ type }}"      sub_host_type: "{{ g_sub_host_type }}" @@ -124,10 +123,8 @@      wait: yes      instance_tags:        created-by: "{{ created_by }}" -      environment: "{{ env }}"        env: "{{ env }}"        host-type: "{{ host_type }}" -      env-host-type: "{{ env_host_type }}"        sub-host-type: "{{ sub_host_type }}"      volumes: "{{ volumes }}"    register: ec2 @@ -142,9 +139,7 @@        Name: "{{ item.0 }}"  - set_fact: -    instance_groups: "tag_created-by_{{ created_by }}, tag_env_{{ env }}, -                    tag_host-type_{{ host_type }}, tag_env-host-type_{{ env_host_type }}, -                    tag_sub-host-type_{{ sub_host_type }}" +    instance_groups: "tag_created-by_{{ created_by }}, tag_env_{{ env }}, tag_host-type_{{ host_type }}, tag_sub-host-type_{{ sub_host_type }}"  - set_fact:      node_label: diff --git a/playbooks/aws/openshift-cluster/terminate.yml b/playbooks/aws/openshift-cluster/terminate.yml index 77287cad0..aafd40c43 100644 --- a/playbooks/aws/openshift-cluster/terminate.yml +++ b/playbooks/aws/openshift-cluster/terminate.yml @@ -1,6 +1,8 @@  ---  - name: Terminate instance(s)    hosts: localhost +  connection: local +  become: no    gather_facts: no    vars_files:    - vars.yml @@ -25,6 +27,7 @@  - name: Terminate instances    hosts: localhost    connection: local +  become: no    gather_facts: no    vars:      host_vars: "{{ hostvars @@ -36,7 +39,6 @@          tags:            env: "{{ item['ec2_tag_env'] }}"            host-type: "{{ item['ec2_tag_host-type'] }}" -          env-host-type: "{{ item['ec2_tag_env-host-type'] }}"            sub_host_type: "{{ item['ec2_tag_sub-host-type'] }}"        with_items: host_vars        when: "'oo_hosts_to_terminate' in groups" diff --git a/playbooks/aws/openshift-cluster/update.yml b/playbooks/aws/openshift-cluster/update.yml index e006aa74a..3df0c3f3a 100644 --- a/playbooks/aws/openshift-cluster/update.yml +++ b/playbooks/aws/openshift-cluster/update.yml @@ -1,19 +1,24 @@  --- -- name: Populate oo_hosts_to_update group +- name: Update - Populate oo_hosts_to_update group    hosts: localhost +  connection: local +  become: no    gather_facts: no +  vars: +    g_etcd_hosts:   "{{ (groups['tag_host-type_etcd']|default([])) | intersect(groups['tag_env_' ~ cluster_id]) }}" +    g_lb_hosts:     "{{ (groups['tag_host-type_lb']|default([])) | intersect(groups['tag_env_' ~ cluster_id]) }}" +    g_master_hosts: "{{ (groups['tag_host-type_master']|default([])) | intersect(groups['tag_env_' ~ cluster_id]) }}" +    g_node_hosts:   "{{ (groups['tag_host-type_node']|default([])) | intersect((groups['tag_env_' ~ cluster_id]|default([]))) }}"    vars_files:    - vars.yml    tasks: -  - name: Evaluate oo_hosts_to_update +  - name: Update - Evaluate oo_hosts_to_update      add_host:        name: "{{ item }}"        groups: oo_hosts_to_update        ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"        ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" -    with_items: (groups["tag_env-host-type_{{ cluster_id }}-openshift-master"] | default([])) -                | union(groups["tag_env-host-type_{{ cluster_id }}-openshift-node"] | default([])) -                | union(groups["tag_env-host-type_{{ cluster_id }}-openshift-etcd"] | default([])) +    with_items: "{{ g_master_hosts | union(g_node_hosts) | union(g_etcd_hosts) | default([]) }}"  - include: ../../common/openshift-cluster/update_repos_and_packages.yml diff --git a/playbooks/aws/openshift-cluster/upgrades/v3_0_to_v3_1/upgrade.yml b/playbooks/aws/openshift-cluster/upgrades/v3_0_to_v3_1/upgrade.yml index 8cad51b5e..20cc97c8a 100644 --- a/playbooks/aws/openshift-cluster/upgrades/v3_0_to_v3_1/upgrade.yml +++ b/playbooks/aws/openshift-cluster/upgrades/v3_0_to_v3_1/upgrade.yml @@ -19,10 +19,10 @@  - include: ../../../../common/openshift-cluster/upgrades/v3_0_to_v3_1/upgrade.yml    vars: -    g_etcd_group: "{{ 'tag_env-host-type_' ~ cluster_id ~ '-openshift-etcd' }}" -    g_lb_group: "{{ 'tag_env-host-type_' ~ cluster_id ~ '-openshift-lb' }}" -    g_masters_group: "{{ 'tag_env-host-type_' ~ cluster_id ~ '-openshift-master' }}" -    g_nodes_group: "{{ tmp_nodes_group | default('') }}" +    g_etcd_hosts:   "{{ (groups['tag_host-type_etcd']|default([]))   | intersect((groups['tag_env_' ~ cluster_id]|default([]))) }}" +    g_lb_hosts:     "{{ (groups['tag_host-type_lb']|default([]))     | intersect((groups['tag_env_' ~ cluster_id]|default([]))) }}" +    g_master_hosts: "{{ (groups['tag_host-type_master']|default([])) | intersect((groups['tag_env_' ~ cluster_id]|default([]))) }}" +    g_node_hosts:   "{{ (groups['tag_host-type_node']|default([]))   | intersect((groups['tag_env_' ~ cluster_id]|default([]))) }}"      g_ssh_user: "{{ hostvars.localhost.g_ssh_user_tmp }}"      g_sudo: "{{ hostvars.localhost.g_sudo_tmp }}"      g_nodeonmaster: true diff --git a/playbooks/byo/openshift-cluster/config.yml b/playbooks/byo/openshift-cluster/config.yml index 411c7e660..ba8fe0a52 100644 --- a/playbooks/byo/openshift-cluster/config.yml +++ b/playbooks/byo/openshift-cluster/config.yml @@ -1,10 +1,10 @@  ---  - include: ../../common/openshift-cluster/config.yml    vars: -    g_etcd_group: "{{ 'etcd' }}" -    g_masters_group: "{{ 'masters' }}" -    g_nodes_group: "{{ 'nodes' }}" -    g_lb_group: "{{ 'lb' }}" +    g_etcd_hosts: "{{ groups.etcd | default([]) }}" +    g_master_hosts: "{{ groups.masters | default([]) }}" +    g_node_hosts: "{{ groups.nodes | default([]) }}" +    g_lb_hosts: "{{ groups.lb | default([]) }}"      openshift_cluster_id: "{{ cluster_id | default('default') }}"      openshift_debug_level: 2      openshift_deployment_type: "{{ deployment_type }}" diff --git a/playbooks/byo/openshift-cluster/scaleup.yml b/playbooks/byo/openshift-cluster/scaleup.yml index 70644d427..8f8ef6f21 100644 --- a/playbooks/byo/openshift-cluster/scaleup.yml +++ b/playbooks/byo/openshift-cluster/scaleup.yml @@ -1,10 +1,10 @@  ---  - include: ../../common/openshift-cluster/scaleup.yml    vars: -    g_etcd_group: "{{ 'etcd' }}" -    g_masters_group: "{{ 'masters' }}" -    g_new_nodes_group: "{{ 'new_nodes' }}" -    g_lb_group: "{{ 'lb' }}" +    g_etcd_hosts: "{{ groups.etcd | default([]) }}" +    g_master_hosts: "{{ groups.masters | default([]) }}" +    g_new_node_hosts: "{{ groups.new_nodes | default([]) }}" +    g_lb_hosts: "{{ groups.lb | default([]) }}"      openshift_cluster_id: "{{ cluster_id | default('default') }}"      openshift_debug_level: 2      openshift_deployment_type: "{{ deployment_type }}" diff --git a/playbooks/byo/openshift-cluster/upgrades/v3_0_minor/upgrade.yml b/playbooks/byo/openshift-cluster/upgrades/v3_0_minor/upgrade.yml index 76fa9ba22..56e79e8c2 100644 --- a/playbooks/byo/openshift-cluster/upgrades/v3_0_minor/upgrade.yml +++ b/playbooks/byo/openshift-cluster/upgrades/v3_0_minor/upgrade.yml @@ -1,9 +1,9 @@  ---  - include: ../../../../common/openshift-cluster/upgrades/v3_0_minor/upgrade.yml    vars: -    g_etcd_group: "{{ 'etcd' }}" -    g_masters_group: "{{ 'masters' }}" -    g_nodes_group: "{{ 'nodes' }}" -    g_lb_group: "{{ 'lb' }}" +    g_etcd_hosts: "{{ groups.etcd | default([]) }}" +    g_master_hosts: "{{ groups.masters | default([]) }}" +    g_node_hosts: "{{ groups.nodes | default([]) }}" +    g_lb_hosts: "{{ groups.lb | default([]) }}"      openshift_cluster_id: "{{ cluster_id | default('default') }}"      openshift_deployment_type: "{{ deployment_type }}" diff --git a/playbooks/byo/openshift-cluster/upgrades/v3_0_to_v3_1/upgrade.yml b/playbooks/byo/openshift-cluster/upgrades/v3_0_to_v3_1/upgrade.yml index b06442366..b4b4f3ec0 100644 --- a/playbooks/byo/openshift-cluster/upgrades/v3_0_to_v3_1/upgrade.yml +++ b/playbooks/byo/openshift-cluster/upgrades/v3_0_to_v3_1/upgrade.yml @@ -1,9 +1,9 @@  ---  - include: ../../../../common/openshift-cluster/upgrades/v3_0_to_v3_1/upgrade.yml    vars: -    g_etcd_group: "{{ 'etcd' }}" -    g_masters_group: "{{ 'masters' }}" -    g_nodes_group: "{{ 'nodes' }}" -    g_lb_group: "{{ 'lb' }}" +    g_etcd_hosts: "{{ groups.etcd | default([]) }}" +    g_master_hosts: "{{ groups.masters | default([]) }}" +    g_node_hosts: "{{ groups.nodes | default([]) }}" +    g_lb_hosts: "{{ groups.lb | default([]) }}"      openshift_cluster_id: "{{ cluster_id | default('default') }}"      openshift_deployment_type: "{{ deployment_type }}" diff --git a/playbooks/common/openshift-cluster/evaluate_groups.yml b/playbooks/common/openshift-cluster/evaluate_groups.yml index 34da372a4..6343a2567 100644 --- a/playbooks/common/openshift-cluster/evaluate_groups.yml +++ b/playbooks/common/openshift-cluster/evaluate_groups.yml @@ -1,23 +1,25 @@  ---  - name: Populate config host groups    hosts: localhost +  connection: local +  become: no    gather_facts: no    tasks:    - fail: -      msg: This playbook requires g_etcd_group to be set -    when: g_etcd_group is not defined +      msg: This playbook requires g_etcd_hosts to be set +    when: g_etcd_hosts is not defined    - fail: -      msg: This playbook requires g_masters_group to be set -    when: g_masters_group is not defined +      msg: This playbook requires g_master_hosts to be set +    when: g_master_hosts is not defined    - fail: -      msg: This playbook requires g_nodes_group or g_new_nodes_group to be set -    when: g_nodes_group is not defined and g_new_nodes_group is not defined +      msg: This playbook requires g_node_hosts or g_new_node_hosts to be set +    when: g_node_hosts is not defined and g_new_node_hosts is not defined    - fail: -      msg: This playbook requires g_lb_group to be set -    when: g_lb_group is not defined +      msg: This playbook requires g_lb_hosts to be set +    when: g_lb_hosts is not defined    - name: Evaluate oo_etcd_to_config      add_host: @@ -25,7 +27,7 @@        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([]) +    with_items: "{{ g_etcd_hosts | default([]) }}"    - name: Evaluate oo_masters_to_config      add_host: @@ -33,11 +35,11 @@        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([]) +    with_items: "{{ g_master_hosts | default([]) }}" -  # Use g_new_nodes_group if it exists otherwise g_nodes_group +  # Use g_new_node_hosts if it exists otherwise g_node_hosts    - set_fact: -      g_nodes_to_config: "{{ g_new_nodes_group | default(g_nodes_group | default([])) }}" +      g_node_hosts_to_config: "{{ g_new_node_hosts | default(g_node_hosts | default([])) }}"    - name: Evaluate oo_nodes_to_config      add_host: @@ -45,32 +47,32 @@        groups: oo_nodes_to_config        ansible_ssh_user: "{{ g_ssh_user | default(omit) }}"        ansible_sudo: "{{ g_sudo | default(omit) }}" -    with_items: groups[g_nodes_to_config] | default([]) +    with_items: "{{ g_node_hosts_to_config | default([]) }}" -  # Skip adding the master to oo_nodes_to_config when g_new_nodes_group is +  # Skip adding the master to oo_nodes_to_config when g_new_node_hosts is    - 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 | default(false) == true and g_new_nodes_group is not defined +    with_items: "{{ g_master_hosts | default([]) }}" +    when: g_nodeonmaster | default(false) == true and g_new_node_hosts is not defined    - name: Evaluate oo_first_etcd      add_host: -      name: "{{ groups[g_etcd_group][0] }}" +      name: "{{ g_etcd_hosts[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 +    when: g_etcd_hosts|length > 0    - name: Evaluate oo_first_master      add_host: -      name: "{{ groups[g_masters_group][0] }}" +      name: "{{ g_master_hosts[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 +    when: g_master_hosts|length > 0    - name: Evaluate oo_lb_to_config      add_host: @@ -78,4 +80,4 @@        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([]) +    with_items: "{{ g_lb_hosts | default([]) }}" diff --git a/playbooks/common/openshift-cluster/upgrades/v3_0_to_v3_1/upgrade.yml b/playbooks/common/openshift-cluster/upgrades/v3_0_to_v3_1/upgrade.yml index c31103f3e..fc098b4ed 100644 --- a/playbooks/common/openshift-cluster/upgrades/v3_0_to_v3_1/upgrade.yml +++ b/playbooks/common/openshift-cluster/upgrades/v3_0_to_v3_1/upgrade.yml @@ -12,6 +12,8 @@  - name: Evaluate additional groups for upgrade    hosts: localhost +  connection: local +  become: no    tasks:    - name: Evaluate etcd_hosts_to_backup      add_host: @@ -87,6 +89,8 @@  ##############################################################################  - name: Gate on pre-upgrade checks    hosts: localhost +  connection: local +  become: no    vars:      pre_upgrade_hosts: "{{ groups.oo_masters_to_config | union(groups.oo_nodes_to_config) }}"    tasks: @@ -169,6 +173,8 @@  ##############################################################################  - name: Gate on etcd backup    hosts: localhost +  connection: local +  become: no    tasks:    - set_fact:        etcd_backup_completed: "{{ hostvars @@ -187,6 +193,8 @@  ###############################################################################  - name: Create temp directory for syncing certs    hosts: localhost +  connection: local +  become: no    gather_facts: no    tasks:    - name: Create local temp directory for syncing certs @@ -333,6 +341,8 @@  - name: Delete temporary directory on localhost    hosts: localhost +  connection: local +  become: no    gather_facts: no    tasks:    - file: name={{ g_master_mktemp.stdout }} state=absent @@ -351,6 +361,8 @@  ##############################################################################  - name: Gate on master update    hosts: localhost +  connection: local +  become: no    tasks:    - set_fact:        master_update_completed: "{{ hostvars @@ -391,6 +403,8 @@  ##############################################################################  - name: Gate on nodes update    hosts: localhost +  connection: local +  become: no    tasks:    - set_fact:        node_update_completed: "{{ hostvars @@ -458,6 +472,8 @@  ##############################################################################  - name: Gate on reconcile    hosts: localhost +  connection: local +  become: no    tasks:    - set_fact:        reconcile_completed: "{{ hostvars diff --git a/playbooks/common/openshift-etcd/config.yml b/playbooks/common/openshift-etcd/config.yml index 7d94ced2e..6dee196e3 100644 --- a/playbooks/common/openshift-etcd/config.yml +++ b/playbooks/common/openshift-etcd/config.yml @@ -33,7 +33,7 @@  - name: Create temp directory for syncing certs    hosts: localhost    connection: local -  sudo: false +  become: no    gather_facts: no    tasks:    - name: Create local temp directory for syncing certs @@ -92,7 +92,7 @@  - name: Delete temporary directory on localhost    hosts: localhost    connection: local -  sudo: false +  become: no    gather_facts: no    tasks:    - file: name={{ g_etcd_mktemp.stdout }} state=absent diff --git a/playbooks/common/openshift-etcd/service.yml b/playbooks/common/openshift-etcd/service.yml index 0bf69b22f..fd2bc24ae 100644 --- a/playbooks/common/openshift-etcd/service.yml +++ b/playbooks/common/openshift-etcd/service.yml @@ -1,6 +1,8 @@  ---  - name: Populate g_service_masters host group if needed    hosts: localhost +  connection: local +  become: no    gather_facts: no    tasks:    - fail: msg="new_cluster_state is required to be injected in this playbook" diff --git a/playbooks/common/openshift-master/config.yml b/playbooks/common/openshift-master/config.yml index 3151bf113..dd638487a 100644 --- a/playbooks/common/openshift-master/config.yml +++ b/playbooks/common/openshift-master/config.yml @@ -70,7 +70,7 @@  - name: Create temp directory for syncing certs    hosts: localhost    connection: local -  sudo: false +  become: no    gather_facts: no    tasks:    - name: Create local temp directory for syncing certs @@ -207,7 +207,7 @@  - name: Compute haproxy_backend_servers    hosts: localhost    connection: local -  sudo: false +  become: no    gather_facts: no    tasks:    - set_fact: @@ -260,6 +260,8 @@  - name: Parse named certificates    hosts: localhost +  connection: local +  become: no    vars:      internal_hostnames: "{{ hostvars[groups.oo_first_master.0].openshift.common.internal_hostnames }}"      named_certificates: "{{ hostvars[groups.oo_first_master.0].openshift_master_named_certificates | default([]) }}" @@ -375,7 +377,7 @@  - name: Delete temporary directory on localhost    hosts: localhost    connection: local -  sudo: false +  become: no    gather_facts: no    tasks:    - file: name={{ g_master_mktemp.stdout }} state=absent diff --git a/playbooks/common/openshift-master/service.yml b/playbooks/common/openshift-master/service.yml index 27e1e66f9..f60c5a2b5 100644 --- a/playbooks/common/openshift-master/service.yml +++ b/playbooks/common/openshift-master/service.yml @@ -2,6 +2,8 @@  - name: Populate g_service_masters host group if needed    hosts: localhost    gather_facts: no +  connection: local +  become: no    tasks:    - fail: msg="new_cluster_state is required to be injected in this playbook"      when: new_cluster_state is not defined diff --git a/playbooks/common/openshift-node/config.yml b/playbooks/common/openshift-node/config.yml index 952a9fd51..69ccb0cb8 100644 --- a/playbooks/common/openshift-node/config.yml +++ b/playbooks/common/openshift-node/config.yml @@ -58,7 +58,7 @@  - name: Create temp directory for syncing certs    hosts: localhost    connection: local -  sudo: false +  become: no    gather_facts: no    tasks:    - name: Create local temp directory for syncing certs @@ -191,7 +191,7 @@  - name: Delete temporary directory on localhost    hosts: localhost    connection: local -  sudo: false +  become: no    gather_facts: no    tasks:    - file: name={{ mktemp.stdout }} state=absent diff --git a/playbooks/common/openshift-node/service.yml b/playbooks/common/openshift-node/service.yml index 5cf83e186..0f07add2a 100644 --- a/playbooks/common/openshift-node/service.yml +++ b/playbooks/common/openshift-node/service.yml @@ -1,6 +1,8 @@  ---  - name: Populate g_service_nodes host group if needed    hosts: localhost +  connection: local +  become: no    gather_facts: no    tasks:    - fail: msg="new_cluster_state is required to be injected in this playbook" diff --git a/playbooks/gce/openshift-cluster/config.yml b/playbooks/gce/openshift-cluster/config.yml index 745161bcb..5bf98c2d5 100644 --- a/playbooks/gce/openshift-cluster/config.yml +++ b/playbooks/gce/openshift-cluster/config.yml @@ -4,6 +4,8 @@  - hosts: localhost    gather_facts: no +  connection: local +  become: no    vars_files:    - vars.yml    tasks: @@ -15,10 +17,10 @@  - include: ../../common/openshift-cluster/config.yml    vars: -    g_etcd_group: "{{ 'tag_env-host-type-' ~ cluster_id ~ '-openshift-etcd' }}" -    g_lb_group: "{{ 'tag_env-host-type-' ~ cluster_id ~ '-openshift-lb' }}" -    g_masters_group: "{{ 'tag_env-host-type-' ~ cluster_id ~ '-openshift-master' }}" -    g_nodes_group: "{{ 'tag_env-host-type-' ~ cluster_id ~ '-openshift-node' }}" +    g_etcd_hosts:   "{{ (groups['tag_host-type-etcd']|default([]))   | intersect((groups['tag_env-' ~ cluster_id]|default([]))) }}" +    g_lb_hosts:     "{{ (groups['tag_host-type-lb']|default([]))     | intersect((groups['tag_env-' ~ cluster_id]|default([]))) }}" +    g_master_hosts: "{{ (groups['tag_host-type-master']|default([])) | intersect((groups['tag_env-' ~ cluster_id]|default([]))) }}" +    g_node_hosts:   "{{ (groups['tag_host-type-node']|default([]))   | intersect((groups['tag_env-' ~ cluster_id]|default([]))) }}"      g_ssh_user: "{{ hostvars.localhost.g_ssh_user_tmp }}"      g_sudo: "{{ hostvars.localhost.g_sudo_tmp }}"      g_nodeonmaster: true diff --git a/playbooks/gce/openshift-cluster/join_node.yml b/playbooks/gce/openshift-cluster/join_node.yml index 5ae3a8fef..ab593b897 100644 --- a/playbooks/gce/openshift-cluster/join_node.yml +++ b/playbooks/gce/openshift-cluster/join_node.yml @@ -1,7 +1,14 @@  ---  - name: Populate oo_hosts_to_update group    hosts: localhost +  connection: local +  become: no    gather_facts: no +  vars: +    g_etcd_hosts:   "{{ (groups['tag_host-type-etcd']|default([])) | intersect(groups['tag_env-' ~ cluster_id]) }}" +    g_lb_hosts:     "{{ (groups['tag_host-type-lb']|default([])) | intersect(groups['tag_env-' ~ cluster_id]) }}" +    g_master_hosts: "{{ (groups['tag_host-type-master']|default([])) | intersect(groups['tag_env-' ~ cluster_id]) }}" +    g_node_hosts:   "{{ (groups['tag_host-type-node']|default([])) | intersect((groups['tag_env-' ~ cluster_id]|default([]))) }}"    vars_files:    - vars.yml    tasks: @@ -16,6 +23,8 @@  - name: Populate oo_masters_to_config host group    hosts: localhost +  connection: local +  become: no    gather_facts: no    vars_files:    - vars.yml @@ -29,11 +38,11 @@    - name: Evaluate oo_first_master      add_host: -      name: "{{ groups['tag_env-host-type-' ~ cluster_id ~ '-openshift-master'][0] }}" +      name: "{{ g_master_hosts | first }}"        ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"        ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}"        groups: oo_first_master -    when: "'tag_env-host-type-{{ cluster_id }}-openshift-master' in groups" +    when: g_master_hosts is defined and g_master_hosts|length > 0  #- include: config.yml  - include: ../../common/openshift-node/config.yml diff --git a/playbooks/gce/openshift-cluster/launch.yml b/playbooks/gce/openshift-cluster/launch.yml index d6ef57c45..562bf8d29 100644 --- a/playbooks/gce/openshift-cluster/launch.yml +++ b/playbooks/gce/openshift-cluster/launch.yml @@ -2,6 +2,7 @@  - name: Launch instance(s)    hosts: localhost    connection: local +  become: no    gather_facts: no    vars_files:    - vars.yml diff --git a/playbooks/gce/openshift-cluster/list.yml b/playbooks/gce/openshift-cluster/list.yml index 53b2b9a5e..b9ff89c79 100644 --- a/playbooks/gce/openshift-cluster/list.yml +++ b/playbooks/gce/openshift-cluster/list.yml @@ -1,6 +1,8 @@  ---  - name: Generate oo_list_hosts group    hosts: localhost +  connection: local +  become: no    gather_facts: no    vars_files:    - vars.yml diff --git a/playbooks/gce/openshift-cluster/service.yml b/playbooks/gce/openshift-cluster/service.yml index 2d0f2ab95..337ba7e44 100644 --- a/playbooks/gce/openshift-cluster/service.yml +++ b/playbooks/gce/openshift-cluster/service.yml @@ -1,6 +1,8 @@  ---  - name: Call same systemctl command for openshift on all instance(s)    hosts: localhost +  connection: local +  become: no    gather_facts: no    vars_files:    - vars.yml @@ -8,21 +10,19 @@    - fail: msg="cluster_id is required to be injected in this playbook"      when: cluster_id is not defined -  - set_fact: scratch_group=tag_env-host-type-{{ cluster_id }}-openshift-node    - add_host:        name: "{{ item }}"        groups: g_service_nodes        ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user | default(ansible_ssh_user, true) }}"        ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" -    with_items: groups[scratch_group] | default([]) | difference(['localhost']) | difference(groups.status_terminated) +    with_items: "{{ g_node_hosts | default([]) | difference(['localhost']) | difference(groups.status_terminated) }}" -  - set_fact: scratch_group=tag_env-host-type-{{ cluster_id }}-openshift-master    - add_host:        name: "{{ item }}"        groups: g_service_masters        ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user | default(ansible_ssh_user, true) }}"        ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" -    with_items: groups[scratch_group] | default([]) | difference(['localhost']) | difference(groups.status_terminated) +    with_items: "{{ g_master_hosts | default([]) | difference(['localhost']) | difference(groups.status_terminated) }}"  - include: ../../common/openshift-node/service.yml  - include: ../../common/openshift-master/service.yml diff --git a/playbooks/gce/openshift-cluster/tasks/launch_instances.yml b/playbooks/gce/openshift-cluster/tasks/launch_instances.yml index de8a75b18..2360a3263 100644 --- a/playbooks/gce/openshift-cluster/tasks/launch_instances.yml +++ b/playbooks/gce/openshift-cluster/tasks/launch_instances.yml @@ -19,7 +19,6 @@        - env-{{ cluster }}        - host-type-{{ type }}        - sub-host-type-{{ g_sub_host_type }} -      - env-host-type-{{ cluster }}-openshift-{{ type }}    when: instances |length > 0    register: gce diff --git a/playbooks/gce/openshift-cluster/terminate.yml b/playbooks/gce/openshift-cluster/terminate.yml index e20e0a8bc..f4e89983b 100644 --- a/playbooks/gce/openshift-cluster/terminate.yml +++ b/playbooks/gce/openshift-cluster/terminate.yml @@ -2,6 +2,7 @@  - name: Terminate instance(s)    hosts: localhost    connection: local +  become: no    gather_facts: no    vars_files:    - vars.yml @@ -27,6 +28,7 @@  - name: Terminate instances(s)    hosts: localhost +  become: no    connection: local    gather_facts: no    vars_files: diff --git a/playbooks/gce/openshift-cluster/update.yml b/playbooks/gce/openshift-cluster/update.yml index 8096aa654..d60662397 100644 --- a/playbooks/gce/openshift-cluster/update.yml +++ b/playbooks/gce/openshift-cluster/update.yml @@ -1,7 +1,14 @@  ---  - name: Populate oo_hosts_to_update group    hosts: localhost +  become: no +  connection: local    gather_facts: no +  vars: +    g_etcd_hosts:   "{{ (groups['tag_host-type-etcd']|default([])) | intersect(groups['tag_env-' ~ cluster_id]) }}" +    g_lb_hosts:     "{{ (groups['tag_host-type-lb']|default([])) | intersect(groups['tag_env-' ~ cluster_id]) }}" +    g_master_hosts: "{{ (groups['tag_host-type-master']|default([])) | intersect(groups['tag_env-' ~ cluster_id]) }}" +    g_node_hosts:   "{{ (groups['tag_host-type-node']|default([])) | intersect((groups['tag_env-' ~ cluster_id]|default([]))) }}"    vars_files:    - vars.yml    tasks: @@ -11,9 +18,7 @@        groups: oo_hosts_to_update        ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user | default(ansible_ssh_user, true) }}"        ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" -    with_items: (groups["tag_env-host-type-{{ cluster_id }}-openshift-master"] | default([])) -                | union(groups["tag_env-host-type-{{ cluster_id }}-openshift-node"] | default([])) -                | union(groups["tag_env-host-type-{{ cluster_id }}-openshift-etcd"] | default([])) +    with_items: "{{ g_master_hosts | union(g_node_hosts) | union(g_etcd_hosts) | default([]) }}"  - include: ../../common/openshift-cluster/update_repos_and_packages.yml diff --git a/playbooks/gce/openshift-cluster/wip.yml b/playbooks/gce/openshift-cluster/wip.yml index 51a521a6b..0e3757546 100644 --- a/playbooks/gce/openshift-cluster/wip.yml +++ b/playbooks/gce/openshift-cluster/wip.yml @@ -1,6 +1,7 @@  ---  - name: WIP    hosts: localhost +  become: no    connection: local    gather_facts: no    vars_files: @@ -12,7 +13,7 @@        groups: oo_masters_for_deploy        ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user | default(ansible_ssh_user, true) }}"        ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" -    with_items: groups["tag_env-host-type-{{ cluster_id }}-openshift-master"] | default([]) +    with_items: "{{ g_master_hosts | default([]) }}"  - name: Deploy OpenShift Services    hosts: oo_masters_for_deploy diff --git a/playbooks/libvirt/openshift-cluster/config.yml b/playbooks/libvirt/openshift-cluster/config.yml index 4d1ae22ff..b84bde084 100644 --- a/playbooks/libvirt/openshift-cluster/config.yml +++ b/playbooks/libvirt/openshift-cluster/config.yml @@ -5,6 +5,8 @@  - hosts: localhost    gather_facts: no +  become: no +  connection: local    vars_files:    - vars.yml    tasks: @@ -14,10 +16,10 @@  - include: ../../common/openshift-cluster/config.yml    vars: -    g_etcd_group: "{{ 'tag_env-host-type-' ~ cluster_id ~ '-openshift-etcd' }}" -    g_lb_group: "{{ 'tag_env-host-type-' ~ cluster_id ~ '-openshift-lb' }}" -    g_masters_group: "{{ 'tag_env-host-type-' ~ cluster_id ~ '-openshift-master' }}" -    g_nodes_group: "{{ 'tag_env-host-type-' ~ cluster_id ~ '-openshift-node' }}" +    g_etcd_hosts:   "{{ (groups['tag_host-type-etcd']|default([]))   | intersect((groups['tag_env-' ~ cluster_id]|default([]))) }}" +    g_lb_hosts:     "{{ (groups['tag_host-type-lb']|default([]))     | intersect((groups['tag_env-' ~ cluster_id]|default([]))) }}" +    g_master_hosts: "{{ (groups['tag_host-type-master']|default([])) | intersect((groups['tag_env-' ~ cluster_id]|default([]))) }}" +    g_node_hosts:   "{{ (groups['tag_host-type-node']|default([]))   | intersect((groups['tag_env-' ~ cluster_id]|default([]))) }}"      g_ssh_user: "{{ hostvars.localhost.g_ssh_user_tmp }}"      g_sudo: "{{ hostvars.localhost.g_sudo_tmp }}"      openshift_cluster_id: "{{ cluster_id }}" diff --git a/playbooks/libvirt/openshift-cluster/launch.yml b/playbooks/libvirt/openshift-cluster/launch.yml index 8d7949dd1..3a48c82bc 100644 --- a/playbooks/libvirt/openshift-cluster/launch.yml +++ b/playbooks/libvirt/openshift-cluster/launch.yml @@ -1,6 +1,8 @@  ---  - name: Launch instance(s)    hosts: localhost +  become: no +  connection: local    gather_facts: no    vars_files:    - vars.yml @@ -11,6 +13,7 @@      image_url: "{{ deployment_vars[deployment_type].image.url }}"      image_sha256: "{{ deployment_vars[deployment_type].image.sha256 }}"      image_name: "{{ deployment_vars[deployment_type].image.name }}" +    image_compression: "{{ deployment_vars[deployment_type].image.compression }}"    tasks:    - fail: msg="Deployment type not supported for libvirt provider yet"      when: deployment_type == 'online' diff --git a/playbooks/libvirt/openshift-cluster/list.yml b/playbooks/libvirt/openshift-cluster/list.yml index 5954bb01e..d89e699f2 100644 --- a/playbooks/libvirt/openshift-cluster/list.yml +++ b/playbooks/libvirt/openshift-cluster/list.yml @@ -1,6 +1,8 @@  ---  - name: Generate oo_list_hosts group    hosts: localhost +  become: no +  connection: local    gather_facts: no    vars_files:    - vars.yml @@ -21,6 +23,8 @@  - name: List Hosts    hosts: localhost +  become: no +  connection: local    gather_facts: no    vars_files:    - vars.yml diff --git a/playbooks/libvirt/openshift-cluster/service.yml b/playbooks/libvirt/openshift-cluster/service.yml index ae095f5a2..cd07c8701 100644 --- a/playbooks/libvirt/openshift-cluster/service.yml +++ b/playbooks/libvirt/openshift-cluster/service.yml @@ -5,6 +5,8 @@  - name: Call same systemctl command for openshift on all instance(s)    hosts: localhost +  become: no +  connection: local    gather_facts: no    vars_files:    - vars.yml @@ -18,7 +20,7 @@        ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"        ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}"        groups: g_service_masters -    with_items: groups["tag_env-host-type-{{ cluster_id }}-openshift-master"] | default([]) +    with_items: "{{ g_master_hosts | default([]) }}"    - name: Evaluate g_service_nodes      add_host: @@ -26,7 +28,7 @@        ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"        ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}"        groups: g_service_nodes -    with_items: groups["tag_env-host-type-{{ cluster_id }}-openshift-node"] | default([]) +    with_items: "{{ g_node_hosts | default([]) }}"  - include: ../../common/openshift-node/service.yml  - include: ../../common/openshift-master/service.yml diff --git a/playbooks/libvirt/openshift-cluster/tasks/launch_instances.yml b/playbooks/libvirt/openshift-cluster/tasks/launch_instances.yml index 4825207c9..ae8275ef6 100644 --- a/playbooks/libvirt/openshift-cluster/tasks/launch_instances.yml +++ b/playbooks/libvirt/openshift-cluster/tasks/launch_instances.yml @@ -13,8 +13,15 @@    get_url:      url: '{{ image_url }}'      sha256sum: '{{ image_sha256 }}' -    dest: '{{ os_libvirt_storage_pool_path }}/{{ image_name }}' +    dest: '{{ os_libvirt_storage_pool_path }}/{{ [image_name, image_compression] | join(".") }}'    when: '{{ ( lookup("oo_option", "skip_image_download") | default("no", True) | lower ) in ["false", "no"] }}' +  register: downloaded_image + +- name: Uncompress Base Cloud image +  command: 'unxz -kf {{ os_libvirt_storage_pool_path }}/{{ [image_name, image_compression] | join(".") }}' +  args: +    creates: '{{ os_libvirt_storage_pool_path }}/{{ image_name }}' +  when: image_compression in ["xz"] and downloaded_image.changed  - name: Create the cloud-init config drive path    file: @@ -81,7 +88,7 @@      ansible_ssh_host: '{{ item.1 }}'      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"      ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" -    groups: 'tag_env-{{ cluster }}, tag_host-type-{{ type }}, tag_env-host-type-{{ cluster }}-openshift-{{ type }}, tag_sub-host-type-{{ g_sub_host_type }}' +    groups: 'tag_env-{{ cluster }}, tag_host-type-{{ type }}, tag_sub-host-type-{{ g_sub_host_type }}'    with_together:      - instances      - ips diff --git a/playbooks/libvirt/openshift-cluster/templates/domain.xml b/playbooks/libvirt/openshift-cluster/templates/domain.xml index 870bcf2a6..c4ac6a434 100644 --- a/playbooks/libvirt/openshift-cluster/templates/domain.xml +++ b/playbooks/libvirt/openshift-cluster/templates/domain.xml @@ -4,7 +4,6 @@    <metadata xmlns:ansible="https://github.com/ansible/ansible">      <ansible:tags>        <ansible:tag>env-{{ cluster }}</ansible:tag> -      <ansible:tag>env-host-type-{{ cluster }}-openshift-{{ type }}</ansible:tag>        <ansible:tag>host-type-{{ type }}</ansible:tag>        <ansible:tag>sub-host-type-{{ g_sub_host_type }}</ansible:tag>      </ansible:tags> diff --git a/playbooks/libvirt/openshift-cluster/terminate.yml b/playbooks/libvirt/openshift-cluster/terminate.yml index 8f00812a9..a6b963608 100644 --- a/playbooks/libvirt/openshift-cluster/terminate.yml +++ b/playbooks/libvirt/openshift-cluster/terminate.yml @@ -3,6 +3,8 @@  - name: Terminate instance(s)    hosts: localhost +  become: no +  connection: local    gather_facts: no    vars_files:    - vars.yml @@ -28,6 +30,8 @@  - name: Terminate instance(s)    hosts: localhost +  become: no +  connection: local    gather_facts: no    vars_files:    - vars.yml diff --git a/playbooks/libvirt/openshift-cluster/update.yml b/playbooks/libvirt/openshift-cluster/update.yml index d09832c16..5e2bd3a3d 100644 --- a/playbooks/libvirt/openshift-cluster/update.yml +++ b/playbooks/libvirt/openshift-cluster/update.yml @@ -1,7 +1,15 @@  ---  - name: Populate oo_hosts_to_update group    hosts: localhost +  become: no +  connection: local    gather_facts: no +  vars: +    g_etcd_hosts:   "{{ (groups['tag_host-type-etcd']|default([])) | intersect(groups['tag_env-' ~ cluster_id]) }}" +    g_lb_hosts:     "{{ (groups['tag_host-type-lb']|default([])) | intersect(groups['tag_env-' ~ cluster_id]) }}" +    g_master_hosts: "{{ (groups['tag_host-type-master']|default([])) | intersect(groups['tag_env-' ~ cluster_id]) }}" +    g_node_hosts:   "{{ (groups['tag_host-type-node']|default([])) | intersect((groups['tag_env-' ~ cluster_id]|default([]))) }}" +    vars_files:    - vars.yml    tasks: @@ -11,9 +19,7 @@        groups: oo_hosts_to_update        ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"        ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" -    with_items: (groups["tag_env-host-type-{{ cluster_id }}-openshift-master"] | default([])) -                | union(groups["tag_env-host-type-{{ cluster_id }}-openshift-node"] | default([])) -                | union(groups["tag_env-host-type-{{ cluster_id }}-openshift-etcd"] | default([])) +    with_items: "{{ g_master_hosts  | union(g_node_hosts) | union(g_etcd_hosts) | default([]) }}"  - include: ../../common/openshift-cluster/update_repos_and_packages.yml diff --git a/playbooks/libvirt/openshift-cluster/vars.yml b/playbooks/libvirt/openshift-cluster/vars.yml index c77a0797e..67cfbcdb8 100644 --- a/playbooks/libvirt/openshift-cluster/vars.yml +++ b/playbooks/libvirt/openshift-cluster/vars.yml @@ -8,11 +8,13 @@ deployment_vars:    origin:      image:        url:    "{{ lookup('oo_option', 'image_url') | -                  default('http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2', True) }}" +                  default('http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2.xz', True) }}" +      compression:   "{{ lookup('oo_option', 'image_compression') | +                         default('xz', True) }}"        name:   "{{ lookup('oo_option', 'image_name') |                    default('CentOS-7-x86_64-GenericCloud.qcow2', True) }}"        sha256: "{{ lookup('oo_option', 'image_sha256') | -                  default('e324e3ab1d24a1bbf035ddb365e7f9058c0b454acf48d7aa15c5519fae5998ab', True) }}" +                  default('9461006300d65172f5668d8875f2aad7b54f7ba4e9c5435d65a84a5a2d66e39b', True) }}"      ssh_user: openshift      sudo: yes    online: diff --git a/playbooks/openstack/openshift-cluster/config.yml b/playbooks/openstack/openshift-cluster/config.yml index 888804e28..da7b5cc49 100644 --- a/playbooks/openstack/openshift-cluster/config.yml +++ b/playbooks/openstack/openshift-cluster/config.yml @@ -1,5 +1,7 @@  - hosts: localhost    gather_facts: no +  become: no +  connection: local    vars_files:    - vars.yml    tasks: @@ -9,10 +11,10 @@  - include: ../../common/openshift-cluster/config.yml    vars: -    g_etcd_group: "{{ 'tag_env-host-type_' ~ cluster_id ~ '-openshift-etcd' }}" -    g_lb_group: "{{ 'tag_env-host-type_' ~ cluster_id ~ '-openshift-lb' }}" -    g_masters_group: "{{ 'tag_env-host-type_' ~ cluster_id ~ '-openshift-master' }}" -    g_nodes_group: "{{ 'tag_env-host-type_' ~ cluster_id ~ '-openshift-node' }}" +    g_etcd_hosts:   "{{ (groups['tag_host-type_etcd']|default([]))   | intersect((groups['tag_env_' ~ cluster_id]|default([]))) }}" +    g_lb_hosts:     "{{ (groups['tag_host-type_lb']|default([]))     | intersect((groups['tag_env_' ~ cluster_id]|default([]))) }}" +    g_master_hosts: "{{ (groups['tag_host-type_master']|default([])) | intersect((groups['tag_env_' ~ cluster_id]|default([]))) }}" +    g_node_hosts:   "{{ (groups['tag_host-type_node']|default([]))   | intersect((groups['tag_env_' ~ cluster_id]|default([]))) }}"      g_ssh_user: "{{ hostvars.localhost.g_ssh_user_tmp }}"      g_sudo: "{{ hostvars.localhost.g_sudo_tmp }}"      openshift_cluster_id: "{{ cluster_id }}" diff --git a/playbooks/openstack/openshift-cluster/files/heat_stack_server.yaml b/playbooks/openstack/openshift-cluster/files/heat_stack_server.yaml index 9dcab3e60..3f24a3e45 100644 --- a/playbooks/openstack/openshift-cluster/files/heat_stack_server.yaml +++ b/playbooks/openstack/openshift-cluster/files/heat_stack_server.yaml @@ -107,12 +107,6 @@ resources:        metadata:          env: { get_param: cluster_id }          host-type: { get_param: type } -        env-host-type: -          str_replace: -            template: cluster_id-openshift-type -            params: -              cluster_id: { get_param: cluster_id } -              type:       { get_param: type }          sub-host-type:    { get_param: subtype }    port: diff --git a/playbooks/openstack/openshift-cluster/launch.yml b/playbooks/openstack/openshift-cluster/launch.yml index b18512495..876ca595a 100644 --- a/playbooks/openstack/openshift-cluster/launch.yml +++ b/playbooks/openstack/openshift-cluster/launch.yml @@ -1,6 +1,7 @@  ---  - name: Launch instance(s)    hosts: localhost +  become: no    connection: local    gather_facts: no    vars_files: @@ -70,7 +71,7 @@        ansible_ssh_host: '{{ item[2] }}'        ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"        ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" -      groups: 'tag_env_{{ cluster_id }}, tag_host-type_etcd, tag_env-host-type_{{ cluster_id }}-openshift-etcd, tag_sub-host-type_default' +      groups: 'tag_env_{{ cluster_id }}, tag_host-type_etcd, tag_sub-host-type_default'      with_together:        - parsed_outputs.etcd_names        - parsed_outputs.etcd_ips @@ -82,7 +83,7 @@        ansible_ssh_host: '{{ item[2] }}'        ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"        ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" -      groups: 'tag_env_{{ cluster_id }}, tag_host-type_master, tag_env-host-type_{{ cluster_id }}-openshift-master, tag_sub-host-type_default' +      groups: 'tag_env_{{ cluster_id }}, tag_host-type_master, tag_sub-host-type_default'      with_together:        - parsed_outputs.master_names        - parsed_outputs.master_ips @@ -94,7 +95,7 @@        ansible_ssh_host: '{{ item[2] }}'        ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"        ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" -      groups: 'tag_env_{{ cluster_id }}, tag_host-type_node, tag_env-host-type_{{ cluster_id }}-openshift-node, tag_sub-host-type_compute' +      groups: 'tag_env_{{ cluster_id }}, tag_host-type_node, tag_sub-host-type_compute'      with_together:        - parsed_outputs.node_names        - parsed_outputs.node_ips @@ -106,7 +107,7 @@        ansible_ssh_host: '{{ item[2] }}'        ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"        ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" -      groups: 'tag_env_{{ cluster_id }}, tag_host-type_node, tag_env-host-type_{{ cluster_id }}-openshift-node, tag_sub-host-type_infra' +      groups: 'tag_env_{{ cluster_id }}, tag_host-type_node, tag_sub-host-type_infra'      with_together:        - parsed_outputs.infra_names        - parsed_outputs.infra_ips diff --git a/playbooks/openstack/openshift-cluster/list.yml b/playbooks/openstack/openshift-cluster/list.yml index fa194b072..436d3e6f7 100644 --- a/playbooks/openstack/openshift-cluster/list.yml +++ b/playbooks/openstack/openshift-cluster/list.yml @@ -1,6 +1,8 @@  ---  - name: Generate oo_list_hosts group    hosts: localhost +  become: no +  connection: local    gather_facts: no    vars_files:    - vars.yml @@ -22,6 +24,8 @@  - name: List Hosts    hosts: localhost +  become: no +  connection: local    gather_facts: no    vars_files:    - vars.yml diff --git a/playbooks/openstack/openshift-cluster/terminate.yml b/playbooks/openstack/openshift-cluster/terminate.yml index 62df2be73..2a7f04505 100644 --- a/playbooks/openstack/openshift-cluster/terminate.yml +++ b/playbooks/openstack/openshift-cluster/terminate.yml @@ -1,5 +1,6 @@  - name: Terminate instance(s)    hosts: localhost +  become: no    connection: local    gather_facts: no    vars_files: @@ -25,6 +26,7 @@              default('no', True) | lower in ['no', 'false']  - hosts: localhost +  become: no    connection: local    gather_facts: no    vars_files: diff --git a/playbooks/openstack/openshift-cluster/update.yml b/playbooks/openstack/openshift-cluster/update.yml index e006aa74a..4ecf75a5d 100644 --- a/playbooks/openstack/openshift-cluster/update.yml +++ b/playbooks/openstack/openshift-cluster/update.yml @@ -1,7 +1,15 @@  ---  - name: Populate oo_hosts_to_update group    hosts: localhost +  become: no +  connection: local    gather_facts: no +  vars: +    g_etcd_hosts:   "{{ (groups['tag_host-type_etcd']|default([])) | intersect(groups['tag_env_' ~ cluster_id]) }}" +    g_lb_hosts:     "{{ (groups['tag_host-type_lb']|default([])) | intersect(groups['tag_env_' ~ cluster_id]) }}" +    g_master_hosts: "{{ (groups['tag_host-type_master']|default([])) | intersect(groups['tag_env_' ~ cluster_id]) }}" +    g_node_hosts:   "{{ (groups['tag_host-type_node']|default([])) | intersect((groups['tag_env_' ~ cluster_id]|default([]))) }}" +    vars_files:    - vars.yml    tasks: @@ -11,9 +19,7 @@        groups: oo_hosts_to_update        ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}"        ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" -    with_items: (groups["tag_env-host-type_{{ cluster_id }}-openshift-master"] | default([])) -                | union(groups["tag_env-host-type_{{ cluster_id }}-openshift-node"] | default([])) -                | union(groups["tag_env-host-type_{{ cluster_id }}-openshift-etcd"] | default([])) +    with_items: "{{ g_master_hosts | union(g_node_hosts) | union(g_etcd_hosts) | default([]) }}"  - include: ../../common/openshift-cluster/update_repos_and_packages.yml diff --git a/roles/openshift_master/tasks/main.yml b/roles/openshift_master/tasks/main.yml index bd3d8f90c..43647cc49 100644 --- a/roles/openshift_master/tasks/main.yml +++ b/roles/openshift_master/tasks/main.yml @@ -135,13 +135,11 @@    template:      src: atomic-openshift-master-api.service.j2      dest: /usr/lib/systemd/system/{{ openshift.common.service_type }}-master-api.service -    force: no    when: openshift_master_ha | bool and openshift_master_cluster_method == "native"  - name: Create the controllers service file    template:      src: atomic-openshift-master-controllers.service.j2      dest: /usr/lib/systemd/system/{{ openshift.common.service_type }}-master-controllers.service -    force: no    when: openshift_master_ha | bool and openshift_master_cluster_method == "native"  - name: Create the api env file    template: @@ -230,7 +228,7 @@    register: start_result  - set_fact: -    master_service_status_changed = start_result | changed +    master_service_status_changed: start_result | changed    when: not openshift_master_ha | bool  - name: Start and enable master api @@ -239,19 +237,16 @@    register: start_result  - set_fact: -    master_api_service_status_changed = start_result | changed +    master_api_service_status_changed: start_result | changed    when: openshift_master_ha | bool and openshift.master.cluster_method == 'native' -# TODO: fix the ugly workaround of setting ignore_errors -#       the controllers service tries to start even if it is already started  - name: Start and enable master controller    service: name={{ openshift.common.service_type }}-master-controllers enabled=yes state=started    when: openshift_master_ha | bool and openshift.master.cluster_method == 'native'    register: start_result -  ignore_errors: yes  - set_fact: -    master_controllers_service_status_changed = start_result | changed +    master_controllers_service_status_changed: start_result | changed    when: openshift_master_ha | bool and openshift.master.cluster_method == 'native'  - name: Install cluster packages diff --git a/roles/openshift_master/templates/atomic-openshift-master-controllers.service.j2 b/roles/openshift_master/templates/atomic-openshift-master-controllers.service.j2 index 8952c86ef..ef0b57ef4 100644 --- a/roles/openshift_master/templates/atomic-openshift-master-controllers.service.j2 +++ b/roles/openshift_master/templates/atomic-openshift-master-controllers.service.j2 @@ -7,7 +7,7 @@ Before={{ openshift.common.service_type }}-node.service  Requires=network.target  [Service] -Type=notify +Type=simple  EnvironmentFile=/etc/sysconfig/{{ openshift.common.service_type }}-master-controllers  Environment=GOTRACEBACK=crash  ExecStart=/usr/bin/openshift start master controllers --config=${CONFIG_FILE} $OPTIONS diff --git a/roles/openshift_node/tasks/main.yml b/roles/openshift_node/tasks/main.yml index eef7bec9a..38bffc2e5 100644 --- a/roles/openshift_node/tasks/main.yml +++ b/roles/openshift_node/tasks/main.yml @@ -85,11 +85,11 @@      docker_additional_registries: "{{ lookup('oo_option', 'docker_additional_registries')                                        | oo_split() | union(['registry.access.redhat.com'])                                        | difference(['']) }}" -  when: openshift.common.deployment_type == 'enterprise' +  when: openshift.common.deployment_type in ['enterprise', 'openshift-enterprise', 'atomic-enterprise']  - set_fact:      docker_additional_registries: "{{ lookup('oo_option', 'docker_additional_registries')                                        | oo_split() | difference(['']) }}" -  when: openshift.common.deployment_type != 'enterprise' +  when: openshift.common.deployment_type not in ['enterprise', 'openshift-enterprise', 'atomic-enterprise']  - name: Add personal registries    lineinfile: @@ -131,4 +131,4 @@    register: start_result  - set_fact: -    node_service_status_changed = start_result | changed +    node_service_status_changed: start_result | changed diff --git a/roles/os_zabbix/tasks/main.yml b/roles/os_zabbix/tasks/main.yml index d0b307a3d..7552086d4 100644 --- a/roles/os_zabbix/tasks/main.yml +++ b/roles/os_zabbix/tasks/main.yml @@ -37,6 +37,9 @@  - include_vars: template_aws.yml    tags:    - aws +- include_vars: template_zagg_server.yml +  tags: +  - zagg_server  - name: Include Template Heartbeat    include: ../../lib_zabbix/tasks/create_template.yml @@ -137,3 +140,13 @@      password: "{{ ozb_password }}"    tags:    - aws + +- name: Include Template Zagg Server +  include: ../../lib_zabbix/tasks/create_template.yml +  vars: +    template: "{{ g_template_zagg_server }}" +    server: "{{ ozb_server }}" +    user: "{{ ozb_user }}" +    password: "{{ ozb_password }}" +  tags: +  - zagg_server diff --git a/roles/os_zabbix/vars/template_openshift_master.yml b/roles/os_zabbix/vars/template_openshift_master.yml index 514d6fd24..a0ba8d104 100644 --- a/roles/os_zabbix/vars/template_openshift_master.yml +++ b/roles/os_zabbix/vars/template_openshift_master.yml @@ -269,6 +269,14 @@ g_template_openshift_master:      - 'Openshift Master process not running on {HOST.NAME}'      priority: avg +  - name: 'Application creation has failed multiple times in the last hour on {HOST.NAME}' +    expression: '{Template Openshift Master:create_app.sum(1h)}>3' +    url: 'https://github.com/openshift/ops-sop/blob/master/V3/Alerts/check_create_app.asciidoc' +    dependencies: +    - 'Openshift Master process not running on {HOST.NAME}' +    description: The application create loop has failed 4 or more times in the last hour +    priority: avg +    - name: 'Openshift Master API health check is failing on {HOST.NAME}'      expression: '{Template Openshift Master:openshift.master.api.healthz.max(#3)}<1'      url: 'https://github.com/openshift/ops-sop/blob/master/V3/Alerts/openshift_master.asciidoc' diff --git a/roles/os_zabbix/vars/template_zagg_server.yml b/roles/os_zabbix/vars/template_zagg_server.yml new file mode 100644 index 000000000..0e8e53bb7 --- /dev/null +++ b/roles/os_zabbix/vars/template_zagg_server.yml @@ -0,0 +1,36 @@ +--- +g_template_zagg_server: +  name: Template Zagg Server +  zitems: +  - key: zagg.server.metrics.count +    applications: +    - Zagg Server +    value_type: int + +  - key: zagg.server.processor.errors +    applications: +    - Zagg Server +    value_type: int + +  - key: zagg.server.heartbeat.count +    applications: +    - Zagg Server +    value_type: int + +  ztriggers: +  - name: 'Error sending metrics on {HOST.NAME}' +    expression: '{Template Zagg Server:zagg.server.processor.errors.min(#3)}>0' +    url: 'https://github.com/openshift/ops-sop/blob/master/V3/Alerts/zagg_server.asciidoc' +    priority: average + +  - name: 'Critically High number of metrics in Zagg queue {HOST.NAME}' +    expression: '{Template Zagg Server:zagg.server.metrics.count.min(#3)}>10000' +    url: 'https://github.com/openshift/ops-sop/blob/master/V3/Alerts/zagg_server.asciidoc' +    priority: high + +  - name: 'High number of metrics in Zagg queue {HOST.NAME}' +    expression: '{Template Zagg Server:zagg.server.metrics.count.min(#3)}>5000' +    url: 'https://github.com/openshift/ops-sop/blob/master/V3/Alerts/zagg_server.asciidoc' +    dependencies: +    - 'Critically High number of metrics in Zagg queue {HOST.NAME}' +    priority: average  | 
