diff options
Diffstat (limited to 'roles')
10 files changed, 298 insertions, 1282 deletions
| diff --git a/roles/etcd_client_certificates/library b/roles/etcd_client_certificates/library deleted file mode 120000 index 494d3c39e..000000000 --- a/roles/etcd_client_certificates/library +++ /dev/null @@ -1 +0,0 @@ -../../library
\ No newline at end of file diff --git a/roles/etcd_common/library/delegated_serial_command.py b/roles/etcd_common/library/delegated_serial_command.py new file mode 100755 index 000000000..3969edfdd --- /dev/null +++ b/roles/etcd_common/library/delegated_serial_command.py @@ -0,0 +1,275 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +# (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>, and others +# (c) 2016, Andrew Butcher <abutcher@redhat.com> +# +# This module is derrived from the Ansible command module. +# +# Ansible is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ansible is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Ansible.  If not, see <http://www.gnu.org/licenses/>. + + +# pylint: disable=unused-wildcard-import,wildcard-import,unused-import,redefined-builtin + +''' delegated_serial_command ''' + +import copy +import sys +import datetime +import glob +import traceback +import re +import shlex +import os +import fcntl +import time + +DOCUMENTATION = ''' +--- +module: delegated_serial_command +short_description: Executes a command on a remote node +version_added: historical +description: +     - The M(command) module takes the command name followed by a list +       of space-delimited arguments. +     - The given command will be executed on all selected nodes. It +       will not be processed through the shell, so variables like +       C($HOME) and operations like C("<"), C(">"), C("|"), and C("&") +       will not work (use the M(shell) module if you need these +       features). +     - Creates and maintains a lockfile such that this module will +       wait for other invocations to proceed. +options: +  command: +    description: +      - the command to run +    required: true +    default: null +  creates: +    description: +      - a filename or (since 2.0) glob pattern, when it already +        exists, this step will B(not) be run. +    required: no +    default: null +  removes: +    description: +      - a filename or (since 2.0) glob pattern, when it does not +        exist, this step will B(not) be run. +    version_added: "0.8" +    required: no +    default: null +  chdir: +    description: +      - cd into this directory before running the command +    version_added: "0.6" +    required: false +    default: null +  executable: +    description: +      - change the shell used to execute the command. Should be an +        absolute path to the executable. +    required: false +    default: null +    version_added: "0.9" +  warn: +    version_added: "1.8" +    default: yes +    description: +      - if command warnings are on in ansible.cfg, do not warn about +        this particular line if set to no/false. +    required: false +  lockfile: +    default: yes +    description: +      - the lockfile that will be created +  timeout: +    default: yes +    description: +      - time in milliseconds to wait to obtain the lock +notes: +    -  If you want to run a command through the shell (say you are using C(<), +       C(>), C(|), etc), you actually want the M(shell) module instead. The +       M(command) module is much more secure as it's not affected by the user's +       environment. +    - " C(creates), C(removes), and C(chdir) can be specified after +       the command. For instance, if you only want to run a command if +       a certain file does not exist, use this." +author: +    - Ansible Core Team +    - Michael DeHaan +    - Andrew Butcher +''' + +EXAMPLES = ''' +# Example from Ansible Playbooks. +- delegated_serial_command: +    command: /sbin/shutdown -t now + +# Run the command if the specified file does not exist. +- delegated_serial_command: +    command: /usr/bin/make_database.sh arg1 arg2 +    creates: /path/to/database +''' + +# Dict of options and their defaults +OPTIONS = {'chdir': None, +           'creates': None, +           'command': None, +           'executable': None, +           'NO_LOG': None, +           'removes': None, +           'warn': True, +           'lockfile': None, +           'timeout': None} + +def check_command(commandline): +    ''' Check provided command ''' +    arguments = {'chown': 'owner', 'chmod': 'mode', 'chgrp': 'group', +                 'ln': 'state=link', 'mkdir': 'state=directory', +                 'rmdir': 'state=absent', 'rm': 'state=absent', 'touch': 'state=touch'} +    commands = {'git': 'git', 'hg': 'hg', 'curl': 'get_url or uri', 'wget': 'get_url or uri', +                'svn': 'subversion', 'service': 'service', +                'mount': 'mount', 'rpm': 'yum, dnf or zypper', 'yum': 'yum', 'apt-get': 'apt', +                'tar': 'unarchive', 'unzip': 'unarchive', 'sed': 'template or lineinfile', +                'rsync': 'synchronize', 'dnf': 'dnf', 'zypper': 'zypper'} +    become = ['sudo', 'su', 'pbrun', 'pfexec', 'runas'] +    warnings = list() +    command = os.path.basename(commandline.split()[0]) +    # pylint: disable=line-too-long +    if command in arguments: +        warnings.append("Consider using file module with {0} rather than running {1}".format(arguments[command], command)) +    if command in commands: +        warnings.append("Consider using {0} module rather than running {1}".format(commands[command], command)) +    if command in become: +        warnings.append( +            "Consider using 'become', 'become_method', and 'become_user' rather than running {0}".format(command,)) +    return warnings + + +# pylint: disable=too-many-statements,too-many-branches,too-many-locals +def main(): +    ''' Main module function ''' +    module = AnsibleModule( +        argument_spec=dict( +            _uses_shell=dict(type='bool', default=False), +            command=dict(required=True), +            chdir=dict(), +            executable=dict(), +            creates=dict(), +            removes=dict(), +            warn=dict(type='bool', default=True), +            lockfile=dict(default='/tmp/delegated_serial_command.lock'), +            timeout=dict(type='int', default=30) +        ) +    ) + +    shell = module.params['_uses_shell'] +    chdir = module.params['chdir'] +    executable = module.params['executable'] +    command = module.params['command'] +    creates = module.params['creates'] +    removes = module.params['removes'] +    warn = module.params['warn'] +    lockfile = module.params['lockfile'] +    timeout = module.params['timeout'] + +    if command.strip() == '': +        module.fail_json(rc=256, msg="no command given") + +    iterated = 0 +    lockfd = open(lockfile, 'w+') +    while iterated < timeout: +        try: +            fcntl.flock(lockfd, fcntl.LOCK_EX | fcntl.LOCK_NB) +            break +        # pylint: disable=invalid-name +        except IOError as e: +            if e.errno != errno.EAGAIN: +                module.fail_json(msg="I/O Error {0}: {1}".format(e.errno, e.strerror)) +            else: +                iterated += 1 +                time.sleep(0.1) + +    if chdir: +        chdir = os.path.abspath(os.path.expanduser(chdir)) +        os.chdir(chdir) + +    if creates: +        # do not run the command if the line contains creates=filename +        # and the filename already exists.  This allows idempotence +        # of command executions. +        path = os.path.expanduser(creates) +        if glob.glob(path): +            module.exit_json( +                cmd=command, +                stdout="skipped, since %s exists" % path, +                changed=False, +                stderr=False, +                rc=0 +            ) + +    if removes: +    # do not run the command if the line contains removes=filename +    # and the filename does not exist.  This allows idempotence +    # of command executions. +        path = os.path.expanduser(removes) +        if not glob.glob(path): +            module.exit_json( +                cmd=command, +                stdout="skipped, since %s does not exist" % path, +                changed=False, +                stderr=False, +                rc=0 +            ) + +    warnings = list() +    if warn: +        warnings = check_command(command) + +    if not shell: +        command = shlex.split(command) +    startd = datetime.datetime.now() + +    # pylint: disable=invalid-name +    rc, out, err = module.run_command(command, executable=executable, use_unsafe_shell=shell) + +    fcntl.flock(lockfd, fcntl.LOCK_UN) +    lockfd.close() + +    endd = datetime.datetime.now() +    delta = endd - startd + +    if out is None: +        out = '' +    if err is None: +        err = '' + +    module.exit_json( +        cmd=command, +        stdout=out.rstrip("\r\n"), +        stderr=err.rstrip("\r\n"), +        rc=rc, +        start=str(startd), +        end=str(endd), +        delta=str(delta), +        changed=True, +        warnings=warnings, +        iterated=iterated +    ) + +# import module snippets +from ansible.module_utils.basic import * +from ansible.module_utils.splitter import * + +main() diff --git a/roles/etcd_server_certificates/library b/roles/etcd_server_certificates/library deleted file mode 120000 index 494d3c39e..000000000 --- a/roles/etcd_server_certificates/library +++ /dev/null @@ -1 +0,0 @@ -../../library
\ No newline at end of file diff --git a/roles/openshift_examples/examples-sync.sh b/roles/openshift_examples/examples-sync.sh index 1ad0d93a2..48da98017 100755 --- a/roles/openshift_examples/examples-sync.sh +++ b/roles/openshift_examples/examples-sync.sh @@ -14,27 +14,13 @@ TEMP=`mktemp -d`  pushd $TEMP  wget https://github.com/openshift/origin/archive/master.zip -O origin-master.zip -wget https://github.com/openshift/django-ex/archive/master.zip -O django-ex-master.zip -wget https://github.com/openshift/rails-ex/archive/master.zip -O rails-ex-master.zip -wget https://github.com/openshift/nodejs-ex/archive/master.zip -O nodejs-ex-master.zip -wget https://github.com/openshift/dancer-ex/archive/master.zip -O dancer-ex-master.zip -wget https://github.com/openshift/cakephp-ex/archive/master.zip -O cakephp-ex-master.zip  wget https://github.com/jboss-openshift/application-templates/archive/${XPAAS_VERSION}.zip -O application-templates-master.zip  unzip origin-master.zip -unzip django-ex-master.zip -unzip rails-ex-master.zip -unzip nodejs-ex-master.zip -unzip dancer-ex-master.zip -unzip cakephp-ex-master.zip  unzip application-templates-master.zip  cp origin-master/examples/db-templates/* ${EXAMPLES_BASE}/db-templates/ +cp origin-master/examples/quickstarts/* ${EXAMPLES_BASE}/quickstart-templates/  cp origin-master/examples/jenkins/jenkins-*template.json ${EXAMPLES_BASE}/quickstart-templates/  cp origin-master/examples/image-streams/* ${EXAMPLES_BASE}/image-streams/ -cp django-ex-master/openshift/templates/* ${EXAMPLES_BASE}/quickstart-templates/ -cp rails-ex-master/openshift/templates/* ${EXAMPLES_BASE}/quickstart-templates/ -cp nodejs-ex-master/openshift/templates/* ${EXAMPLES_BASE}/quickstart-templates/ -cp dancer-ex-master/openshift/templates/* ${EXAMPLES_BASE}/quickstart-templates/ -cp cakephp-ex-master/openshift/templates/* ${EXAMPLES_BASE}/quickstart-templates/  mv application-templates-${XPAAS_VERSION}/jboss-image-streams.json ${EXAMPLES_BASE}/xpaas-streams/  find application-templates-${XPAAS_VERSION}/ -name '*.json' ! -wholename '*secret*' ! -wholename '*demo*' -exec mv {} ${EXAMPLES_BASE}/xpaas-templates/ \;  wget https://raw.githubusercontent.com/jboss-fuse/application-templates/master/fis-image-streams.json          -O ${EXAMPLES_BASE}/xpaas-streams/fis-image-streams.json diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/cakephp.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/cakephp.json deleted file mode 100644 index dc6ecb5c7..000000000 --- a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/cakephp.json +++ /dev/null @@ -1,343 +0,0 @@ -{ -  "kind": "Template", -  "apiVersion": "v1", -  "metadata": { -    "name": "cakephp-example", -    "annotations": { -      "description": "An example CakePHP application with no database", -      "tags": "quickstart,php,cakephp", -      "iconClass": "icon-php" -    } -  }, -  "labels": { -    "template": "cakephp-example" -  }, -  "objects": [ -    { -      "kind": "Service", -      "apiVersion": "v1", -      "metadata": { -        "name": "${NAME}", -        "annotations": { -          "description": "Exposes and load balances the application pods" -        } -      }, -      "spec": { -        "ports": [ -          { -            "name": "web", -            "port": 8080, -            "targetPort": 8080 -          } -        ], -        "selector": { -          "name": "${NAME}" -        } -      } -    }, -    { -      "kind": "Route", -      "apiVersion": "v1", -      "metadata": { -        "name": "${NAME}" -      }, -      "spec": { -        "host": "${APPLICATION_DOMAIN}", -        "to": { -          "kind": "Service", -          "name": "${NAME}" -        } -      } -    }, -    { -      "kind": "ImageStream", -      "apiVersion": "v1", -      "metadata": { -        "name": "${NAME}", -        "annotations": { -          "description": "Keeps track of changes in the application image" -        } -      } -    }, -    { -      "kind": "BuildConfig", -      "apiVersion": "v1", -      "metadata": { -        "name": "${NAME}", -        "annotations": { -          "description": "Defines how to build the application" -        } -      }, -      "spec": { -        "source": { -          "type": "Git", -          "git": { -            "uri": "${SOURCE_REPOSITORY_URL}", -            "ref": "${SOURCE_REPOSITORY_REF}" -          }, -          "contextDir": "${CONTEXT_DIR}" -        }, -        "strategy": { -          "type": "Source", -          "sourceStrategy": { -            "from": { -              "kind": "ImageStreamTag", -              "namespace": "${NAMESPACE}", -              "name": "php:5.6" -            }, -            "env":  [ -              { -                  "name": "COMPOSER_MIRROR", -                  "value": "${COMPOSER_MIRROR}" -              } -            ] -          } -        }, -        "output": { -          "to": { -            "kind": "ImageStreamTag", -            "name": "${NAME}:latest" -          } -        }, -        "triggers": [ -          { -            "type": "ImageChange" -          }, -          { -            "type": "ConfigChange" -          }, -          { -            "type": "GitHub", -            "github": { -              "secret": "${GITHUB_WEBHOOK_SECRET}" -            } -          } -        ] -      } -    }, -    { -      "kind": "DeploymentConfig", -      "apiVersion": "v1", -      "metadata": { -        "name": "${NAME}", -        "annotations": { -          "description": "Defines how to deploy the application server" -        } -      }, -      "spec": { -        "strategy": { -          "type": "Rolling" -        }, -        "triggers": [ -          { -            "type": "ImageChange", -            "imageChangeParams": { -              "automatic": true, -              "containerNames": [ -                "cakephp-example" -              ], -              "from": { -                "kind": "ImageStreamTag", -                "name": "${NAME}:latest" -              } -            } -          }, -          { -            "type": "ConfigChange" -          } -        ], -        "replicas": 1, -        "selector": { -          "name": "${NAME}" -        }, -        "template": { -          "metadata": { -            "name": "${NAME}", -            "labels": { -              "name": "${NAME}" -            } -          }, -          "spec": { -            "containers": [ -              { -                "name": "cakephp-example", -                "image": " ", -                "ports": [ -                  { -                    "containerPort": 8080 -                  } -                ], -                "readinessProbe": { -                  "timeoutSeconds": 3, -                  "initialDelaySeconds": 3, -                  "httpGet": { -                    "path": "/", -                    "port": 8080 -                  } -                }, -                "livenessProbe": { -                    "timeoutSeconds": 3, -                    "initialDelaySeconds": 30, -                    "httpGet": { -                        "path": "/", -                        "port": 8080 -                    } -                }, -                "env": [ -                  { -                    "name": "DATABASE_SERVICE_NAME", -                    "value": "${DATABASE_SERVICE_NAME}" -                  }, -                  { -                    "name": "DATABASE_ENGINE", -                    "value": "${DATABASE_ENGINE}" -                  }, -                  { -                    "name": "DATABASE_NAME", -                    "value": "${DATABASE_NAME}" -                  }, -                  { -                    "name": "DATABASE_USER", -                    "value": "${DATABASE_USER}" -                  }, -                  { -                    "name": "DATABASE_PASSWORD", -                    "value": "${DATABASE_PASSWORD}" -                  }, -                  { -                    "name": "CAKEPHP_SECRET_TOKEN", -                    "value": "${CAKEPHP_SECRET_TOKEN}" -                  }, -                  { -                    "name": "CAKEPHP_SECURITY_SALT", -                    "value": "${CAKEPHP_SECURITY_SALT}" -                  }, -                  { -                    "name": "CAKEPHP_SECURITY_CIPHER_SEED", -                    "value": "${CAKEPHP_SECURITY_CIPHER_SEED}" -                  }, -                  { -                    "name": "OPCACHE_REVALIDATE_FREQ", -                    "value": "${OPCACHE_REVALIDATE_FREQ}" -                  } -                ], -		"resources": { -		    "limits": { -			"memory": "${MEMORY_LIMIT}" -		    } -		} -              } -            ] -          } -        } -      } -    } -  ], -  "parameters": [ -    { -      "name": "NAME", -      "displayName": "Name", -      "description": "The name assigned to all of the frontend objects defined in this template.", -      "required": true, -      "value": "cakephp-example" -    }, -    { -      "name": "NAMESPACE", -      "displayName": "Namespace", -      "description": "The OpenShift Namespace where the ImageStream resides.", -      "required": true, -      "value": "openshift" -    }, -    { -      "name": "MEMORY_LIMIT", -      "displayName": "Memory Limit", -      "description": "Maximum amount of memory the container can use.", -      "required": true, -      "value": "512Mi" -    }, -    { -      "name": "SOURCE_REPOSITORY_URL", -      "displayName": "Git Repository URL", -      "description": "The URL of the repository with your application source code.", -      "required": true, -      "value": "https://github.com/openshift/cakephp-ex.git" -    }, -    { -      "name": "SOURCE_REPOSITORY_REF", -      "displayName": "Git Reference", -      "description": "Set this to a branch name, tag or other ref of your repository if you are not using the default branch." -    }, -    { -      "name": "CONTEXT_DIR", -      "displayName": "Context Directory", -      "description": "Set this to the relative path to your project if it is not in the root of your repository." -    }, -    { -      "name": "APPLICATION_DOMAIN", -      "displayName": "Application Hostname", -      "description": "The exposed hostname that will route to the CakePHP service, if left blank a value will be defaulted.", -      "value": "" -    }, -    { -      "name": "GITHUB_WEBHOOK_SECRET", -      "displayName": "GitHub Webhook Secret", -      "description": "A secret string used to configure the GitHub webhook.", -      "generate": "expression", -      "from": "[a-zA-Z0-9]{40}" -    }, -    { -      "name": "DATABASE_SERVICE_NAME", -      "displayName": "Database Service Name" -    }, -    { -      "name": "DATABASE_ENGINE", -      "displayName": "Database Engine", -      "description": "Database engine: postgresql, mysql or sqlite (default)." -    }, -    { -      "name": "DATABASE_NAME", -      "displayName": "Database Name" -    }, -    { -      "name": "DATABASE_USER", -      "displayName": "Database User" -    }, -    { -      "name": "DATABASE_PASSWORD", -      "displayName": "Database Password" -    }, -    { -      "name": "CAKEPHP_SECRET_TOKEN", -      "displayName": "CakePHP Secret Token", -      "description": "Set this to a long random string.", -      "generate": "expression", -      "from": "[\\w]{50}" -    }, -    { -      "name": "CAKEPHP_SECURITY_SALT", -      "displayName": "CakePHP Security Salt", -      "description": "Security salt for session hash.", -      "generate": "expression", -      "from": "[a-zA-Z0-9]{40}" -    }, -    { -      "name": "CAKEPHP_SECURITY_CIPHER_SEED", -      "displayName": "CakePHP Security Cipher Seed", -      "description": "Security cipher seed for session hash.", -      "generate": "expression", -      "from": "[0-9]{30}" -    }, -    { -      "name": "OPCACHE_REVALIDATE_FREQ", -      "displayName": "OPcache Revalidation Frequency", -      "description": "How often to check script timestamps for updates, in seconds. 0 will result in OPcache checking for updates on every request.", -      "value": "2" -    }, -    { -      "name": "COMPOSER_MIRROR", -      "displayName": "Custom Composer Mirror URL", -      "description": "The custom Composer mirror URL", -      "value": "" -    } -  ] -} diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/dancer.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/dancer.json deleted file mode 100644 index 46b8984e3..000000000 --- a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/dancer.json +++ /dev/null @@ -1,276 +0,0 @@ -{ -  "kind": "Template", -  "apiVersion": "v1", -  "metadata": { -    "name": "dancer-example", -    "annotations": { -      "description": "An example Dancer application with no database", -      "tags": "quickstart,perl,dancer", -      "iconClass": "icon-perl" -    } -  }, -  "labels": { -    "template": "dancer-example" -  }, -  "objects": [ -    { -      "kind": "Service", -      "apiVersion": "v1", -      "metadata": { -        "name": "${NAME}", -        "annotations": { -          "description": "Exposes and load balances the application pods" -        } -      }, -      "spec": { -        "ports": [ -          { -            "name": "web", -            "port": 8080, -            "targetPort": 8080 -          } -        ], -        "selector": { -          "name": "${NAME}" -        } -      } -    }, -    { -      "kind": "Route", -      "apiVersion": "v1", -      "metadata": { -        "name": "${NAME}" -      }, -      "spec": { -        "host": "${APPLICATION_DOMAIN}", -        "to": { -          "kind": "Service", -          "name": "${NAME}" -        } -      } -    }, -    { -      "kind": "ImageStream", -      "apiVersion": "v1", -      "metadata": { -        "name": "${NAME}", -        "annotations": { -          "description": "Keeps track of changes in the application image" -        } -      } -    }, -    { -      "kind": "BuildConfig", -      "apiVersion": "v1", -      "metadata": { -        "name": "${NAME}", -        "annotations": { -          "description": "Defines how to build the application" -        } -      }, -      "spec": { -        "source": { -          "type": "Git", -          "git": { -            "uri": "${SOURCE_REPOSITORY_URL}", -            "ref": "${SOURCE_REPOSITORY_REF}" -          }, -          "contextDir": "${CONTEXT_DIR}" -        }, -        "strategy": { -          "type": "Source", -          "sourceStrategy": { -            "from": { -              "kind": "ImageStreamTag", -              "namespace": "${NAMESPACE}", -              "name": "perl:5.20" -            }, -            "env":  [ -              { -                  "name": "CPAN_MIRROR", -                  "value": "${CPAN_MIRROR}" -              } -            ] -          } -        }, -        "output": { -          "to": { -            "kind": "ImageStreamTag", -            "name": "${NAME}:latest" -          } -        }, -        "triggers": [ -          { -            "type": "ImageChange" -          }, -          { -            "type": "ConfigChange" -          }, -          { -            "type": "GitHub", -            "github": { -              "secret": "${GITHUB_WEBHOOK_SECRET}" -            } -          } -        ] -      } -    }, -    { -      "kind": "DeploymentConfig", -      "apiVersion": "v1", -      "metadata": { -        "name": "${NAME}", -        "annotations": { -          "description": "Defines how to deploy the application server" -        } -      }, -      "spec": { -        "strategy": { -          "type": "Rolling" -        }, -        "triggers": [ -          { -            "type": "ImageChange", -            "imageChangeParams": { -              "automatic": true, -              "containerNames": [ -                "dancer-example" -              ], -              "from": { -                "kind": "ImageStreamTag", -                "name": "${NAME}:latest" -              } -            } -          }, -          { -            "type": "ConfigChange" -          } -        ], -        "replicas": 1, -        "selector": { -          "name": "${NAME}" -        }, -        "template": { -          "metadata": { -            "name": "${NAME}", -            "labels": { -              "name": "${NAME}" -            } -          }, -          "spec": { -            "containers": [ -              { -                "name": "dancer-example", -                "image": " ", -                "ports": [ -                  { -                    "containerPort": 8080 -                  } -                ], -                "readinessProbe": { -                  "timeoutSeconds": 3, -                  "initialDelaySeconds": 3, -                  "httpGet": { -                    "path": "/", -                    "port": 8080 -                  } -                }, -                "livenessProbe": { -                    "timeoutSeconds": 3, -                    "initialDelaySeconds": 30, -                    "httpGet": { -                        "path": "/", -                        "port": 8080 -                    } -                }, -                "env": [ -                  { -                    "name": "PERL_APACHE2_RELOAD", -                    "value": "${PERL_APACHE2_RELOAD}" -                  } -                ], -                "resources": { -		      "limits": { -			  "memory": "${MEMORY_LIMIT}" -		      } -                } -              } -            ] -          } -        } -      } -    } -  ], -  "parameters": [ -    { -      "name": "NAME", -      "displayName": "Name", -      "description": "The name assigned to all of the frontend objects defined in this template.", -      "required": true, -      "value": "dancer-example" -    }, -    { -      "name": "NAMESPACE", -      "displayName": "Namespace", -      "description": "The OpenShift Namespace where the ImageStream resides.", -      "required": true, -      "value": "openshift" -    }, -    { -      "name": "MEMORY_LIMIT", -      "displayName": "Memory Limit", -      "description": "Maximum amount of memory the container can use.", -      "required": true, -      "value": "512Mi" -    }, -    { -      "name": "SOURCE_REPOSITORY_URL", -      "displayName": "Git Repository URL", -      "description": "The URL of the repository with your application source code.", -      "required": true, -      "value": "https://github.com/openshift/dancer-ex.git" -    }, -    { -      "name": "SOURCE_REPOSITORY_REF", -      "displayName": "Git Reference", -      "description": "Set this to a branch name, tag or other ref of your repository if you are not using the default branch." -    }, -    { -      "name": "CONTEXT_DIR", -      "displayName": "Context Directory", -      "description": "Set this to the relative path to your project if it is not in the root of your repository." -    }, -    { -      "name": "APPLICATION_DOMAIN", -      "displayName": "Application Hostname", -      "description": "The exposed hostname that will route to the Dancer service, if left blank a value will be defaulted.", -      "value": "" -    }, -    { -      "name": "GITHUB_WEBHOOK_SECRET", -      "displayName": "GitHub Webhook Secret", -      "description": "A secret string used to configure the GitHub webhook.", -      "generate": "expression", -      "from": "[a-zA-Z0-9]{40}" -    }, -    { -      "name": "SECRET_KEY_BASE", -      "displayName": "Secret Key", -      "description": "Your secret key for verifying the integrity of signed cookies.", -      "generate": "expression", -      "from": "[a-z0-9]{127}" -    }, -    { -      "name": "PERL_APACHE2_RELOAD", -      "displayName": "Perl Module Reload", -      "description": "Set this to \"true\" to enable automatic reloading of modified Perl modules.", -      "value": "" -    }, -    { -      "name": "CPAN_MIRROR", -      "displayName": "Custom CPAN Mirror URL", -      "description": "The custom CPAN mirror URL", -      "value": "" -    } -  ] -} diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/django.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/django.json deleted file mode 100644 index 1c2e40d70..000000000 --- a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/django.json +++ /dev/null @@ -1,323 +0,0 @@ -{ -  "kind": "Template", -  "apiVersion": "v1", -  "metadata": { -    "name": "django-example", -    "annotations": { -      "description": "An example Django application with no database", -      "tags": "quickstart,python,django", -      "iconClass": "icon-python" -    } -  }, -  "labels": { -    "template": "django-example" -  }, -  "objects": [ -    { -      "kind": "Service", -      "apiVersion": "v1", -      "metadata": { -        "name": "${NAME}", -        "annotations": { -          "description": "Exposes and load balances the application pods" -        } -      }, -      "spec": { -        "ports": [ -          { -            "name": "web", -            "port": 8080, -            "targetPort": 8080 -          } -        ], -        "selector": { -          "name": "${NAME}" -        } -      } -    }, -    { -      "kind": "Route", -      "apiVersion": "v1", -      "metadata": { -        "name": "${NAME}" -      }, -      "spec": { -        "host": "${APPLICATION_DOMAIN}", -        "to": { -          "kind": "Service", -          "name": "${NAME}" -        } -      } -    }, -    { -      "kind": "ImageStream", -      "apiVersion": "v1", -      "metadata": { -        "name": "${NAME}", -        "annotations": { -          "description": "Keeps track of changes in the application image" -        } -      } -    }, -    { -      "kind": "BuildConfig", -      "apiVersion": "v1", -      "metadata": { -        "name": "${NAME}", -        "annotations": { -          "description": "Defines how to build the application" -        } -      }, -      "spec": { -        "source": { -          "type": "Git", -          "git": { -            "uri": "${SOURCE_REPOSITORY_URL}", -            "ref": "${SOURCE_REPOSITORY_REF}" -          }, -          "contextDir": "${CONTEXT_DIR}" -        }, -        "strategy": { -          "type": "Source", -          "sourceStrategy": { -            "from": { -              "kind": "ImageStreamTag", -              "namespace": "${NAMESPACE}", -              "name": "python:3.5" -            }, -            "env": [ -              { -                  "name": "PIP_INDEX_URL", -                  "value": "${PIP_INDEX_URL}" -              } -            ] -          } -        }, -        "output": { -          "to": { -            "kind": "ImageStreamTag", -            "name": "${NAME}:latest" -          } -        }, -        "triggers": [ -          { -            "type": "ImageChange" -          }, -          { -            "type": "ConfigChange" -          }, -          { -            "type": "GitHub", -            "github": { -              "secret": "${GITHUB_WEBHOOK_SECRET}" -            } -          } -        ], -        "postCommit": { -          "script": "./manage.py test" -        } -      } -    }, -    { -      "kind": "DeploymentConfig", -      "apiVersion": "v1", -      "metadata": { -        "name": "${NAME}", -        "annotations": { -          "description": "Defines how to deploy the application server" -        } -      }, -      "spec": { -        "strategy": { -          "type": "Rolling" -        }, -        "triggers": [ -          { -            "type": "ImageChange", -            "imageChangeParams": { -              "automatic": true, -              "containerNames": [ -                "django-example" -              ], -              "from": { -                "kind": "ImageStreamTag", -                "name": "${NAME}:latest" -              } -            } -          }, -          { -            "type": "ConfigChange" -          } -        ], -        "replicas": 1, -        "selector": { -          "name": "${NAME}" -        }, -        "template": { -          "metadata": { -            "name": "${NAME}", -            "labels": { -              "name": "${NAME}" -            } -          }, -          "spec": { -            "containers": [ -              { -                "name": "django-example", -                "image": " ", -                "ports": [ -                  { -                    "containerPort": 8080 -                  } -                ], -                "readinessProbe": { -                  "timeoutSeconds": 3, -                  "initialDelaySeconds": 3, -                  "httpGet": { -                    "path": "/", -                    "port": 8080 -                  } -                }, -                "livenessProbe": { -                  "timeoutSeconds": 3, -                  "initialDelaySeconds": 30, -                  "httpGet": { -                    "path": "/", -                    "port": 8080 -                  } -                }, -                "env": [ -                  { -                    "name": "DATABASE_SERVICE_NAME", -                    "value": "${DATABASE_SERVICE_NAME}" -                  }, -                  { -                    "name": "DATABASE_ENGINE", -                    "value": "${DATABASE_ENGINE}" -                  }, -                  { -                    "name": "DATABASE_NAME", -                    "value": "${DATABASE_NAME}" -                  }, -                  { -                    "name": "DATABASE_USER", -                    "value": "${DATABASE_USER}" -                  }, -                  { -                    "name": "DATABASE_PASSWORD", -                    "value": "${DATABASE_PASSWORD}" -                  }, -                  { -                    "name": "APP_CONFIG", -                    "value": "${APP_CONFIG}" -                  }, -                  { -                    "name": "DJANGO_SECRET_KEY", -                    "value": "${DJANGO_SECRET_KEY}" -                  } -                ], -                "resources": { -		      "limits": { -			  "memory": "${MEMORY_LIMIT}" -		      } -                } -              } -            ] -          } -        } -      } -    } -  ], -  "parameters": [ -    { -      "name": "NAME", -      "displayName": "Name", -      "description": "The name assigned to all of the frontend objects defined in this template.", -      "required": true, -      "value": "django-example" -    }, -    { -      "name": "NAMESPACE", -      "displayName": "Namespace", -      "required": true, -      "description": "The OpenShift Namespace where the ImageStream resides.", -      "value": "openshift" -    }, -    { -      "name": "MEMORY_LIMIT", -      "displayName": "Memory Limit", -      "required": true, -      "description": "Maximum amount of memory the container can use.", -      "value": "512Mi" -    }, -    { -      "name": "SOURCE_REPOSITORY_URL", -      "displayName": "Git Repository URL", -      "required": true, -      "description": "The URL of the repository with your application source code.", -      "value": "https://github.com/openshift/django-ex.git" -    }, -    { -      "name": "SOURCE_REPOSITORY_REF", -      "displayName": "Git Reference", -      "description": "Set this to a branch name, tag or other ref of your repository if you are not using the default branch." -    }, -    { -      "name": "CONTEXT_DIR", -      "displayName": "Context Directory", -      "description": "Set this to the relative path to your project if it is not in the root of your repository." -    }, -    { -      "name": "APPLICATION_DOMAIN", -      "displayName": "Application Hostname", -      "description": "The exposed hostname that will route to the Django service, if left blank a value will be defaulted.", -      "value": "" -    }, -    { -      "name": "GITHUB_WEBHOOK_SECRET", -      "displayName": "GitHub Webhook Secret", -      "description": "A secret string used to configure the GitHub webhook.", -      "generate": "expression", -      "from": "[a-zA-Z0-9]{40}" -    }, -    { -      "name": "DATABASE_SERVICE_NAME", -      "displayName": "Database Service Name" -    }, -    { -      "name": "DATABASE_ENGINE", -      "displayName": "Database Engine", -      "description": "Database engine: postgresql, mysql or sqlite (default)." -    }, -    { -      "name": "DATABASE_NAME", -      "displayName": "Database Name" -    }, -    { -      "name": "DATABASE_USER", -      "displayName": "Database Username" -    }, -    { -      "name": "DATABASE_PASSWORD", -      "displayName": "Database User Password" -    }, -    { -      "name": "APP_CONFIG", -      "displayName": "Application Configuration File Path", -      "description": "Relative path to Gunicorn configuration file (optional)." -    }, -    { -      "name": "DJANGO_SECRET_KEY", -      "displayName": "Django Secret Key", -      "description": "Set this to a long random string.", -      "generate": "expression", -      "from": "[\\w]{50}" -    }, -    { -      "name": "PIP_INDEX_URL", -      "displayName": "Custom PyPi Index URL", -      "description": "The custom PyPi index URL", -      "value": "" -    } -  ] -} diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/nodejs.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/nodejs.json deleted file mode 100644 index ec262e4e8..000000000 --- a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/nodejs.json +++ /dev/null @@ -1,323 +0,0 @@ -{ -  "kind": "Template", -  "apiVersion": "v1", -  "metadata": { -    "name": "nodejs-example", -    "annotations": { -      "description": "An example Node.js application with no database", -      "tags": "quickstart,nodejs", -      "iconClass": "icon-nodejs" -    } -  }, -  "labels": { -    "template": "nodejs-example" -  }, -  "objects": [ -    { -      "kind": "Service", -      "apiVersion": "v1", -      "metadata": { -        "name": "${NAME}", -        "annotations": { -          "description": "Exposes and load balances the application pods" -        } -      }, -      "spec": { -        "ports": [ -          { -            "name": "web", -            "port": 8080, -            "targetPort": 8080 -          } -        ], -        "selector": { -          "name": "${NAME}" -        } -      } -    }, -    { -      "kind": "Route", -      "apiVersion": "v1", -      "metadata": { -        "name": "${NAME}" -      }, -      "spec": { -        "host": "${APPLICATION_DOMAIN}", -        "to": { -          "kind": "Service", -          "name": "${NAME}" -        } -      } -    }, -    { -      "kind": "ImageStream", -      "apiVersion": "v1", -      "metadata": { -        "name": "${NAME}", -        "annotations": { -          "description": "Keeps track of changes in the application image" -        } -      } -    }, -    { -      "kind": "BuildConfig", -      "apiVersion": "v1", -      "metadata": { -        "name": "${NAME}", -        "annotations": { -          "description": "Defines how to build the application" -        } -      }, -      "spec": { -        "source": { -          "type": "Git", -          "git": { -            "uri": "${SOURCE_REPOSITORY_URL}", -            "ref": "${SOURCE_REPOSITORY_REF}" -          }, -          "contextDir": "${CONTEXT_DIR}" -        }, -        "strategy": { -          "type": "Source", -          "sourceStrategy": { -            "from": { -              "kind": "ImageStreamTag", -              "namespace": "${NAMESPACE}", -              "name": "nodejs:4" -            }, -            "env":  [ -              { -                  "name": "NPM_MIRROR", -                  "value": "${NPM_MIRROR}" -              } -            ] -          } -        }, -        "output": { -          "to": { -            "kind": "ImageStreamTag", -            "name": "${NAME}:latest" -          } -        }, -        "triggers": [ -          { -            "type": "ImageChange" -          }, -          { -            "type": "ConfigChange" -          }, -          { -            "type": "GitHub", -            "github": { -              "secret": "${GITHUB_WEBHOOK_SECRET}" -            } -          }, -          { -            "type": "Generic", -            "generic": { -              "secret": "${GENERIC_WEBHOOK_SECRET}" -            } -          } -        ], -        "postCommit": { -          "script": "npm test" -        } -      } -    }, -    { -      "kind": "DeploymentConfig", -      "apiVersion": "v1", -      "metadata": { -        "name": "${NAME}", -        "annotations": { -          "description": "Defines how to deploy the application server" -        } -      }, -      "spec": { -        "strategy": { -          "type": "Rolling" -        }, -        "triggers": [ -          { -            "type": "ImageChange", -            "imageChangeParams": { -              "automatic": true, -              "containerNames": [ -                "nodejs-example" -              ], -              "from": { -                "kind": "ImageStreamTag", -                "name": "${NAME}:latest" -              } -            } -          }, -          { -            "type": "ConfigChange" -          } -        ], -        "replicas": 1, -        "selector": { -          "name": "${NAME}" -        }, -        "template": { -          "metadata": { -            "name": "${NAME}", -            "labels": { -              "name": "${NAME}" -            } -          }, -          "spec": { -            "containers": [ -              { -                "name": "nodejs-example", -                "image": " ", -                "ports": [ -                  { -                    "containerPort": 8080 -                  } -                ], -                "readinessProbe": { -                  "timeoutSeconds": 3, -                  "initialDelaySeconds": 3, -                  "httpGet": { -                    "path": "/", -                    "port": 8080 -                  } -                }, -                "livenessProbe": { -                    "timeoutSeconds": 3, -                    "initialDelaySeconds": 30, -                    "httpGet": { -                        "path": "/", -                        "port": 8080 -                    } -                }, -                "resources": { -                    "limits": { -                        "memory": "${MEMORY_LIMIT}" -                    } -                }, -                "env": [ -                  { -                    "name": "DATABASE_SERVICE_NAME", -                    "value": "${DATABASE_SERVICE_NAME}" -                  }, -                  { -                    "name": "MONGODB_USER", -                    "value": "${MONGODB_USER}" -                  }, -                  { -                    "name": "MONGODB_PASSWORD", -                    "value": "${MONGODB_PASSWORD}" -                  }, -                  { -                    "name": "MONGODB_DATABASE", -                    "value": "${MONGODB_DATABASE}" -                  }, -                  { -                    "name": "MONGODB_ADMIN_PASSWORD", -                    "value": "${MONGODB_ADMIN_PASSWORD}" -                  } -                ], -                "resources": { -		      "limits": { -			  "memory": "${MEMORY_LIMIT}" -		      } -                } -              } -            ] -          } -        } -      } -    } -  ], -  "parameters": [ -    { -      "name": "NAME", -      "displayName": "Name", -      "description": "The name assigned to all of the frontend objects defined in this template.", -      "required": true, -      "value": "nodejs-example" -    }, -    { -      "name": "NAMESPACE", -      "displayName": "Namespace", -      "description": "The OpenShift Namespace where the ImageStream resides.", -      "required": true, -      "value": "openshift" -    }, -    { -      "name": "MEMORY_LIMIT", -      "displayName": "Memory Limit", -      "description": "Maximum amount of memory the container can use.", -      "required": true, -      "value": "512Mi" -    }, -    { -      "name": "SOURCE_REPOSITORY_URL", -      "displayName": "Git Repository URL", -      "description": "The URL of the repository with your application source code.", -      "required": true, -      "value": "https://github.com/openshift/nodejs-ex.git" -    }, -    { -      "name": "SOURCE_REPOSITORY_REF", -      "displayName": "Git Reference", -      "description": "Set this to a branch name, tag or other ref of your repository if you are not using the default branch." -    }, -    { -      "name": "CONTEXT_DIR", -      "displayName": "Context Directory", -      "description": "Set this to the relative path to your project if it is not in the root of your repository." -    }, -    { -      "name": "APPLICATION_DOMAIN", -      "displayName": "Application Hostname", -      "description": "The exposed hostname that will route to the Node.js service, if left blank a value will be defaulted.", -      "value": "" -    }, -    { -      "name": "GITHUB_WEBHOOK_SECRET", -      "displayName": "GitHub Webhook Secret", -      "description": "A secret string used to configure the GitHub webhook.", -      "generate": "expression", -      "from": "[a-zA-Z0-9]{40}" -    }, -    { -      "name": "GENERIC_WEBHOOK_SECRET", -      "displayName": "Generic Webhook Secret", -      "description": "A secret string used to configure the Generic webhook.", -      "generate": "expression", -      "from": "[a-zA-Z0-9]{40}" -    }, -    { -      "name": "DATABASE_SERVICE_NAME", -      "displayName": "Database Service Name" -    }, -    { -      "name": "MONGODB_USER", -      "displayName": "MongoDB Username", -      "description": "Username for MongoDB user that will be used for accessing the database." -    }, -    { -      "name": "MONGODB_PASSWORD", -      "displayName": "MongoDB Password", -      "description": "Password for the MongoDB user." -    }, -    { -      "name": "MONGODB_DATABASE", -      "displayName": "Database Name" -    }, -    { -      "name": "MONGODB_ADMIN_PASSWORD", -      "displayName": "Database Administrator Password", -      "description": "Password for the database admin user." -    }, -    { -      "name": "NPM_MIRROR", -      "displayName": "Custom NPM Mirror URL", -      "description": "The custom NPM mirror URL", -      "value": "" -    } -  ] -} diff --git a/roles/openshift_examples/tasks/main.yml b/roles/openshift_examples/tasks/main.yml index 4150fabec..058ad8888 100644 --- a/roles/openshift_examples/tasks/main.yml +++ b/roles/openshift_examples/tasks/main.yml @@ -73,6 +73,27 @@    failed_when: "'already exists' not in oex_import_db_templates.stderr and oex_import_db_templates.rc != 0"    changed_when: false +- name: Remove defunct quickstart template files +  file: +    path: "{{ item }}" +    state: absent +  with_items: +    - "{{ quickstarts_base }}/nodejs.json" +    - "{{ quickstarts_base }}/cakephp.json" +    - "{{ quickstarts_base }}/dancer.json" +    - "{{ quickstarts_base }}/django.json" + +- name: Remove defunct quickstart templates from openshift namespace +  command: "{{ openshift.common.client_binary }} -n openshift delete templates/{{ item }}" +  with_items: +    - nodejs-example +    - cakephp-example +    - dancer-example +    - django-example +  register: oex_delete_defunct_quickstart_templates +  failed_when: "'not found' not in oex_delete_defunct_quickstart_templates.stderr and oex_delete_defunct_quickstart_templates.rc != 0" +  changed_when: false +  - name: Import quickstart-templates    command: >      {{ openshift.common.client_binary }} {{ openshift_examples_import_command }} -n openshift -f {{ quickstarts_base }} diff --git a/roles/openshift_facts/library/openshift_facts.py b/roles/openshift_facts/library/openshift_facts.py index ebd799466..e5cb0db15 100755 --- a/roles/openshift_facts/library/openshift_facts.py +++ b/roles/openshift_facts/library/openshift_facts.py @@ -1730,6 +1730,7 @@ class OpenShiftFacts(object):                  {"name": "PodFitsPorts"},                  {"name": "NoDiskConflict"},                  {"name": "NoVolumeZoneConflict"}, +                {"name": "MaxEBSVolumeCount"},                  {"name": "Region", "argument": {"serviceAffinity" : {"labels" : ["region"]}}}              ]              scheduler_priorities = [ | 
