diff options
241 files changed, 44073 insertions, 479 deletions
diff --git a/.gitignore b/.gitignore index 081659a94..626065fe1 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ multi_ec2.yaml  multi_inventory.yaml  .vagrant  .tags* +ansible.cfg diff --git a/.tito/packages/openshift-ansible b/.tito/packages/openshift-ansible index d176e08c5..de78e0693 100644 --- a/.tito/packages/openshift-ansible +++ b/.tito/packages/openshift-ansible @@ -1 +1 @@ -3.0.40-1 ./ +3.0.51-1 ./ diff --git a/.tito/releasers.conf b/.tito/releasers.conf index a9116291a..36c15b109 100644 --- a/.tito/releasers.conf +++ b/.tito/releasers.conf @@ -12,6 +12,11 @@ releaser = tito.release.DistGitReleaser  branches = rhaos-3.1-rhel-7  srpm_disttag = .el7aos +[aos-3.2] +releaser = tito.release.DistGitReleaser +branches = rhaos-3.2-rhel-7 +srpm_disttag = .el7aos +  [copr-openshift-ansible]  releaser = tito.release.CoprReleaser  project_name = openshift-ansible diff --git a/README_AWS.md b/README_AWS.md index c605de43d..978905f68 100644 --- a/README_AWS.md +++ b/README_AWS.md @@ -1,3 +1,4 @@ +:warning: **WARNING** :warning: This feature is community supported and has not been tested by Red Hat. Visit [docs.openshift.com](https://docs.openshift.com) for [OpenShift Enterprise](https://docs.openshift.com/enterprise/latest/install_config/install/index.html) or [OpenShift Origin](https://docs.openshift.org/latest/install_config/install/index.html) supported installation docs.  AWS Setup Instructions  ====================== @@ -43,6 +44,16 @@ You may also want to allow access from the outside world on the following ports:  ``` +Determine your subnet and setup the VPC +--------------------------------------- + +In the AWS VPC console, look up your subnet ID for the region you want to use and set it as such: + +- export ec2_vpc_subnet='my_vpc_subnet' + +Go to Your VPCs, select the VPC, and under Actions -> DNS Hostnames, set to Yes and Save. + +  (Optional) Setup your $HOME/.ssh/config file  -------------------------------------------  In case of a cluster creation, or any other case where you don't know the machine hostname in advance, you can use `.ssh/config` @@ -62,7 +73,7 @@ Alternatively, you can configure your ssh-agent to hold the credentials to conne  By default, a cluster is launched with the following configuration:  - Instance type: m4.large -- AMI: ami-307b3658 (for online deployments, ami-acd999c4 for origin deployments and ami-10663b78 for enterprise deployments) +- AMI: ami-7a9e9812 (for online deployments, ami-61bbf104 for origin deployments and ami-10663b78 for enterprise deployments)  - Region: us-east-1  - Keypair name: libra  - Security group: public @@ -109,7 +120,6 @@ If needed, these values can be changed by setting environment variables on your  - export ec2_region='us-east-1'  - export ec2_keypair='libra'  - export ec2_security_groups="['public']" -- export ec2_vpc_subnet='my_vpc_subnet'  - export ec2_assign_public_ip='true'  - export os_etcd_root_vol_size='20'  - export os_etcd_root_vol_type='standard' diff --git a/README_CONTAINERIZED_INSTALLATION.md b/README_CONTAINERIZED_INSTALLATION.md index 5f51b9507..56f25546c 100644 --- a/README_CONTAINERIZED_INSTALLATION.md +++ b/README_CONTAINERIZED_INSTALLATION.md @@ -84,9 +84,13 @@ _/usr/share/openshift/examples_ because that is read-only on Atomic Host.  ### Storage Requirements -Atomic Host installs normally have a very small root filesystem. However the -etcd, master, and node containers will persist data in /var/lib. Please ensure -that you have enough space on the root filesystem. +Atomic Host installs by default have a small root filesystem. However +the etcd, master, and node containers will persist data in +`/var/lib`. Please ensure that you have enough space on the root +filesystem.  This is usually handled by +[docker-storage-setup](https://github.com/projectatomic/docker-storage-setup/); +set e.g. `ROOT_SIZE=20G` in `/etc/sysconfig/docker-storage-setup` in +early host boot, such as inside a `cloud-init` boot hook.  ### OpenvSwitch SDN Initialization diff --git a/README_GCE.md b/README_GCE.md index 9439b569e..df9942f24 100644 --- a/README_GCE.md +++ b/README_GCE.md @@ -1,3 +1,4 @@ +:warning: **WARNING** :warning: This feature is community supported and has not been tested by Red Hat. Visit [docs.openshift.com](https://docs.openshift.com) for [OpenShift Enterprise](https://docs.openshift.com/enterprise/latest/install_config/install/index.html) or [OpenShift Origin](https://docs.openshift.org/latest/install_config/install/index.html) supported installation docs.  GCE Setup Instructions  ====================== diff --git a/README_libvirt.md b/README_libvirt.md index 3e5df2dca..8b46252b3 100644 --- a/README_libvirt.md +++ b/README_libvirt.md @@ -1,3 +1,5 @@ +:warning: **WARNING** :warning: This feature is community supported and has not been tested by Red Hat. Visit [docs.openshift.com](https://docs.openshift.com) for [OpenShift Enterprise](https://docs.openshift.com/enterprise/latest/install_config/install/index.html) or [OpenShift Origin](https://docs.openshift.org/latest/install_config/install/index.html) supported installation docs. +  LIBVIRT Setup instructions  ========================== @@ -118,7 +120,7 @@ The following options can be passed via the `-o` flag of the `create` command or  * `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_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 +* `image_sha256` (default to `dd0f5e610e7c5ffacaca35ed7a78a19142a588f4543da77b61c1fb0d74400471`): 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_openstack.md b/README_openstack.md index 9a2b627e2..e3cc7cc93 100644 --- a/README_openstack.md +++ b/README_openstack.md @@ -1,3 +1,5 @@ +:warning: **WARNING** :warning: This feature is community supported and has not been tested by Red Hat. Visit [docs.openshift.com](https://docs.openshift.com) for [OpenShift Enterprise](https://docs.openshift.com/enterprise/latest/install_config/install/index.html) or [OpenShift Origin](https://docs.openshift.org/latest/install_config/install/index.html) supported installation docs. +  OPENSTACK Setup instructions  ============================ diff --git a/README_origin.md b/README_origin.md index 761d1509f..b0169946b 100644 --- a/README_origin.md +++ b/README_origin.md @@ -60,6 +60,8 @@ option to ansible-playbook.  [OSEv3:children]  masters  nodes +etcd +lb  # Set variables common for all OSEv3 hosts  [OSEv3:vars] diff --git a/README_vagrant.md b/README_vagrant.md index 73fd31476..a0bb0afbb 100644 --- a/README_vagrant.md +++ b/README_vagrant.md @@ -1,3 +1,5 @@ +:warning: **WARNING** :warning: This feature is community supported and has not been tested by Red Hat. Visit [docs.openshift.com](https://docs.openshift.com) for [OpenShift Enterprise](https://docs.openshift.com/enterprise/latest/install_config/install/index.html) or [OpenShift Origin](https://docs.openshift.org/latest/install_config/install/index.html) supported installation docs. +  Requirements  ------------  - ansible (the latest 1.9 release is preferred, but any version greater than 1.9.1 should be sufficient). diff --git a/bin/cluster b/bin/cluster index c3b101c98..ecb8bc58e 100755 --- a/bin/cluster +++ b/bin/cluster @@ -264,6 +264,13 @@ if __name__ == '__main__':        providers = gce,aws,libvirt,openstack      """ +    warning = ("================================================================================\n" +               "ATTENTION: You are running a community supported utility that has not been\n" +               "tested by Red Hat. Visit https://docs.openshift.com for supported installation\n" +               "instructions.\n" +               "================================================================================\n\n") +    sys.stderr.write(warning) +      cluster_config = ConfigParser.SafeConfigParser({          'cluster_ids': 'marketing,sales',          'validate_cluster_ids': 'False', @@ -34,6 +34,7 @@ class Ohi(object):                                          'openshift_ansible', \                                          'openshift_ansible.conf') +        self.args = None          self.parse_cli_args()          self.parse_config_file() @@ -57,6 +58,7 @@ class Ohi(object):          hosts = self.aws.get_host_list(clusters=self.args.cluster,                                         host_type=self.args.host_type, +                                       sub_host_type=self.args.sub_host_type,                                         envs=self.args.env,                                         version=version,                                         cached=self.args.cache_only) @@ -104,6 +106,8 @@ class Ohi(object):          parser.add_argument('-t', '--host-type', action="store", help="Which host type to use") +        parser.add_argument('-s', '--sub-host-type', action="store", help="Which sub host type to use") +          parser.add_argument('-l', '--user', action='store', default=None, help='username')          parser.add_argument('--cache-only', action='store_true', default=False, diff --git a/bin/openshift_ansible/awsutil.py b/bin/openshift_ansible/awsutil.py index 945e6a20c..eba11e851 100644 --- a/bin/openshift_ansible/awsutil.py +++ b/bin/openshift_ansible/awsutil.py @@ -31,6 +31,7 @@ class AwsUtil(object):          host_type_aliases -- a list of aliases to common host-types (e.g. ex-node)          """ +        self.alias_lookup = {}          host_type_aliases = host_type_aliases or {}          self.host_type_aliases = host_type_aliases @@ -40,7 +41,6 @@ class AwsUtil(object):      def setup_host_type_alias_lookup(self):          """Sets up the alias to host-type lookup table.""" -        self.alias_lookup = {}          for key, values in self.host_type_aliases.iteritems():              for value in values:                  self.alias_lookup[value] = key @@ -101,6 +101,20 @@ class AwsUtil(object):          host_types.sort()          return host_types +    def get_sub_host_types(self): +        """Searches for sub-host-type tags in the inventory and returns all sub-host-types found.""" +        pattern = re.compile(r'^oo_subhosttype_(.*)') + +        sub_host_types = [] +        inv = self.get_inventory() +        for key in inv.keys(): +            matched = pattern.match(key) +            if matched: +                sub_host_types.append(matched.group(1)) + +        sub_host_types.sort() +        return sub_host_types +      def get_security_groups(self):          """Searches for security_groups in the inventory and returns all SGs found."""          pattern = re.compile(r'^security_group_(.*)') @@ -192,9 +206,15 @@ class AwsUtil(object):              host_type = self.resolve_host_type(host_type)          return "oo_hosttype_%s" % host_type +    @staticmethod +    def gen_sub_host_type_tag(sub_host_type): +        """Generate the host type tag +        """ +        return "oo_subhosttype_%s" % sub_host_type +      # This function uses all of these params to perform a filters on our host inventory.      # pylint: disable=too-many-arguments -    def get_host_list(self, clusters=None, host_type=None, envs=None, version=None, cached=False): +    def get_host_list(self, clusters=None, host_type=None, sub_host_type=None, envs=None, version=None, cached=False):          """Get the list of hosts from the inventory using host-type and environment          """          retval = set([]) @@ -229,6 +249,9 @@ class AwsUtil(object):          if host_type:              retval.intersection_update(inv.get(self.gen_host_type_tag(host_type, version), [])) +        if sub_host_type: +            retval.intersection_update(inv.get(self.gen_sub_host_type_tag(sub_host_type), [])) +          if version != 'all':              retval.intersection_update(inv.get(AwsUtil.gen_version_tag(version), [])) @@ -211,7 +211,7 @@ class Oscp(object):              # Assume we have one and only one.              hostname, server_info = results[0] -            dns = server_info['oo_pulic_ip'] +            dns = server_info['oo_public_ip']              host_str = "%s%s%s" % (self.user, dns, self.path) diff --git a/filter_plugins/oo_filters.py b/filter_plugins/oo_filters.py index dcda14c63..3dc3f2fe9 100644 --- a/filter_plugins/oo_filters.py +++ b/filter_plugins/oo_filters.py @@ -697,6 +697,19 @@ class FilterModule(object):          return matching_pods +    @staticmethod +    def oo_get_hosts_from_hostvars(hostvars, hosts): +        """ Return a list of hosts from hostvars """ +        retval = [] +        for host in hosts: +            try: +                retval.append(hostvars[host]) +            except errors.AnsibleError as _: +                # host does not exist +                pass + +        return retval +      def filters(self):          """ returns a mapping of filters to methods """          return { @@ -724,4 +737,5 @@ class FilterModule(object):              "oo_persistent_volume_claims": self.oo_persistent_volume_claims,              "oo_31_rpm_rename_conversion": self.oo_31_rpm_rename_conversion,              "oo_pods_match_component": self.oo_pods_match_component, +            "oo_get_hosts_from_hostvars": self.oo_get_hosts_from_hostvars,          } diff --git a/filter_plugins/openshift_master.py b/filter_plugins/openshift_master.py index c41367f05..3a1d77f53 100644 --- a/filter_plugins/openshift_master.py +++ b/filter_plugins/openshift_master.py @@ -501,7 +501,36 @@ class FilterModule(object):                  valid = False          return valid +    @staticmethod +    def certificates_to_synchronize(hostvars): +        ''' Return certificates to synchronize based on facts. ''' +        if not issubclass(type(hostvars), dict): +            raise errors.AnsibleFilterError("|failed expects hostvars is a dict") +        certs = ['admin.crt', +                 'admin.key', +                 'admin.kubeconfig', +                 'master.kubelet-client.crt', +                 'master.kubelet-client.key', +                 'openshift-registry.crt', +                 'openshift-registry.key', +                 'openshift-registry.kubeconfig', +                 'openshift-router.crt', +                 'openshift-router.key', +                 'openshift-router.kubeconfig', +                 'serviceaccounts.private.key', +                 'serviceaccounts.public.key'] +        if bool(hostvars['openshift']['common']['version_gte_3_1_or_1_1']): +            certs += ['master.proxy-client.crt', +                      'master.proxy-client.key'] +        if not bool(hostvars['openshift']['common']['version_gte_3_2_or_1_2']): +            certs += ['openshift-master.crt', +                      'openshift-master.key', +                      'openshift-master.kubeconfig'] +        return certs + +      def filters(self):          ''' returns a mapping of filters to methods '''          return {"translate_idps": self.translate_idps, -                "validate_pcs_cluster": self.validate_pcs_cluster} +                "validate_pcs_cluster": self.validate_pcs_cluster, +                "certificates_to_synchronize": self.certificates_to_synchronize} diff --git a/inventory/byo/hosts.aep.example b/inventory/byo/hosts.aep.example index a2e1708d4..637f13be6 100644 --- a/inventory/byo/hosts.aep.example +++ b/inventory/byo/hosts.aep.example @@ -58,12 +58,18 @@ deployment_type=atomic-enterprise  # See: https://docs.openshift.com/enterprise/latest/install_config/aggregate_logging.html  #openshift_master_logging_public_url=https://kibana.example.com +# Docker Configuration  # Add additional, insecure, and blocked registries to global docker configuration  # For enterprise deployment types we ensure that registry.access.redhat.com is  # included if you do not include it  #cli_docker_additional_registries=registry.example.com  #cli_docker_insecure_registries=registry.example.com  #cli_docker_blocked_registries=registry.hacker.com +# Items added, as is, to end of /etc/sysconfig/docker OPTIONS +#openshift_docker_options="-l warn --ipv6=false" +# Deprecated methods to set --log-driver and --log-opts flags, use openshift_docker_options instead +#cli_docker_log_driver=json +#cli_docker_log_options="tag=mailer"  # Alternate image format string. If you're not modifying the format string and  # only need to inject your own registry you may want to consider @@ -126,7 +132,7 @@ openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true',  #osm_api_server_args={'max-requests-inflight': ['400']}  # default subdomain to use for exposed routes -#osm_default_subdomain=apps.test.example.com +#openshift_master_default_subdomain=apps.test.example.com  # additional cors origins  #osm_custom_cors_origins=['foo.example.com', 'bar.example.com'] @@ -151,6 +157,20 @@ openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true',  # Disable the OpenShift SDN plugin  # openshift_use_openshift_sdn=False +# Configure SDN cluster network CIDR block. This network block should +# be a private block and should not conflict with existing network +# blocks in your infrastructure that pods may require access to. +# Can not be changed after deployment. +#osm_cluster_network_cidr=10.1.0.0/16 + +# Configure number of bits to allocate to each host’s subnet e.g. 8 +# would mean a /24 network on the host. +#osm_host_subnet_length=8 + +# Configure master API and console ports. +#openshift_master_api_port=8443 +#openshift_master_console_port=8443 +  # set RPM version for debugging purposes  #openshift_pkg_version=-3.1.0.0 diff --git a/inventory/byo/hosts.origin.example b/inventory/byo/hosts.origin.example index de1d0f88b..c30f65f9f 100644 --- a/inventory/byo/hosts.origin.example +++ b/inventory/byo/hosts.origin.example @@ -59,12 +59,18 @@ deployment_type=origin  # See: https://docs.openshift.org/latest/install_config/aggregate_logging.html  #openshift_master_logging_public_url=https://kibana.example.com +# Docker Configuration  # Add additional, insecure, and blocked registries to global docker configuration  # For enterprise deployment types we ensure that registry.access.redhat.com is  # included if you do not include it  #cli_docker_additional_registries=registry.example.com  #cli_docker_insecure_registries=registry.example.com  #cli_docker_blocked_registries=registry.hacker.com +# Items added, as is, to end of /etc/sysconfig/docker OPTIONS +#openshift_docker_options="-l warn --ipv6=false" +# Deprecated methods to set --log-driver and --log-opts flags, use openshift_docker_options instead +#cli_docker_log_driver=json +#cli_docker_log_options="tag=mailer"  # Alternate image format string. If you're not modifying the format string and  # only need to inject your own registry you may want to consider @@ -131,7 +137,7 @@ openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true',  #osm_api_server_args={'max-requests-inflight': ['400']}  # default subdomain to use for exposed routes -#osm_default_subdomain=apps.test.example.com +#openshift_master_default_subdomain=apps.test.example.com  # additional cors origins  #osm_custom_cors_origins=['foo.example.com', 'bar.example.com'] @@ -156,6 +162,20 @@ openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true',  # Disable the OpenShift SDN plugin  # openshift_use_openshift_sdn=False +# Configure SDN cluster network CIDR block. This network block should +# be a private block and should not conflict with existing network +# blocks in your infrastructure that pods may require access to. +# Can not be changed after deployment. +#osm_cluster_network_cidr=10.1.0.0/16 + +# Configure number of bits to allocate to each host’s subnet e.g. 8 +# would mean a /24 network on the host. +#osm_host_subnet_length=8 + +# Configure master API and console ports. +#openshift_master_api_port=8443 +#openshift_master_console_port=8443 +  # set RPM version for debugging purposes  #openshift_pkg_version=-1.1 diff --git a/inventory/byo/hosts.ose.example b/inventory/byo/hosts.ose.example index c80be574f..b51569e68 100644 --- a/inventory/byo/hosts.ose.example +++ b/inventory/byo/hosts.ose.example @@ -58,12 +58,19 @@ deployment_type=openshift-enterprise  # See: https://docs.openshift.com/enterprise/latest/install_config/aggregate_logging.html  #openshift_master_logging_public_url=https://kibana.example.com +# Docker Configuration  # Add additional, insecure, and blocked registries to global docker configuration  # For enterprise deployment types we ensure that registry.access.redhat.com is  # included if you do not include it  #cli_docker_additional_registries=registry.example.com  #cli_docker_insecure_registries=registry.example.com  #cli_docker_blocked_registries=registry.hacker.com +# Items added, as is, to end of /etc/sysconfig/docker OPTIONS +#openshift_docker_options="-l warn --ipv6=false" +# Deprecated methods to set --log-driver and --log-opts flags, use openshift_docker_options instead +#cli_docker_log_driver=json +#cli_docker_log_options="tag=mailer" +  # Alternate image format string. If you're not modifying the format string and  # only need to inject your own registry you may want to consider @@ -126,7 +133,7 @@ openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true',  #osm_api_server_args={'max-requests-inflight': ['400']}  # default subdomain to use for exposed routes -#osm_default_subdomain=apps.test.example.com +#openshift_master_default_subdomain=apps.test.example.com  # additional cors origins  #osm_custom_cors_origins=['foo.example.com', 'bar.example.com'] @@ -151,6 +158,20 @@ openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true',  # Disable the OpenShift SDN plugin  # openshift_use_openshift_sdn=False +# Configure SDN cluster network CIDR block. This network block should +# be a private block and should not conflict with existing network +# blocks in your infrastructure that pods may require access to. +# Can not be changed after deployment. +#osm_cluster_network_cidr=10.1.0.0/16 + +# Configure number of bits to allocate to each host’s subnet e.g. 8 +# would mean a /24 network on the host. +#osm_host_subnet_length=8 + +# Configure master API and console ports. +#openshift_master_api_port=8443 +#openshift_master_console_port=8443 +  # set RPM version for debugging purposes  #openshift_pkg_version=-3.1.0.0 diff --git a/openshift-ansible.spec b/openshift-ansible.spec index b8ec1be5d..693bdc39f 100644 --- a/openshift-ansible.spec +++ b/openshift-ansible.spec @@ -5,7 +5,7 @@  }  Name:           openshift-ansible -Version:        3.0.40 +Version:        3.0.51  Release:        1%{?dist}  Summary:        Openshift and Atomic Enterprise Ansible  License:        ASL 2.0 @@ -50,8 +50,10 @@ cp -p bin/openshift_ansible.conf.example %{buildroot}/etc/openshift_ansible/open  # Fix links  rm -f %{buildroot}%{python_sitelib}/openshift_ansible/multi_inventory.py  rm -f %{buildroot}%{python_sitelib}/openshift_ansible/aws +rm -f %{buildroot}%{python_sitelib}/openshift_ansible/gce  ln -sf %{_datadir}/ansible/inventory/multi_inventory.py %{buildroot}%{python_sitelib}/openshift_ansible/multi_inventory.py  ln -sf %{_datadir}/ansible/inventory/aws %{buildroot}%{python_sitelib}/openshift_ansible/aws +ln -sf %{_datadir}/ansible/inventory/gce %{buildroot}%{python_sitelib}/openshift_ansible/gce  # openshift-ansible-docs install  # -docs are currently just %doc, no install needed @@ -277,6 +279,188 @@ Atomic OpenShift Utilities includes  %changelog +* Fri Mar 04 2016 Brenton Leanhardt <bleanhar@redhat.com> 3.0.51-1 +- Bug 1314645 - Upgrade failed with "One or more undefined variables 'dict +  object' has no attribute 'stdout'" (bleanhar@redhat.com) +- EBS storage does not support Recycle (sedgar@redhat.com) +- Remove cockpit and kubernetes-client packages in uninstall playbook. +  (abutcher@redhat.com) +- Update README_origin.md (trond.hapnes@gmail.com) +- Add cockpit-docker package by default (nakayamakenjiro@gmail.com) + +* Thu Mar 03 2016 Brenton Leanhardt <bleanhar@redhat.com> 3.0.50-1 +- change lib_zabbix's import to new pathing (jdiaz@redhat.com) +- upgrade README fixes (bleanhar@redhat.com) +- A few images weren't being uninstalled (bleanhar@redhat.com) +- Adding support for v1.2 examples (bleanhar@redhat.com) +- Adding templates for v1.2 (bleanhar@redhat.com) +- Adding verify_upgrade_version variable for upgrade debugging +  (bleanhar@redhat.com) +- Correctly set the image tag for containerized installs (and upgrades) +  (bleanhar@redhat.com) +- Adding newly required variable (bleanhar@redhat.com) +- Updating the containerized cli wrapper to work for both docker 1.8 and 1.9 +  (bleanhar@redhat.com) +- uninstall the QE images (bleanhar@redhat.com) +- First past at the upgrade process (bleanhar@redhat.com) +- Check for is_containerized value when setting binary locations. +  (abutcher@redhat.com) +- Bug 1313169 - Ansible installer tries to enable etcd_container service even +  though containerized=false (bleanhar@redhat.com) +- Fix logging infra template version mismatch. (dgoodwin@redhat.com) +- Changes required for Nuage monitor REST server +  (vishal.patil@nuagenetworks.net) +- disable http-server-close option (jdetiber@redhat.com) +- change [HEAL] to [Heal] to match with v2 (jdiaz@redhat.com) +- Increase maxconn settings for haproxy lb (jdetiber@redhat.com) + +* Tue Mar 01 2016 Matt Woodson <mwoodson@redhat.com> 3.0.49-1 +- fixed error in awsutil.py (mwoodson@redhat.com) + +* Tue Mar 01 2016 Matt Woodson <mwoodson@redhat.com> 3.0.48-1 +- ohi: added subtype searching (mwoodson@redhat.com) +- make heal remote actions generic for all [HEAL] triggers (jdiaz@redhat.com) +- added extra steps to ensure docker starts up (mwoodson@redhat.com) +- role_removal: docker_storage;  This is the old way, no longer used +  (mwoodson@redhat.com) +- role: added docker_storage_setup (mwoodson@redhat.com) +- Use inventory_hostname for openshift master certs to sync. +  (abutcher@redhat.com) +- Adding a symlink to making loading the examples more convenient +  (bleanhar@redhat.com) +- docs: Explain a bit more how to expand Atomic Host rootfs +  (walters@verbum.org) +- a-o-i: Rename osm_default_subdomain (smunilla@redhat.com) +- Updating tito config for OSE 3.2 (bleanhar@redhat.com) +- Synchronize master kube configs (abutcher@redhat.com) +- added os_utils, os_reboot_server role; removed containerization stuff from +  the updated (mwoodson@redhat.com) +- Add warnings to bin/cluster and READMEs (abutcher@redhat.com) +- Add host subnet length example. (abutcher@redhat.com) +- Upgrade -1510 to CentOS-7-x86_64-GenericCloud-1602. (cben@redhat.com) +- Pin down CentOS-7-x86_64-GenericCloud-1510.qcow2.xz version, which the +  checksum currently expects (#1384). (cben@redhat.com) +- Change is_atomic to is_containerized (florian.lambert@enovance.com) +- Rename variable to openshift_master_default_subdomain with backwards +  compatibility. (jstuever@redhat.com) +- lib_dyn: more updates to the lib_dyn module. Made the TTL more flexible +  (mwoodson@redhat.com) +- remote heal action for OVS down (jdiaz@redhat.com) +- Pass registry claim to openshift_registry. (abutcher@redhat.com) +- Refactor - increase retries instead of delay in "Wait for Node Registration" +  (david.mat@archimiddle.com) +- Better diagnostic messages when an OpenStack heat stack creation fails +  (lhuard@amadeus.com) +- made some changes to lib_dyn update (mwoodson@redhat.com) +- Increase timeout on Wait for Node Registration (david.mat@archimiddle.com) +- Fix typo in oscp (agrimm@redhat.com) +- Add correct parsing of ec2_security_groups env variable +  (david.mat@archimiddle.com) +- changed oso_host_monitoring to use the oo_ vars (twiest@redhat.com) +- Add quotes around src argument to support paths with spaces +  (david.mat@archimiddle.com) +- Add missing is_atomic condition on upgrade package +  (florian.lambert@enovance.com) +- configure debug_level for master and node from cli (jawed.khelil@amadeus.com) +- remove version requirement from etcd, shouldn't be needed anymore +  (maxamillion@fedoraproject.org) +- Add ansible.cfg to .gitignore (jdetiber@redhat.com) +- added node-secgroup to master_nodes (j.david.nieto@gmail.com) +- Document setting the VPC subnet (puiterwijk@redhat.com) +- Update the AMIs used in README_AWS (puiterwijk@redhat.com) +- Add byo examples for network cidr and api/console ports. +  (abutcher@redhat.com) +- Add openshift_docker roles to master/node scaleup. (abutcher@redhat.com) +- Fail when master.master_count descreases or master.ha changes. +  (abutcher@redhat.com) +- Protected facts. (abutcher@redhat.com) +- Add modify_yaml module. (abutcher@redhat.com) +- Re-arrange scaleup playbooks. (abutcher@redhat.com) +- Move additional master configuration into a separate master playbook. +  (abutcher@redhat.com) +- Generate each master's certificates separately. (abutcher@redhat.com) +- Add new_masters to scaleup playbook. (abutcher@redhat.com) + +* Wed Feb 24 2016 Brenton Leanhardt <bleanhar@redhat.com> 3.0.47-1 +- a-o-i: Double safety check on master_lb (smunilla@redhat.com) +- a-o-i: Better method for identifying master_lb (smunilla@redhat.com) + +* Tue Feb 23 2016 Brenton Leanhardt <bleanhar@redhat.com> 3.0.46-1 +- a-o-i: Exception checking around master_lb (smunilla@redhat.com) + +* Mon Feb 22 2016 Brenton Leanhardt <bleanhar@redhat.com> 3.0.45-1 +- Do not monitor for etcd watchers (mmahut@redhat.com) +- remove old master registry item/triggers (jdiaz@redhat.com) +- a-o-i: Redo logic for detecting master_lb (smunilla@redhat.com) +- Fix 1.2 version check (jdetiber@redhat.com) +- Fix pv/c creation failed_when. (abutcher@redhat.com) +- Rename variable to delete temporary file, add configurable path. +  (hrosnet@redhat.com) +- Add /var/log to containerized node mounts (sdodson@redhat.com) +- Add extra parameters for S3 registry: delete file, create bucket. +  (hrosnet@redhat.com) +- Don't make config files world readable (sdodson@redhat.com) +- Fix requiring state and providing a default (rharriso@redhat.com) +- bind in /etc/origin/node for non-master monitoring to be able to talk with +  master (jdiaz@redhat.com) +- a-o-i: pylint fixes related to too-long lines (smunilla@redhat.com) + +* Wed Feb 17 2016 Brenton Leanhardt <bleanhar@redhat.com> 3.0.44-1 +- create registry items/triggers under Openshift Node (jdiaz@redhat.com) +- a-o-i: Change method for counting master_lb as installed +  (smunilla@redhat.com) + +* Tue Feb 16 2016 Brenton Leanhardt <bleanhar@redhat.com> 3.0.43-1 +- Add default to state param (rharriso@redhat.com) +- Add type to record_type param (rharriso@redhat.com) +- Add types to module params (rharriso@redhat.com) +- Adding examples to the dyn_record module (rharriso@redhat.com) +- add item to track docker-registry pings (jdiaz@redhat.com) +- Handle case where the user already had access to the scc +  (bleanhar@redhat.com) +- Refactoring the add-scc-to-user logic (bleanhar@redhat.com) +- Apply openshift_docker to nodes during scaleup. (abutcher@redhat.com) +- Change etcd deamon name for atomic-host (florian.lambert@enovance.com) + +* Tue Feb 16 2016 Joel Diaz <jdiaz@redhat.com> 3.0.42-1 +- Add gce softlink for openshift-ansible-bin + +* Mon Feb 15 2016 Brenton Leanhardt <bleanhar@redhat.com> 3.0.41-1 +- Bug 1308411 - Fail to install OSE 3.0 for no add-scc-to-user command +  (bleanhar@redhat.com) +- Add openshift_docker_options to append arbitrary options to +  /etc/sysconfig/docker OPTIONS (sdodson@redhat.com) +- oo_filter: added custom fitler to return hosts group info +  (mwoodson@redhat.com) +- add gce softlink for openshift-ansible-bin RPM (jdiaz@redhat.com) +- a-o-i: Count nativeha hosts as "installed" for scaleup (smunilla@redhat.com) +- a-o-i: Add master_routingconfig_subdomain to PERSIST_SETTINGS +  (smunilla@redhat.com) +- Bug 1308412 - Fail to install containerized HA master env on RHEL7 +  (bleanhar@redhat.com) +- Bug 1308314 - Failed to continue installation when pressing CTRL-C +  (bleanhar@redhat.com) +- Updating the 3.1.1 router to match the new liveness probe configuration +  (bleanhar@redhat.com) +- Don't automatically give additional permissions to all OAuth users on upgrade +  (jliggitt@redhat.com) +- Fix adhoc boostrap fedora playbook (jdetiber@redhat.com) +- Fix libvirt cluster creation (lhuard@amadeus.com) +- Add missing `type` node labels on OpenStack and libvirt (lhuard@amadeus.com) +- a-o-i: Prompts to allow minor upgrades (smunilla@redhat.com) +- conditionalize loopback config on v >= 3.2/1.2 (jdetiber@redhat.com) +- Fixes pv/pvc creation for latest builds (jdetiber@redhat.com) +- Bug 1302970 - update script does not patch router if name is different from +  default (bleanhar@redhat.com) +- Fix loopback cluster name, context name, and user (jdetiber@redhat.com) +- Changes for new Nuage RPMS (vishal.patil@nuagenetworks.net) +- Make the GCE image_name and the machine_type configurable from the CLI +  (lhuard@amadeus.com) +- Better structure the output of the list playbook (lhuard@amadeus.com) +- Fix issue when there are no infra nodes (lhuard@amadeus.com) +- Remove fluentd_master and fluentd_node roles. (abutcher@redhat.com) +- Remove etcd up checks from fluentd_master. (abutcher@redhat.com) +  * Thu Feb 11 2016 Brenton Leanhardt <bleanhar@redhat.com> 3.0.40-1  - Bug 1306665 - [metrics] update metrics-deployer template to use latest image    versions (bleanhar@redhat.com) diff --git a/playbooks/adhoc/create_pv/pv-template.j2 b/playbooks/adhoc/create_pv/pv-template.j2 index 5654ef6c4..df082614b 100644 --- a/playbooks/adhoc/create_pv/pv-template.j2 +++ b/playbooks/adhoc/create_pv/pv-template.j2 @@ -10,7 +10,7 @@ spec:      storage: {{ vol_size }}Gi    accessModes:      - ReadWriteOnce -  persistentVolumeReclaimPolicy: Recycle +  persistentVolumeReclaimPolicy: Retain    awsElasticBlockStore:      volumeID: aws://{{ vol_az }}/{{ vol_id }}      fsType: ext4 diff --git a/playbooks/adhoc/s3_registry/s3_registry.yml b/playbooks/adhoc/s3_registry/s3_registry.yml index 38ce92e92..daf84e242 100644 --- a/playbooks/adhoc/s3_registry/s3_registry.yml +++ b/playbooks/adhoc/s3_registry/s3_registry.yml @@ -15,6 +15,9 @@      aws_secret_key: "{{ lookup('env', 'S3_SECRET_ACCESS_KEY') }}"      aws_bucket_name: "{{ aws_bucket | default(clusterid ~ '-docker') }}"      aws_bucket_region: "{{ aws_region | default(lookup('env', 'S3_REGION') | default('us-east-1', true)) }}" +    aws_create_bucket: "{{ aws_create | default(True) }}" +    aws_tmp_path: "{{ aws_tmp_pathfile | default('/root/config.yml')}}" +    aws_delete_tmp_file: "{{ aws_delete_tmp | default(True) }}"    tasks: @@ -30,6 +33,7 @@      command: oc scale --replicas=0 dc/docker-registry    - name: Create S3 bucket +    when: aws_create_bucket | bool      local_action:        module: s3 bucket="{{ aws_bucket_name }}" mode=create @@ -70,4 +74,5 @@      command: oc scale --replicas=1 dc/docker-registry    - name: Delete temporary config file -    file: path=/root/config.yml state=absent +    file: path={{ aws_tmp_path }} state=absent +    when: aws_delete_tmp_file | bool diff --git a/playbooks/adhoc/sdn_restart/oo-sdn-restart.yml b/playbooks/adhoc/sdn_restart/oo-sdn-restart.yml index 0dc021fbc..08e8f8968 100755 --- a/playbooks/adhoc/sdn_restart/oo-sdn-restart.yml +++ b/playbooks/adhoc/sdn_restart/oo-sdn-restart.yml @@ -49,5 +49,4 @@        name: "{{ item }}"        state: restarted      with_items: -    - oso-f22-host-monitoring -    - oso-rhel7-zagg-client +    - oso-rhel7-host-monitoring diff --git a/playbooks/adhoc/uninstall.yml b/playbooks/adhoc/uninstall.yml index 36d686c8b..e68fd810a 100644 --- a/playbooks/adhoc/uninstall.yml +++ b/playbooks/adhoc/uninstall.yml @@ -53,6 +53,13 @@          - pcsd        failed_when: false +    - name: Stop additional atomic services +      service: name={{ item }} state=stopped +      when: is_atomic | bool +      with_items: +        - etcd_container +      failed_when: false +      - name: Remove packages        action: "{{ ansible_pkg_mgr }} name={{ item }} state=absent"        when: not is_atomic | bool @@ -66,9 +73,14 @@          - atomic-openshift-master          - atomic-openshift-node          - atomic-openshift-sdn-ovs +        - cockpit-bridge +        - cockpit-docker +        - cockpit-shell +        - cockpit-ws          - corosync          - etcd          - haproxy +        - kubernetes-client          - openshift          - openshift-master          - openshift-node @@ -125,7 +137,11 @@        register: exited_containers_to_delete        with_items:          - aep3.*/aep +        - aep3.*/node +        - aep3.*/openvswitch          - openshift3/ose +        - openshift3/node +        - openshift3/openvswitch          - openshift/origin      - shell: "docker rm {{ item.stdout_lines | join(' ') }}" @@ -140,6 +156,7 @@        with_items:          - registry\.access\..*redhat\.com/openshift3          - registry\.access\..*redhat\.com/aep3 +        - registry\.qe\.openshift\.com/.*          - registry\.access\..*redhat\.com/rhel7/etcd          - docker.io/openshift @@ -185,6 +202,7 @@          - /etc/sysconfig/atomic-openshift-node          - /etc/sysconfig/openshift-master          - /etc/sysconfig/openshift-node +        - /etc/sysconfig/openvswitch          - /etc/sysconfig/origin-master          - /etc/sysconfig/origin-master-api          - /etc/sysconfig/origin-master-controllers diff --git a/playbooks/adhoc/zabbix_setup/oo-config-zaio.yml b/playbooks/adhoc/zabbix_setup/oo-config-zaio.yml index ec28564cf..2f1d003ff 100755 --- a/playbooks/adhoc/zabbix_setup/oo-config-zaio.yml +++ b/playbooks/adhoc/zabbix_setup/oo-config-zaio.yml @@ -8,8 +8,12 @@      g_server: http://localhost/zabbix/api_jsonrpc.php      g_user: Admin      g_password: zabbix +    g_zbx_scriptrunner_user: scriptrunner +    g_zbx_scriptrunner_bastion_host: specialhost.example.com    roles:    - role: os_zabbix      ozb_server: "{{ g_server }}"      ozb_user: "{{ g_user }}"      ozb_password: "{{ g_password }}" +    ozb_scriptrunner_user:  "{{ g_zbx_scriptrunner_user }}" +    ozb_scriptrunner_bastion_host: "{{ g_zbx_scriptrunner_bastion_host }}" diff --git a/playbooks/aws/openshift-cluster/cluster_hosts.yml b/playbooks/aws/openshift-cluster/cluster_hosts.yml index 1023f3ec1..9a3361919 100644 --- a/playbooks/aws/openshift-cluster/cluster_hosts.yml +++ b/playbooks/aws/openshift-cluster/cluster_hosts.yml @@ -10,8 +10,12 @@ g_nfs_hosts:     "{{ g_all_hosts | intersect(groups['tag_host-type_nfs'] | defau  g_master_hosts:  "{{ g_all_hosts | intersect(groups['tag_host-type_master'] | default([])) }}" +g_new_master_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type_new_master'] | default([])) }}" +  g_node_hosts:    "{{ g_all_hosts | intersect(groups['tag_host-type_node'] | default([])) }}" +g_new_node_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type_new_node'] | default([])) }}" +  g_infra_hosts:   "{{ g_node_hosts | intersect(groups['tag_sub-host-type_infra']) | default([]) }}" -g_compute_hosts: "{{ g_node_hosts | intersect(groups['tag_sub-host-type_compute']) | default([]) }}" +g_compute_hosts: "{{ g_node_hosts | intersect(groups['tag_sub-host-type_compute'] | default([])) }}" diff --git a/playbooks/aws/openshift-cluster/tasks/launch_instances.yml b/playbooks/aws/openshift-cluster/tasks/launch_instances.yml index 6090ed6fe..63be06ecf 100644 --- a/playbooks/aws/openshift-cluster/tasks/launch_instances.yml +++ b/playbooks/aws/openshift-cluster/tasks/launch_instances.yml @@ -34,26 +34,22 @@  - set_fact:      ec2_instance_type: "{{ ec2_master_instance_type | default(lookup('env', 'ec2_master_instance_type') | default(lookup('env', 'ec2_instance_type') | default(deployment_vars[deployment_type].type, true), true), true) }}" -    ec2_security_groups: "{{ ec2_master_security_groups -                    | default(deployment_vars[deployment_type].security_groups, true) }}" +    ec2_security_groups: "{{ ec2_master_security_groups | default(lookup('env', 'ec2_master_security_groups') | default(lookup('env', 'ec2_security_groups') | default(deployment_vars[deployment_type].security_groups, true), true), true) }}"    when: host_type == "master" and sub_host_type == "default"  - set_fact:      ec2_instance_type: "{{ ec2_etcd_instance_type | default(lookup('env', 'ec2_etcd_instance_type') | default(lookup('env', 'ec2_instance_type') | default(deployment_vars[deployment_type].type, true), true), true) }}" -    ec2_security_groups: "{{ ec2_etcd_security_groups -                    | default(deployment_vars[deployment_type].security_groups, true)}}" +    ec2_security_groups: "{{ ec2_etcd_security_groups | default(lookup('env', 'ec2_etcd_security_groups') | default(lookup('env', 'ec2_security_groups') | default(deployment_vars[deployment_type].security_groups, true), true), true) }}"    when: host_type == "etcd" and sub_host_type == "default"  - set_fact:      ec2_instance_type: "{{ ec2_infra_instance_type | default(lookup('env', 'ec2_infra_instance_type') | default(lookup('env', 'ec2_instance_type') | default(deployment_vars[deployment_type].type, true), true), true) }}" -    ec2_security_groups: "{{ ec2_infra_security_groups -                    | default(deployment_vars[deployment_type].security_groups, true) }}" +    ec2_security_groups: "{{ ec2_infra_security_groups | default(lookup('env', 'ec2_infra_security_groups') | default(lookup('env', 'ec2_security_groups') | default(deployment_vars[deployment_type].security_groups, true), true), true) }}"    when: host_type == "node" and sub_host_type == "infra"  - set_fact:      ec2_instance_type: "{{ ec2_node_instance_type | default(lookup('env', 'ec2_node_instance_type') | default(lookup('env', 'ec2_instance_type') | default(deployment_vars[deployment_type].type, true), true), true) }}" -    ec2_security_groups: "{{ ec2_node_security_groups -                    | default(deployment_vars[deployment_type].security_groups, true) }}" +    ec2_security_groups: "{{ ec2_node_security_groups | default(lookup('env', 'ec2_node_security_groups') | default(lookup('env', 'ec2_security_groups') | default(deployment_vars[deployment_type].security_groups, true), true), true) }}"    when: host_type == "node" and sub_host_type == "compute"  - set_fact: @@ -61,8 +57,7 @@                            | default(deployment_vars[deployment_type].type, true) }}"    when: ec2_instance_type is not defined  - set_fact: -    ec2_security_groups: "{{ lookup('env', 'ec2_security_groups') -                    | default(deployment_vars[deployment_type].security_groups, true) }}" +    ec2_security_groups: "{{ lookup('env', 'ec2_security_groups') | default(deployment_vars[deployment_type].security_groups, true) }}"    when: ec2_security_groups is not defined  - name: Find amis for deployment_type diff --git a/playbooks/byo/openshift-cluster/cluster_hosts.yml b/playbooks/byo/openshift-cluster/cluster_hosts.yml index 10872e738..8893db245 100644 --- a/playbooks/byo/openshift-cluster/cluster_hosts.yml +++ b/playbooks/byo/openshift-cluster/cluster_hosts.yml @@ -5,6 +5,8 @@ g_lb_hosts:     "{{ groups.lb | default([]) }}"  g_master_hosts: "{{ groups.masters | default([]) }}" +g_new_master_hosts: "{{ groups.new_masters | default([]) }}" +  g_node_hosts:   "{{ groups.nodes | default([]) }}"  g_new_node_hosts: "{{ groups.new_nodes | default([]) }}" diff --git a/playbooks/byo/openshift-cluster/upgrades/v3_0_to_v3_1/README.md b/playbooks/byo/openshift-cluster/upgrades/v3_0_to_v3_1/README.md index c434be5b7..eb1f481d7 100644 --- a/playbooks/byo/openshift-cluster/upgrades/v3_0_to_v3_1/README.md +++ b/playbooks/byo/openshift-cluster/upgrades/v3_0_to_v3_1/README.md @@ -4,7 +4,6 @@  This playbook currently performs the  following steps. -**TODO: update for current steps**   * Upgrade and restart master services   * Upgrade and restart node services   * Modifies the subset of the configuration necessary diff --git a/playbooks/byo/openshift-cluster/upgrades/v3_1_to_v3_2/README.md b/playbooks/byo/openshift-cluster/upgrades/v3_1_to_v3_2/README.md new file mode 100644 index 000000000..62577c3df --- /dev/null +++ b/playbooks/byo/openshift-cluster/upgrades/v3_1_to_v3_2/README.md @@ -0,0 +1,16 @@ +# v3.1 to v3.2 upgrade playbook + +## Overview +This playbook currently performs the +following steps. + + * Upgrade and restart master services + * Upgrade and restart node services + * Modifies the subset of the configuration necessary + * Applies the latest cluster policies + * Updates the default router if one exists + * Updates the default registry if one exists + * Updates image streams and quickstarts + +## Usage +ansible-playbook -i ~/ansible-inventory openshift-ansible/playbooks/byo/openshift-cluster/upgrades/v3_1_to_v3_2/upgrade.yml diff --git a/playbooks/byo/openshift-cluster/upgrades/v3_1_to_v3_2/upgrade.yml b/playbooks/byo/openshift-cluster/upgrades/v3_1_to_v3_2/upgrade.yml new file mode 100644 index 000000000..0c91b51d6 --- /dev/null +++ b/playbooks/byo/openshift-cluster/upgrades/v3_1_to_v3_2/upgrade.yml @@ -0,0 +1,19 @@ +--- +- include: ../../../../common/openshift-cluster/evaluate_groups.yml +  vars: +    g_etcd_hosts: "{{ groups.etcd | default([]) }}" +    g_master_hosts: "{{ groups.masters | default([]) }}" +    g_new_master_hosts: [] +    g_nfs_hosts: "{{ groups.nfs | 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 }}" +- include: ../../../../common/openshift-cluster/upgrades/v3_1_to_v3_2/pre.yml +  vars: +    openshift_deployment_type: "{{ deployment_type }}" +- include: ../../../../common/openshift-cluster/upgrades/v3_1_to_v3_2/upgrade.yml +  vars: +    openshift_deployment_type: "{{ deployment_type }}" +- include: ../../../openshift-master/restart.yml +- include: ../../../../common/openshift-cluster/upgrades/v3_1_to_v3_2/post.yml diff --git a/playbooks/byo/openshift-cluster/scaleup.yml b/playbooks/byo/openshift-master/scaleup.yml index 1702690f6..18797d02a 100644 --- a/playbooks/byo/openshift-cluster/scaleup.yml +++ b/playbooks/byo/openshift-master/scaleup.yml @@ -1,5 +1,5 @@  --- -- include: ../../common/openshift-cluster/scaleup.yml +- include: ../../common/openshift-master/scaleup.yml    vars_files:    - ../../byo/openshift-cluster/cluster_hosts.yml    vars: diff --git a/playbooks/byo/openshift-node/filter_plugins b/playbooks/byo/openshift-node/filter_plugins new file mode 120000 index 000000000..99a95e4ca --- /dev/null +++ b/playbooks/byo/openshift-node/filter_plugins @@ -0,0 +1 @@ +../../../filter_plugins
\ No newline at end of file diff --git a/playbooks/byo/openshift-node/lookup_plugins b/playbooks/byo/openshift-node/lookup_plugins new file mode 120000 index 000000000..ac79701db --- /dev/null +++ b/playbooks/byo/openshift-node/lookup_plugins @@ -0,0 +1 @@ +../../../lookup_plugins
\ No newline at end of file diff --git a/playbooks/byo/openshift-node/roles b/playbooks/byo/openshift-node/roles new file mode 120000 index 000000000..20c4c58cf --- /dev/null +++ b/playbooks/byo/openshift-node/roles @@ -0,0 +1 @@ +../../../roles
\ No newline at end of file diff --git a/playbooks/byo/openshift-node/scaleup.yml b/playbooks/byo/openshift-node/scaleup.yml new file mode 100644 index 000000000..0343597b5 --- /dev/null +++ b/playbooks/byo/openshift-node/scaleup.yml @@ -0,0 +1,8 @@ +--- +- include: ../../common/openshift-node/scaleup.yml +  vars_files: +  - ../../byo/openshift-cluster/cluster_hosts.yml +  vars: +    openshift_cluster_id: "{{ cluster_id | default('default') }}" +    openshift_debug_level: "{{ debug_level | default(2) }}" +    openshift_deployment_type: "{{ deployment_type }}" diff --git a/playbooks/common/openshift-cluster/additional_config.yml b/playbooks/common/openshift-cluster/additional_config.yml new file mode 100644 index 000000000..1ac78468a --- /dev/null +++ b/playbooks/common/openshift-cluster/additional_config.yml @@ -0,0 +1,56 @@ +- name: Configure flannel +  hosts: oo_first_master +  vars: +    etcd_urls: "{{ openshift.master.etcd_urls }}" +  roles: +  - role: flannel_register +    when: openshift.common.use_flannel | bool + +- name: Additional master configuration +  hosts: oo_first_master +  vars: +    cockpit_plugins: "{{ osm_cockpit_plugins | default(['cockpit-kubernetes']) }}" +    etcd_urls: "{{ openshift.master.etcd_urls }}" +    openshift_master_ha: "{{ groups.oo_masters | length > 1 }}" +    omc_cluster_hosts: "{{ groups.oo_masters | join(' ')}}" +  roles: +  - role: openshift_master_cluster +    when: openshift_master_ha | bool and openshift.master.cluster_method == "pacemaker" +  - role: openshift_examples +    when: openshift.common.install_examples | bool +  - role: openshift_cluster_metrics +    when: openshift.common.use_cluster_metrics | bool +  - role: openshift_manageiq +    when: openshift.common.use_manageiq | bool +  - role: cockpit +    when: not openshift.common.is_atomic and ( deployment_type in ['atomic-enterprise','openshift-enterprise'] ) and +      (osm_use_cockpit | bool or osm_use_cockpit is undefined ) +  - role: flannel_register +    when: openshift.common.use_flannel | bool +  - role: pods +    when: openshift.common.deployment_type == 'online' +  - role: os_env_extras +    when: openshift.common.deployment_type == 'online' + +- name: Create persistent volumes and create hosted services +  hosts: oo_first_master +  vars: +    attach_registry_volume: "{{ openshift.hosted.registry.storage.kind != None }}" +    deploy_infra: "{{ openshift.master.infra_nodes | default([]) | length > 0 }}" +    persistent_volumes: "{{ hostvars[groups.oo_first_master.0] | oo_persistent_volumes(groups) }}" +    persistent_volume_claims: "{{ hostvars[groups.oo_first_master.0] | oo_persistent_volume_claims }}" +  roles: +  - role: openshift_persistent_volumes +    when: persistent_volumes | length > 0 or persistent_volume_claims | length > 0 +  - role: openshift_serviceaccounts +    openshift_serviceaccounts_names: +    - router +    - registry +    openshift_serviceaccounts_namespace: default +    openshift_serviceaccounts_sccs: +    - privileged +  - role: openshift_router +    when: deploy_infra | bool +  - role: openshift_registry +    registry_volume_claim: "{{ openshift.hosted.registry.storage.volume.name }}-claim" +    when: deploy_infra | bool and attach_registry_volume | bool diff --git a/playbooks/common/openshift-cluster/config.yml b/playbooks/common/openshift-cluster/config.yml index 2cad4b362..23c8f039e 100644 --- a/playbooks/common/openshift-cluster/config.yml +++ b/playbooks/common/openshift-cluster/config.yml @@ -11,4 +11,6 @@  - include: ../openshift-master/config.yml +- include: additional_config.yml +  - include: ../openshift-node/config.yml diff --git a/playbooks/common/openshift-cluster/evaluate_groups.yml b/playbooks/common/openshift-cluster/evaluate_groups.yml index 7917bfba5..432a92b49 100644 --- a/playbooks/common/openshift-cluster/evaluate_groups.yml +++ b/playbooks/common/openshift-cluster/evaluate_groups.yml @@ -10,8 +10,8 @@      when: g_etcd_hosts is not defined    - fail: -      msg: This playbook requires g_master_hosts to be set -    when: g_master_hosts is not defined +      msg: This playbook requires g_master_hosts or g_new_master_hosts to be set +    when: g_master_hosts is not defined and g_new_master_hosts is not defined    - fail:        msg: This playbook requires g_node_hosts or g_new_node_hosts to be set @@ -29,6 +29,14 @@        msg: The nfs group must be limited to one host      when: (groups[g_nfs_hosts] | default([])) | length > 1 +  - name: Evaluate oo_masters +    add_host: +      name: "{{ item }}" +      groups: oo_masters +      ansible_ssh_user: "{{ g_ssh_user | default(omit) }}" +      ansible_sudo: "{{ g_sudo | default(omit) }}" +    with_items: "{{ g_master_hosts | union(g_new_master_hosts) | default([]) }}" +    - name: Evaluate oo_etcd_to_config      add_host:        name: "{{ item }}" @@ -43,11 +51,7 @@        groups: oo_masters_to_config        ansible_ssh_user: "{{ g_ssh_user | default(omit) }}"        ansible_sudo: "{{ g_sudo | default(omit) }}" -    with_items: "{{ g_master_hosts | default([]) }}" - -  # Use g_new_node_hosts if it exists otherwise g_node_hosts -  - set_fact: -      g_node_hosts_to_config: "{{ g_new_node_hosts | default(g_node_hosts | default([], true), true) }}" +    with_items: "{{ g_new_master_hosts | default(g_master_hosts | default([], true), true) }}"    - name: Evaluate oo_nodes_to_config      add_host: @@ -55,7 +59,7 @@        groups: oo_nodes_to_config        ansible_ssh_user: "{{ g_ssh_user | default(omit) }}"        ansible_sudo: "{{ g_sudo | default(omit) }}" -    with_items: "{{ g_node_hosts_to_config | default([]) }}" +    with_items: "{{ g_new_node_hosts | default(g_node_hosts | default([], true), true) }}"    # Skip adding the master to oo_nodes_to_config when g_new_node_hosts is    - name: Evaluate oo_nodes_to_config diff --git a/playbooks/common/openshift-cluster/scaleup.yml b/playbooks/common/openshift-cluster/scaleup.yml deleted file mode 100644 index d2ba3fc7a..000000000 --- a/playbooks/common/openshift-cluster/scaleup.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -- include: evaluate_groups.yml - -- include: ../openshift-node/config.yml -  vars: -    openshift_deployment_type: "{{ deployment_type }}" diff --git a/playbooks/common/openshift-cluster/upgrades/files/ensure_system_units_have_version.sh b/playbooks/common/openshift-cluster/upgrades/files/ensure_system_units_have_version.sh new file mode 100644 index 000000000..239f43314 --- /dev/null +++ b/playbooks/common/openshift-cluster/upgrades/files/ensure_system_units_have_version.sh @@ -0,0 +1,51 @@ +#!/bin/bash +set -e + +SERVICE_TYPE=$1 +DEPLOYMENT_TYPE=$2 +VERSION="v${3}" + +add_image_version_to_sysconfig () { +    unit_name=$2 +    sysconfig_file=/etc/sysconfig/${unit_name} + +    if ! grep IMAGE_VERSION ${sysconfig_file}; then +        sed -i "/CONFIG_FILE/a IMAGE_VERSION=${1}" ${sysconfig_file} +    else +        sed -i "s/\(IMAGE_VERSION=\).*/\1${1}/" ${sysconfig_file} +    fi +} + +add_image_version_to_unit () { +    deployment_type=$1 +    unit_file=$2 + +    if ! grep IMAGE_VERSION $unit_file; then +        image_namespace="openshift/" +        if [ $deployment_type == "atomic-enterprise" ]; then +            image_namespace="aep3/" +        elif [ $deployment_type == "openshift-enterprise" ]; then +            image_namespace="openshift3/" +        fi + +        sed -i "s|\(${image_namespace}[a-zA-Z0-9]\+\)|\1:\${IMAGE_VERSION}|" $unit_file +    fi +} + +for unit_file in $(ls /etc/systemd/system/${SERVICE_TYPE}*.service); do +    unit_name=$(basename -s .service ${unit_file}) +    add_image_version_to_sysconfig $VERSION $unit_name +    add_image_version_to_unit $DEPLOYMENT_TYPE $unit_file +done + +if [ -e /etc/sysconfig/openvswitch ]; then +    add_image_version_to_sysconfig $VERSION openvswitch +else +    echo IMAGE_VERSION=${VERSION} > /etc/sysconfig/openvswitch +fi  +if ! grep EnvironmentFile /etc/systemd/system/openvswitch.service > /dev/null; then +    sed -i "/Service/a EnvironmentFile=/etc/sysconfig/openvswitch" /etc/systemd/system/openvswitch.service +fi +add_image_version_to_unit $DEPLOYMENT_TYPE /etc/systemd/system/openvswitch.service + +systemctl daemon-reload diff --git a/playbooks/common/openshift-cluster/upgrades/files/openshift_container_versions.sh b/playbooks/common/openshift-cluster/upgrades/files/openshift_container_versions.sh new file mode 100644 index 000000000..4095b9829 --- /dev/null +++ b/playbooks/common/openshift-cluster/upgrades/files/openshift_container_versions.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# Here we don't really care if this is a master, api, controller or node image. +# We just need to know the version of one of them. +unit_file=$(ls /etc/systemd/system/${1}*.service | head -n1) +installed_container_name=$(basename -s .service ${unit_file}) +installed=$(docker exec ${installed_container_name} openshift version | grep openshift | awk '{ print $2 }' | cut -f1 -d"-" | tr -d 'v') + +if [ ${1} == "origin" ]; then +    image_name="openshift/origin" +elif grep aep $unit_file > /dev/null; then +    image_name="aep3/aep" +elif grep ose $unit_file > /dev/null; then +    image_name="openshift3/ose" +fi + +docker pull ${image_name} 1>&2 +available=$(docker run --rm ${image_name} version | grep openshift | awk '{ print $2 }' | cut -f1 -d"-" | tr -d 'v') + +echo "---" +echo "curr_version: ${installed}" +echo "avail_version: ${available}" diff --git a/playbooks/common/openshift-cluster/upgrades/files/rpm_versions.sh b/playbooks/common/openshift-cluster/upgrades/files/rpm_versions.sh new file mode 100644 index 000000000..a2a9579b5 --- /dev/null +++ b/playbooks/common/openshift-cluster/upgrades/files/rpm_versions.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +installed=$(yum list installed -e 0 -q "$@" 2>&1 | tail -n +2 | awk '{ print $2 }' | sort -r | tr '\n' ' ') +available=$(yum list available -e 0 -q "$@" 2>&1 | tail -n +2 | grep -v 'el7ose' | awk '{ print $2 }' | sort -r | tr '\n' ' ') + +echo "---" +echo "curr_version: ${installed}" +echo "avail_version: ${available}" diff --git a/playbooks/common/openshift-cluster/upgrades/files/versions.sh b/playbooks/common/openshift-cluster/upgrades/files/versions.sh deleted file mode 100644 index 3a1a8ebb1..000000000 --- a/playbooks/common/openshift-cluster/upgrades/files/versions.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -yum_installed=$(yum list installed -e 0 -q "$@" 2>&1 | tail -n +2 | awk '{ print $2 }' | sort -r | tr '\n' ' ') - -yum_available=$(yum list available -e 0 -q "$@" 2>&1 | tail -n +2 | grep -v 'el7ose' | awk '{ print $2 }' | sort -r | tr '\n' ' ') - -echo "---" -echo "curr_version: ${yum_installed}" -echo "avail_version: ${yum_available}" 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 049ac997c..6d7cefc8e 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 @@ -66,7 +66,7 @@        g_new_service_name: "{{ 'origin' if deployment_type =='origin' else 'atomic-openshift' }}"    - name: Determine available versions -    script: ../files/versions.sh {{ g_new_service_name }} openshift +    script: ../files/rpm_versions.sh {{ g_new_service_name }} openshift      register: g_versions_result    - set_fact: @@ -622,6 +622,16 @@        '{"spec":{"template":{"spec":{"containers":[{"name":"router","image":"{{ router_image }}"}]}}}}'        --api-version=v1      with_items: haproxy_routers +    when: not openshift.common.version_gte_3_1_1_or_1_1_1 + +  - name: Update router image to current version +    when: all_routers.rc == 0 +    command: > +      {{ oc_cmd }} patch dc/{{ item['labels']['deploymentconfig'] }} -p +      '{"spec":{"template":{"spec":{"containers":[{"name":"router","image":"{{ router_image }}","livenessProbe":{"tcpSocket":null,"httpGet":{"path": "/healthz", "port": 1936, "host": "localhost", "scheme": "HTTP"},"initialDelaySeconds":10,"timeoutSeconds":1}}]}}}}' +      --api-version=v1 +    with_items: haproxy_routers +    when: openshift.common.version_gte_3_1_1_or_1_1_1    - name: Check for default registry      command: > diff --git a/playbooks/common/openshift-cluster/upgrades/v3_1_minor/post.yml b/playbooks/common/openshift-cluster/upgrades/v3_1_minor/post.yml index d7a2ac405..196393b2a 100644 --- a/playbooks/common/openshift-cluster/upgrades/v3_1_minor/post.yml +++ b/playbooks/common/openshift-cluster/upgrades/v3_1_minor/post.yml @@ -37,7 +37,7 @@      when: all_routers.rc == 0      command: >        {{ oc_cmd }} patch dc/{{ item['labels']['deploymentconfig'] }} -p -      '{"spec":{"template":{"spec":{"containers":[{"name":"router","image":"{{ router_image }}"}]}}}}' +      '{"spec":{"template":{"spec":{"containers":[{"name":"router","image":"{{ router_image }}","livenessProbe":{"tcpSocket":null,"httpGet":{"path": "/healthz", "port": 1936, "host": "localhost", "scheme": "HTTP"},"initialDelaySeconds":10,"timeoutSeconds":1}}]}}}}'        --api-version=v1      with_items: haproxy_routers diff --git a/playbooks/common/openshift-cluster/upgrades/v3_1_minor/pre.yml b/playbooks/common/openshift-cluster/upgrades/v3_1_minor/pre.yml index 12b9c84d3..864622a09 100644 --- a/playbooks/common/openshift-cluster/upgrades/v3_1_minor/pre.yml +++ b/playbooks/common/openshift-cluster/upgrades/v3_1_minor/pre.yml @@ -41,7 +41,7 @@        g_new_service_name: "{{ 'origin' if deployment_type =='origin' else 'atomic-openshift' }}"    - name: Determine available versions -    script: ../files/versions.sh {{ g_new_service_name }} +    script: ../files/rpm_versions.sh {{ g_new_service_name }}      register: g_versions_result    - set_fact: diff --git a/playbooks/common/openshift-cluster/upgrades/v3_1_minor/upgrade.yml b/playbooks/common/openshift-cluster/upgrades/v3_1_minor/upgrade.yml index dbf746f12..54bb251f7 100644 --- a/playbooks/common/openshift-cluster/upgrades/v3_1_minor/upgrade.yml +++ b/playbooks/common/openshift-cluster/upgrades/v3_1_minor/upgrade.yml @@ -13,10 +13,11 @@    tasks:    - name: Upgrade master packages      command: "{{ ansible_pkg_mgr}} update -y {{ openshift.common.service_type }}-master{{ openshift_version }}" +    when: not openshift.common.is_containerized | bool    - name: Ensure python-yaml present for config upgrade      action: "{{ ansible_pkg_mgr }} name=PyYAML state=present" -    when: not openshift.common.is_atomic | bool +    when: not openshift.common.is_containerized | bool  # Currently 3.1.1 does not have any new configuration settings  # @@ -63,6 +64,7 @@    tasks:    - name: Upgrade node packages      command: "{{ ansible_pkg_mgr }} update -y {{ openshift.common.service_type }}-node{{ openshift_version }}" +    when: not openshift.common.is_containerized | bool    - name: Restart node service      service: name="{{ openshift.common.service_type }}-node" state=restarted diff --git a/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/containerized_upgrade.yml b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/containerized_upgrade.yml new file mode 100644 index 000000000..696994688 --- /dev/null +++ b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/containerized_upgrade.yml @@ -0,0 +1,9 @@ +- name: Update system_units +  script: ../files/ensure_system_units_have_version.sh {{ openshift.common.service_type }} {{ openshift.common.deployment_type }} {{ g_new_version }} + +- name: Verifying the correct version was configured +  command: grep {{ verify_upgrade_version }} {{ item }} +  with_items: +    - /etc/sysconfig/openvswitch +    - /etc/sysconfig/{{ openshift.common.service_type }}* +  when: verify_upgrade_version is defined diff --git a/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/docker_upgrade.yml b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/docker_upgrade.yml new file mode 100644 index 000000000..09372e3bd --- /dev/null +++ b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/docker_upgrade.yml @@ -0,0 +1,20 @@ +--- +- name: Upgrade Docker +  hosts: oo_masters_to_config +  vars: +    openshift_version: "{{ openshift_pkg_version | default('') }}" +  tasks: +  - name: Check if Docker is installed +    command: rpm -q docker +    register: pkg_check +    failed_when: pkg_check.rc > 1 +    changed_when: no + +  - name: Upgrade Docker +    command: "{{ ansible_pkg_mgr}} update -y docker" +    when: pkg_check.rc == 0 and g_docker_version.curr_version | version_compare('1.9','<') +    register: docker_upgrade + +  - name: Restart Docker +    service: name=docker state=restarted +    when: docker_upgrade | changed diff --git a/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/filter_plugins b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/filter_plugins new file mode 120000 index 000000000..27ddaa18b --- /dev/null +++ b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/filter_plugins @@ -0,0 +1 @@ +../../../../../filter_plugins
\ No newline at end of file diff --git a/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/library b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/library new file mode 120000 index 000000000..53bed9684 --- /dev/null +++ b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/library @@ -0,0 +1 @@ +../library
\ No newline at end of file diff --git a/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/lookup_plugins b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/lookup_plugins new file mode 120000 index 000000000..cf407f69b --- /dev/null +++ b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/lookup_plugins @@ -0,0 +1 @@ +../../../../../lookup_plugins
\ No newline at end of file diff --git a/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/post.yml b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/post.yml new file mode 100644 index 000000000..3fd97ac14 --- /dev/null +++ b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/post.yml @@ -0,0 +1,57 @@ +--- +############################################################################### +# Post upgrade - Upgrade default router, default registry and examples +############################################################################### +- name: Upgrade default router and default registry +  hosts: oo_first_master +  vars: +    openshift_deployment_type: "{{ deployment_type }}" +    registry_image: "{{  openshift.master.registry_url | replace( '${component}', 'docker-registry' )  | replace ( '${version}', 'v' + g_new_version  ) }}" +    router_image: "{{ openshift.master.registry_url | replace( '${component}', 'haproxy-router' ) | replace ( '${version}', 'v' + g_new_version ) }}" +    oc_cmd: "{{ openshift.common.client_binary }} --config={{ openshift.common.config_base }}/master/admin.kubeconfig" +  roles: +  # Create the new templates shipped in 3.2, existing templates are left +  # unmodified. This prevents the subsequent role definition for +  # openshift_examples from failing when trying to replace templates that do +  # not already exist. We could have potentially done a replace --force to +  # create and update in one step. +  - openshift_examples +  # Update the existing templates +  - role: openshift_examples +    openshift_examples_import_command: replace +  pre_tasks: +  - name: Collect all routers +    command: > +      {{ oc_cmd }} get pods --all-namespaces -l 'router' -o json +    register: all_routers +    failed_when: false +    changed_when: false + +  - set_fact: haproxy_routers="{{ (all_routers.stdout | from_json)['items'] | oo_pods_match_component(openshift_deployment_type, 'haproxy-router') | oo_select_keys_from_list(['metadata']) }}" +    when: all_routers.rc == 0 + +  - set_fact: haproxy_routers=[] +    when: all_routers.rc != 0 + +  - name: Update router image to current version +    when: all_routers.rc == 0 +    command: > +      {{ oc_cmd }} patch dc/{{ item['labels']['deploymentconfig'] }} -p +      '{"spec":{"template":{"spec":{"containers":[{"name":"router","image":"{{ router_image }}","livenessProbe":{"tcpSocket":null,"httpGet":{"path": "/healthz", "port": 1936, "host": "localhost", "scheme": "HTTP"},"initialDelaySeconds":10,"timeoutSeconds":1}}]}}}}' +      --api-version=v1 +    with_items: haproxy_routers + +  - name: Check for default registry +    command: > +      {{ oc_cmd }} get -n default dc/docker-registry +    register: _default_registry +    failed_when: false +    changed_when: false + +  - name: Update registry image to current version +    when: _default_registry.rc == 0 +    command: > +      {{ oc_cmd }} patch dc/docker-registry -p +      '{"spec":{"template":{"spec":{"containers":[{"name":"registry","image":"{{ registry_image }}"}]}}}}' +      --api-version=v1 + diff --git a/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/pre.yml b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/pre.yml new file mode 100644 index 000000000..d423238ec --- /dev/null +++ b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/pre.yml @@ -0,0 +1,240 @@ +--- +############################################################################### +# Evaluate host groups and gather facts +############################################################################### +- name: Load openshift_facts +  hosts: oo_masters_to_config:oo_nodes_to_config:oo_etcd_to_config:oo_lb_to_config +  roles: +  - openshift_facts + +- name: Evaluate additional groups for upgrade +  hosts: localhost +  connection: local +  become: no +  tasks: +  - name: Evaluate etcd_hosts_to_backup +    add_host: +      name: "{{ item }}" +      groups: etcd_hosts_to_backup +    with_items: groups.oo_etcd_to_config if groups.oo_etcd_to_config is defined and groups.oo_etcd_to_config | length > 0 else groups.oo_first_master + +############################################################################### +# Pre-upgrade checks +############################################################################### +- name: Verify upgrade can proceed +  hosts: oo_first_master +  vars: +    openshift_master_ha: "{{ groups.oo_masters_to_config | length > 1 }}" +    target_version: "{{ '1.2' if deployment_type == 'origin' else '3.1.1.900' }}" +  gather_facts: no +  tasks: +  - fail: +      msg: > +        This upgrade is only supported for atomic-enterprise, origin, openshift-enterprise, and online +        deployment types +    when: deployment_type not in ['atomic-enterprise', 'origin','openshift-enterprise', 'online'] + +  - fail: +      msg: > +        openshift_pkg_version is {{ openshift_pkg_version }} which is not a +        valid version for a {{ target_version }} upgrade +    when: openshift_pkg_version is defined and openshift_pkg_version.split('-',1).1 | version_compare(target_version ,'<') + +- name: Verify upgrade can proceed +  hosts: oo_masters_to_config:oo_nodes_to_config +  vars: +    target_version: "{{ '1.2' if deployment_type == 'origin' else '3.1.1.900' }}" +  roles: +  - openshift_cli +  tasks: +  - name: Clean package cache +    command: "{{ ansible_pkg_mgr }} clean all" + +  - set_fact: +      g_new_service_name: "{{ 'origin' if deployment_type =='origin' else 'atomic-openshift' }}" +    when: not openshift.common.is_containerized | bool + +  - name: Determine available versions +    script: ../files/rpm_versions.sh {{ g_new_service_name }} +    register: g_rpm_versions_result +    when: not openshift.common.is_containerized | bool + +  - set_fact: +      g_aos_versions: "{{ g_rpm_versions_result.stdout | from_yaml }}" +    when: not openshift.common.is_containerized | bool + +  - name: Determine available versions +    script: ../files/openshift_container_versions.sh {{ openshift.common.service_type }} +    register: g_containerized_versions_result +    when: openshift.common.is_containerized | bool + +  - set_fact: +      g_aos_versions: "{{ g_containerized_versions_result.stdout | from_yaml }}" +    when: openshift.common.is_containerized | bool + +  - set_fact: +      g_new_version: "{{ g_aos_versions.curr_version.split('-', 1).0 if g_aos_versions.avail_version is none else g_aos_versions.avail_version.split('-', 1).0 }}" +    when: openshift_pkg_version is not defined + +  - fail: +      msg: Verifying the correct version was found +    when: verify_upgrade_version is defined and g_new_version != verify_upgrade_version + +  - set_fact: +      g_new_version: "{{ openshift_pkg_version | replace('-','') }}" +    when: openshift_pkg_version is defined + +  - name: Update systemd units +    script: ../files/ensure_system_units_have_version.sh {{ openshift.common.service_type }} {{ openshift.common.deployment_type }} {{ g_aos_versions.curr_version }} +    when: openshift.common.is_containerized | bool + +  # Note: the version number is hardcoded here in hopes of catching potential +  # bugs in how g_aos_versions.curr_version is set +  - name: Verifying the correct version is installed for upgrade +    shell: grep 3.1.1.6 {{ item }} +    with_items: +      - /etc/sysconfig/openvswitch +      - /etc/sysconfig/{{ openshift.common.service_type }}* +    when: verify_upgrade_version is defined + +  - fail: +      msg: This playbook requires Origin 1.1 or later +    when: deployment_type == 'origin' and g_aos_versions.curr_version | version_compare('1.1','<') + +  - fail: +      msg: This playbook requires Atomic Enterprise Platform/OpenShift Enterprise 3.1 or later +    when: deployment_type == 'atomic-openshift' and g_aos_versions.curr_version | version_compare('3.1','<') + +  # TODO: this may only make sense for RPM installs.  We probably need another check for containerized installs. +  - fail: +      msg: Upgrade packages not found +    when: (g_aos_versions.avail_version | default(g_aos_versions.curr_version, true) | version_compare(target_version, '<')) + +  - name: Determine available Docker +    script: ../files/rpm_versions.sh docker +    register: g_docker_version_result +    when: not openshift.common.is_atomic | bool + +  - name: Determine available Docker +    shell: "rpm -q --queryformat '---\ncurr_version: %{VERSION}\navail_version: \n' docker" +    register: g_atomic_docker_version_result +    when: openshift.common.is_atomic | bool + +  - set_fact: +      g_docker_version: "{{ g_docker_version_result.stdout | from_yaml }}" +    when: not openshift.common.is_atomic | bool + +  - set_fact: +      g_docker_version: "{{ g_atomic_docker_version_result.stdout | from_yaml }}" +    when: openshift.common.is_atomic | bool + +  - fail: +      msg: This playbook requires access to Docker 1.9 or later +    when: not openshift.common.is_atomic | bool +          and (g_docker_version.avail_version | default(g_docker_version.curr_version, true) | version_compare('1.9','<')) + +  # TODO: add check to upgrade ostree to get latest Docker + +  - set_fact: +      pre_upgrade_complete: True + + +############################################################################## +# Gate on pre-upgrade checks +############################################################################## +- 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: +  - set_fact: +      pre_upgrade_completed: "{{ hostvars +                                 | oo_select_keys(pre_upgrade_hosts) +                                 | oo_collect('inventory_hostname', {'pre_upgrade_complete': true}) }}" +  - set_fact: +      pre_upgrade_failed: "{{ pre_upgrade_hosts | difference(pre_upgrade_completed) }}" +  - fail: +      msg: "Upgrade cannot continue. The following hosts did not complete pre-upgrade checks: {{ pre_upgrade_failed | join(',') }}" +    when: pre_upgrade_failed | length > 0 + +############################################################################### +# Backup etcd +############################################################################### +- name: Backup etcd +  hosts: etcd_hosts_to_backup +  vars: +    embedded_etcd: "{{ openshift.master.embedded_etcd }}" +    timestamp: "{{ lookup('pipe', 'date +%Y%m%d%H%M%S') }}" +  roles: +  - openshift_facts +  tasks: +  # Ensure we persist the etcd role for this host in openshift_facts +  - openshift_facts: +      role: etcd +      local_facts: {} +    when: "'etcd' not in openshift" + +  - stat: path=/var/lib/openshift +    register: var_lib_openshift + +  - stat: path=/var/lib/origin +    register: var_lib_origin + +  - name: Create origin symlink if necessary +    file: src=/var/lib/openshift/ dest=/var/lib/origin state=link +    when: var_lib_openshift.stat.exists == True and var_lib_origin.stat.exists == False + +  # TODO: replace shell module with command and update later checks +  # We assume to be using the data dir for all backups. +  - name: Check available disk space for etcd backup +    shell: df --output=avail -k {{ openshift.common.data_dir }} | tail -n 1 +    register: avail_disk + +  # TODO: replace shell module with command and update later checks +  - name: Check current embedded etcd disk usage +    shell: du -k {{ openshift.etcd.etcd_data_dir }} | tail -n 1 | cut -f1 +    register: etcd_disk_usage +    when: embedded_etcd | bool + +  - name: Abort if insufficient disk space for etcd backup +    fail: +      msg: > +        {{ etcd_disk_usage.stdout }} Kb disk space required for etcd backup, +        {{ avail_disk.stdout }} Kb available. +    when: (embedded_etcd | bool) and (etcd_disk_usage.stdout|int > avail_disk.stdout|int) + +  - name: Install etcd (for etcdctl) +    action: "{{ ansible_pkg_mgr }} name=etcd state=latest" + +  - name: Generate etcd backup +    command: > +      etcdctl backup --data-dir={{ openshift.etcd.etcd_data_dir }} +      --backup-dir={{ openshift.common.data_dir }}/etcd-backup-{{ timestamp }} + +  - set_fact: +      etcd_backup_complete: True + +  - name: Display location of etcd backup +    debug: +      msg: "Etcd backup created in {{ openshift.common.data_dir }}/etcd-backup-{{ timestamp }}" + + +############################################################################## +# Gate on etcd backup +############################################################################## +- name: Gate on etcd backup +  hosts: localhost +  connection: local +  become: no +  tasks: +  - set_fact: +      etcd_backup_completed: "{{ hostvars +                                 | oo_select_keys(groups.etcd_hosts_to_backup) +                                 | oo_collect('inventory_hostname', {'etcd_backup_complete': true}) }}" +  - set_fact: +      etcd_backup_failed: "{{ groups.etcd_hosts_to_backup | difference(etcd_backup_completed) }}" +  - fail: +      msg: "Upgrade cannot continue. The following hosts did not complete etcd backup: {{ etcd_backup_failed | join(',') }}" +    when: etcd_backup_failed | length > 0 diff --git a/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/roles b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/roles new file mode 120000 index 000000000..6bc1a7aef --- /dev/null +++ b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/roles @@ -0,0 +1 @@ +../../../../../roles
\ No newline at end of file diff --git a/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/rpm_upgrade.yml b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/rpm_upgrade.yml new file mode 100644 index 000000000..7a2718e1b --- /dev/null +++ b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/rpm_upgrade.yml @@ -0,0 +1,6 @@ +- name: Upgrade packages +  command: "{{ ansible_pkg_mgr}} update -y {{ openshift.common.service_type }}-{{ component }}-{{ g_new_version }}" + +- name: Ensure python-yaml present for config upgrade +  action: "{{ ansible_pkg_mgr }} name=PyYAML state=present" +  when: not openshift.common.is_atomic | bool diff --git a/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/upgrade.yml b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/upgrade.yml new file mode 100644 index 000000000..1f58a1e3f --- /dev/null +++ b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/upgrade.yml @@ -0,0 +1,150 @@ +--- +############################################################################### +# The restart playbook should be run after this playbook completes. +############################################################################### + +- include: docker_upgrade.yml +  when: not openshift.common.is_atomic | bool + +############################################################################### +# Upgrade Masters +############################################################################### +- name: Upgrade master +  hosts: oo_masters_to_config +  tasks: +  - include: rpm_upgrade.yml component=master +    when: not openshift.common.is_containerized | bool + +  - include: containerized_upgrade.yml +    when: openshift.common.is_containerized | bool + +#  - name: Upgrade master configuration +#    openshift_upgrade_config: +#      from_version: '3.1' +#       to_version: '3.2' +#      role: master +#      config_base: "{{ hostvars[inventory_hostname].openshift.common.config_base }}" + +- name: Set master update status to complete +  hosts: oo_masters_to_config +  tasks: +  - set_fact: +      master_update_complete: True + +############################################################################## +# Gate on master update complete +############################################################################## +- name: Gate on master update +  hosts: localhost +  connection: local +  become: no +  tasks: +  - set_fact: +      master_update_completed: "{{ hostvars +                                 | oo_select_keys(groups.oo_masters_to_config) +                                 | oo_collect('inventory_hostname', {'master_update_complete': true}) }}" +  - set_fact: +      master_update_failed: "{{ groups.oo_masters_to_config | difference(master_update_completed) }}" +  - fail: +      msg: "Upgrade cannot continue. The following masters did not finish updating: {{ master_update_failed | join(',') }}" +    when: master_update_failed | length > 0 + +############################################################################### +# Upgrade Nodes +############################################################################### +- name: Upgrade nodes +  hosts: oo_nodes_to_config +  tasks: +  - include: rpm_upgrade.yml +    vars: +       component: "node" +       openshift_version: "{{ openshift_pkg_version | default('') }}" +    when: not openshift.common.is_containerized | bool + +  - include: containerized_upgrade.yml +    when: openshift.common.is_containerized | bool + +  # This will restart the node +  - name: Restart openvswitch service +    service: name="{{ openshift.common.service_type }}-node" state=restarted + +  - set_fact: +      node_update_complete: True + +############################################################################## +# Gate on nodes update +############################################################################## +- name: Gate on nodes update +  hosts: localhost +  connection: local +  become: no +  tasks: +  - set_fact: +      node_update_completed: "{{ hostvars +                                 | oo_select_keys(groups.oo_nodes_to_config) +                                 | oo_collect('inventory_hostname', {'node_update_complete': true}) }}" +  - set_fact: +      node_update_failed: "{{ groups.oo_nodes_to_config | difference(node_update_completed) }}" +  - fail: +      msg: "Upgrade cannot continue. The following nodes did not finish updating: {{ node_update_failed | join(',') }}" +    when: node_update_failed | length > 0 + +############################################################################### +# Reconcile Cluster Roles, Cluster Role Bindings and Security Context Constraints +############################################################################### +- name: Reconcile Cluster Roles and Cluster Role Bindings and Security Context Constraints +  hosts: oo_masters_to_config +  roles: +  - { role: openshift_cli, image_tag: "v{{ g_new_version }}"  } +  vars: +    origin_reconcile_bindings: "{{ deployment_type == 'origin' and g_new_version | version_compare('1.0.6', '>') }}" +    ent_reconcile_bindings: true +    openshift_master_ha: "{{ groups.oo_masters_to_config | length > 1 }}" +  tasks: +  - name: Verifying the correct commandline tools are available +    shell: grep {{ verify_upgrade_version }} {{ openshift.common.admin_binary}} +    when: openshift.common.is_containerized | bool and verify_upgrade_version is defined + +  - name: Reconcile Cluster Roles +    command: > +      {{ openshift.common.admin_binary}} --config={{ openshift.common.config_base }}/master/admin.kubeconfig +      policy reconcile-cluster-roles --confirm +    run_once: true + +  - name: Reconcile Cluster Role Bindings +    command: > +      {{ openshift.common.admin_binary}} --config={{ openshift.common.config_base }}/master/admin.kubeconfig +      policy reconcile-cluster-role-bindings +      --exclude-groups=system:authenticated +      --exclude-groups=system:authenticated:oauth +      --exclude-groups=system:unauthenticated +      --exclude-users=system:anonymous +      --additive-only=true --confirm +    when: origin_reconcile_bindings | bool or ent_reconcile_bindings | bool +    run_once: true + +  - name: Reconcile Security Context Constraints +    command: > +      {{ openshift.common.admin_binary}} policy reconcile-sccs --confirm +    run_once: true + +  - set_fact: +      reconcile_complete: True + +############################################################################## +# Gate on reconcile +############################################################################## +- name: Gate on reconcile +  hosts: localhost +  connection: local +  become: no +  tasks: +  - set_fact: +      reconcile_completed: "{{ hostvars +                                 | oo_select_keys(groups.oo_masters_to_config) +                                 | oo_collect('inventory_hostname', {'reconcile_complete': true}) }}" +  - set_fact: +      reconcile_failed: "{{ groups.oo_masters_to_config | difference(reconcile_completed) }}" +  - fail: +      msg: "Upgrade cannot continue. The following masters did not finish reconciling: {{ reconcile_failed | join(',') }}" +    when: reconcile_failed | length > 0 diff --git a/playbooks/common/openshift-cluster/validate_hostnames.yml b/playbooks/common/openshift-cluster/validate_hostnames.yml index 047431b63..fd82997b9 100644 --- a/playbooks/common/openshift-cluster/validate_hostnames.yml +++ b/playbooks/common/openshift-cluster/validate_hostnames.yml @@ -21,6 +21,6 @@      failed_when: false    - name: Warn user about bad openshift_hostname values      pause: -       prompt: "The hostname \"{{ openshift.common.hostname }}\" for \"{{ ansible_nodename }}\" doesn't resolve to an ip address owned by this host. Please set openshift_hostname variable to a hostname that when resolved on the host in question resolves to an IP address matching an interface on this host. This host will fail liveness checks for pods utilizing hostPorts, press CTRL-C to continue." +       prompt: "The hostname \"{{ openshift.common.hostname }}\" for \"{{ ansible_nodename }}\" doesn't resolve to an ip address owned by this host. Please set openshift_hostname variable to a hostname that when resolved on the host in question resolves to an IP address matching an interface on this host. This host will fail liveness checks for pods utilizing hostPorts, press ENTER to continue or CTRL-C to abort."         seconds: "{{ 10 if openshift_override_hostname_check | default(false) | bool else omit }}"      when: lookupip.stdout not in ansible_all_ipv4_addresses diff --git a/playbooks/common/openshift-master/config.yml b/playbooks/common/openshift-master/config.yml index 77edbd1a6..d087a678a 100644 --- a/playbooks/common/openshift-master/config.yml +++ b/playbooks/common/openshift-master/config.yml @@ -28,6 +28,11 @@                                                          | default([]))                                         | oo_collect('openshift.common.hostname')                                         | default(none, true) }}" + +  - set_fact: +      openshift_master_debug_level: "{{ lookup('oo_option', 'openshift_master_debug_level') | default(openshift.common.debug_level, true) }}" +    when: openshift_master_debug_level is not defined +    roles:    - openshift_facts    post_tasks: @@ -57,6 +62,8 @@            console_use_ssl: "{{ openshift_master_console_use_ssl | default(None) }}"            public_console_url: "{{ openshift_master_public_console_url | default(None) }}"            portal_net: "{{ openshift_master_portal_net | default(None) }}" +          ha: "{{ openshift_master_ha | default(groups.oo_masters | length > 1) }}" +          master_count: "{{ openshift_master_count | default(groups.oo_masters | length) }}"    - openshift_facts:        role: hosted        openshift_env: @@ -144,7 +151,7 @@      when: etcd_client_certs_missing is defined and etcd_client_certs_missing  - name: Determine if master certificates need to be generated -  hosts: oo_masters_to_config +  hosts: oo_first_master:oo_masters_to_config    tasks:    - set_fact:        openshift_master_certs_no_etcd: @@ -221,19 +228,12 @@        validate_checksum: yes      with_items: masters_needing_certs -- name: Compute haproxy_backend_servers -  hosts: localhost -  connection: local -  become: no -  gather_facts: no -  tasks: -  - set_fact: -      haproxy_backend_servers: "{{ hostvars | oo_select_keys(groups['oo_masters_to_config']) | oo_haproxy_backend_masters }}" -  - name: Configure load balancers    hosts: oo_lb_to_config    vars:      sync_tmpdir: "{{ hostvars.localhost.g_master_mktemp.stdout }}" +    haproxy_global_maxconn: 20000 +    haproxy_default_maxconn: 20000      haproxy_frontend_port: "{{ hostvars[groups.oo_first_master.0].openshift.master.api_port }}"      haproxy_frontends:      - name: atomic-openshift-api @@ -248,11 +248,11 @@        mode: tcp        option: tcplog        balance: source -      servers: "{{ hostvars.localhost.haproxy_backend_servers }}" +      servers: "{{ hostvars | oo_select_keys(groups['oo_masters']) | oo_haproxy_backend_masters }}"    roles:    - role: openshift_facts    - role: haproxy -    when: groups.oo_masters_to_config | length > 1 +    when: hostvars[groups.oo_first_master.0].openshift.master.ha | bool  - name: Check for cached session secrets    hosts: oo_first_master @@ -334,8 +334,8 @@    serial: 1    vars:      sync_tmpdir: "{{ hostvars.localhost.g_master_mktemp.stdout }}" -    openshift_master_ha: "{{ groups.oo_masters_to_config | length > 1 }}" -    openshift_master_count: "{{ groups.oo_masters_to_config | length }}" +    openshift_master_ha: "{{ openshift.master.ha }}" +    openshift_master_count: "{{ openshift.master.master_count }}"      openshift_master_session_auth_secrets: "{{ hostvars[groups.oo_first_master.0].openshift.master.session_auth_secrets }}"      openshift_master_session_encryption_secrets: "{{ hostvars[groups.oo_first_master.0].openshift.master.session_encryption_secrets }}"    pre_tasks: @@ -343,12 +343,12 @@      file:        path: "{{ openshift.common.config_base }}/master"        state: directory -    when: master_certs_missing and 'oo_first_master' not in group_names +    when: master_certs_missing | bool and 'oo_first_master' not in group_names    - name: Unarchive the tarball on the master      unarchive:        src: "{{ sync_tmpdir }}/{{ master_cert_subdir }}.tgz"        dest: "{{ master_cert_config_dir }}" -    when: master_certs_missing and 'oo_first_master' not in group_names +    when: master_certs_missing | bool and 'oo_first_master' not in group_names    roles:    - openshift_master    - role: nickhammond.logrotate @@ -359,32 +359,12 @@      group_by: key=oo_masters_deployment_type_{{ openshift.common.deployment_type }}      changed_when: False -- name: Additional master configuration -  hosts: oo_first_master -  vars: -    cockpit_plugins: "{{ osm_cockpit_plugins | default(['cockpit-kubernetes']) }}" -    etcd_urls: "{{ openshift.master.etcd_urls }}" -    openshift_master_ha: "{{ groups.oo_masters_to_config | length > 1 }}" -    omc_cluster_hosts: "{{ groups.oo_masters_to_config | join(' ')}}" +# Additional instance config for online deployments +- name: Additional instance config +  hosts: oo_masters_deployment_type_online    roles: -  - role: openshift_master_cluster -    when: openshift_master_ha | bool and openshift.master.cluster_method == "pacemaker" -  - role: openshift_examples -    when: openshift.common.install_examples | bool -  - role: openshift_cluster_metrics -    when: openshift.common.use_cluster_metrics | bool -  - role: openshift_manageiq -    when: openshift.common.use_manageiq | bool -  - role: cockpit -    when: not openshift.common.is_atomic and ( deployment_type in ['atomic-enterprise','openshift-enterprise'] ) and -      (osm_use_cockpit | bool or osm_use_cockpit is undefined ) -  - role: flannel_register -    when: openshift.common.use_flannel | bool -  - role: pods -    when: openshift.common.deployment_type == 'online' -  - role: os_env_extras -    when: openshift.common.deployment_type == 'online' - +  - pods +  - os_env_extras  - name: Delete temporary directory on localhost    hosts: localhost @@ -394,26 +374,3 @@    tasks:    - file: name={{ g_master_mktemp.stdout }} state=absent      changed_when: False - -- name: Create persistent volumes and create hosted services -  hosts: oo_first_master -  vars: -    attach_registry_volume: "{{ openshift.hosted.registry.storage.kind != None }}" -    deploy_infra: "{{ openshift.master.infra_nodes | default([]) | length > 0 }}" -    persistent_volumes: "{{ hostvars[groups.oo_first_master.0] | oo_persistent_volumes(groups) }}" -    persistent_volume_claims: "{{ hostvars[groups.oo_first_master.0] | oo_persistent_volume_claims }}" -  roles: -  - role: openshift_persistent_volumes -    when: persistent_volumes | length > 0 or persistent_volume_claims | length > 0 -  - role: openshift_serviceaccounts -    openshift_serviceaccounts_names: -    - router -    - registry -    openshift_serviceaccounts_namespace: default -    openshift_serviceaccounts_sccs: -    - privileged -  - role: openshift_router -    when: deploy_infra | bool -  - role: openshift_registry -    when: deploy_infra | bool and attach_registry_volume | bool - diff --git a/playbooks/common/openshift-master/library/modify_yaml.py b/playbooks/common/openshift-master/library/modify_yaml.py new file mode 100755 index 000000000..a4be10ca3 --- /dev/null +++ b/playbooks/common/openshift-master/library/modify_yaml.py @@ -0,0 +1,95 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# vim: expandtab:tabstop=4:shiftwidth=4 + +''' modify_yaml ansible module ''' + +import yaml + +DOCUMENTATION = ''' +--- +module: modify_yaml +short_description: Modify yaml key value pairs +author: Andrew Butcher +requirements: [ ] +''' +EXAMPLES = ''' +- modify_yaml: +    dest: /etc/origin/master/master-config.yaml +    yaml_key: 'kubernetesMasterConfig.masterCount' +    yaml_value: 2 +''' + +def main(): +    ''' Modify key (supplied in jinja2 dot notation) in yaml file, setting +        the key to the desired value. +    ''' + +    # disabling pylint errors for global-variable-undefined and invalid-name +    # for 'global module' usage, since it is required to use ansible_facts +    # pylint: disable=global-variable-undefined, invalid-name, +    # redefined-outer-name +    global module + +    module = AnsibleModule( +        argument_spec=dict( +            dest=dict(required=True), +            yaml_key=dict(required=True), +            yaml_value=dict(required=True), +            backup=dict(required=False, default=True, type='bool'), +        ), +        supports_check_mode=True, +    ) + +    dest = module.params['dest'] +    yaml_key = module.params['yaml_key'] +    yaml_value = module.safe_eval(module.params['yaml_value']) +    backup = module.params['backup'] + +    # Represent null values as an empty string. +    # pylint: disable=missing-docstring, unused-argument +    def none_representer(dumper, data): +        return yaml.ScalarNode(tag=u'tag:yaml.org,2002:null', value=u'') +    yaml.add_representer(type(None), none_representer) + +    try: +        changes = [] + +        yaml_file = open(dest) +        yaml_data = yaml.safe_load(yaml_file.read()) +        yaml_file.close() + +        ptr = yaml_data +        for key in yaml_key.split('.'): +            if key not in ptr and key != yaml_key.split('.')[-1]: +                ptr[key] = {} +            elif key == yaml_key.split('.')[-1]: +                if (key in ptr and module.safe_eval(ptr[key]) != yaml_value) or (key not in ptr): +                    ptr[key] = yaml_value +                    changes.append((yaml_key, yaml_value)) +            else: +                ptr = ptr[key] + +        if len(changes) > 0: +            if backup: +                module.backup_local(dest) +            yaml_file = open(dest, 'w') +            yaml_string = yaml.dump(yaml_data, default_flow_style=False) +            yaml_string = yaml_string.replace('\'\'', '""') +            yaml_file.write(yaml_string) +            yaml_file.close() + +        return module.exit_json(changed=(len(changes) > 0), changes=changes) + +    # ignore broad-except error to avoid stack trace to ansible user +    # pylint: disable=broad-except +    except Exception, e: +        return module.fail_json(msg=str(e)) + +# ignore pylint errors related to the module_utils import +# pylint: disable=redefined-builtin, unused-wildcard-import, wildcard-import +# import module snippets +from ansible.module_utils.basic import * + +if __name__ == '__main__': +    main() diff --git a/playbooks/common/openshift-master/scaleup.yml b/playbooks/common/openshift-master/scaleup.yml new file mode 100644 index 000000000..6f8151d30 --- /dev/null +++ b/playbooks/common/openshift-master/scaleup.yml @@ -0,0 +1,55 @@ +--- +- include: ../openshift-cluster/evaluate_groups.yml + +- name: Gather facts +  hosts: oo_etcd_to_config:oo_masters_to_config:oo_nodes_to_config +  roles: +  - openshift_facts + +- name: Update master count +  hosts: oo_masters:!oo_masters_to_config +  serial: 1 +  roles: +  - openshift_facts +  post_tasks: +  - openshift_facts: +      role: master +      local_facts: +        ha: "{{ openshift_master_ha | default(groups.oo_masters | length > 1) }}" +        master_count: "{{ openshift_master_count | default(groups.oo_masters | length) }}" +  - name: Update master count +    modify_yaml: +      dest: "{{ openshift.common.config_base}}/master/master-config.yaml" +      yaml_key: 'kubernetesMasterConfig.masterCount' +      yaml_value: "{{ openshift.master.master_count }}" +    notify: +    - restart master api +    - restart master controllers +  handlers: +  - name: restart master api +    service: name={{ openshift.common.service_type }}-master-controllers state=restarted +    notify: verify api server +  - name: restart master controllers +    service: name={{ openshift.common.service_type }}-master-controllers state=restarted +  - name: verify api server +    command: > +      curl -k --head --silent {{ openshift.master.api_url }} +    register: api_available_output +    until: api_available_output.stdout.find("200 OK") != -1 +    retries: 120 +    delay: 1 +    changed_when: false + +- name: Configure docker hosts +  hosts: oo_masters_to-config:oo_nodes_to_config +  vars: +    docker_additional_registries: "{{ lookup('oo_option', 'docker_additional_registries') | oo_split }}" +    docker_insecure_registries: "{{ lookup('oo_option',  'docker_insecure_registries') | oo_split }}" +    docker_blocked_registries: "{{ lookup('oo_option', 'docker_blocked_registries') | oo_split }}" +  roles: +  - openshift_facts +  - openshift_docker + +- include: ../openshift-master/config.yml + +- include: ../openshift-node/config.yml diff --git a/playbooks/common/openshift-node/config.yml b/playbooks/common/openshift-node/config.yml index 56d30e9b9..7edea9160 100644 --- a/playbooks/common/openshift-node/config.yml +++ b/playbooks/common/openshift-node/config.yml @@ -1,6 +1,10 @@  ---  - name: Gather and set facts for node hosts    hosts: oo_nodes_to_config +  pre_tasks: +  - set_fact: +      openshift_node_debug_level: "{{ lookup('oo_option', 'openshift_node_debug_level') | default(openshift.common.debug_level, true) }}" +    when: openshift_node_debug_level is not defined    roles:    - openshift_facts    tasks: diff --git a/playbooks/common/openshift-node/scaleup.yml b/playbooks/common/openshift-node/scaleup.yml new file mode 100644 index 000000000..d36f7acea --- /dev/null +++ b/playbooks/common/openshift-node/scaleup.yml @@ -0,0 +1,14 @@ +--- +- include: ../openshift-cluster/evaluate_groups.yml + +- name: Configure docker hosts +  hosts: oo_nodes_to_config +  vars: +    docker_additional_registries: "{{ lookup('oo_option', 'docker_additional_registries') | oo_split }}" +    docker_insecure_registries: "{{ lookup('oo_option',  'docker_insecure_registries') | oo_split }}" +    docker_blocked_registries: "{{ lookup('oo_option', 'docker_blocked_registries') | oo_split }}" +  roles: +  - openshift_facts +  - openshift_docker + +- include: ../openshift-node/config.yml diff --git a/playbooks/gce/openshift-cluster/cluster_hosts.yml b/playbooks/gce/openshift-cluster/cluster_hosts.yml index 15690e3bf..b989e15fa 100644 --- a/playbooks/gce/openshift-cluster/cluster_hosts.yml +++ b/playbooks/gce/openshift-cluster/cluster_hosts.yml @@ -10,8 +10,12 @@ g_nfs_hosts:     "{{ g_all_hosts | intersect(groups['tag_host-type-nfs'] | defau  g_master_hosts:  "{{ g_all_hosts | intersect(groups['tag_host-type-master'] | default([])) }}" +g_new_master_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type-new-master'] | default([])) }}" +  g_node_hosts:    "{{ g_all_hosts | intersect(groups['tag_host-type-node'] | default([])) }}" +g_new_node_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type-new-node'] | default([])) }}" +  g_infra_hosts:   "{{ g_node_hosts | intersect(groups['tag_sub-host-type-infra']) | default([]) }}" -g_compute_hosts: "{{ g_node_hosts | intersect(groups['tag_sub-host-type-compute']) | default([]) }}" +g_compute_hosts: "{{ g_node_hosts | intersect(groups['tag_sub-host-type-compute'] | default([])) }}" diff --git a/playbooks/gce/openshift-cluster/list.yml b/playbooks/gce/openshift-cluster/list.yml index f3004ede9..992033d16 100644 --- a/playbooks/gce/openshift-cluster/list.yml +++ b/playbooks/gce/openshift-cluster/list.yml @@ -18,9 +18,16 @@        ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}"      with_items: groups[scratch_group] | default([], true) | difference(['localhost']) | difference(groups.status_terminated | default([], true)) -- name: List instance(s) +- name: List Hosts    hosts: oo_list_hosts + +- name: List Hosts +  hosts: localhost +  become: no +  connection: local    gather_facts: no +  vars_files: +  - vars.yml    tasks:    - debug: -      msg: "public ip: {{ hostvars[inventory_hostname].gce_public_ip }} private ip:{{ hostvars[inventory_hostname].gce_private_ip }}" +      msg: "{{ hostvars | oo_select_keys(groups[scratch_group] | default([])) | oo_pretty_print_cluster }}" diff --git a/playbooks/gce/openshift-cluster/vars.yml b/playbooks/gce/openshift-cluster/vars.yml index 1ae73fd68..d173213fc 100644 --- a/playbooks/gce/openshift-cluster/vars.yml +++ b/playbooks/gce/openshift-cluster/vars.yml @@ -2,15 +2,15 @@  debug_level: 2  deployment_rhel7_ent_base: -  image: rhel-7 -  machine_type: n1-standard-1 +  image: "{{ lookup('oo_option', 'image_name') | default('rhel-7', True) }}" +  machine_type: "{{ lookup('oo_option', 'machine_type') | default('n1-standard-1', True) }}"    ssh_user: "{{ lookup('env', 'gce_ssh_user') |  default(ansible_ssh_user, true) }}"    sudo: yes  deployment_vars:    origin: -    image: centos-7 -    machine_type: n1-standard-1 +    image: "{{ lookup('oo_option', 'image_name') | default('centos-7', True) }}" +    machine_type: "{{ lookup('oo_option', 'machine_type') | default('n1-standard-1', True) }}"      ssh_user: "{{ lookup('env', 'gce_ssh_user') |  default(ansible_ssh_user, true) }}"      sudo: yes    online: diff --git a/playbooks/libvirt/openshift-cluster/cluster_hosts.yml b/playbooks/libvirt/openshift-cluster/cluster_hosts.yml index 15690e3bf..b989e15fa 100644 --- a/playbooks/libvirt/openshift-cluster/cluster_hosts.yml +++ b/playbooks/libvirt/openshift-cluster/cluster_hosts.yml @@ -10,8 +10,12 @@ g_nfs_hosts:     "{{ g_all_hosts | intersect(groups['tag_host-type-nfs'] | defau  g_master_hosts:  "{{ g_all_hosts | intersect(groups['tag_host-type-master'] | default([])) }}" +g_new_master_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type-new-master'] | default([])) }}" +  g_node_hosts:    "{{ g_all_hosts | intersect(groups['tag_host-type-node'] | default([])) }}" +g_new_node_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type-new-node'] | default([])) }}" +  g_infra_hosts:   "{{ g_node_hosts | intersect(groups['tag_sub-host-type-infra']) | default([]) }}" -g_compute_hosts: "{{ g_node_hosts | intersect(groups['tag_sub-host-type-compute']) | default([]) }}" +g_compute_hosts: "{{ g_node_hosts | intersect(groups['tag_sub-host-type-compute'] | default([])) }}" diff --git a/playbooks/libvirt/openshift-cluster/vars.yml b/playbooks/libvirt/openshift-cluster/vars.yml index c78b52867..f28245f88 100644 --- a/playbooks/libvirt/openshift-cluster/vars.yml +++ b/playbooks/libvirt/openshift-cluster/vars.yml @@ -23,13 +23,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.xz', True) }}" +                  default('http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-1602.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('9461006300d65172f5668d8875f2aad7b54f7ba4e9c5435d65a84a5a2d66e39b', True) }}" +                  default('dd0f5e610e7c5ffacaca35ed7a78a19142a588f4543da77b61c1fb0d74400471', True) }}"      ssh_user: openshift      sudo: yes    online: @@ -42,5 +42,3 @@ deployment_vars:    enterprise: "{{ deployment_rhel7_ent_base }}"    openshift-enterprise: "{{ deployment_rhel7_ent_base }}"    atomic-enterprise: "{{ deployment_rhel7_ent_base }}" - - diff --git a/playbooks/openstack/openshift-cluster/cluster_hosts.yml b/playbooks/openstack/openshift-cluster/cluster_hosts.yml index 1023f3ec1..9a3361919 100644 --- a/playbooks/openstack/openshift-cluster/cluster_hosts.yml +++ b/playbooks/openstack/openshift-cluster/cluster_hosts.yml @@ -10,8 +10,12 @@ g_nfs_hosts:     "{{ g_all_hosts | intersect(groups['tag_host-type_nfs'] | defau  g_master_hosts:  "{{ g_all_hosts | intersect(groups['tag_host-type_master'] | default([])) }}" +g_new_master_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type_new_master'] | default([])) }}" +  g_node_hosts:    "{{ g_all_hosts | intersect(groups['tag_host-type_node'] | default([])) }}" +g_new_node_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type_new_node'] | default([])) }}" +  g_infra_hosts:   "{{ g_node_hosts | intersect(groups['tag_sub-host-type_infra']) | default([]) }}" -g_compute_hosts: "{{ g_node_hosts | intersect(groups['tag_sub-host-type_compute']) | default([]) }}" +g_compute_hosts: "{{ g_node_hosts | intersect(groups['tag_sub-host-type_compute'] | default([])) }}" diff --git a/playbooks/openstack/openshift-cluster/files/heat_stack.yaml b/playbooks/openstack/openshift-cluster/files/heat_stack.yaml index ac1612634..af774aa32 100644 --- a/playbooks/openstack/openshift-cluster/files/heat_stack.yaml +++ b/playbooks/openstack/openshift-cluster/files/heat_stack.yaml @@ -346,16 +346,16 @@ resources:            port_range_max: 22            remote_ip_prefix: { get_param: ssh_incoming }          - direction: ingress -          protocol: udp -          port_range_min: 4789 -          port_range_max: 4789 -          remote_mode: remote_group_id -        - direction: ingress            protocol: tcp            port_range_min: 10250            port_range_max: 10250            remote_mode: remote_group_id            remote_group_id: { get_resource: master-secgrp } +        - direction: ingress +          protocol: udp +          port_range_min: 4789 +          port_range_max: 4789 +          remote_mode: remote_group_id    infra-secgrp:      type: OS::Neutron::SecurityGroup @@ -473,6 +473,7 @@ resources:            subnet:      { get_resource: subnet }            secgrp:              - { get_resource: master-secgrp } +            - { get_resource: node-secgrp }            floating_network: { get_param: external_net }            net_name:              str_replace: diff --git a/playbooks/openstack/openshift-cluster/launch.yml b/playbooks/openstack/openshift-cluster/launch.yml index e9b9cf540..0afcad72e 100644 --- a/playbooks/openstack/openshift-cluster/launch.yml +++ b/playbooks/openstack/openshift-cluster/launch.yml @@ -29,7 +29,7 @@    - name: Create or Update OpenStack Stack      command: 'heat {{ heat_stack_action }} -f {{ openstack_infra_heat_stack }} -             --timeout 3 --enable-rollback +             --timeout 3               -P cluster_env={{ cluster_env }}               -P cluster_id={{ cluster_id }}               -P subnet_24_prefix={{ openstack_subnet_24_prefix }} @@ -59,7 +59,40 @@      until: stack_show_status_result.stdout not in ['CREATE_IN_PROGRESS', 'UPDATE_IN_PROGRESS']      retries: 30      delay: 5 -    failed_when: stack_show_status_result.stdout not in ['CREATE_COMPLETE', 'UPDATE_COMPLETE'] + +  - name: Display the stack resources +    command: 'heat resource-list openshift-ansible-{{ cluster_id }}-stack' +    register: stack_resource_list_result +    when: stack_show_status_result.stdout not in ['CREATE_COMPLETE', 'UPDATE_COMPLETE'] + +  - name: Display the stack status +    command: 'heat stack-show openshift-ansible-{{ cluster_id }}-stack' +    register: stack_show_result +    when: stack_show_status_result.stdout not in ['CREATE_COMPLETE', 'UPDATE_COMPLETE'] + +  - name: Delete the stack +    command: 'heat stack-delete openshift-ansible-{{ cluster_id }}-stack' +    when: stack_show_status_result.stdout not in ['CREATE_COMPLETE', 'UPDATE_COMPLETE'] + +  - fail: +      msg: | + +        +--------------------------------------+ +        |   ^                                  | +        |  /!\ Failed to create the heat stack | +        | /___\                                | +        +--------------------------------------+ + +        Here is the list of stack resources and their status: +        {{ stack_resource_list_result.stdout }} + +        Here is the status of the stack: +        {{ stack_show_result.stdout }} + +          ^   Failed to create the heat stack +         /!\ +        /___\ Please check the `stack_status_reason` line in the above array to know why. +    when: stack_show_status_result.stdout not in ['CREATE_COMPLETE', 'UPDATE_COMPLETE']    - name: Read OpenStack Stack outputs      command: 'heat stack-show openshift-ansible-{{ cluster_id }}-stack' diff --git a/roles/cockpit/tasks/main.yml b/roles/cockpit/tasks/main.yml index e83f72a3d..bd204b7eb 100644 --- a/roles/cockpit/tasks/main.yml +++ b/roles/cockpit/tasks/main.yml @@ -5,8 +5,9 @@      - cockpit-ws      - cockpit-shell      - cockpit-bridge +    - cockpit-docker      - "{{ cockpit_plugins }}" -  when: not openshift.common.is_atomic | bool +  when: not openshift.common.is_containerized | bool  - name: Enable cockpit-ws    service: diff --git a/roles/docker_storage/README.md b/roles/docker_storage/README.md deleted file mode 100644 index bf0158623..000000000 --- a/roles/docker_storage/README.md +++ /dev/null @@ -1,39 +0,0 @@ -docker_storage -========= - -Configure docker_storage options ------------- - -None - -Role Variables --------------- - -None - -Dependencies ------------- - -None - -Example Playbook ----------------- - -Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too: - -    - hosts: servers -      roles: -         - { role/docker_storage:  -               - key: df.fs -                 value: xfs -         } - -License -------- - -ASL 2.0 - -Author Information ------------------- - -OpenShift operations, Red Hat, Inc diff --git a/roles/docker_storage/defaults/main.yml b/roles/docker_storage/defaults/main.yml deleted file mode 100644 index ed97d539c..000000000 --- a/roles/docker_storage/defaults/main.yml +++ /dev/null @@ -1 +0,0 @@ ---- diff --git a/roles/docker_storage/handlers/main.yml b/roles/docker_storage/handlers/main.yml deleted file mode 100644 index ed97d539c..000000000 --- a/roles/docker_storage/handlers/main.yml +++ /dev/null @@ -1 +0,0 @@ ---- diff --git a/roles/docker_storage/meta/main.yml b/roles/docker_storage/meta/main.yml deleted file mode 100644 index f5b2d53cb..000000000 --- a/roles/docker_storage/meta/main.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -galaxy_info: -  author: OpenShift -  description:  Setup docker_storage options -  company: Red Hat, Inc -  license: ASL 2.0 -  min_ansible_version: 1.2 -dependencies: -- docker diff --git a/roles/docker_storage/tasks/main.yml b/roles/docker_storage/tasks/main.yml deleted file mode 100644 index 48a3fc208..000000000 --- a/roles/docker_storage/tasks/main.yml +++ /dev/null @@ -1,37 +0,0 @@ ---- -- lvg: -    pvs: "{{ dst_device }}" -    vg: "{{ dst_vg }}" -  register: dst_lvg - -- lvol: -    lv: data -    vg: "{{ dst_vg }}" -    size: 95%VG -  register: dst_lvol_data - -- lvol: -    lv: metadata -    vg: "{{ dst_vg }}" -    size: 5%VG -  register: dst_lvol_metadata -   - -- name: Update docker_storage options -  lineinfile: -    dest: /etc/sysconfig/docker-storage -    backrefs: yes -    regexp: "^(DOCKER_STORAGE_OPTIONS=)" -    line: '\1 --storage-opt {{ dst_options | oo_combine_key_value("=") | join(" --storage-opt ") }}' -  when: dst_options is defined and dst_options | length > 0 -  register: dst_config - - -- name: Reload systemd units -  command: systemctl daemon-reload -  notify: -  - restart docker -  when: dst_config | changed or  -        dst_lvg | changed or -        dst_lvol_data | changed or -        dst_lvol_metadata | changed diff --git a/roles/docker_storage/vars/main.yml b/roles/docker_storage/vars/main.yml deleted file mode 100644 index ed97d539c..000000000 --- a/roles/docker_storage/vars/main.yml +++ /dev/null @@ -1 +0,0 @@ ---- diff --git a/roles/docker_storage_setup/README.md b/roles/docker_storage_setup/README.md new file mode 100644 index 000000000..6039b349a --- /dev/null +++ b/roles/docker_storage_setup/README.md @@ -0,0 +1,42 @@ +docker_storage_setup +========= +This role coverts docker to go from loopback to direct-lvm (the Red Hat recommended way to run docker). + +It requires the block device to be already provisioned and attached to the host. + +  Notes: +  * This is NOT idempotent. Conversion needs to be done for it to be idempotent +  * This will remove /var/lib/docker! +  * You will need to re-deploy docker images + +Configure docker_storage_setup +------------ + +None + +Role Variables +-------------- + +dss_docker_device: defaults to /dev/xvdb + +Dependencies +------------ + +None + +Example Playbook +---------------- + +    - hosts: servers +      roles: +         - { role/docker_storage_setup, dss_docker_device: '/dev/xvdb' } + +License +------- + +ASL 2.0 + +Author Information +------------------ + +OpenShift operations, Red Hat, Inc diff --git a/roles/docker_storage_setup/defaults/main.yml b/roles/docker_storage_setup/defaults/main.yml new file mode 100644 index 000000000..5013aba97 --- /dev/null +++ b/roles/docker_storage_setup/defaults/main.yml @@ -0,0 +1,2 @@ +--- +dss_docker_device: /dev/xvdb diff --git a/roles/docker_storage_setup/tasks/main.yml b/roles/docker_storage_setup/tasks/main.yml new file mode 100755 index 000000000..8af9bbe1e --- /dev/null +++ b/roles/docker_storage_setup/tasks/main.yml @@ -0,0 +1,95 @@ +--- +- name: Ensure docker is installed +  action: "{{ ansible_pkg_mgr }} name={{ item }} state=present" +  with_items: +  - docker + +# Docker doesn't seem to start cleanly the first time run +#  when loopback (not directlvm) is configured. Putting in an +#  ignore errors, and then sleeping till it can come up cleanly +- name: Try to start docker.  This might fail (loopback startup issue) +  service: +    name: docker +    state: started +  ignore_errors: yes + +- name: Pause for 1 minute +  pause: +    seconds: 30 + +- name: Ensure docker is started +  service: +    name: docker +    state: started + +- name: Determine if loopback +  shell: docker info | grep 'Data file:.*loop' +  register: loop_device_check +  ignore_errors: yes + +- debug: +    var: loop_device_check + +- name: fail if we don't detect loopback +  fail: +    msg:  loopback not detected! Please investigate manually. +  when: loop_device_check.rc == 1 + +- name: "check to see if {{ dss_docker_device }} exists" +  command: "test -e {{ dss_docker_device }}" +  register: docker_dev_check +  ignore_errors: yes + +- debug: var=docker_dev_check + +- name: "fail if {{ dss_docker_device }} doesn't exist" +  fail: +    msg: "{{ dss_docker_device }} doesn't exist. Please investigate" +  when: docker_dev_check.rc != 0 + +- name: stop docker +  service: +    name: docker +    state: stopped + +- name: delete /var/lib/docker +  command: rm -rf /var/lib/docker + +- name: remove /var/lib/docker +  command: rm -rf /var/lib/docker + +- name: copy the docker-storage-setup config file +  copy: +    content: > +      DEVS={{ dss_docker_device }}\n +      VG=docker_vg +    dest: /etc/sysconfig/docker-storage-setup +    owner: root +    group: root +    mode: 0664 + +- name: docker storage setup +  command: docker-storage-setup +  register: docker_storage_setup_output + +- debug: +    msg:  "{{ docker_storage_setup_output }}" + +- name: extend the vg +  command: lvextend -l 90%VG /dev/docker_vg/docker-pool +  register: lvextend_output + +- debug: +    msg: "{{ lvextend_output }}" + +- name: start docker +  service: +    name: docker +    state: restarted + +- name: docker info +  command: docker info +  register: dockerinfo + +- debug: +    msg: "{{ dockerinfo }}" diff --git a/roles/etcd/defaults/main.yaml b/roles/etcd/defaults/main.yaml index 9e7fa59cf..e6b10cab7 100644 --- a/roles/etcd/defaults/main.yaml +++ b/roles/etcd/defaults/main.yaml @@ -1,5 +1,5 @@  --- -etcd_service: "{{ 'etcd' if not openshift.common.is_containerized else 'etcd_container' }}" +etcd_service: "{{ 'etcd' if not openshift.common.is_containerized | bool else 'etcd_container' }}"  etcd_interface: "{{ ansible_default_ipv4.interface }}"  etcd_client_port: 2379  etcd_peer_port: 2380 diff --git a/roles/etcd/tasks/main.yml b/roles/etcd/tasks/main.yml index 1e97b047b..e72509c4d 100644 --- a/roles/etcd/tasks/main.yml +++ b/roles/etcd/tasks/main.yml @@ -8,7 +8,7 @@    when: "'ipv4' not in hostvars[inventory_hostname]['ansible_' ~ etcd_interface] or 'address' not in hostvars[inventory_hostname]['ansible_' ~ etcd_interface].ipv4"  - name: Install etcd -  action: "{{ ansible_pkg_mgr }} name=etcd-2.* state=present" +  action: "{{ ansible_pkg_mgr }} name=etcd state=present"    when: not openshift.common.is_containerized | bool  - name: Pull etcd container diff --git a/roles/haproxy/templates/haproxy.cfg.j2 b/roles/haproxy/templates/haproxy.cfg.j2 index c932af72f..cb4380971 100644 --- a/roles/haproxy/templates/haproxy.cfg.j2 +++ b/roles/haproxy/templates/haproxy.cfg.j2 @@ -3,7 +3,7 @@  global      chroot      /var/lib/haproxy      pidfile     /var/run/haproxy.pid -    maxconn     4000 +    maxconn     {{ haproxy_global_maxconn | default('4000') }}      user        haproxy      group       haproxy      daemon @@ -20,7 +20,7 @@ defaults      log                     global      option                  httplog      option                  dontlognull -    option http-server-close +#    option http-server-close      option forwardfor       except 127.0.0.0/8      option                  redispatch      retries                 3 @@ -31,7 +31,7 @@ defaults      timeout server          300s      timeout http-keep-alive 10s      timeout check           10s -    maxconn                 3000 +    maxconn                 {{ haproxy_default_maxconn | default('3000') }}  listen stats :9000      mode http diff --git a/roles/lib_dyn/library/dyn_record.py b/roles/lib_dyn/library/dyn_record.py index f2796ccf2..42d970060 100644 --- a/roles/lib_dyn/library/dyn_record.py +++ b/roles/lib_dyn/library/dyn_record.py @@ -13,6 +13,7 @@  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  # See the License for the specific language governing permissions and  # limitations under the License. +# pylint: disable=too-many-branches  '''Ansible module to manage records in the Dyn Managed DNS service'''  DOCUMENTATION = '''  --- @@ -84,9 +85,18 @@ options:      description:        - 'Record's "Time to live".  Number of seconds the record remains cached'        - 'in DNS servers or c(0) to use the default TTL for the zone.' +      - 'This option is mutually exclusive with use_zone_ttl'      required: false      default: 0 +  use_zone_ttl: +    description: +      - 'Use the DYN Zone's Default TTL' +      - 'This option is mutually exclusive with record_ttl' +    required: false +    default: false +    mutually exclusive with: record_ttl +  notes:    - The module makes a broad assumption that there will be only one record per "node" (FQDN).    - This module returns record(s) in the "result" element when 'state' is set to 'present'. This value can be be registered and used in your playbooks. @@ -95,6 +105,36 @@ requirements: [ dyn ]  author: "Russell Harrison"  ''' +EXAMPLES = ''' +# Attempting to cname www.example.com to web1.example.com +- name: Update CNAME record +  dyn_record: +    state: present +    record_fqdn: www.example.com +    zone: example.com +    record_type: CNAME +    record_value: web1.example.com +    record_ttl: 7200 + +# Use the zones default TTL +- name: Update CNAME record +  dyn_record: +    state: present +    record_fqdn: www.example.com +    zone: example.com +    record_type: CNAME +    record_value: web1.example.com +    use_zone_ttl: true + +- name: Update A record +  dyn_record: +    state: present +    record_fqdn: web1.example.com +    zone: example.com +    record_value: 10.0.0.10 +    record_type: A +''' +  try:      IMPORT_ERROR = False      from dyn.tm.session import DynectSession @@ -124,7 +164,10 @@ def get_record_type(record_key):      return record_key.replace('_records', '').upper()  def get_record_key(record_type): -    '''Get the key to look up records in the dictionary returned from get_any_records.''' +    '''Get the key to look up records in the dictionary returned from get_any_records. +       example: +       'cname_records' +    '''      return record_type.lower() + '_records'  def get_any_records(module, node): @@ -146,37 +189,68 @@ def get_any_records(module, node):  def get_record_values(records):      '''Get the record values for each record returned by get_any_records.''' -    # This simply returns the values from a dictionary of record objects +    # This simply returns the values from a record      ret_dict = {}      for key in records.keys():          record_type = get_record_type(key) -        record_value_param = RECORD_PARAMS[record_type]['value_param'] -        ret_dict[key] = [getattr(elem, record_value_param) for elem in records[key]] +        params = [RECORD_PARAMS[record_type]['value_param'], 'ttl', 'zone', 'fqdn'] +        ret_dict[key] = [] +        properties = {} +        for elem in records[key]: +            for param in params: +                properties[param] = getattr(elem, param) +            ret_dict[key].append(properties) +      return ret_dict +def compare_record_values(record_type_key, user_record_value, dyn_values): +    ''' Verify the user record_value exists in dyn''' +    rtype = get_record_type(record_type_key) +    for record in dyn_values[record_type_key]: +        if user_record_value in record[RECORD_PARAMS[rtype]['value_param']]: +            return True + +    return False + +def compare_record_ttl(record_type_key, user_record_value, dyn_values, user_param_ttl): +    ''' Verify the ttls match for the record''' +    rtype = get_record_type(record_type_key) +    for record in dyn_values[record_type_key]: +        # find the right record +        if user_record_value in record[RECORD_PARAMS[rtype]['value_param']]: +            # Compare ttls from the records +            if int(record['ttl']) == user_param_ttl: +                return True + +    return False +  def main():      '''Ansible module for managing Dyn DNS records.'''      module = AnsibleModule(          argument_spec=dict( -            state=dict(required=True, choices=['present', 'absent', 'list']), +            state=dict(default='present', choices=['present', 'absent', 'list']),              customer_name=dict(default=os.environ.get('DYNECT_CUSTOMER_NAME', None), type='str'),              user_name=dict(default=os.environ.get('DYNECT_USER_NAME', None), type='str', no_log=True),              user_password=dict(default=os.environ.get('DYNECT_PASSWORD', None), type='str', no_log=True), -            zone=dict(required=True), -            record_fqdn=dict(required=False), -            record_type=dict(required=False, choices=[ +            zone=dict(required=True, type='str'), +            record_fqdn=dict(required=False, type='str'), +            record_type=dict(required=False, type='str', choices=[                  'A', 'AAAA', 'CNAME', 'PTR', 'TXT']), -            record_value=dict(required=False), -            record_ttl=dict(required=False, default=0, type='int'), +            record_value=dict(required=False, type='str'), +            record_ttl=dict(required=False, default=None, type='int'), +            use_zone_ttl=dict(required=False, default=False),          ),          required_together=(              ['record_fqdn', 'record_value', 'record_ttl', 'record_type'] -        ) +        ), +        mutually_exclusive=[('record_ttl', 'use_zone_ttl')]      )      if IMPORT_ERROR: -        module.fail_json(msg="Unable to import dyn module: https://pypi.python.org/pypi/dyn", -                         error=IMPORT_ERROR) +        module.fail_json(msg="Unable to import dyn module: https://pypi.python.org/pypi/dyn", error=IMPORT_ERROR) + +    if module.params['record_ttl'] != None and int(module.params['record_ttl']) <= 0: +        module.fail_json(msg="Invalid Value for record TTL")      # Start the Dyn session      try: @@ -184,22 +258,16 @@ def main():                            module.params['user_name'],                            module.params['user_password'])      except dyn.tm.errors.DynectAuthError as error: -        module.fail_json(msg='Unable to authenticate with Dyn', -                         error=str(error)) +        module.fail_json(msg='Unable to authenticate with Dyn', error=str(error))      # Retrieve zone object      try:          dyn_zone = Zone(module.params['zone'])      except dyn.tm.errors.DynectGetError as error:          if 'No such zone' in str(error): -            module.fail_json( -                msg="Not a valid zone for this account", -                zone=module.params['zone'] -            ) +            module.fail_json(msg="Not a valid zone for this account", zone=module.params['zone'])          else: -            module.fail_json(msg="Unable to retrieve zone", -                             error=str(error)) - +            module.fail_json(msg="Unable to retrieve zone", error=str(error))      # To retrieve the node object we need to remove the zone name from the FQDN      dyn_node_name = module.params['record_fqdn'].replace('.' + module.params['zone'], '') @@ -213,27 +281,46 @@ def main():      # All states will need a list of the exiting records for the zone.      dyn_node_records = get_any_records(module, dyn_node) +    dyn_values = get_record_values(dyn_node_records) +      if module.params['state'] == 'list': -        module.exit_json(changed=False, -                         records=get_record_values( -                             dyn_node_records, -                         )) +        module.exit_json(changed=False, dyn_records=dyn_values) + +    elif module.params['state'] == 'absent': +        # If there are any records present we'll want to delete the node. +        if dyn_node_records: +            dyn_node.delete() + +            # Publish the zone since we've modified it. +            dyn_zone.publish() -    if module.params['state'] == 'present': +            module.exit_json(changed=True, msg="Removed node %s from zone %s" % (dyn_node_name, module.params['zone'])) + +        module.exit_json(changed=False) + +    elif module.params['state'] == 'present': + +        # configure the TTL variable: +        # if use_zone_ttl, use the default TTL of the account. +        # if TTL == None, don't check it, set it as 0 (api default) +        # if TTL > 0, ensure this TTL is set +        if module.params['use_zone_ttl']: +            user_param_ttl = dyn_zone.ttl +        elif not module.params['record_ttl']: +            user_param_ttl = 0 +        else: +            user_param_ttl = module.params['record_ttl']          # First get a list of existing records for the node -        values = get_record_values(dyn_node_records) -        value_key = get_record_key(module.params['record_type']) -        param_value = module.params['record_value'] +        record_type_key = get_record_key(module.params['record_type']) +        user_record_value = module.params['record_value']          # Check to see if the record is already in place before doing anything. -        if (dyn_node_records and -                dyn_node_records[value_key][0].ttl == module.params['record_ttl'] and -                (param_value in values[value_key] or -                 param_value + '.' in values[value_key])): - -            module.exit_json(changed=False) +        if dyn_node_records and compare_record_values(record_type_key, user_record_value, dyn_values): +            if user_param_ttl == 0 or \ +               compare_record_ttl(record_type_key, user_record_value, dyn_values, user_param_ttl): +                module.exit_json(changed=False, dyn_record=dyn_values)          # Working on the assumption that there is only one record per          # node we will first delete the node if there are any records before @@ -242,27 +329,20 @@ def main():              dyn_node.delete()          # Now lets create the correct node entry. -        dyn_zone.add_record(dyn_node_name, -                            module.params['record_type'], -                            module.params['record_value'], -                            module.params['record_ttl'] -                           ) +        record = dyn_zone.add_record(dyn_node_name, +                                     module.params['record_type'], +                                     module.params['record_value'], +                                     user_param_ttl +                                    )          # Now publish the zone since we've updated it.          dyn_zone.publish() -        module.exit_json(changed=True, -                         msg="Created node %s in zone %s" % (dyn_node_name, module.params['zone'])) -    if module.params['state'] == 'absent': -        # If there are any records present we'll want to delete the node. -        if dyn_node_records: -            dyn_node.delete() -            # Publish the zone since we've modified it. -            dyn_zone.publish() -            module.exit_json(changed=True, -                             msg="Removed node %s from zone %s" % (dyn_node_name, module.params['zone'])) -        else: -            module.exit_json(changed=False) +        rmsg = "Created node [%s] "  % dyn_node_name +        rmsg += "in zone: [%s]"      % module.params['zone'] +        module.exit_json(changed=True, msg=rmsg, dyn_record=get_record_values({record_type_key: [record]})) + +    module.fail_json(msg="Unknown state: [%s]" % module.params['state'])  # Ansible tends to need a wild card import so we'll use it here  # pylint: disable=redefined-builtin, unused-wildcard-import, wildcard-import, locally-disabled diff --git a/roles/lib_zabbix/library/zbx_action.py b/roles/lib_zabbix/library/zbx_action.py index e7edcde2f..499084942 100644 --- a/roles/lib_zabbix/library/zbx_action.py +++ b/roles/lib_zabbix/library/zbx_action.py @@ -28,7 +28,7 @@  # pylint: disable=duplicate-code  # pylint: disable=import-error -from openshift_tools.monitoring.zbxapi import ZabbixAPI, ZabbixConnection, ZabbixAPIError +from openshift_tools.zbxapi import ZabbixAPI, ZabbixConnection, ZabbixAPIError  CUSTOM_SCRIPT_ACTION = '0'  IPMI_ACTION = '1' diff --git a/roles/lib_zabbix/library/zbx_application.py b/roles/lib_zabbix/library/zbx_application.py index 21e3d91f4..472390071 100644 --- a/roles/lib_zabbix/library/zbx_application.py +++ b/roles/lib_zabbix/library/zbx_application.py @@ -28,7 +28,7 @@ Ansible module for application  # pylint: disable=duplicate-code  # pylint: disable=import-error -from openshift_tools.monitoring.zbxapi import ZabbixAPI, ZabbixConnection +from openshift_tools.zbxapi import ZabbixAPI, ZabbixConnection  def exists(content, key='result'):      ''' Check if key exists in content or the size of content[key] > 0 diff --git a/roles/lib_zabbix/library/zbx_discoveryrule.py b/roles/lib_zabbix/library/zbx_discoveryrule.py index f52f350a5..7c5f98397 100644 --- a/roles/lib_zabbix/library/zbx_discoveryrule.py +++ b/roles/lib_zabbix/library/zbx_discoveryrule.py @@ -25,7 +25,7 @@ Zabbix discovery rule ansible module  # pylint: disable=duplicate-code  # pylint: disable=import-error -from openshift_tools.monitoring.zbxapi import ZabbixAPI, ZabbixConnection +from openshift_tools.zbxapi import ZabbixAPI, ZabbixConnection  def exists(content, key='result'):      ''' Check if key exists in content or the size of content[key] > 0 diff --git a/roles/lib_zabbix/library/zbx_graph.py b/roles/lib_zabbix/library/zbx_graph.py index 121ec3dee..71f4e1264 100644 --- a/roles/lib_zabbix/library/zbx_graph.py +++ b/roles/lib_zabbix/library/zbx_graph.py @@ -49,7 +49,7 @@  # pylint: disable=duplicate-code  # pylint: disable=import-error -from openshift_tools.monitoring.zbxapi import ZabbixAPI, ZabbixConnection +from openshift_tools.zbxapi import ZabbixAPI, ZabbixConnection  def exists(content, key='result'):      ''' Check if key exists in content or the size of content[key] > 0 diff --git a/roles/lib_zabbix/library/zbx_graphprototype.py b/roles/lib_zabbix/library/zbx_graphprototype.py index 8287c1e2d..d63873b00 100644 --- a/roles/lib_zabbix/library/zbx_graphprototype.py +++ b/roles/lib_zabbix/library/zbx_graphprototype.py @@ -49,7 +49,7 @@  # pylint: disable=duplicate-code  # pylint: disable=import-error -from openshift_tools.monitoring.zbxapi import ZabbixAPI, ZabbixConnection +from openshift_tools.zbxapi import ZabbixAPI, ZabbixConnection  def exists(content, key='result'):      ''' Check if key exists in content or the size of content[key] > 0 diff --git a/roles/lib_zabbix/library/zbx_host.py b/roles/lib_zabbix/library/zbx_host.py index 560749f07..bbeec49ff 100644 --- a/roles/lib_zabbix/library/zbx_host.py +++ b/roles/lib_zabbix/library/zbx_host.py @@ -25,7 +25,7 @@ Zabbix host ansible module  # pylint: disable=duplicate-code  # pylint: disable=import-error -from openshift_tools.monitoring.zbxapi import ZabbixAPI, ZabbixConnection +from openshift_tools.zbxapi import ZabbixAPI, ZabbixConnection  def exists(content, key='result'):      ''' Check if key exists in content or the size of content[key] > 0 diff --git a/roles/lib_zabbix/library/zbx_hostgroup.py b/roles/lib_zabbix/library/zbx_hostgroup.py index 7f080af24..6c57d727e 100644 --- a/roles/lib_zabbix/library/zbx_hostgroup.py +++ b/roles/lib_zabbix/library/zbx_hostgroup.py @@ -27,7 +27,7 @@  # pylint: disable=duplicate-code  # pylint: disable=import-error -from openshift_tools.monitoring.zbxapi import ZabbixAPI, ZabbixConnection +from openshift_tools.zbxapi import ZabbixAPI, ZabbixConnection  def exists(content, key='result'):      ''' Check if key exists in content or the size of content[key] > 0 diff --git a/roles/lib_zabbix/library/zbx_httptest.py b/roles/lib_zabbix/library/zbx_httptest.py index 6b28117ad..eab45d06e 100644 --- a/roles/lib_zabbix/library/zbx_httptest.py +++ b/roles/lib_zabbix/library/zbx_httptest.py @@ -28,7 +28,7 @@  # pylint: disable=duplicate-code  # pylint: disable=import-error -from openshift_tools.monitoring.zbxapi import ZabbixAPI, ZabbixConnection +from openshift_tools.zbxapi import ZabbixAPI, ZabbixConnection  def exists(content, key='result'):      ''' Check if key exists in content or the size of content[key] > 0 diff --git a/roles/lib_zabbix/library/zbx_item.py b/roles/lib_zabbix/library/zbx_item.py index 996c98fae..189485fb7 100644 --- a/roles/lib_zabbix/library/zbx_item.py +++ b/roles/lib_zabbix/library/zbx_item.py @@ -28,7 +28,7 @@  # pylint: disable=duplicate-code  # pylint: disable=import-error -from openshift_tools.monitoring.zbxapi import ZabbixAPI, ZabbixConnection +from openshift_tools.zbxapi import ZabbixAPI, ZabbixConnection  def exists(content, key='result'):      ''' Check if key exists in content or the size of content[key] > 0 diff --git a/roles/lib_zabbix/library/zbx_itemprototype.py b/roles/lib_zabbix/library/zbx_itemprototype.py index aca9c8336..eab2a04ae 100644 --- a/roles/lib_zabbix/library/zbx_itemprototype.py +++ b/roles/lib_zabbix/library/zbx_itemprototype.py @@ -25,7 +25,7 @@ Zabbix discovery rule ansible module  # pylint: disable=duplicate-code  # pylint: disable=import-error -from openshift_tools.monitoring.zbxapi import ZabbixAPI, ZabbixConnection +from openshift_tools.zbxapi import ZabbixAPI, ZabbixConnection  def exists(content, key='result'):      ''' Check if key exists in content or the size of content[key] > 0 diff --git a/roles/lib_zabbix/library/zbx_itservice.py b/roles/lib_zabbix/library/zbx_itservice.py index a5ee97e15..aa37f0a2b 100644 --- a/roles/lib_zabbix/library/zbx_itservice.py +++ b/roles/lib_zabbix/library/zbx_itservice.py @@ -28,7 +28,7 @@  # pylint: disable=duplicate-code  # pylint: disable=import-error -from openshift_tools.monitoring.zbxapi import ZabbixAPI, ZabbixConnection +from openshift_tools.zbxapi import ZabbixAPI, ZabbixConnection  def exists(content, key='result'):      ''' Check if key exists in content or the size of content[key] > 0 diff --git a/roles/lib_zabbix/library/zbx_mediatype.py b/roles/lib_zabbix/library/zbx_mediatype.py index 3be232ecf..b8def3ca4 100644 --- a/roles/lib_zabbix/library/zbx_mediatype.py +++ b/roles/lib_zabbix/library/zbx_mediatype.py @@ -28,7 +28,7 @@  # pylint: disable=duplicate-code  # pylint: disable=import-error -from openshift_tools.monitoring.zbxapi import ZabbixAPI, ZabbixConnection +from openshift_tools.zbxapi import ZabbixAPI, ZabbixConnection  def exists(content, key='result'):      ''' Check if key exists in content or the size of content[key] > 0 diff --git a/roles/lib_zabbix/library/zbx_template.py b/roles/lib_zabbix/library/zbx_template.py index ff5714bdc..cc713b998 100644 --- a/roles/lib_zabbix/library/zbx_template.py +++ b/roles/lib_zabbix/library/zbx_template.py @@ -28,7 +28,7 @@ Ansible module for template  # pylint: disable=duplicate-code  # pylint: disable=import-error -from openshift_tools.monitoring.zbxapi import ZabbixAPI, ZabbixConnection +from openshift_tools.zbxapi import ZabbixAPI, ZabbixConnection  def exists(content, key='result'):      ''' Check if key exists in content or the size of content[key] > 0 diff --git a/roles/lib_zabbix/library/zbx_trigger.py b/roles/lib_zabbix/library/zbx_trigger.py index b5faefa70..323defbd9 100644 --- a/roles/lib_zabbix/library/zbx_trigger.py +++ b/roles/lib_zabbix/library/zbx_trigger.py @@ -28,7 +28,7 @@ ansible module for zabbix triggers  # pylint: disable=duplicate-code  # pylint: disable=import-error -from openshift_tools.monitoring.zbxapi import ZabbixAPI, ZabbixConnection +from openshift_tools.zbxapi import ZabbixAPI, ZabbixConnection  def exists(content, key='result'):      ''' Check if key exists in content or the size of content[key] > 0 diff --git a/roles/lib_zabbix/library/zbx_triggerprototype.py b/roles/lib_zabbix/library/zbx_triggerprototype.py index c1224b268..34a7396a7 100644 --- a/roles/lib_zabbix/library/zbx_triggerprototype.py +++ b/roles/lib_zabbix/library/zbx_triggerprototype.py @@ -28,7 +28,7 @@ ansible module for zabbix triggerprototypes  # pylint: disable=duplicate-code  # pylint: disable=import-error -from openshift_tools.monitoring.zbxapi import ZabbixAPI, ZabbixConnection +from openshift_tools.zbxapi import ZabbixAPI, ZabbixConnection  def exists(content, key='result'):      ''' Check if key exists in content or the size of content[key] > 0 diff --git a/roles/lib_zabbix/library/zbx_user.py b/roles/lib_zabbix/library/zbx_user.py index 62c85c1bf..d10ffb9ff 100644 --- a/roles/lib_zabbix/library/zbx_user.py +++ b/roles/lib_zabbix/library/zbx_user.py @@ -27,7 +27,7 @@ ansible module for zabbix users  # pylint: disable=duplicate-code  # pylint: disable=import-error -from openshift_tools.monitoring.zbxapi import ZabbixAPI, ZabbixConnection +from openshift_tools.zbxapi import ZabbixAPI, ZabbixConnection  def exists(content, key='result'):      ''' Check if key exists in content or the size of content[key] > 0 diff --git a/roles/lib_zabbix/library/zbx_user_media.py b/roles/lib_zabbix/library/zbx_user_media.py index 8895c78c3..fc5624346 100644 --- a/roles/lib_zabbix/library/zbx_user_media.py +++ b/roles/lib_zabbix/library/zbx_user_media.py @@ -28,7 +28,7 @@  # pylint: disable=duplicate-code  # pylint: disable=import-error -from openshift_tools.monitoring.zbxapi import ZabbixAPI, ZabbixConnection +from openshift_tools.zbxapi import ZabbixAPI, ZabbixConnection  def exists(content, key='result'):      ''' Check if key exists in content or the size of content[key] > 0 diff --git a/roles/lib_zabbix/library/zbx_usergroup.py b/roles/lib_zabbix/library/zbx_usergroup.py index 3fd44d80c..e30ce6678 100644 --- a/roles/lib_zabbix/library/zbx_usergroup.py +++ b/roles/lib_zabbix/library/zbx_usergroup.py @@ -32,7 +32,7 @@ zabbix ansible module for usergroups  # pylint: disable=too-many-branches  # pylint: disable=import-error -from openshift_tools.monitoring.zbxapi import ZabbixAPI, ZabbixConnection +from openshift_tools.zbxapi import ZabbixAPI, ZabbixConnection  def exists(content, key='result'):      ''' Check if key exists in content or the size of content[key] > 0 diff --git a/roles/lib_zabbix/tasks/create_template.yml b/roles/lib_zabbix/tasks/create_template.yml index 61344357a..783249c3a 100644 --- a/roles/lib_zabbix/tasks/create_template.yml +++ b/roles/lib_zabbix/tasks/create_template.yml @@ -61,6 +61,20 @@    with_items: template.ztriggers    when: template.ztriggers is defined +- name: Create Actions +  zbx_action: +    zbx_server: "{{ server }}" +    zbx_user: "{{ user }}" +    zbx_password: "{{ password }}" +    state: "{{ item.state | default('present', True) }}" +    name: "{{ item.name }}" +    status: "{{ item.status | default('enabled', True) }}" +    escalation_time: "{{ item.escalation_time }}" +    conditions_filter: "{{ item.conditions_filter }}" +    operations: "{{ item.operations }}" +  with_items: template.zactions +  when: template.zactions is defined +  - name: Create Discoveryrules    zbx_discoveryrule:      zbx_server: "{{ server }}" diff --git a/roles/nuage_ca/files/openssl.cnf b/roles/nuage_ca/files/openssl.cnf new file mode 100644 index 000000000..7d1a29a79 --- /dev/null +++ b/roles/nuage_ca/files/openssl.cnf @@ -0,0 +1,3 @@ +[ clientauth ] +basicConstraints=CA:FALSE +extendedKeyUsage=critical,clientAuth diff --git a/roles/nuage_ca/files/serial.txt b/roles/nuage_ca/files/serial.txt new file mode 100644 index 000000000..4daddb72f --- /dev/null +++ b/roles/nuage_ca/files/serial.txt @@ -0,0 +1 @@ +00 diff --git a/roles/nuage_ca/meta/main.yml b/roles/nuage_ca/meta/main.yml new file mode 100644 index 000000000..2b06613f3 --- /dev/null +++ b/roles/nuage_ca/meta/main.yml @@ -0,0 +1,16 @@ +--- +galaxy_info: +  author: Vishal Patil  +  description: +  company: Nuage Networks +  license: Apache License, Version 2.0 +  min_ansible_version: 1.8 +  platforms: +  - name: EL +    versions: +    - 7 +  categories: +  - cloud +  - system +dependencies: +- { role: nuage_common } diff --git a/roles/nuage_ca/tasks/main.yaml b/roles/nuage_ca/tasks/main.yaml new file mode 100644 index 000000000..9cfa40b8a --- /dev/null +++ b/roles/nuage_ca/tasks/main.yaml @@ -0,0 +1,46 @@ +--- +- name: Install openssl +  action: "{{ ansible_pkg_mgr }} name=openssl state=present" +  when: not openshift.common.is_atomic | bool + +- name: Create CA directory +  file: path="{{ nuage_ca_dir }}" state=directory +  run_once: true +  delegate_to: "{{ nuage_ca_master }}" + +- name: Create certificate directory +  file: path="{{ nuage_ca_master_crt_dir }}" state=directory +  run_once: true +  delegate_to: "{{ nuage_ca_master }}" + +- name: Check if the CA key already exists +  stat: path="{{ nuage_ca_key }}" +  register: nuage_ca_key_check +  delegate_to: "{{ nuage_ca_master }}" + +- name: Create CA key +  command: openssl genrsa -out "{{ nuage_ca_key }}" 4096 +  run_once: true +  delegate_to: "{{ nuage_ca_master }}" +  when: nuage_ca_key_check.stat.exists is defined and nuage_ca_key_check.stat.exists == False + +- name: Check if the CA crt already exists +  stat: path="{{ nuage_ca_crt }}" +  register: nuage_ca_crt_check +  delegate_to: "{{ nuage_ca_master }}" + +- name: Create CA crt +  command: openssl req -new -x509 -key "{{ nuage_ca_key }}" -out "{{ nuage_ca_crt }}" -subj "/CN=nuage-signer" +  run_once: true +  delegate_to: "{{ nuage_ca_master }}" +  when: nuage_ca_crt_check.stat.exists is defined and nuage_ca_crt_check.stat.exists == False + +- name: Create the serial file +  copy: src=serial.txt dest="{{ nuage_ca_serial }}" +  run_once: true +  delegate_to: "{{ nuage_ca_master }}" + +- name: Copy SSL config file +  copy: src=openssl.cnf dest="{{ nuage_ca_dir }}/openssl.cnf"  +  run_once: true +  delegate_to: "{{ nuage_ca_master }}" diff --git a/roles/nuage_ca/vars/main.yaml b/roles/nuage_ca/vars/main.yaml new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/roles/nuage_ca/vars/main.yaml diff --git a/roles/nuage_common/defaults/main.yaml b/roles/nuage_common/defaults/main.yaml new file mode 100644 index 000000000..d285bdfa3 --- /dev/null +++ b/roles/nuage_common/defaults/main.yaml @@ -0,0 +1,10 @@ +nuage_ca_master: "{{ groups.oo_first_master.0 }}" +nuage_ca_master_crt_dir: /usr/share/nuage-openshift-certificates + +nuage_ca_dir: /usr/share/nuage-openshift-ca +nuage_ca_key: "{{ nuage_ca_dir }}/nuageMonCA.key" +nuage_ca_crt: "{{ nuage_ca_dir }}/nuageMonCA.crt" +nuage_ca_serial: "{{ nuage_ca_dir }}/nuageMonCA.serial.txt" + +nuage_master_mon_dir: /usr/share/nuage-openshift-monitor +nuage_node_plugin_dir: /usr/share/vsp-openshift diff --git a/roles/nuage_master/meta/main.yml b/roles/nuage_master/meta/main.yml new file mode 100644 index 000000000..3f16dd819 --- /dev/null +++ b/roles/nuage_master/meta/main.yml @@ -0,0 +1,16 @@ +--- +galaxy_info: +  author: Vishal Patil  +  description: +  company: Nuage Networks +  license: Apache License, Version 2.0 +  min_ansible_version: 1.8 +  platforms: +  - name: EL +    versions: +    - 7 +  categories: +  - cloud +  - system +dependencies: +- { role: nuage_ca } diff --git a/roles/nuage_master/tasks/certificates.yml b/roles/nuage_master/tasks/certificates.yml new file mode 100644 index 000000000..0d3c69467 --- /dev/null +++ b/roles/nuage_master/tasks/certificates.yml @@ -0,0 +1,50 @@ +--- +- name: Create a directory to hold the certificates +  file: path="{{ nuage_mon_rest_server_crt_dir }}" state=directory +  delegate_to: "{{ nuage_ca_master }}"  + +- name: Create the key +  command: > +    openssl genrsa -out "{{ nuage_ca_master_rest_server_key }}" 4096   +  delegate_to: "{{ nuage_ca_master }}" + +- name: Create the req file +  command: > +    openssl req -key "{{ nuage_ca_master_rest_server_key }}" -new -out "{{ nuage_mon_rest_server_crt_dir }}/restServer.req" -subj "/CN={{ ansible_nodename }}" +  delegate_to: "{{ nuage_ca_master }}" + +- name: Generate the crt file +  command: > +     openssl x509 -req -in "{{ nuage_mon_rest_server_crt_dir }}/restServer.req" -CA "{{ nuage_ca_crt }}" -CAkey "{{ nuage_ca_key }}" -CAserial "{{ nuage_ca_serial }}"  -out "{{ nuage_ca_master_rest_server_crt }}" +  delegate_to: "{{ nuage_ca_master }}" + +- name: Remove the req file +  file: path="{{ nuage_mon_rest_server_crt_dir }}/restServer.req" state=absent +  delegate_to: "{{ nuage_ca_master }}" + +- name: Copy nuage CA crt +  shell: cp "{{ nuage_ca_crt }}" "{{ nuage_mon_rest_server_crt_dir }}" +  delegate_to: "{{ nuage_ca_master }}" + +- name: Archive the certificate dir +  shell: "cd {{ nuage_mon_rest_server_crt_dir }} && tar -czvf /tmp/{{ ansible_nodename }}.tgz *" +  delegate_to: "{{ nuage_ca_master }}" + +- name: Create a temp directory for the certificates  +  local_action: command mktemp -d "/tmp/openshift-{{ ansible_nodename }}-XXXXXXX" +  register: mktemp + +- name: Download the certificates +  fetch: src="/tmp/{{ ansible_nodename }}.tgz" dest="{{ mktemp.stdout }}/{{ ansible_nodename }}.tgz" flat=yes +  delegate_to: "{{ nuage_ca_master }}" + +- name: Extract the certificates +  unarchive: src="{{ mktemp.stdout }}/{{ ansible_nodename }}.tgz" dest={{ nuage_master_crt_dir }} + +- name: Delete the certificates after copy +  file: path="{{ nuage_mon_rest_server_crt_dir }}" state=absent  +  delegate_to: "{{ nuage_ca_master }}" + +- name: Delete the temp directory +  file: path="{{ mktemp.stdout }}" state=absent +  delegate_to: "{{ nuage_ca_master }}" diff --git a/roles/nuage_master/tasks/main.yaml b/roles/nuage_master/tasks/main.yaml index 20d105b9e..abeee3d71 100644 --- a/roles/nuage_master/tasks/main.yaml +++ b/roles/nuage_master/tasks/main.yaml @@ -5,7 +5,7 @@  - name: Create the log directory    sudo: true -  file: path={{ nuage_openshift_monitor_log_dir }} state=directory +  file: path={{ nuage_mon_rest_server_logdir }} state=directory  - name: Install Nuage Openshift Monitor     sudo: true @@ -23,7 +23,9 @@          - nuage.crt          - nuage.key          - nuage.kubeconfig  -  + +- include: certificates.yml  +  - name: Create nuage-openshift-monitor.yaml    sudo: true    template: src=nuage-openshift-monitor.j2 dest=/usr/share/nuage-openshift-monitor/nuage-openshift-monitor.yaml owner=root mode=0644 diff --git a/roles/nuage_master/templates/nuage-openshift-monitor.j2 b/roles/nuage_master/templates/nuage-openshift-monitor.j2 index db8c3d85e..e50e225e1 100644 --- a/roles/nuage_master/templates/nuage-openshift-monitor.j2 +++ b/roles/nuage_master/templates/nuage-openshift-monitor.j2 @@ -16,4 +16,8 @@ enterpriseName: {{ enterprise }}  # Name of the domain in which pods will reside  domainName: {{ domain }}  # Location where logs should be saved -log_dir: {{ nuage_openshift_monitor_log_dir }}  +log_dir: {{ nuage_mon_rest_server_logdir }} +# Monitor rest server paramters +nuageMonServer: +    URL: {{ nuage_mon_rest_server_url }} +    certificateDirectory: {{ cert_output_dir }}  diff --git a/roles/nuage_master/vars/main.yaml b/roles/nuage_master/vars/main.yaml index c489feabe..4b57273e4 100644 --- a/roles/nuage_master/vars/main.yaml +++ b/roles/nuage_master/vars/main.yaml @@ -4,4 +4,13 @@ admin_config: "{{ openshift.common.config_base }}/master/admin.kubeconfig"  cert_output_dir: /usr/share/nuage-openshift-monitor  kube_config: /usr/share/nuage-openshift-monitor/nuage.kubeconfig  kubemon_yaml: /usr/share/nuage-openshift-monitor/nuage-openshift-monitor.yaml  -master_config_yaml: "{{ openshift_master_config_dir }}/master-config.yaml"  +master_config_yaml: "{{ openshift_master_config_dir }}/master-config.yaml" +nuage_mon_rest_server_port: "{{ nuage_openshift_monitor_rest_server_port | default('9443') }}" +nuage_mon_rest_server_url: "0.0.0.0:{{ nuage_mon_rest_server_port }}" +nuage_mon_rest_server_logdir: "{{ nuage_openshift_monitor_log_dir | default('/var/log/nuage-openshift-monitor') }}" + +nuage_mon_rest_server_crt_dir: "{{ nuage_ca_master_crt_dir }}/{{ ansible_nodename }}" +nuage_ca_master_rest_server_key: "{{ nuage_mon_rest_server_crt_dir }}/nuageMonServer.key" +nuage_ca_master_rest_server_crt: "{{ nuage_mon_rest_server_crt_dir }}/nuageMonServer.crt"  + +nuage_master_crt_dir : /usr/share/nuage-openshift-monitor diff --git a/roles/nuage_node/meta/main.yml b/roles/nuage_node/meta/main.yml new file mode 100644 index 000000000..3f16dd819 --- /dev/null +++ b/roles/nuage_node/meta/main.yml @@ -0,0 +1,16 @@ +--- +galaxy_info: +  author: Vishal Patil  +  description: +  company: Nuage Networks +  license: Apache License, Version 2.0 +  min_ansible_version: 1.8 +  platforms: +  - name: EL +    versions: +    - 7 +  categories: +  - cloud +  - system +dependencies: +- { role: nuage_ca } diff --git a/roles/nuage_node/tasks/certificates.yml b/roles/nuage_node/tasks/certificates.yml new file mode 100644 index 000000000..0fe6f7bac --- /dev/null +++ b/roles/nuage_node/tasks/certificates.yml @@ -0,0 +1,50 @@ +--- +- name: Create a directory to hold the certificates +  file: path="{{ nuage_plugin_rest_client_crt_dir }}" state=directory +  delegate_to: "{{ nuage_ca_master }}" + +- name: Create the key +  command: > +    openssl genrsa -out "{{ nuage_ca_master_plugin_key }}" 4096   +  delegate_to: "{{ nuage_ca_master }}" + +- name: Create the req file +  command: > +    openssl req -key "{{ nuage_ca_master_plugin_key }}" -new -out "{{ nuage_plugin_rest_client_crt_dir }}/restClient.req" -subj "/CN=nuage-client" +  delegate_to: "{{ nuage_ca_master }}" + +- name: Generate the crt file +  command: > +     openssl x509 -req -in "{{ nuage_plugin_rest_client_crt_dir }}/restClient.req" -CA "{{ nuage_ca_crt }}" -CAkey "{{ nuage_ca_key }}" -CAserial "{{ nuage_ca_serial }}"  -out "{{ nuage_ca_master_plugin_crt }}" -extensions clientauth -extfile "{{ nuage_ca_dir }}"/openssl.cnf  +  delegate_to: "{{ nuage_ca_master }}" + +- name: Remove the req file +  file: path="{{ nuage_plugin_rest_client_crt_dir }}/restClient.req" state=absent +  delegate_to: "{{ nuage_ca_master }}" + +- name: Copy nuage CA crt +  shell: cp "{{ nuage_ca_crt }}" "{{ nuage_plugin_rest_client_crt_dir }}" +  delegate_to: "{{ nuage_ca_master }}" + +- name: Archive the certificate dir +  shell: "cd {{ nuage_plugin_rest_client_crt_dir }} && tar -czvf /tmp/{{ ansible_nodename }}.tgz *" +  delegate_to: "{{ nuage_ca_master }}" + +- name: Create a temp directory for the certificates  +  local_action: command mktemp -d "/tmp/openshift-{{ ansible_nodename }}-XXXXXXX" +  register: mktemp + +- name: Download the certificates +  fetch: src="/tmp/{{ ansible_nodename }}.tgz" dest="{{ mktemp.stdout }}/{{ ansible_nodename }}.tgz" flat=yes +  delegate_to: "{{ nuage_ca_master }}" + +- name: Extract the certificates +  unarchive: src="{{ mktemp.stdout }}/{{ ansible_nodename }}.tgz" dest={{ nuage_plugin_crt_dir }} + +- name: Delete the certificates after copy +  file: path="{{ nuage_plugin_rest_client_crt_dir }}" state=absent  +  delegate_to: "{{ nuage_ca_master }}" + +- name: Delete the temp directory +  file: path="{{ mktemp.stdout }}" state=absent +  delegate_to: "{{ nuage_ca_master }}" diff --git a/roles/nuage_node/tasks/main.yaml b/roles/nuage_node/tasks/main.yaml index c1e49902d..d7dd53802 100644 --- a/roles/nuage_node/tasks/main.yaml +++ b/roles/nuage_node/tasks/main.yaml @@ -29,6 +29,8 @@          - nuage.key          - nuage.kubeconfig  +- include: certificates.yml +  - name: Set the vsp-openshift.yaml     sudo: true    template: src=vsp-openshift.j2 dest={{ vsp_openshift_yaml }} owner=root mode=0644  diff --git a/roles/nuage_node/templates/vsp-openshift.j2 b/roles/nuage_node/templates/vsp-openshift.j2 index 98d6c3a9c..6c10b9c24 100644 --- a/roles/nuage_node/templates/vsp-openshift.j2 +++ b/roles/nuage_node/templates/vsp-openshift.j2 @@ -10,5 +10,15 @@ enterpriseName: {{ enterprise }}  domainName: {{ domain }}  # IP address and port number of master API server  masterApiServer: {{ api_server }} +# REST server URL  +nuageMonRestServer: {{ nuage_mon_rest_server_url }}  # Bridge name for the docker bridge  dockerBridgeName: {{ docker_bridge }} +# Certificate for connecting to the kubemon REST API +nuageMonClientCert: {{ rest_client_cert }} +# Key to the certificate in restClientCert +nuageMonClientKey: {{ rest_client_key }}  +# CA certificate for verifying the master's rest server +nuageMonServerCA: {{ rest_server_ca_cert }} +# Nuage vport mtu size +interfaceMTU: {{ vport_mtu  }} diff --git a/roles/nuage_node/vars/main.yaml b/roles/nuage_node/vars/main.yaml index 4975d17ed..5acc65ef4 100644 --- a/roles/nuage_node/vars/main.yaml +++ b/roles/nuage_node/vars/main.yaml @@ -6,4 +6,16 @@ client_cert: "{{ vsp_openshift_dir }}/nuage.crt"  client_key: "{{ vsp_openshift_dir }}/nuage.key"  ca_cert: "{{ vsp_openshift_dir }}/ca.crt"  api_server: "{{ openshift_node_master_api_url }}" +nuage_mon_rest_server_port: "{{ nuage_openshift_monitor_rest_server_port | default('9443') }}" +nuage_mon_rest_server_url: "https://{{ openshift_master_cluster_hostname }}:{{ nuage_mon_rest_server_port }}"  docker_bridge: "docker0" +rest_client_cert: "{{ vsp_openshift_dir }}/nuageMonClient.crt" +rest_client_key: "{{ vsp_openshift_dir }}/nuageMonClient.key" +rest_server_ca_cert: "{{ vsp_openshift_dir }}/nuageMonCA.crt" +vport_mtu: "{{ nuage_interface_mtu | default('1460') }}" + +nuage_plugin_rest_client_crt_dir: "{{ nuage_ca_master_crt_dir }}/{{ ansible_nodename }}" +nuage_ca_master_plugin_key: "{{ nuage_plugin_rest_client_crt_dir }}/nuageMonClient.key" +nuage_ca_master_plugin_crt: "{{ nuage_plugin_rest_client_crt_dir }}/nuageMonClient.crt"  + +nuage_plugin_crt_dir : /usr/share/vsp-openshift diff --git a/roles/openshift_cli/tasks/main.yml b/roles/openshift_cli/tasks/main.yml index a6b6b1925..e9d7f4afe 100644 --- a/roles/openshift_cli/tasks/main.yml +++ b/roles/openshift_cli/tasks/main.yml @@ -9,11 +9,6 @@    action: "{{ ansible_pkg_mgr }} name={{ openshift.common.service_type }}-clients state=present"    when: not openshift.common.is_containerized | bool -- name: Pull CLI Image -  command: > -    docker pull {{ openshift.common.cli_image }} -  when: openshift.common.is_containerized | bool -  - name: Create /usr/local/bin/openshift cli wrapper    template:      src: openshift.j2 @@ -30,4 +25,4 @@      - /usr/local/bin/oadm      - /usr/local/bin/oc      - /usr/local/bin/kubectl -  when: openshift.common.is_containerized | bool
\ No newline at end of file +  when: openshift.common.is_containerized | bool diff --git a/roles/openshift_cli/templates/openshift.j2 b/roles/openshift_cli/templates/openshift.j2 index a7c148a22..f969a4bab 100644 --- a/roles/openshift_cli/templates/openshift.j2 +++ b/roles/openshift_cli/templates/openshift.j2 @@ -5,10 +5,11 @@ fi  cmd=`basename $0`  user=`id -u`  group=`id -g` +image_tag={{ image_tag | default(openshift.common.image_tag) }}  >&2 echo """  ================================================================================ -ATTENTION: You are running ${cmd} via a wrapper around 'docker run {{ openshift.common.cli_image }}'. +ATTENTION: You are running ${cmd} via a wrapper around 'docker run {{ openshift.common.cli_image }}:${image_tag}'.  This wrapper is intended only to be used to bootstrap an environment. Please  install client tools on another host once you have granted cluster-admin  privileges to a user.  @@ -20,4 +21,4 @@ See https://docs.openshift.org/latest/cli_reference/get_started_cli.html  =================================================================================  """ -docker run -i --privileged --net=host --user=${user}:${group} -v ~/.kube:/root/.kube -v /tmp:/tmp -v {{ openshift.common.config_base}}:{{ openshift.common.config_base }} -e KUBECONFIG=/root/.kube/config --entrypoint ${cmd} --rm {{ openshift.common.cli_image }} "${@}" +docker run -i --privileged --net=host --user=${user}:${group} -v ~/.kube:/root/.kube -v /tmp:/tmp -v {{ openshift.common.config_base}}:{{ openshift.common.config_base }} -e KUBECONFIG=/root/.kube/config --entrypoint ${cmd} --rm {{ openshift.common.cli_image }}:${image_tag} "${@}" diff --git a/roles/openshift_docker/tasks/main.yml b/roles/openshift_docker/tasks/main.yml index 5a285e773..a57cf815e 100644 --- a/roles/openshift_docker/tasks/main.yml +++ b/roles/openshift_docker/tasks/main.yml @@ -10,6 +10,7 @@        docker_additional_registries: "{{ docker_additional_registries }}"        docker_insecure_registries: "{{ docker_insecure_registries }}"        docker_blocked_registries: "{{ docker_blocked_registries }}" +      docker_options: "{{ openshift_docker_options | default('',True) }}"    - role: node      local_facts:        portal_net: "{{ openshift_master_portal_net | default(None) }}" @@ -44,10 +45,11 @@    lineinfile:      dest: /etc/sysconfig/docker      regexp: '^OPTIONS=.*$' -    line: "OPTIONS='--insecure-registry={{ openshift.node.portal_net }} \ -      {% if ansible_selinux and ansible_selinux.status == '''enabled''' %}--selinux-enabled{% endif %} \ -      {% if openshift.node.docker_log_driver is defined  %} --log-driver {{ openshift.node.docker_log_driver }}  {% endif %} \ -      {% if openshift.node.docker_log_options is defined %}   {{ openshift.node.docker_log_options |  oo_split() | oo_prepend_strings_in_list('--log-opt ') | join(' ')}}  {% endif %} '" +    line: "OPTIONS='--insecure-registry={{ openshift.node.portal_net }}\ +      {% if ansible_selinux and ansible_selinux.status == '''enabled''' %} --selinux-enabled{% endif %}\ +      {% if openshift.node.docker_log_driver is defined  %} --log-driver {{ openshift.node.docker_log_driver }}{% endif %}\ +      {% if openshift.node.docker_log_options is defined %} {{ openshift.node.docker_log_options |  oo_split() | oo_prepend_strings_in_list('--log-opt ') | join(' ')}}{% endif %}\ +      {% if openshift.common.docker_options is defined %} {{ openshift.common.docker_options }}{% endif %}'"    when: docker_check.stat.isreg    notify:      - restart openshift_docker diff --git a/roles/openshift_examples/defaults/main.yml b/roles/openshift_examples/defaults/main.yml index 5e955590e..ad21d0f09 100644 --- a/roles/openshift_examples/defaults/main.yml +++ b/roles/openshift_examples/defaults/main.yml @@ -6,7 +6,7 @@ openshift_examples_load_db_templates: true  openshift_examples_load_xpaas: "{{ openshift_deployment_type != 'origin' }}"  openshift_examples_load_quickstarts: true -content_version: "{{ 'v1.1' if openshift.common.version_gte_3_1_or_1_1 else 'v1.0' }}" +content_version: "{{ openshift.common.examples_content_version }}"  examples_base: "{{ openshift.common.config_base if openshift.common.is_containerized else '/usr/share/openshift' }}/examples"  image_streams_base: "{{ examples_base }}/image-streams" diff --git a/roles/openshift_examples/examples-sync.sh b/roles/openshift_examples/examples-sync.sh index 01ce6d819..22cef303b 100755 --- a/roles/openshift_examples/examples-sync.sh +++ b/roles/openshift_examples/examples-sync.sh @@ -6,7 +6,7 @@  # This script should be run from openshift-ansible/roles/openshift_examples  XPAAS_VERSION=ose-v1.2.0-1 -ORIGIN_VERSION=v1.1 +ORIGIN_VERSION=v1.2  EXAMPLES_BASE=$(pwd)/files/examples/${ORIGIN_VERSION}  find ${EXAMPLES_BASE} -name '*.json' -delete  find ${EXAMPLES_BASE} -name '*.yaml' -delete diff --git a/roles/openshift_examples/files/examples/latest b/roles/openshift_examples/files/examples/latest new file mode 120000 index 000000000..634650e09 --- /dev/null +++ b/roles/openshift_examples/files/examples/latest @@ -0,0 +1 @@ +v1.1
\ No newline at end of file diff --git a/roles/openshift_examples/files/examples/v1.1/infrastructure-templates/enterprise/logging-deployer.yaml b/roles/openshift_examples/files/examples/v1.1/infrastructure-templates/enterprise/logging-deployer.yaml index b3b60bf9b..9c8f1071a 100644 --- a/roles/openshift_examples/files/examples/v1.1/infrastructure-templates/enterprise/logging-deployer.yaml +++ b/roles/openshift_examples/files/examples/v1.1/infrastructure-templates/enterprise/logging-deployer.yaml @@ -86,7 +86,7 @@ parameters:  -    description: 'Specify version for logging components; e.g. for "openshift/origin-logging-deployer:v1.1", set version "v1.1"'    name: IMAGE_VERSION -  value: "3.1.0" +  value: "3.1.1"  -    description: "If true, set up to use a second ES cluster for ops logs."    name: ENABLE_OPS_CLUSTER diff --git a/roles/openshift_examples/files/examples/v1.2/db-templates/README.md b/roles/openshift_examples/files/examples/v1.2/db-templates/README.md new file mode 100644 index 000000000..b39abf8b9 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/db-templates/README.md @@ -0,0 +1,100 @@ +OpenShift 3 Database Examples +============================= + +This directory contains example JSON templates to deploy databases in OpenShift. +They can be used to immediately instantiate a database and expose it as a +service in the current project, or to add a template that can be later used from +the Web Console or the CLI. + +The examples can also be tweaked to create new templates. + + +## Ephemeral x Persistent + +For each supported database, there are two template files. + +Files named `*-ephemeral-template.json` use +"[emptyDir](https://docs.openshift.org/latest/dev_guide/volumes.html)" volumes +for data storage, which means that data is lost after a pod restart. +This is tolerable for experimenting, but not suitable for production use. + +The other templates, named `*-persistent-template.json`, use [persistent volume +claims](https://docs.openshift.org/latest/architecture/additional_concepts/storage.html#persistent-volume-claims) +to request persistent storage provided by [persistent +volumes](https://docs.openshift.org/latest/architecture/additional_concepts/storage.html#persistent-volumes), +that must have been created upfront. + + +## Usage + +### Instantiating a new database service + +Use these instructions if you want to quickly deploy a new database service in +your current project. Instantiate a new database service with this command: + +    $ oc new-app /path/to/template.json + +Replace `/path/to/template.json` with an appropriate path, that can be either a +local path or an URL. Example: + +    $ oc new-app https://raw.githubusercontent.com/openshift/origin/master/examples/db-templates/mongodb-ephemeral-template.json +    --> Deploying template mongodb-ephemeral for "https://raw.githubusercontent.com/openshift/origin/master/examples/db-templates/mongodb-ephemeral-template.json" +     With parameters: +      DATABASE_SERVICE_NAME=mongodb +      MONGODB_USER=userJNX # generated +      MONGODB_PASSWORD=tnEDilMVrgjp5AI2 # generated +      MONGODB_DATABASE=sampledb +      MONGODB_ADMIN_PASSWORD=8bYEs8OlNYhVyMBs # generated +    --> Creating resources ... +    Service "mongodb" created +    DeploymentConfig "mongodb" created +    --> Success +    Run 'oc status' to view your app. + +The parameters listed in the output above can be tweaked by specifying values in +the command line with the `-p` option: + +    $ oc new-app examples/db-templates/mongodb-ephemeral-template.json -p DATABASE_SERVICE_NAME=mydb -p MONGODB_USER=default +    --> Deploying template mongodb-ephemeral for "examples/db-templates/mongodb-ephemeral-template.json" +         With parameters: +          DATABASE_SERVICE_NAME=mydb +          MONGODB_USER=default +          MONGODB_PASSWORD=RPvMbWlQFOevSowQ # generated +          MONGODB_DATABASE=sampledb +          MONGODB_ADMIN_PASSWORD=K7tIjDxDHHYCvFrJ # generated +    --> Creating resources ... +        Service "mydb" created +        DeploymentConfig "mydb" created +    --> Success +        Run 'oc status' to view your app. + +Note that the persistent template requires an existing persistent volume, +otherwise the deployment won't ever succeed. + + +### Adding a database as a template + +Use these instructions if, instead of instantiating a service right away, you +want to load the template into an OpenShift project so that it can be used +later. Create the template with this command: + +    $ oc create -f /path/to/template.json + +Replace `/path/to/template.json` with an appropriate path, that can be either a +local path or an URL. Example: + +    $ oc create -f https://raw.githubusercontent.com/openshift/origin/master/examples/db-templates/mongodb-ephemeral-template.json +    template "mongodb-ephemeral" created + +The new template is now available to use in the Web Console or with `oc +new-app`. + + +## More information + +The usage of each supported database image is further documented in the links +below: + +- [MySQL](https://docs.openshift.org/latest/using_images/db_images/mysql.html) +- [PostgreSQL](https://docs.openshift.org/latest/using_images/db_images/postgresql.html) +- [MongoDB](https://docs.openshift.org/latest/using_images/db_images/mongodb.html) diff --git a/roles/openshift_examples/files/examples/v1.2/db-templates/mongodb-ephemeral-template.json b/roles/openshift_examples/files/examples/v1.2/db-templates/mongodb-ephemeral-template.json new file mode 100644 index 000000000..2d0760fdd --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/db-templates/mongodb-ephemeral-template.json @@ -0,0 +1,212 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "mongodb-ephemeral", +    "creationTimestamp": null, +    "annotations": { +      "description": "MongoDB database service, without persistent storage. WARNING: Any data stored will be lost upon pod destruction. Only use this template for testing", +      "iconClass": "icon-mongodb", +      "tags": "database,mongodb" +    } +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "ports": [ +          { +            "name": "mongo", +            "protocol": "TCP", +            "port": 27017, +            "targetPort": 27017, +            "nodePort": 0 +          } +        ], +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "portalIP": "", +        "type": "ClusterIP", +        "sessionAffinity": "None" +      }, +      "status": { +        "loadBalancer": {} +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "strategy": { +          "type": "Recreate" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": false, +              "containerNames": [ +                "mongodb" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "mongodb:latest", +                "namespace": "openshift" +              }, +              "lastTriggeredImage": "" +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "creationTimestamp": null, +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "mongodb", +                "image": "mongodb", +                "ports": [ +                  { +                    "containerPort": 27017, +                    "protocol": "TCP" +                  } +                ], +                "readinessProbe": { +                  "timeoutSeconds": 1, +                  "initialDelaySeconds": 3, +                  "exec": { +                    "command": [ "/bin/sh", "-i", "-c", "mongostat --host 127.0.0.1 -u admin -p ${MONGODB_ADMIN_PASSWORD} -n 1 --noheaders"] +                  } +                }, +                "livenessProbe": { +                  "timeoutSeconds": 1, +                  "initialDelaySeconds": 30, +                  "tcpSocket": { +                    "port": 27017 +                  } +                }, +                "env": [ +                  { +                    "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}" +		    } +		}, +                "volumeMounts": [ +                  { +                    "name": "${DATABASE_SERVICE_NAME}-data", +                    "mountPath": "/var/lib/mongodb/data" +                  } +                ], +                "terminationMessagePath": "/dev/termination-log", +                "imagePullPolicy": "IfNotPresent", +                "capabilities": {}, +                "securityContext": { +                  "capabilities": {}, +                  "privileged": false +                } +              } +            ], +            "volumes": [ +              { +                "name": "${DATABASE_SERVICE_NAME}-data", +                "emptyDir": { +                  "medium": "" +                } +              } +            ], +            "restartPolicy": "Always", +            "dnsPolicy": "ClusterFirst" +          } +        } +      }, +      "status": {} +    } +  ], +  "parameters": [ +    { +      "name": "MEMORY_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the container can use", +      "value": "512Mi" +    }, +    { +      "name": "DATABASE_SERVICE_NAME", +      "displayName": "Database service name", +      "description": "The name of the OpenShift Service exposed for the database", +      "value": "mongodb", +      "required": true +    }, +    { +      "name": "MONGODB_USER", +      "displayName": "MongoDB user", +      "description": "Username for MongoDB user that will be used for accessing the database", +      "generate": "expression", +      "from": "user[A-Z0-9]{3}", +      "required": true +    }, +    { +      "name": "MONGODB_PASSWORD", +      "displayName": "MongoDB password", +      "description": "Password for the MongoDB user", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}", +      "required": true +    }, +    { +      "name": "MONGODB_DATABASE", +      "displayName": "MongoDB database name", +      "description": "Name of the MongoDB database accessed", +      "value": "sampledb", +      "required": true +    }, +    { +      "name": "MONGODB_ADMIN_PASSWORD", +      "displayName": "MongoDB admin password", +      "description": "Password for the database admin user", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}", +      "required": true +    } +  ], +  "labels": { +    "template": "mongodb-ephemeral-template" +  } +} diff --git a/roles/openshift_examples/files/examples/v1.2/db-templates/mongodb-persistent-template.json b/roles/openshift_examples/files/examples/v1.2/db-templates/mongodb-persistent-template.json new file mode 100644 index 000000000..da22a8d1b --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/db-templates/mongodb-persistent-template.json @@ -0,0 +1,236 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "mongodb-persistent", +    "creationTimestamp": null, +    "annotations": { +      "description": "MongoDB database service, with persistent storage. Scaling to more than one replica is not supported", +      "iconClass": "icon-mongodb", +      "tags": "database,mongodb" +    } +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "ports": [ +          { +            "name": "mongo", +            "protocol": "TCP", +            "port": 27017, +            "targetPort": 27017, +            "nodePort": 0 +          } +        ], +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "portalIP": "", +        "type": "ClusterIP", +        "sessionAffinity": "None" +      }, +      "status": { +        "loadBalancer": {} +      } +    }, +    { +      "kind": "PersistentVolumeClaim", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}" +      }, +      "spec": { +        "accessModes": [ +          "ReadWriteOnce" +        ], +        "resources": { +          "requests": { +            "storage": "${VOLUME_CAPACITY}" +          } +        } +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "strategy": { +          "type": "Recreate" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "mongodb" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "mongodb:latest", +                "namespace": "openshift" +              }, +              "lastTriggeredImage": "" +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "creationTimestamp": null, +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "mongodb", +                "image": "mongodb", +                "ports": [ +                  { +                    "containerPort": 27017, +                    "protocol": "TCP" +                  } +                ], +                "readinessProbe": { +                  "timeoutSeconds": 1, +                  "initialDelaySeconds": 3, +                  "exec": { +                    "command": [ "/bin/sh", "-i", "-c", "mongostat --host 127.0.0.1 -u admin -p ${MONGODB_ADMIN_PASSWORD} -n 1 --noheaders"] +                  } +                }, +                "livenessProbe": { +                  "timeoutSeconds": 1, +                  "initialDelaySeconds": 30, +                  "tcpSocket": { +                    "port": 27017 +                  } +                }, +                "env": [ +                  { +                    "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}" +                  } +                }, +                "volumeMounts": [ +                  { +                    "name": "${DATABASE_SERVICE_NAME}-data", +                    "mountPath": "/var/lib/mongodb/data" +                  } +                ], +                "terminationMessagePath": "/dev/termination-log", +                "imagePullPolicy": "IfNotPresent", +                "capabilities": {}, +                "securityContext": { +                  "capabilities": {}, +                  "privileged": false +                } +              } +            ], +            "volumes": [ +              { +                "name": "${DATABASE_SERVICE_NAME}-data", +                "persistentVolumeClaim": { +                  "claimName": "${DATABASE_SERVICE_NAME}" +                } +              } +            ], +            "restartPolicy": "Always", +            "dnsPolicy": "ClusterFirst" +          } +        } +      }, +      "status": {} +    } +  ], +  "parameters": [ +    { +      "name": "MEMORY_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the container can use", +      "value": "512Mi" +    }, +    { +      "name": "DATABASE_SERVICE_NAME", +      "displayName": "Database service name", +      "description": "The name of the OpenShift Service exposed for the database", +      "value": "mongodb", +      "required": true +    }, +    { +      "name": "MONGODB_USER", +      "displayName": "MongoDB user", +      "description": "Username for MongoDB user that will be used for accessing the database", +      "generate": "expression", +      "from": "user[A-Z0-9]{3}", +      "required": true +    }, +    { +      "name": "MONGODB_PASSWORD", +      "displayName": "MongoDB password", +      "description": "Password for the MongoDB user", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}", +      "required": true +    }, +    { +      "name": "MONGODB_DATABASE", +      "displayName": "MongoDB database name", +      "description": "Name of the MongoDB database accessed", +      "value": "sampledb", +      "required": true +    }, +    { +      "name": "MONGODB_ADMIN_PASSWORD", +      "displayName": "MongoDB admin password", +      "description": "Password for the database admin user", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}", +      "required": true +    }, +    { +      "name": "VOLUME_CAPACITY", +      "displayName": "Volume capacity", +      "description": "Volume space available for data, e.g. 512Mi, 2Gi", +      "value": "512Mi", +      "required": true +    } +  ], +  "labels": { +    "template": "mongodb-persistent-template" +  } +} diff --git a/roles/openshift_examples/files/examples/v1.2/db-templates/mysql-ephemeral-template.json b/roles/openshift_examples/files/examples/v1.2/db-templates/mysql-ephemeral-template.json new file mode 100644 index 000000000..5c042e7ea --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/db-templates/mysql-ephemeral-template.json @@ -0,0 +1,201 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "mysql-ephemeral", +    "creationTimestamp": null, +    "annotations": { +      "description": "MySQL database service, without persistent storage. WARNING: Any data stored will be lost upon pod destruction. Only use this template for testing", +      "iconClass": "icon-mysql-database", +      "tags": "database,mysql" +    } +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "ports": [ +          { +            "name": "mysql", +            "protocol": "TCP", +            "port": 3306, +            "targetPort": 3306, +            "nodePort": 0 +          } +        ], +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "portalIP": "", +        "type": "ClusterIP", +        "sessionAffinity": "None" +      }, +      "status": { +        "loadBalancer": {} +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "strategy": { +          "type": "Recreate" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": false, +              "containerNames": [ +                "mysql" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "mysql:latest", +                "namespace": "openshift" +              }, +              "lastTriggeredImage": "" +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "creationTimestamp": null, +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "mysql", +                "image": "mysql", +                "ports": [ +                  { +                    "containerPort": 3306, +                    "protocol": "TCP" +                  } +                ], +                "readinessProbe": { +                  "timeoutSeconds": 1, +                  "initialDelaySeconds": 5, +                  "exec": { +                    "command": [ "/bin/sh", "-i", "-c", +                      "MYSQL_PWD='${MYSQL_PASSWORD}' mysql -h 127.0.0.1 -u ${MYSQL_USER} -D ${MYSQL_DATABASE} -e 'SELECT 1'"] +                  } +                }, +                "livenessProbe": { +                  "timeoutSeconds": 1, +                  "initialDelaySeconds": 30, +                  "tcpSocket": { +                    "port": 3306 +                  } +                }, +                "env": [ +                  { +                    "name": "MYSQL_USER", +                    "value": "${MYSQL_USER}" +                  }, +                  { +                    "name": "MYSQL_PASSWORD", +                    "value": "${MYSQL_PASSWORD}" +                  }, +                  { +                    "name": "MYSQL_DATABASE", +                    "value": "${MYSQL_DATABASE}" +                  } +                ], +                "resources": { +		    "limits": { +			"memory": "${MEMORY_LIMIT}" +		    } +		}, +                "volumeMounts": [ +                  { +                    "name": "${DATABASE_SERVICE_NAME}-data", +                    "mountPath": "/var/lib/mysql/data" +                  } +                ], +                "terminationMessagePath": "/dev/termination-log", +                "imagePullPolicy": "IfNotPresent", +                "capabilities": {}, +                "securityContext": { +                  "capabilities": {}, +                  "privileged": false +                } +              } +            ], +            "volumes": [ +              { +                "name": "${DATABASE_SERVICE_NAME}-data", +                "emptyDir": { +                  "medium": "" +                } +              } +            ], +            "restartPolicy": "Always", +            "dnsPolicy": "ClusterFirst" +          } +        } +      }, +      "status": {} +    } +  ], +  "parameters": [ +    { +      "name": "MEMORY_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the container can use", +      "value": "512Mi" +    }, +    { +      "name": "DATABASE_SERVICE_NAME", +      "displayName": "Database service name", +      "description": "The name of the OpenShift Service exposed for the database", +      "value": "mysql", +      "required": true +    }, +    { +      "name": "MYSQL_USER", +      "displayName": "MySQL user", +      "description": "Username for MySQL user that will be used for accessing the database", +      "generate": "expression", +      "from": "user[A-Z0-9]{3}", +      "required": true +    }, +    { +      "name": "MYSQL_PASSWORD", +      "displayName": "MySQL password", +      "description": "Password for the MySQL user", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}", +      "required": true +    }, +    { +      "name": "MYSQL_DATABASE", +      "displayName": "MySQL database name", +      "description": "Name of the MySQL database accessed", +      "value": "sampledb", +      "required": true +    } +  ], +  "labels": { +    "template": "mysql-ephemeral-template" +  } +} diff --git a/roles/openshift_examples/files/examples/v1.2/db-templates/mysql-persistent-template.json b/roles/openshift_examples/files/examples/v1.2/db-templates/mysql-persistent-template.json new file mode 100644 index 000000000..d565179a5 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/db-templates/mysql-persistent-template.json @@ -0,0 +1,225 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "mysql-persistent", +    "creationTimestamp": null, +    "annotations": { +      "description": "MySQL database service, with persistent storage. Scaling to more than one replica is not supported", +      "iconClass": "icon-mysql-database", +      "tags": "database,mysql" +    } +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "ports": [ +          { +            "name": "mysql", +            "protocol": "TCP", +            "port": 3306, +            "targetPort": 3306, +            "nodePort": 0 +          } +        ], +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "portalIP": "", +        "type": "ClusterIP", +        "sessionAffinity": "None" +      }, +      "status": { +        "loadBalancer": {} +      } +    }, +    { +      "kind": "PersistentVolumeClaim", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}" +      }, +      "spec": { +        "accessModes": [ +          "ReadWriteOnce" +        ], +        "resources": { +          "requests": { +            "storage": "${VOLUME_CAPACITY}" +          } +        } +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "strategy": { +          "type": "Recreate" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "mysql" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "mysql:latest", +                "namespace": "openshift" +              }, +              "lastTriggeredImage": "" +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "creationTimestamp": null, +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "mysql", +                "image": "mysql", +                "ports": [ +                  { +                    "containerPort": 3306, +                    "protocol": "TCP" +                  } +                ], +                "readinessProbe": { +                  "timeoutSeconds": 1, +                  "initialDelaySeconds": 5, +                  "exec": { +                    "command": [ "/bin/sh", "-i", "-c", +                      "MYSQL_PWD='${MYSQL_PASSWORD}' mysql -h 127.0.0.1 -u ${MYSQL_USER} -D ${MYSQL_DATABASE} -e 'SELECT 1'"] +                  } +                }, +                "livenessProbe": { +                  "timeoutSeconds": 1, +                  "initialDelaySeconds": 30, +                  "tcpSocket": { +                    "port": 3306 +                  } +                }, +                "env": [ +                  { +                    "name": "MYSQL_USER", +                    "value": "${MYSQL_USER}" +                  }, +                  { +                    "name": "MYSQL_PASSWORD", +                    "value": "${MYSQL_PASSWORD}" +                  }, +                  { +                    "name": "MYSQL_DATABASE", +                    "value": "${MYSQL_DATABASE}" +                  } +                ], +                "resources": { +                  "limits": { +                    "memory": "${MEMORY_LIMIT}" +                  } +                }, +                "volumeMounts": [ +                  { +                    "name": "${DATABASE_SERVICE_NAME}-data", +                    "mountPath": "/var/lib/mysql/data" +                  } +                ], +                "terminationMessagePath": "/dev/termination-log", +                "imagePullPolicy": "IfNotPresent", +                "capabilities": {}, +                "securityContext": { +                  "capabilities": {}, +                  "privileged": false +                } +              } +            ], +            "volumes": [ +              { +                "name": "${DATABASE_SERVICE_NAME}-data", +                "persistentVolumeClaim": { +                  "claimName": "${DATABASE_SERVICE_NAME}" +                } +              } +            ], +            "restartPolicy": "Always", +            "dnsPolicy": "ClusterFirst" +          } +        } +      }, +      "status": {} +    } +  ], +  "parameters": [ +    { +      "name": "MEMORY_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the container can use", +      "value": "512Mi" +    }, +    { +      "name": "DATABASE_SERVICE_NAME", +      "displayName": "Database service name", +      "description": "The name of the OpenShift Service exposed for the database", +      "value": "mysql", +      "required": true +    }, +    { +      "name": "MYSQL_USER", +      "displayName": "MySQL user", +      "description": "Username for MySQL user that will be used for accessing the database", +      "generate": "expression", +      "from": "user[A-Z0-9]{3}", +      "required": true +    }, +    { +      "name": "MYSQL_PASSWORD", +      "displayName": "MySQL password", +      "description": "Password for the MySQL user", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}", +      "required": true +    }, +    { +      "name": "MYSQL_DATABASE", +      "displayName": "MySQL database name", +      "description": "Name of the MySQL database accessed", +      "value": "sampledb", +      "required": true +    }, +    { +      "name": "VOLUME_CAPACITY", +      "displayName": "Volume capacity", +      "description": "Volume space available for data, e.g. 512Mi, 2Gi", +      "value": "512Mi", +      "required": true +    } +  ], +  "labels": { +    "template": "mysql-persistent-template" +  } +} diff --git a/roles/openshift_examples/files/examples/v1.2/db-templates/postgresql-ephemeral-template.json b/roles/openshift_examples/files/examples/v1.2/db-templates/postgresql-ephemeral-template.json new file mode 100644 index 000000000..8105e487b --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/db-templates/postgresql-ephemeral-template.json @@ -0,0 +1,200 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "postgresql-ephemeral", +    "creationTimestamp": null, +    "annotations": { +      "description": "PostgreSQL database service, without persistent storage. WARNING: Any data stored will be lost upon pod destruction. Only use this template for testing", +      "iconClass": "icon-postgresql", +      "tags": "database,postgresql" +    } +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "ports": [ +          { +            "name": "postgresql", +            "protocol": "TCP", +            "port": 5432, +            "targetPort": 5432, +            "nodePort": 0 +          } +        ], +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "portalIP": "", +        "type": "ClusterIP", +        "sessionAffinity": "None" +      }, +      "status": { +        "loadBalancer": {} +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "strategy": { +          "type": "Recreate" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": false, +              "containerNames": [ +                "postgresql" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "postgresql:latest", +                "namespace": "openshift" +              }, +              "lastTriggeredImage": "" +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "creationTimestamp": null, +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "postgresql", +                "image": "postgresql", +                "ports": [ +                  { +                    "containerPort": 5432, +                    "protocol": "TCP" +                  } +                ], +                "readinessProbe": { +                  "timeoutSeconds": 1, +                  "initialDelaySeconds": 5, +                  "exec": { +                    "command": [ "/bin/sh", "-i", "-c", "psql -h 127.0.0.1 -U ${POSTGRESQL_USER} -q -d ${POSTGRESQL_DATABASE} -c 'SELECT 1'"] +                  } +                }, +                "livenessProbe": { +                  "timeoutSeconds": 1, +                  "initialDelaySeconds": 30, +                  "tcpSocket": { +                    "port": 5432 +                  } +                }, +                "env": [ +                  { +                    "name": "POSTGRESQL_USER", +                    "value": "${POSTGRESQL_USER}" +                  }, +                  { +                    "name": "POSTGRESQL_PASSWORD", +                    "value": "${POSTGRESQL_PASSWORD}" +                  }, +                  { +                    "name": "POSTGRESQL_DATABASE", +                    "value": "${POSTGRESQL_DATABASE}" +                  } +                ], +                "resources": { +		    "limits": { +			"memory": "${MEMORY_LIMIT}" +		    } +		}, +                "volumeMounts": [ +                  { +                    "name": "${DATABASE_SERVICE_NAME}-data", +                    "mountPath": "/var/lib/pgsql/data" +                  } +                ], +                "terminationMessagePath": "/dev/termination-log", +                "imagePullPolicy": "IfNotPresent", +                "capabilities": {}, +                "securityContext": { +                  "capabilities": {}, +                  "privileged": false +                } +              } +            ], +            "volumes": [ +              { +                "name": "${DATABASE_SERVICE_NAME}-data", +                "emptyDir": { +                  "medium": "" +                } +              } +            ], +            "restartPolicy": "Always", +            "dnsPolicy": "ClusterFirst" +          } +        } +      }, +      "status": {} +    } +  ], +  "parameters": [ +    { +      "name": "MEMORY_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the container can use", +      "value": "512Mi" +    }, +    { +      "name": "DATABASE_SERVICE_NAME", +      "displayName": "Database service name", +      "description": "The name of the OpenShift Service exposed for the database", +      "value": "postgresql", +      "required": true +    }, +    { +      "name": "POSTGRESQL_USER", +      "displayName": "PostgreSQL user", +      "description": "Username for PostgreSQL user that will be used for accessing the database", +      "generate": "expression", +      "from": "user[A-Z0-9]{3}", +      "required": true +    }, +    { +      "name": "POSTGRESQL_PASSWORD", +      "displayName": "PostgreSQL password", +      "description": "Password for the PostgreSQL user", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}", +      "required": true +    }, +    { +      "name": "POSTGRESQL_DATABASE", +      "displayName": "PostgreSQL database name", +      "description": "Name of the PostgreSQL database accessed", +      "value": "sampledb", +      "required": true +    } +  ], +  "labels": { +    "template": "postgresql-ephemeral-template" +  } +} diff --git a/roles/openshift_examples/files/examples/v1.2/db-templates/postgresql-persistent-template.json b/roles/openshift_examples/files/examples/v1.2/db-templates/postgresql-persistent-template.json new file mode 100644 index 000000000..5d7c525c0 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/db-templates/postgresql-persistent-template.json @@ -0,0 +1,224 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "postgresql-persistent", +    "creationTimestamp": null, +    "annotations": { +      "description": "PostgreSQL database service, with persistent storage. Scaling to more than one replica is not supported", +      "iconClass": "icon-postgresql", +      "tags": "database,postgresql" +    } +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "ports": [ +          { +            "name": "postgresql", +            "protocol": "TCP", +            "port": 5432, +            "targetPort": 5432, +            "nodePort": 0 +          } +        ], +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "portalIP": "", +        "type": "ClusterIP", +        "sessionAffinity": "None" +      }, +      "status": { +        "loadBalancer": {} +      } +    }, +    { +      "kind": "PersistentVolumeClaim", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}" +      }, +      "spec": { +        "accessModes": [ +          "ReadWriteOnce" +        ], +        "resources": { +          "requests": { +            "storage": "${VOLUME_CAPACITY}" +          } +        } +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "strategy": { +          "type": "Recreate" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "postgresql" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "postgresql:latest", +                "namespace": "openshift" +              }, +              "lastTriggeredImage": "" +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "creationTimestamp": null, +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "postgresql", +                "image": "postgresql", +                "ports": [ +                  { +                    "containerPort": 5432, +                    "protocol": "TCP" +                  } +                ], +                "readinessProbe": { +                  "timeoutSeconds": 1, +                  "initialDelaySeconds": 5, +                  "exec": { +                    "command": [ "/bin/sh", "-i", "-c", "psql -h 127.0.0.1 -U ${POSTGRESQL_USER} -q -d ${POSTGRESQL_DATABASE} -c 'SELECT 1'"] +                  } +                }, +                "livenessProbe": { +                  "timeoutSeconds": 1, +                  "initialDelaySeconds": 30, +                  "tcpSocket": { +                    "port": 5432 +                  } +                }, +                "env": [ +                  { +                    "name": "POSTGRESQL_USER", +                    "value": "${POSTGRESQL_USER}" +                  }, +                  { +                    "name": "POSTGRESQL_PASSWORD", +                    "value": "${POSTGRESQL_PASSWORD}" +                  }, +                  { +                    "name": "POSTGRESQL_DATABASE", +                    "value": "${POSTGRESQL_DATABASE}" +                  } +                ], +                "resources": { +		    "limits": { +			"memory": "${MEMORY_LIMIT}" +		    } +		}, +                "volumeMounts": [ +                  { +                    "name": "${DATABASE_SERVICE_NAME}-data", +                    "mountPath": "/var/lib/pgsql/data" +                  } +                ], +                "terminationMessagePath": "/dev/termination-log", +                "imagePullPolicy": "IfNotPresent", +                "capabilities": {}, +                "securityContext": { +                  "capabilities": {}, +                  "privileged": false +                } +              } +            ], +            "volumes": [ +              { +                "name": "${DATABASE_SERVICE_NAME}-data", +                "persistentVolumeClaim": { +                  "claimName": "${DATABASE_SERVICE_NAME}" +                } +              } +            ], +            "restartPolicy": "Always", +            "dnsPolicy": "ClusterFirst" +          } +        } +      }, +      "status": {} +    } +  ], +  "parameters": [ +    { +      "name": "MEMORY_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the container can use", +      "value": "512Mi" +    }, +    { +      "name": "DATABASE_SERVICE_NAME", +      "displayName": "Database service name", +      "description": "The name of the OpenShift Service exposed for the database", +      "value": "postgresql", +      "required": true +    }, +    { +      "name": "POSTGRESQL_USER", +      "displayName": "PostgreSQL user", +      "description": "Username for PostgreSQL user that will be used for accessing the database", +      "generate": "expression", +      "from": "user[A-Z0-9]{3}", +      "required": true +    }, +    { +      "name": "POSTGRESQL_PASSWORD", +      "displayName": "PostgreSQL password", +      "description": "Password for the PostgreSQL user", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}", +      "required": true +    }, +    { +      "name": "POSTGRESQL_DATABASE", +      "displayName": "PostgreSQL database name", +      "description": "Name of the PostgreSQL database accessed", +      "value": "sampledb", +      "required": true +    }, +    { +      "name": "VOLUME_CAPACITY", +      "displayName": "Volume capacity", +      "description": "Volume space available for data, e.g. 512Mi, 2Gi", +      "value": "512Mi", +      "required": true +    } +  ], +  "labels": { +    "template": "postgresql-persistent-template" +  } +} diff --git a/roles/openshift_examples/files/examples/v1.2/image-streams/image-streams-centos7.json b/roles/openshift_examples/files/examples/v1.2/image-streams/image-streams-centos7.json new file mode 100644 index 000000000..719aee772 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/image-streams/image-streams-centos7.json @@ -0,0 +1,546 @@ +{ +  "kind": "ImageStreamList", +  "apiVersion": "v1", +  "metadata": {}, +  "items": [ +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "ruby", +        "creationTimestamp": null +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Build and run Ruby applications", +              "iconClass": "icon-ruby", +              "tags": "builder,ruby", +              "supports": "ruby", +              "sampleRepo": "https://github.com/openshift/ruby-ex.git" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "2.2" +            } +          }, +          { +            "name": "2.0", +            "annotations": { +              "description": "Build and run Ruby 2.0 applications", +              "iconClass": "icon-ruby", +              "tags": "builder,ruby", +              "supports": "ruby:2.0,ruby", +              "version": "2.0", +              "sampleRepo": "https://github.com/openshift/ruby-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "openshift/ruby-20-centos7:latest" +            } +          }, +          { +            "name": "2.2", +            "annotations": { +              "description": "Build and run Ruby 2.2 applications", +              "iconClass": "icon-ruby", +              "tags": "builder,ruby", +              "supports": "ruby:2.2,ruby", +              "version": "2.2", +              "sampleRepo": "https://github.com/openshift/ruby-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "centos/ruby-22-centos7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs", +        "creationTimestamp": null +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Build and run NodeJS applications", +              "iconClass": "icon-nodejs", +              "tags": "builder,nodejs", +              "supports":"nodejs", +              "sampleRepo": "https://github.com/openshift/nodejs-ex.git" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "0.10" +            } +          }, +          { +            "name": "0.10", +            "annotations": { +              "description": "Build and run NodeJS 0.10 applications", +              "iconClass": "icon-nodejs", +              "tags": "builder,nodejs", +              "supports":"nodejs:0.10,nodejs:0.1,nodejs", +              "version": "0.10", +              "sampleRepo": "https://github.com/openshift/nodejs-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "openshift/nodejs-010-centos7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "perl", +        "creationTimestamp": null +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Build and run Perl applications", +              "iconClass": "icon-perl", +              "tags": "builder,perl", +              "supports":"perl", +              "sampleRepo": "https://github.com/openshift/dancer-ex.git" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "5.20" +            } +          }, +          { +            "name": "5.16", +            "annotations": { +              "description": "Build and run Perl 5.16 applications", +              "iconClass": "icon-perl", +              "tags": "builder,perl", +              "supports":"perl:5.16,perl", +              "version": "5.16", +              "sampleRepo": "https://github.com/openshift/dancer-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "openshift/perl-516-centos7:latest" +            } +          }, +          { +            "name": "5.20", +            "annotations": { +              "description": "Build and run Perl 5.20 applications", +              "iconClass": "icon-perl", +              "tags": "builder,perl", +              "supports":"perl:5.20,perl", +              "version": "5.20", +              "sampleRepo": "https://github.com/openshift/dancer-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "centos/perl-520-centos7:latest" +            } + +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "php", +        "creationTimestamp": null +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Build and run PHP applications", +              "iconClass": "icon-php", +              "tags": "builder,php", +              "supports":"php", +              "sampleRepo": "https://github.com/openshift/cakephp-ex.git" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "5.6" +            } +          }, +          { +            "name": "5.5", +            "annotations": { +              "description": "Build and run PHP 5.5 applications", +              "iconClass": "icon-php", +              "tags": "builder,php", +              "supports":"php:5.5,php", +              "version": "5.5", +              "sampleRepo": "https://github.com/openshift/cakephp-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "openshift/php-55-centos7:latest" +            } +          }, +          { +            "name": "5.6", +            "annotations": { +              "description": "Build and run PHP 5.6 applications", +              "iconClass": "icon-php", +              "tags": "builder,php", +              "supports":"php:5.6,php", +              "version": "5.6", +              "sampleRepo": "https://github.com/openshift/cakephp-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "centos/php-56-centos7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "python", +        "creationTimestamp": null +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Build and run Python applications", +              "iconClass": "icon-python", +              "tags": "builder,python", +              "supports":"python", +              "sampleRepo": "https://github.com/openshift/django-ex.git" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "3.4" +            } +          }, +          { +            "name": "3.3", +            "annotations": { +              "description": "Build and run Python 3.3 applications", +              "iconClass": "icon-python", +              "tags": "builder,python", +              "supports":"python:3.3,python", +              "version": "3.3", +              "sampleRepo": "https://github.com/openshift/django-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "openshift/python-33-centos7:latest" +            } +          }, +          { +            "name": "2.7", +            "annotations": { +              "description": "Build and run Python 2.7 applications", +              "iconClass": "icon-python", +              "tags": "builder,python", +              "supports":"python:2.7,python", +              "version": "2.7", +              "sampleRepo": "https://github.com/openshift/django-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "centos/python-27-centos7:latest" +            } +          }, +          { +            "name": "3.4", +            "annotations": { +              "description": "Build and run Python 3.4 applications", +              "iconClass": "icon-python", +              "tags": "builder,python", +              "supports":"python:3.4,python", +              "version": "3.4", +              "sampleRepo": "https://github.com/openshift/django-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "centos/python-34-centos7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "wildfly", +        "creationTimestamp": null +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Build and run Java applications on Wildfly", +              "iconClass": "icon-wildfly", +              "tags": "builder,wildfly,java", +              "supports":"jee,java", +              "sampleRepo": "https://github.com/bparees/openshift-jee-sample.git" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "10.0" +            } +          }, +          { +            "name": "8.1", +            "annotations": { +              "description": "Build and run Java applications on Wildfly 8.1", +              "iconClass": "icon-wildfly", +              "tags": "builder,wildfly,java", +              "supports":"wildfly:8.1,jee,java", +              "version": "8.1", +              "sampleRepo": "https://github.com/bparees/openshift-jee-sample.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "openshift/wildfly-81-centos7:latest" +            } +          }, +          { +            "name": "9.0", +            "annotations": { +              "description": "Build and run Java applications on Wildfly 9.0", +              "iconClass": "icon-wildfly", +              "tags": "builder,wildfly,java", +              "supports":"wildfly:9.0,jee,java", +              "version": "9.0", +              "sampleRepo": "https://github.com/bparees/openshift-jee-sample.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "openshift/wildfly-90-centos7:latest" +            } +          }, +          { +            "name": "10.0", +            "annotations": { +              "description": "Build and run Java applications on Wildfly 10.0", +              "iconClass": "icon-wildfly", +              "tags": "builder,wildfly,java", +              "supports":"wildfly:10.0,jee,java", +              "version": "10.0", +              "sampleRepo": "https://github.com/bparees/openshift-jee-sample.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "openshift/wildfly-100-centos7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "mysql", +        "creationTimestamp": null +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Provides a MySQL database", +              "iconClass": "icon-mysql-database", +              "tags": "mysql" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "5.6" +            } +          }, +          { +            "name": "5.5", +            "annotations": { +              "description": "Provides a MySQL v5.5 database", +              "iconClass": "icon-mysql-database", +              "tags": "mysql", +              "version": "5.5" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "openshift/mysql-55-centos7:latest" +            } +          }, +          { +            "name": "5.6", +            "annotations": { +              "description": "Provides a MySQL v5.6 database", +              "iconClass": "icon-mysql-database", +              "tags": "mysql", +              "version": "5.6" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "centos/mysql-56-centos7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "postgresql", +        "creationTimestamp": null +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Provides a PostgreSQL database", +              "iconClass": "icon-postgresql", +              "tags": "postgresql" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "9.4" +            } +          }, +          { +            "name": "9.2", +            "annotations": { +              "description": "Provides a PostgreSQL v9.2 database", +              "iconClass": "icon-postgresql", +              "tags": "postgresql", +              "version": "9.2" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "openshift/postgresql-92-centos7:latest" +            } +          }, +          { +            "name": "9.4", +            "annotations": { +              "description": "Provides a PostgreSQL v9.4 database", +              "iconClass": "icon-postgresql", +              "tags": "postgresql", +              "version": "9.4" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "centos/postgresql-94-centos7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "mongodb", +        "creationTimestamp": null +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Provides a MongoDB database", +              "iconClass": "icon-mongodb", +              "tags": "mongodb" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "2.6" +            } +          }, +          { +            "name": "2.4", +            "annotations": { +              "description": "Provides a MongoDB v2.4 database", +              "iconClass": "icon-mongodb", +              "tags": "mongodb", +              "version": "2.4" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "openshift/mongodb-24-centos7:latest" +            } +          }, +          { +            "name": "2.6", +            "annotations": { +              "description": "Provides a MongoDB v2.6 database", +              "iconClass": "icon-mongodb", +              "tags": "mongodb", +              "version": "2.6" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "centos/mongodb-26-centos7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "jenkins", +        "creationTimestamp": null +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Provides a Jenkins server", +              "iconClass": "icon-jenkins", +              "tags": "jenkins" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "1" +            } +          }, +          { +            "name": "1", +            "annotations": { +              "description": "Provides a Jenkins server", +              "iconClass": "icon-jenkins", +              "tags": "jenkins", +              "version": "1.x" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "openshift/jenkins-1-centos7:latest" +            } +          } +        ] +      } +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/image-streams/image-streams-rhel7.json b/roles/openshift_examples/files/examples/v1.2/image-streams/image-streams-rhel7.json new file mode 100644 index 000000000..00635ec78 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/image-streams/image-streams-rhel7.json @@ -0,0 +1,475 @@ +{ +  "kind": "ImageStreamList", +  "apiVersion": "v1", +  "metadata": {}, +  "items": [ +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "ruby", +        "creationTimestamp": null +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Build and run Ruby applications", +              "iconClass": "icon-ruby", +              "tags": "builder,ruby", +              "supports": "ruby,ruby", +              "sampleRepo": "https://github.com/openshift/ruby-ex.git" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "2.2" +            } +          }, +          { +            "name": "2.0", +            "annotations": { +              "description": "Build and run Ruby 2.0 applications", +              "iconClass": "icon-ruby", +              "tags": "builder,ruby", +              "supports": "ruby:2.0,ruby", +              "version": "2.0", +              "sampleRepo": "https://github.com/openshift/ruby-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/openshift3/ruby-20-rhel7:latest" +            } +          }, +          { +            "name": "2.2", +            "annotations": { +              "description": "Build and run Ruby 2.2 applications", +              "iconClass": "icon-ruby", +              "tags": "builder,ruby", +              "supports": "ruby:2.2,ruby", +              "version": "2.2", +              "sampleRepo": "https://github.com/openshift/ruby-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/rhscl/ruby-22-rhel7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs", +        "creationTimestamp": null +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Build and run NodeJS applications", +              "iconClass": "icon-nodejs", +              "tags": "builder,nodejs", +              "supports":"nodejs", +              "sampleRepo": "https://github.com/openshift/nodejs-ex.git" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "0.10" +            } +          }, +          { +            "name": "0.10", +            "annotations": { +              "description": "Build and run NodeJS 0.10 applications", +              "iconClass": "icon-nodejs", +              "tags": "builder,nodejs", +              "supports":"nodejs:0.10,nodejs:0.1,nodejs", +              "version": "0.10", +              "sampleRepo": "https://github.com/openshift/nodejs-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/openshift3/nodejs-010-rhel7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "perl", +        "creationTimestamp": null +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Build and run Perl applications", +              "iconClass": "icon-perl", +              "tags": "builder,perl", +              "supports":"perl", +              "sampleRepo": "https://github.com/openshift/dancer-ex.git" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "5.20" +            } +          }, +          { +            "name": "5.16", +            "annotations": { +              "description": "Build and run Perl 5.16 applications", +              "iconClass": "icon-perl", +              "tags": "builder,perl", +              "supports":"perl:5.16,perl", +              "version": "5.16", +              "sampleRepo": "https://github.com/openshift/dancer-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/openshift3/perl-516-rhel7:latest" +            } +          }, +          { +            "name": "5.20", +            "annotations": { +              "description": "Build and run Perl 5.20 applications", +              "iconClass": "icon-perl", +              "tags": "builder,perl", +              "supports":"perl:5.20,perl", +              "version": "5.20", +              "sampleRepo": "https://github.com/openshift/dancer-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/rhscl/perl-520-rhel7:latest" +            } + +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "php", +        "creationTimestamp": null +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Build and run PHP applications", +              "iconClass": "icon-php", +              "tags": "builder,php", +              "supports":"php", +              "sampleRepo": "https://github.com/openshift/cakephp-ex.git" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "5.6" +            } +          }, +          { +            "name": "5.5", +            "annotations": { +              "description": "Build and run PHP 5.5 applications", +              "iconClass": "icon-php", +              "tags": "builder,php", +              "supports":"php:5.5,php", +              "version": "5.5", +              "sampleRepo": "https://github.com/openshift/cakephp-ex.git"               +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/openshift3/php-55-rhel7:latest" +            } +          }, +          { +            "name": "5.6", +            "annotations": { +              "description": "Build and run PHP 5.6 applications", +              "iconClass": "icon-php", +              "tags": "builder,php", +              "supports":"php:5.6,php", +              "version": "5.6", +              "sampleRepo": "https://github.com/openshift/cakephp-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/rhscl/php-56-rhel7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "python", +        "creationTimestamp": null +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Build and run Python applications", +              "iconClass": "icon-python", +              "tags": "builder,python", +              "supports":"python", +              "sampleRepo": "https://github.com/openshift/django-ex.git" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "3.4" +            } +          }, +          { +            "name": "3.3", +            "annotations": { +              "description": "Build and run Python 3.3 applications", +              "iconClass": "icon-python", +              "tags": "builder,python", +              "supports":"python:3.3,python", +              "version": "3.3", +              "sampleRepo": "https://github.com/openshift/django-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/openshift3/python-33-rhel7:latest" +            } +          }, +          { +            "name": "2.7", +            "annotations": { +              "description": "Build and run Python 2.7 applications", +              "iconClass": "icon-python", +              "tags": "builder,python", +              "supports":"python:2.7,python", +              "version": "2.7", +              "sampleRepo": "https://github.com/openshift/django-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/rhscl/python-27-rhel7:latest" +            } +          }, +          { +            "name": "3.4", +            "annotations": { +              "description": "Build and run Python 3.4 applications", +              "iconClass": "icon-python", +              "tags": "builder,python", +              "supports":"python:3.4,python", +              "version": "3.4", +              "sampleRepo": "https://github.com/openshift/django-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/rhscl/python-34-rhel7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "mysql", +        "creationTimestamp": null +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Provides a MySQL database", +              "iconClass": "icon-mysql-database", +              "tags": "mysql" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "5.6" +            } +          }, +          { +            "name": "5.5", +            "annotations": { +              "description": "Provides a MySQL v5.5 database", +              "iconClass": "icon-mysql-database", +              "tags": "mysql", +              "version": "5.5" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/openshift3/mysql-55-rhel7:latest" +            } +          }, +          { +            "name": "5.6", +            "annotations": { +              "description": "Provides a MySQL v5.6 database", +              "iconClass": "icon-mysql-database", +              "tags": "mysql", +              "version": "5.6" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/rhscl/mysql-56-rhel7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "postgresql", +        "creationTimestamp": null +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Provides a PostgreSQL database", +              "iconClass": "icon-postgresql", +              "tags": "postgresql" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "9.4" +            } +          }, +          { +            "name": "9.2", +            "annotations": { +              "description": "Provides a PostgreSQL v9.2 database", +              "iconClass": "icon-postgresql", +              "tags": "postgresql", +              "version": "9.2" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/openshift3/postgresql-92-rhel7:latest" +            } +          }, +          { +            "name": "9.4", +            "annotations": { +              "description": "Provides a PostgreSQL v9.4 database", +              "iconClass": "icon-postgresql", +              "tags": "postgresql", +              "version": "9.4" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/rhscl/postgresql-94-rhel7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "mongodb", +        "creationTimestamp": null +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Provides a MongoDB database", +              "iconClass": "icon-mongodb", +              "tags": "mongodb" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "2.6" +            } +          }, +          { +            "name": "2.4", +            "annotations": { +              "description": "Provides a MongoDB v2.4 database", +              "iconClass": "icon-mongodb", +              "tags": "mongodb", +              "version": "2.4" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/openshift3/mongodb-24-rhel7:latest" +            } +          }, +          { +            "name": "2.6", +            "annotations": { +              "description": "Provides a MongoDB v2.6 database", +              "iconClass": "icon-mongodb", +              "tags": "mongodb", +              "version": "2.6" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/rhscl/mongodb-26-rhel7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "jenkins", +        "creationTimestamp": null +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Provides a Jenkins server", +              "iconClass": "icon-jenkins", +              "tags": "jenkins" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "1" +            } +          }, +          { +            "name": "1", +            "annotations": { +              "description": "Provides a Jenkins server", +              "iconClass": "icon-jenkins", +              "tags": "jenkins", +              "version": "1.x" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/openshift3/jenkins-1-rhel7:latest" +            } +          } +        ] +      } +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/infrastructure-templates/enterprise/logging-deployer.yaml b/roles/openshift_examples/files/examples/v1.2/infrastructure-templates/enterprise/logging-deployer.yaml new file mode 100644 index 000000000..c6cc98ce3 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/infrastructure-templates/enterprise/logging-deployer.yaml @@ -0,0 +1,151 @@ +apiVersion: "v1" +kind: "Template" +metadata: +  name: logging-deployer-template +  annotations: +    description: "Template for deploying everything needed for aggregated logging. Requires cluster-admin 'logging-deployer' service account and 'logging-deployer' secret." +    tags: "infrastructure" +labels: +  logging-infra: deployer +  provider: openshift +  component: deployer +objects: +- +  apiVersion: v1 +  kind: Pod +  metadata: +    generateName: logging-deployer- +  spec: +    containers: +    - image: ${IMAGE_PREFIX}logging-deployment:${IMAGE_VERSION} +      imagePullPolicy: Always +      name: deployer +      volumeMounts: +      - name: secret +        mountPath: /secret +        readOnly: true +      - name: empty +        mountPath: /etc/deploy +      env: +        - name: PROJECT +          valueFrom: +            fieldRef: +              fieldPath: metadata.namespace +        - name: IMAGE_PREFIX +          value: ${IMAGE_PREFIX} +        - name: IMAGE_VERSION +          value: ${IMAGE_VERSION} +        - name: ENABLE_OPS_CLUSTER +          value: ${ENABLE_OPS_CLUSTER} +        - name: KIBANA_HOSTNAME +          value: ${KIBANA_HOSTNAME} +        - name: KIBANA_OPS_HOSTNAME +          value: ${KIBANA_OPS_HOSTNAME} +        - name: PUBLIC_MASTER_URL +          value: ${PUBLIC_MASTER_URL} +        - name: MASTER_URL +          value: ${MASTER_URL} +        - name: ES_INSTANCE_RAM +          value: ${ES_INSTANCE_RAM} +        - name: ES_CLUSTER_SIZE +          value: ${ES_CLUSTER_SIZE} +        - name: ES_NODE_QUORUM +          value: ${ES_NODE_QUORUM} +        - name: ES_RECOVER_AFTER_NODES +          value: ${ES_RECOVER_AFTER_NODES} +        - name: ES_RECOVER_EXPECTED_NODES +          value: ${ES_RECOVER_EXPECTED_NODES} +        - name: ES_RECOVER_AFTER_TIME +          value: ${ES_RECOVER_AFTER_TIME} +        - name: ES_OPS_INSTANCE_RAM +          value: ${ES_OPS_INSTANCE_RAM} +        - name: ES_OPS_CLUSTER_SIZE +          value: ${ES_OPS_CLUSTER_SIZE} +        - name: ES_OPS_NODE_QUORUM +          value: ${ES_OPS_NODE_QUORUM} +        - name: ES_OPS_RECOVER_AFTER_NODES +          value: ${ES_OPS_RECOVER_AFTER_NODES} +        - name: ES_OPS_RECOVER_EXPECTED_NODES +          value: ${ES_OPS_RECOVER_EXPECTED_NODES} +        - name: ES_OPS_RECOVER_AFTER_TIME +          value: ${ES_OPS_RECOVER_AFTER_TIME} +    dnsPolicy: ClusterFirst +    restartPolicy: Never +    serviceAccount: logging-deployer +    volumes: +    - name: empty +      emptyDir: {} +    - name: secret +      secret: +        secretName: logging-deployer +parameters: +- +  description: 'Specify prefix for logging components; e.g. for "openshift/origin-logging-deployer:v1.1", set prefix "openshift/origin-"' +  name: IMAGE_PREFIX +  value: "registry.access.redhat.com/openshift3/" +- +  description: 'Specify version for logging components; e.g. for "openshift/origin-logging-deployer:v1.1", set version "v1.1"' +  name: IMAGE_VERSION +  value: "3.2.0" +- +  description: "If true, set up to use a second ES cluster for ops logs." +  name: ENABLE_OPS_CLUSTER +  value: "false" +- +  description: "External hostname where clients will reach kibana" +  name: KIBANA_HOSTNAME +  required: true +- +  description: "External hostname at which admins will visit the ops Kibana." +  name: KIBANA_OPS_HOSTNAME +  value: kibana-ops.example.com +- +  description: "External URL for the master, for OAuth purposes" +  name: PUBLIC_MASTER_URL +  required: true +- +  description: "Internal URL for the master, for authentication retrieval" +  name: MASTER_URL +  value: "https://kubernetes.default.svc.cluster.local" +- +  description: "Amount of RAM to reserve per ElasticSearch instance." +  name: ES_INSTANCE_RAM +  value: "8G" +- +  description: "How many instances of ElasticSearch to deploy." +  name: ES_CLUSTER_SIZE +  required: true +- +  description: "Number of nodes required to elect a master (ES minimum_master_nodes). By default, derived from ES_CLUSTER_SIZE / 2 + 1." +  name: ES_NODE_QUORUM +- +  description: "Number of nodes required to be present before the cluster will recover from a full restart. By default, one fewer than ES_CLUSTER_SIZE." +  name: ES_RECOVER_AFTER_NODES +- +  description: "Number of nodes desired to be present before the cluster will recover from a full restart. By default, ES_CLUSTER_SIZE." +  name: ES_RECOVER_EXPECTED_NODES +- +  description: "Timeout for *expected* nodes to be present when cluster is recovering from a full restart." +  name: ES_RECOVER_AFTER_TIME +  value: "5m" +- +  description: "Amount of RAM to reserve per ops ElasticSearch instance." +  name: ES_OPS_INSTANCE_RAM +  value: "8G" +- +  description: "How many ops instances of ElasticSearch to deploy. By default, ES_CLUSTER_SIZE." +  name: ES_OPS_CLUSTER_SIZE +- +  description: "Number of ops nodes required to elect a master (ES minimum_master_nodes). By default, derived from ES_CLUSTER_SIZE / 2 + 1." +  name: ES_OPS_NODE_QUORUM +- +  description: "Number of ops nodes required to be present before the cluster will recover from a full restart. By default, one fewer than ES_OPS_CLUSTER_SIZE." +  name: ES_OPS_RECOVER_AFTER_NODES +- +  description: "Number of ops nodes desired to be present before the cluster will recover from a full restart. By default, ES_OPS_CLUSTER_SIZE." +  name: ES_OPS_RECOVER_EXPECTED_NODES +- +  description: "Timeout for *expected* ops nodes to be present when cluster is recovering from a full restart." +  name: ES_OPS_RECOVER_AFTER_TIME +  value: "5m" + diff --git a/roles/openshift_examples/files/examples/v1.2/infrastructure-templates/enterprise/metrics-deployer.yaml b/roles/openshift_examples/files/examples/v1.2/infrastructure-templates/enterprise/metrics-deployer.yaml new file mode 100644 index 000000000..e8e8713be --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/infrastructure-templates/enterprise/metrics-deployer.yaml @@ -0,0 +1,114 @@ +#!/bin/bash +# +# Copyright 2014-2015 Red Hat, Inc. and/or its affiliates +# and other contributors as indicated by the @author tags. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +#    http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +apiVersion: "v1" +kind: "Template" +metadata: +  name: metrics-deployer-template +  annotations: +    description: "Template for deploying the required Metrics integration. Requires cluster-admin 'metrics-deployer' service account and 'metrics-deployer' secret." +    tags: "infrastructure" +labels: +  metrics-infra: deployer +  provider: openshift +  component: deployer +objects: +- +  apiVersion: v1 +  kind: Pod +  metadata: +    generateName: metrics-deployer- +  spec: +    containers: +    - image: ${IMAGE_PREFIX}metrics-deployer:${IMAGE_VERSION} +      name: deployer +      volumeMounts: +      - name: secret +        mountPath: /secret +        readOnly: true +      - name: empty +        mountPath: /etc/deploy +      env: +        - name: PROJECT +          valueFrom: +            fieldRef: +              fieldPath: metadata.namespace +        - name: IMAGE_PREFIX +          value: ${IMAGE_PREFIX} +        - name: IMAGE_VERSION +          value: ${IMAGE_VERSION} +        - name: MASTER_URL +          value: ${MASTER_URL} +        - name: REDEPLOY +          value: ${REDEPLOY} +        - name: USE_PERSISTENT_STORAGE +          value: ${USE_PERSISTENT_STORAGE} +        - name: HAWKULAR_METRICS_HOSTNAME +          value: ${HAWKULAR_METRICS_HOSTNAME} +        - name: CASSANDRA_NODES +          value: ${CASSANDRA_NODES} +        - name: CASSANDRA_PV_SIZE +          value: ${CASSANDRA_PV_SIZE} +        - name: METRIC_DURATION +          value: ${METRIC_DURATION} +    dnsPolicy: ClusterFirst +    restartPolicy: Never +    serviceAccount: metrics-deployer +    volumes: +    - name: empty +      emptyDir: {} +    - name: secret +      secret: +        secretName: metrics-deployer +parameters: +- +  description: 'Specify prefix for metrics components; e.g. for "openshift/origin-metrics-deployer:latest", set prefix "openshift/origin-"' +  name: IMAGE_PREFIX +  value: "openshift/origin-" +- +  description: 'Specify version for metrics components; e.g. for "openshift/origin-metrics-deployer:latest", set version "latest"' +  name: IMAGE_VERSION +  value: "3.2.0" +- +  description: "Internal URL for the master, for authentication retrieval" +  name: MASTER_URL +  value: "https://kubernetes.default.svc:443" +- +  description: "External hostname where clients will reach Hawkular Metrics" +  name: HAWKULAR_METRICS_HOSTNAME +  required: true +- +  description: "If set to true the deployer will try and delete all the existing components before trying to redeploy." +  name: REDEPLOY +  value: "false" +- +  description: "Set to true for persistent storage, set to false to use non persistent storage" +  name: USE_PERSISTENT_STORAGE +  value: "true" +- +  description: "The number of Cassandra Nodes to deploy for the initial cluster" +  name: CASSANDRA_NODES +  value: "1" +- +  description: "The persistent volume size for each of the Cassandra nodes" +  name: CASSANDRA_PV_SIZE +  value: "10Gi" +- +  description: "How many days metrics should be stored for." +  name: METRIC_DURATION +  value: "7" diff --git a/roles/openshift_examples/files/examples/v1.2/infrastructure-templates/origin/logging-deployer.yaml b/roles/openshift_examples/files/examples/v1.2/infrastructure-templates/origin/logging-deployer.yaml new file mode 100644 index 000000000..4c798e148 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/infrastructure-templates/origin/logging-deployer.yaml @@ -0,0 +1,151 @@ +apiVersion: "v1" +kind: "Template" +metadata: +  name: logging-deployer-template +  annotations: +    description: "Template for deploying everything needed for aggregated logging. Requires cluster-admin 'logging-deployer' service account and 'logging-deployer' secret." +    tags: "infrastructure" +labels: +  logging-infra: deployer +  provider: openshift +  component: deployer +objects: +- +  apiVersion: v1 +  kind: Pod +  metadata: +    generateName: logging-deployer- +  spec: +    containers: +    - image: ${IMAGE_PREFIX}logging-deployment:${IMAGE_VERSION} +      imagePullPolicy: Always +      name: deployer +      volumeMounts: +      - name: secret +        mountPath: /secret +        readOnly: true +      - name: empty +        mountPath: /etc/deploy +      env: +        - name: PROJECT +          valueFrom: +            fieldRef: +              fieldPath: metadata.namespace +        - name: IMAGE_PREFIX +          value: ${IMAGE_PREFIX} +        - name: IMAGE_VERSION +          value: ${IMAGE_VERSION} +        - name: ENABLE_OPS_CLUSTER +          value: ${ENABLE_OPS_CLUSTER} +        - name: KIBANA_HOSTNAME +          value: ${KIBANA_HOSTNAME} +        - name: KIBANA_OPS_HOSTNAME +          value: ${KIBANA_OPS_HOSTNAME} +        - name: PUBLIC_MASTER_URL +          value: ${PUBLIC_MASTER_URL} +        - name: MASTER_URL +          value: ${MASTER_URL} +        - name: ES_INSTANCE_RAM +          value: ${ES_INSTANCE_RAM} +        - name: ES_CLUSTER_SIZE +          value: ${ES_CLUSTER_SIZE} +        - name: ES_NODE_QUORUM +          value: ${ES_NODE_QUORUM} +        - name: ES_RECOVER_AFTER_NODES +          value: ${ES_RECOVER_AFTER_NODES} +        - name: ES_RECOVER_EXPECTED_NODES +          value: ${ES_RECOVER_EXPECTED_NODES} +        - name: ES_RECOVER_AFTER_TIME +          value: ${ES_RECOVER_AFTER_TIME} +        - name: ES_OPS_INSTANCE_RAM +          value: ${ES_OPS_INSTANCE_RAM} +        - name: ES_OPS_CLUSTER_SIZE +          value: ${ES_OPS_CLUSTER_SIZE} +        - name: ES_OPS_NODE_QUORUM +          value: ${ES_OPS_NODE_QUORUM} +        - name: ES_OPS_RECOVER_AFTER_NODES +          value: ${ES_OPS_RECOVER_AFTER_NODES} +        - name: ES_OPS_RECOVER_EXPECTED_NODES +          value: ${ES_OPS_RECOVER_EXPECTED_NODES} +        - name: ES_OPS_RECOVER_AFTER_TIME +          value: ${ES_OPS_RECOVER_AFTER_TIME} +    dnsPolicy: ClusterFirst +    restartPolicy: Never +    serviceAccount: logging-deployer +    volumes: +    - name: empty +      emptyDir: {} +    - name: secret +      secret: +        secretName: logging-deployer +parameters: +- +  description: 'Specify prefix for logging components; e.g. for "openshift/origin-logging-deployer:v1.1", set prefix "openshift/origin-"' +  name: IMAGE_PREFIX +  value: "docker.io/openshift/origin-" +- +  description: 'Specify version for logging components; e.g. for "openshift/origin-logging-deployer:v1.1", set version "v1.1"' +  name: IMAGE_VERSION +  value: "latest" +- +  description: "If true, set up to use a second ES cluster for ops logs." +  name: ENABLE_OPS_CLUSTER +  value: "false" +- +  description: "External hostname where clients will reach kibana" +  name: KIBANA_HOSTNAME +  required: true +- +  description: "External hostname at which admins will visit the ops Kibana." +  name: KIBANA_OPS_HOSTNAME +  value: kibana-ops.example.com +- +  description: "External URL for the master, for OAuth purposes" +  name: PUBLIC_MASTER_URL +  required: true +- +  description: "Internal URL for the master, for authentication retrieval" +  name: MASTER_URL +  value: "https://kubernetes.default.svc.cluster.local" +- +  description: "Amount of RAM to reserve per ElasticSearch instance." +  name: ES_INSTANCE_RAM +  value: "8G" +- +  description: "How many instances of ElasticSearch to deploy." +  name: ES_CLUSTER_SIZE +  required: true +- +  description: "Number of nodes required to elect a master (ES minimum_master_nodes). By default, derived from ES_CLUSTER_SIZE / 2 + 1." +  name: ES_NODE_QUORUM +- +  description: "Number of nodes required to be present before the cluster will recover from a full restart. By default, one fewer than ES_CLUSTER_SIZE." +  name: ES_RECOVER_AFTER_NODES +- +  description: "Number of nodes desired to be present before the cluster will recover from a full restart. By default, ES_CLUSTER_SIZE." +  name: ES_RECOVER_EXPECTED_NODES +- +  description: "Timeout for *expected* nodes to be present when cluster is recovering from a full restart." +  name: ES_RECOVER_AFTER_TIME +  value: "5m" +- +  description: "Amount of RAM to reserve per ops ElasticSearch instance." +  name: ES_OPS_INSTANCE_RAM +  value: "8G" +- +  description: "How many ops instances of ElasticSearch to deploy. By default, ES_CLUSTER_SIZE." +  name: ES_OPS_CLUSTER_SIZE +- +  description: "Number of ops nodes required to elect a master (ES minimum_master_nodes). By default, derived from ES_CLUSTER_SIZE / 2 + 1." +  name: ES_OPS_NODE_QUORUM +- +  description: "Number of ops nodes required to be present before the cluster will recover from a full restart. By default, one fewer than ES_OPS_CLUSTER_SIZE." +  name: ES_OPS_RECOVER_AFTER_NODES +- +  description: "Number of ops nodes desired to be present before the cluster will recover from a full restart. By default, ES_OPS_CLUSTER_SIZE." +  name: ES_OPS_RECOVER_EXPECTED_NODES +- +  description: "Timeout for *expected* ops nodes to be present when cluster is recovering from a full restart." +  name: ES_OPS_RECOVER_AFTER_TIME +  value: "5m" + diff --git a/roles/openshift_examples/files/examples/v1.2/infrastructure-templates/origin/metrics-deployer.yaml b/roles/openshift_examples/files/examples/v1.2/infrastructure-templates/origin/metrics-deployer.yaml new file mode 100644 index 000000000..30d79acee --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/infrastructure-templates/origin/metrics-deployer.yaml @@ -0,0 +1,114 @@ +#!/bin/bash +# +# Copyright 2014-2015 Red Hat, Inc. and/or its affiliates +# and other contributors as indicated by the @author tags. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +#    http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +apiVersion: "v1" +kind: "Template" +metadata: +  name: metrics-deployer-template +  annotations: +    description: "Template for deploying the required Metrics integration. Requires cluster-admin 'metrics-deployer' service account and 'metrics-deployer' secret." +    tags: "infrastructure" +labels: +  metrics-infra: deployer +  provider: openshift +  component: deployer +objects: +- +  apiVersion: v1 +  kind: Pod +  metadata: +    generateName: metrics-deployer- +  spec: +    containers: +    - image: ${IMAGE_PREFIX}metrics-deployer:${IMAGE_VERSION} +      name: deployer +      volumeMounts: +      - name: secret +        mountPath: /secret +        readOnly: true +      - name: empty +        mountPath: /etc/deploy +      env: +        - name: PROJECT +          valueFrom: +            fieldRef: +              fieldPath: metadata.namespace +        - name: IMAGE_PREFIX +          value: ${IMAGE_PREFIX} +        - name: IMAGE_VERSION +          value: ${IMAGE_VERSION} +        - name: MASTER_URL +          value: ${MASTER_URL} +        - name: REDEPLOY +          value: ${REDEPLOY} +        - name: USE_PERSISTENT_STORAGE +          value: ${USE_PERSISTENT_STORAGE} +        - name: HAWKULAR_METRICS_HOSTNAME +          value: ${HAWKULAR_METRICS_HOSTNAME} +        - name: CASSANDRA_NODES +          value: ${CASSANDRA_NODES} +        - name: CASSANDRA_PV_SIZE +          value: ${CASSANDRA_PV_SIZE} +        - name: METRIC_DURATION +          value: ${METRIC_DURATION} +    dnsPolicy: ClusterFirst +    restartPolicy: Never +    serviceAccount: metrics-deployer +    volumes: +    - name: empty +      emptyDir: {} +    - name: secret +      secret: +        secretName: metrics-deployer +parameters: +- +  description: 'Specify prefix for metrics components; e.g. for "openshift/origin-metrics-deployer:latest", set prefix "openshift/origin-"' +  name: IMAGE_PREFIX +  value: "openshift/origin-" +- +  description: 'Specify version for metrics components; e.g. for "openshift/origin-metrics-deployer:latest", set version "latest"' +  name: IMAGE_VERSION +  value: "latest" +- +  description: "Internal URL for the master, for authentication retrieval" +  name: MASTER_URL +  value: "https://kubernetes.default.svc:443" +- +  description: "External hostname where clients will reach Hawkular Metrics" +  name: HAWKULAR_METRICS_HOSTNAME +  required: true +- +  description: "If set to true the deployer will try and delete all the existing components before trying to redeploy." +  name: REDEPLOY +  value: "false" +- +  description: "Set to true for persistent storage, set to false to use non persistent storage" +  name: USE_PERSISTENT_STORAGE +  value: "true" +- +  description: "The number of Cassandra Nodes to deploy for the initial cluster" +  name: CASSANDRA_NODES +  value: "1" +- +  description: "The persistent volume size for each of the Cassandra nodes" +  name: CASSANDRA_PV_SIZE +  value: "10Gi" +- +  description: "How many days metrics should be stored for." +  name: METRIC_DURATION +  value: "7" diff --git a/roles/openshift_examples/files/examples/v1.2/quickstart-templates/cakephp-mysql.json b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/cakephp-mysql.json new file mode 100644 index 000000000..9e0ae218d --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/cakephp-mysql.json @@ -0,0 +1,426 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "cakephp-mysql-example", +    "annotations": { +      "description": "An example CakePHP application with a MySQL database", +      "tags": "quickstart,php,cakephp,mysql", +      "iconClass": "icon-php" +    } +  }, +  "labels": { +    "template": "cakephp-mysql-example" +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "cakephp-mysql-example", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "cakephp-mysql-example" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "cakephp-mysql-example" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "cakephp-mysql-example" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "cakephp-mysql-example", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "cakephp-mysql-example", +        "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": "openshift", +              "name": "php:5.6" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "cakephp-mysql-example:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "ConfigChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ] +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "cakephp-mysql-example", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Rolling", +          "recreateParams": { +          "pre": { +              "failurePolicy": "Abort", +              "execNewPod": { +                "command": [ +                  "./migrate-database.sh" +                ], +                "containerName": "cakephp-mysql-example" +              } +            } +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "cakephp-mysql-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "cakephp-mysql-example:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "cakephp-mysql-example" +        }, +        "template": { +          "metadata": { +            "name": "cakephp-mysql-example", +            "labels": { +              "name": "cakephp-mysql-example" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "cakephp-mysql-example", +                "image": "cakephp-mysql-example", +                "ports": [ +                  { +                    "containerPort": 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}" +		    } +                } +              } +            ] +          } +        } +      } +    }, +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "annotations": { +          "description": "Exposes the database server" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "mysql", +            "port": 3306, +            "targetPort": 3306 +          } +        ], +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        } +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "annotations": { +          "description": "Defines how to deploy the database" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Recreate" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": false, +              "containerNames": [ +                "mysql" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "namespace": "openshift", +                "name": "mysql:5.6" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "name": "${DATABASE_SERVICE_NAME}", +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "mysql", +                "image": "mysql", +                "ports": [ +                  { +                    "containerPort": 3306 +                  } +                ], +                "env": [ +                  { +                    "name": "MYSQL_USER", +                    "value": "${DATABASE_USER}" +                  }, +                  { +                    "name": "MYSQL_PASSWORD", +                    "value": "${DATABASE_PASSWORD}" +                  }, +                  { +                    "name": "MYSQL_DATABASE", +                    "value": "${DATABASE_NAME}" +                  } +                ], +                "resources": { +		    "limits": { +			"memory": "${MEMORY_MYSQL_LIMIT}" +		    } +                } +              } +            ] +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "MEMORY_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the CakePHP container can use", +      "value": "512Mi" +    }, +    { +      "name": "MEMORY_MYSQL_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the MySQL container can use", +      "value": "512Mi" +    }, +    { +      "name": "SOURCE_REPOSITORY_URL", +      "displayName": "Source repository URL", +      "description": "The URL of the repository with your application source code", +      "value": "https://github.com/openshift/cakephp-ex.git" +    }, +    { +      "name": "SOURCE_REPOSITORY_REF", +      "displayName": "Source repository 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 domain", +      "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", +      "description": "Database service name", +      "value": "mysql" +    }, +    { +      "name": "DATABASE_ENGINE", +      "displayName": "Database engine", +      "description": "Database engine: postgresql, mysql or sqlite (default)", +      "value": "mysql" +    }, +    { +      "name": "DATABASE_NAME", +      "displayName": "Database name", +      "description": "Database name", +      "value": "default" +    }, +    { +      "name": "DATABASE_USER", +      "displayName": "Database user", +      "description": "Database user name", +      "value": "cakephp" +    }, +    { +      "name": "DATABASE_PASSWORD", +      "displayName": "Database password", +      "description": "Database user password", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}" +    }, +    { +      "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" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/quickstart-templates/cakephp.json b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/cakephp.json new file mode 100644 index 000000000..d29c446e5 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/cakephp.json @@ -0,0 +1,303 @@ +{ +  "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": "cakephp-example", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "cakephp-example"  +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "cakephp-example" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "cakephp-example" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "cakephp-example", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "cakephp-example", +        "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": "openshift", +              "name": "php:5.6" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "cakephp-example:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "ConfigChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ] +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "cakephp-example", +        "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": "cakephp-example:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "cakephp-example" +        }, +        "template": { +          "metadata": { +            "name": "cakephp-example", +            "labels": { +              "name": "cakephp-example" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "cakephp-example", +                "image": "cakephp-example", +                "ports": [ +                  { +                    "containerPort": 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": "MEMORY_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the container can use", +      "value": "512Mi" +    }, +    { +      "name": "SOURCE_REPOSITORY_URL", +      "displayName": "Source repository URL", +      "description": "The URL of the repository with your application source code", +      "value": "https://github.com/openshift/cakephp-ex.git" +    }, +    { +      "name": "SOURCE_REPOSITORY_REF", +      "displayName": "Source repository 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 domain", +      "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", +      "description": "Database service name" +    }, +    { +      "name": "DATABASE_ENGINE", +      "displayName": "Database engine", +      "description": "Database engine: postgresql, mysql or sqlite (default)" +    }, +    { +      "name": "DATABASE_NAME", +      "displayName": "Database name", +      "description": "Database name" +    }, +    { +      "name": "DATABASE_USER", +      "displayName": "Database user", +      "description": "Database user name" +    }, +    { +      "name": "DATABASE_PASSWORD", +      "displayName": "Database password", +      "description": "Database user 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" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/quickstart-templates/dancer-mysql.json b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/dancer-mysql.json new file mode 100644 index 000000000..2e5c8021f --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/dancer-mysql.json @@ -0,0 +1,418 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "dancer-mysql-example", +    "annotations": { +      "description": "An example Dancer application with a MySQL database", +      "tags": "quickstart,perl,dancer,mysql", +      "iconClass": "icon-perl" +    } +  }, +  "labels": { +    "template": "dancer-mysql-example" +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "dancer-mysql-example", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "dancer-mysql-example" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "dancer-mysql-example" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "dancer-mysql-example" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "dancer-mysql-example", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "dancer-mysql-example", +        "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": "openshift", +              "name": "perl:5.20" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "dancer-mysql-example:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "ConfigChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ] +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "dancer-mysql-example", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "dancer-mysql-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "dancer-mysql-example:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "dancer-mysql-example" +        }, +        "template": { +          "metadata": { +            "name": "dancer-mysql-example", +            "labels": { +              "name": "dancer-mysql-example" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "dancer-mysql-example", +                "image": "dancer-mysql-example", +                "ports": [ +                  { +                    "containerPort": 8080 +                  } +                ], +                "readinessProbe": { +                  "timeoutSeconds": 3, +                  "initialDelaySeconds": 3, +                  "httpGet": { +                    "path": "/health", +                    "port": 8080 +                  } +                }, +                "livenessProbe": { +                    "timeoutSeconds": 3, +                    "initialDelaySeconds": 30, +                    "httpGet": { +                        "path": "/", +                        "port": 8080 +                    } +                }, +                "env": [ +                  { +                    "name": "DATABASE_SERVICE_NAME", +                    "value": "${DATABASE_SERVICE_NAME}" +                  }, +                  { +                    "name": "MYSQL_USER", +                    "value": "${DATABASE_USER}" +                  }, +                  { +                    "name": "MYSQL_PASSWORD", +                    "value": "${DATABASE_PASSWORD}" +                  }, +                  { +                    "name": "MYSQL_DATABASE", +                    "value": "${DATABASE_NAME}" +                  }, +                  { +                    "name": "SECRET_KEY_BASE", +                    "value": "${SECRET_KEY_BASE}" +                  }, +                  { +                    "name": "PERL_APACHE2_RELOAD", +                    "value": "${PERL_APACHE2_RELOAD}" +                  } +                ], +                "resources": { +		      "limits": { +			  "memory": "${MEMORY_LIMIT}" +		      } +                } +              } +            ] +          } +        } +      } +    }, +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "annotations": { +          "description": "Exposes the database server" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "mysql", +            "port": 3306, +            "targetPort": 3306 +          } +        ], +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        } +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "annotations": { +          "description": "Defines how to deploy the database" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Recreate" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": false, +              "containerNames": [ +                "mysql" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "namespace": "openshift", +                "name": "mysql:5.6" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "name": "${DATABASE_SERVICE_NAME}", +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "mysql", +                "image": "mysql", +                "ports": [ +                  { +                    "containerPort": 3306 +                  } +                ], +                "readinessProbe": { +                  "timeoutSeconds": 1, +                  "initialDelaySeconds": 5, +                  "exec": { +                    "command": [ "/bin/sh", "-i", "-c", "MYSQL_PWD='${DATABASE_PASSWORD}' mysql -h 127.0.0.1 -u ${DATABASE_USER} -D ${DATABASE_NAME} -e 'SELECT 1'" ] +                  } +                }, +                "livenessProbe": { +                    "timeoutSeconds": 1, +                    "initialDelaySeconds": 30, +                    "tcpSocket": { +                        "port": 3306 +                    } +                }, +                "env": [ +                  { +                    "name": "MYSQL_USER", +                    "value": "${DATABASE_USER}" +                  }, +                  { +                    "name": "MYSQL_PASSWORD", +                    "value": "${DATABASE_PASSWORD}" +                  }, +                  { +                      "name": "MYSQL_DATABASE", +                      "value": "${DATABASE_NAME}" +                  } +                ], +                "resources": { +                    "limits": { +                        "memory": "${MEMORY_MYSQL_LIMIT}" +                    } +                } +              } +            ] +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "MEMORY_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the Perl Dancer container can use", +      "value": "512Mi" +    }, +    { +      "name": "MEMORY_MYSQL_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the MySQL container can use", +      "value": "512Mi" +    }, +    { +      "name": "SOURCE_REPOSITORY_URL", +      "displayName": "Source repository URL", +      "description": "The URL of the repository with your application source code", +      "value": "https://github.com/openshift/dancer-ex.git" +    }, +    { +      "name": "SOURCE_REPOSITORY_REF", +      "displayName": "Source repository 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 domain", +      "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": "ADMIN_USERNAME", +      "displayName": "Administrator username", +      "description": "administrator username", +      "generate": "expression", +      "from": "admin[A-Z0-9]{3}" +    }, +    { +      "name": "ADMIN_PASSWORD", +      "description": "administrator password", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{8}" +    }, +    { +      "name": "DATABASE_SERVICE_NAME", +      "description": "Database service name", +      "value": "database" +    }, +    { +      "name": "DATABASE_USER", +      "description": "database username", +      "generate": "expression", +      "from": "user[A-Z0-9]{3}" +    }, +    { +      "name": "DATABASE_PASSWORD", +      "description": "database password", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{8}" +    }, +    { +      "name": "DATABASE_NAME", +      "description": "database name", +      "value": "sampledb" +    }, +    { +      "name": "PERL_APACHE2_RELOAD", +      "description": "Set this to \"true\" to enable automatic reloading of modified Perl modules", +      "value": "" +    }, +    { +      "name": "SECRET_KEY_BASE", +      "description": "Your secret key for verifying the integrity of signed cookies", +      "generate": "expression", +      "from": "[a-z0-9]{127}" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/quickstart-templates/dancer.json b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/dancer.json new file mode 100644 index 000000000..83b010e95 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/dancer.json @@ -0,0 +1,248 @@ +{ +  "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": "dancer-example", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "dancer-example" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "dancer-example" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "dancer-example" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "dancer-example", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "dancer-example", +        "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": "openshift", +              "name": "perl:5.20" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "dancer-example:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "ConfigChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ] +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "dancer-example", +        "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": "dancer-example:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "dancer-example" +        }, +        "template": { +          "metadata": { +            "name": "dancer-example", +            "labels": { +              "name": "dancer-example" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "dancer-example", +                "image": "dancer-example", +                "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": "MEMORY_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the container can use", +      "value": "512Mi" +    }, +    { +      "name": "SOURCE_REPOSITORY_URL", +      "displayName": "Source repository URL", +      "description": "The URL of the repository with your application source code", +      "value": "https://github.com/openshift/dancer-ex.git" +    }, +    { +      "name": "SOURCE_REPOSITORY_REF", +      "displayName": "Source repository 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 domain", +      "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": "" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/quickstart-templates/django-postgresql.json b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/django-postgresql.json new file mode 100644 index 000000000..5bf3235c6 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/django-postgresql.json @@ -0,0 +1,425 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "django-psql-example", +    "annotations": { +      "description": "An example Django application with a PostgreSQL database", +      "tags": "quickstart,python,django,postgresql", +      "iconClass": "icon-python" +    } +  }, +  "labels": { +    "template": "django-psql-example" +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "django-psql-example", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "django-psql-example" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "django-psql-example" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "django-psql-example" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "django-psql-example", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "django-psql-example", +        "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": "openshift", +              "name": "python:3.4" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "django-psql-example:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "ConfigChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ], +        "postCommit": { +           "script": "./manage.py test" +        } +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "django-psql-example", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Rolling" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "django-psql-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "django-psql-example:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "django-psql-example" +        }, +        "template": { +          "metadata": { +            "name": "django-psql-example", +            "labels": { +              "name": "django-psql-example" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "django-psql-example", +                "image": "django-psql-example", +                "ports": [ +                  { +                    "containerPort": 8080 +                  } +                ], +                "readinessProbe": { +                  "timeoutSeconds": 3, +                  "initialDelaySeconds": 3, +                  "httpGet": { +                    "path": "/health", +                    "port": 8080 +                  } +                }, +                "livenessProbe": { +                  "timeoutSeconds": 3, +                  "initialDelaySeconds": 30, +                  "httpGet": { +                    "path": "/health", +                    "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}" +                  } +                } +              } +            ] +          } +        } +      } +    }, +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "annotations": { +          "description": "Exposes the database server" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "postgresql", +            "port": 5432, +            "targetPort": 5432 +          } +        ], +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        } +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "annotations": { +          "description": "Defines how to deploy the database" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Recreate" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": false, +              "containerNames": [ +                "postgresql" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "namespace": "openshift", +                "name": "postgresql:9.4" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "name": "${DATABASE_SERVICE_NAME}", +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "postgresql", +                "image": "postgresql", +                "ports": [ +                  { +                    "containerPort": 5432 +                  } +                ], +                "env": [ +                  { +                    "name": "POSTGRESQL_USER", +                    "value": "${DATABASE_USER}" +                  }, +                  { +                    "name": "POSTGRESQL_PASSWORD", +                    "value": "${DATABASE_PASSWORD}" +                  }, +                  { +                    "name": "POSTGRESQL_DATABASE", +                    "value": "${DATABASE_NAME}" +                  } +                ], +                "readinessProbe": { +                  "timeoutSeconds": 1, +                  "initialDelaySeconds": 5, +                  "exec": { +                    "command": [ "/bin/sh", "-i", "-c", "psql -h 127.0.0.1 -U ${POSTGRESQL_USER} -q -d ${POSTGRESQL_DATABASE} -c 'SELECT 1'"] +                  } +                }, +                "livenessProbe": { +                  "timeoutSeconds": 1, +                  "initialDelaySeconds": 30, +                  "tcpSocket": { +                    "port": 5432 +                  } +                }, +                "resources": { +                  "limits": { +                    "memory": "${MEMORY_POSTGRESQL_LIMIT}" +                  } +                } +              } +            ] +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "MEMORY_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the Django container can use", +      "value": "512Mi" +    }, +    { +      "name": "MEMORY_POSTGRESQL_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the PostgreSQL container can use", +      "value": "512Mi" +    }, +    { +      "name": "SOURCE_REPOSITORY_URL", +      "displayName": "Source repository URL", +      "description": "The URL of the repository with your application source code", +      "value": "https://github.com/openshift/django-ex.git" +    }, +    { +      "name": "SOURCE_REPOSITORY_REF", +      "displayName": "Source repository 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", +      "description": "Database service name", +      "value": "postgresql" +    }, +    { +      "name": "DATABASE_ENGINE", +      "displayName": "Database engine", +      "description": "Database engine: postgresql, mysql or sqlite (default)", +      "value": "postgresql" +    }, +    { +      "name": "DATABASE_NAME", +      "displayName": "Database name", +      "description": "Database name", +      "value": "default" +    }, +    { +      "name": "DATABASE_USER", +      "displayName": "Database user name", +      "description": "Database user name", +      "value": "django" +    }, +    { +      "name": "DATABASE_PASSWORD", +      "displayName": "Database user password", +      "description": "Database user password", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}" +    }, +    { +      "name": "APP_CONFIG", +      "displayName": "Application configuration file path", +      "description": "Relative path to Gunicorn configuration file (optional)" +    }, +    { +      "name": "DJANGO_SECRET_KEY", +      "displayName": "Djange secret key", +      "description": "Set this to a long random string", +      "generate": "expression", +      "from": "[\\w]{50}" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/quickstart-templates/django.json b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/django.json new file mode 100644 index 000000000..1ddc9e088 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/django.json @@ -0,0 +1,299 @@ +{ +  "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": "django-example", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "django-example" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "django-example" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "django-example" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "django-example", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "django-example", +        "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": "openshift", +              "name": "python:3.4" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "django-example:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "ConfigChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ], +        "postCommit": { +          "script": "./manage.py test" +        } +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "django-example", +        "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": "django-example:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "django-example" +        }, +        "template": { +          "metadata": { +            "name": "django-example", +            "labels": { +              "name": "django-example" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "django-example", +                "image": "django-example", +                "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": "MEMORY_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the container can use", +      "value": "512Mi" +    }, +    { +      "name": "SOURCE_REPOSITORY_URL", +      "displayName": "Source repository URL", +      "description": "The URL of the repository with your application source code", +      "value": "https://github.com/openshift/django-ex.git" +    }, +    { +      "name": "SOURCE_REPOSITORY_REF", +      "displayName": "Source repository 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", +      "description": "Database service name" +    }, +    { +      "name": "DATABASE_ENGINE", +      "displayName": "Database engine", +      "description": "Database engine: postgresql, mysql or sqlite (default)" +    }, +    { +      "name": "DATABASE_NAME", +      "displayName": "Database name", +      "description": "Database name" +    }, +    { +      "name": "DATABASE_USER", +      "displayName": "Database user name", +      "description": "Database user name" +    }, +    { +      "name": "DATABASE_PASSWORD", +      "displayName": "Database user password", +      "description": "Database user password" +    }, +    { +      "name": "APP_CONFIG", +      "displayName": "Application configuration file path", +      "description": "Relative path to Gunicorn configuration file (optional)" +    }, +    { +      "name": "DJANGO_SECRET_KEY", +      "displayName": "Djange secret key", +      "description": "Set this to a long random string", +      "generate": "expression", +      "from": "[\\w]{50}" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/quickstart-templates/jenkins-ephemeral-template.json b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/jenkins-ephemeral-template.json new file mode 100644 index 000000000..024d7bfef --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/jenkins-ephemeral-template.json @@ -0,0 +1,171 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "jenkins-ephemeral", +    "creationTimestamp": null, +    "annotations": { +      "description": "Jenkins service, without persistent storage. WARNING: Any data stored will be lost upon pod destruction. Only use this template for testing", +      "iconClass": "icon-jenkins", +      "tags": "instant-app,jenkins" +    } +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "${JENKINS_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "protocol": "TCP", +            "port": 8080, +            "targetPort": 8080, +            "nodePort": 0 +          } +        ], +        "selector": { +          "name": "${JENKINS_SERVICE_NAME}" +        }, +        "portalIP": "", +        "type": "ClusterIP", +        "sessionAffinity": "None" +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "jenkins", +        "creationTimestamp": null +      }, +      "spec": { +        "to": { +          "kind": "Service", +          "name": "${JENKINS_SERVICE_NAME}" +        }, +        "tls": { +          "termination": "edge", +          "certificate": "-----BEGIN CERTIFICATE-----\nMIIDIjCCAgqgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBoTELMAkGA1UEBhMCVVMx\nCzAJBgNVBAgMAlNDMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0Rl\nZmF1bHQgQ29tcGFueSBMdGQxEDAOBgNVBAsMB1Rlc3QgQ0ExGjAYBgNVBAMMEXd3\ndy5leGFtcGxlY2EuY29tMSIwIAYJKoZIhvcNAQkBFhNleGFtcGxlQGV4YW1wbGUu\nY29tMB4XDTE1MDExMjE0MTk0MVoXDTE2MDExMjE0MTk0MVowfDEYMBYGA1UEAwwP\nd3d3LmV4YW1wbGUuY29tMQswCQYDVQQIDAJTQzELMAkGA1UEBhMCVVMxIjAgBgkq\nhkiG9w0BCQEWE2V4YW1wbGVAZXhhbXBsZS5jb20xEDAOBgNVBAoMB0V4YW1wbGUx\nEDAOBgNVBAsMB0V4YW1wbGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMrv\ngu6ZTTefNN7jjiZbS/xvQjyXjYMN7oVXv76jbX8gjMOmg9m0xoVZZFAE4XyQDuCm\n47VRx5Qrf/YLXmB2VtCFvB0AhXr5zSeWzPwaAPrjA4ebG+LUo24ziS8KqNxrFs1M\nmNrQUgZyQC6XIe1JHXc9t+JlL5UZyZQC1IfaJulDAgMBAAGjDTALMAkGA1UdEwQC\nMAAwDQYJKoZIhvcNAQEFBQADggEBAFCi7ZlkMnESvzlZCvv82Pq6S46AAOTPXdFd\nTMvrh12E1sdVALF1P1oYFJzG1EiZ5ezOx88fEDTW+Lxb9anw5/KJzwtWcfsupf1m\nV7J0D3qKzw5C1wjzYHh9/Pz7B1D0KthQRATQCfNf8s6bbFLaw/dmiIUhHLtIH5Qc\nyfrejTZbOSP77z8NOWir+BWWgIDDB2//3AkDIQvT20vmkZRhkqSdT7et4NmXOX/j\njhPti4b2Fie0LeuvgaOdKjCpQQNrYthZHXeVlOLRhMTSk3qUczenkKTOhvP7IS9q\n+Dzv5hqgSfvMG392KWh5f8xXfJNs4W5KLbZyl901MeReiLrPH3w=\n-----END CERTIFICATE-----", +          "key": "-----BEGIN PRIVATE KEY-----\nMIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAMrvgu6ZTTefNN7j\njiZbS/xvQjyXjYMN7oVXv76jbX8gjMOmg9m0xoVZZFAE4XyQDuCm47VRx5Qrf/YL\nXmB2VtCFvB0AhXr5zSeWzPwaAPrjA4ebG+LUo24ziS8KqNxrFs1MmNrQUgZyQC6X\nIe1JHXc9t+JlL5UZyZQC1IfaJulDAgMBAAECgYEAnxOjEj/vrLNLMZE1Q9H7PZVF\nWdP/JQVNvQ7tCpZ3ZdjxHwkvf//aQnuxS5yX2Rnf37BS/TZu+TIkK4373CfHomSx\nUTAn2FsLmOJljupgGcoeLx5K5nu7B7rY5L1NHvdpxZ4YjeISrRtEPvRakllENU5y\ngJE8c2eQOx08ZSRE4TkCQQD7dws2/FldqwdjJucYijsJVuUdoTqxP8gWL6bB251q\nelP2/a6W2elqOcWId28560jG9ZS3cuKvnmu/4LG88vZFAkEAzphrH3673oTsHN+d\nuBd5uyrlnGjWjuiMKv2TPITZcWBjB8nJDSvLneHF59MYwejNNEof2tRjgFSdImFH\nmi995wJBAMtPjW6wiqRz0i41VuT9ZgwACJBzOdvzQJfHgSD9qgFb1CU/J/hpSRIM\nkYvrXK9MbvQFvG6x4VuyT1W8mpe1LK0CQAo8VPpffhFdRpF7psXLK/XQ/0VLkG3O\nKburipLyBg/u9ZkaL0Ley5zL5dFBjTV2Qkx367Ic2b0u9AYTCcgi2DsCQQD3zZ7B\nv7BOm7MkylKokY2MduFFXU0Bxg6pfZ7q3rvg8gqhUFbaMStPRYg6myiDiW/JfLhF\nTcFT4touIo7oriFJ\n-----END PRIVATE KEY-----", +          "caCertificate": "-----BEGIN CERTIFICATE-----\nMIIEFzCCAv+gAwIBAgIJALK1iUpF2VQLMA0GCSqGSIb3DQEBBQUAMIGhMQswCQYD\nVQQGEwJVUzELMAkGA1UECAwCU0MxFTATBgNVBAcMDERlZmF1bHQgQ2l0eTEcMBoG\nA1UECgwTRGVmYXVsdCBDb21wYW55IEx0ZDEQMA4GA1UECwwHVGVzdCBDQTEaMBgG\nA1UEAwwRd3d3LmV4YW1wbGVjYS5jb20xIjAgBgkqhkiG9w0BCQEWE2V4YW1wbGVA\nZXhhbXBsZS5jb20wHhcNMTUwMTEyMTQxNTAxWhcNMjUwMTA5MTQxNTAxWjCBoTEL\nMAkGA1UEBhMCVVMxCzAJBgNVBAgMAlNDMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkx\nHDAaBgNVBAoME0RlZmF1bHQgQ29tcGFueSBMdGQxEDAOBgNVBAsMB1Rlc3QgQ0Ex\nGjAYBgNVBAMMEXd3dy5leGFtcGxlY2EuY29tMSIwIAYJKoZIhvcNAQkBFhNleGFt\ncGxlQGV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nw2rK1J2NMtQj0KDug7g7HRKl5jbf0QMkMKyTU1fBtZ0cCzvsF4CqV11LK4BSVWaK\nrzkaXe99IVJnH8KdOlDl5Dh/+cJ3xdkClSyeUT4zgb6CCBqg78ePp+nN11JKuJlV\nIG1qdJpB1J5O/kCLsGcTf7RS74MtqMFo96446Zvt7YaBhWPz6gDaO/TUzfrNcGLA\nEfHVXkvVWqb3gqXUztZyVex/gtP9FXQ7gxTvJml7UkmT0VAFjtZnCqmFxpLZFZ15\n+qP9O7Q2MpsGUO/4vDAuYrKBeg1ZdPSi8gwqUP2qWsGd9MIWRv3thI2903BczDc7\nr8WaIbm37vYZAS9G56E4+wIDAQABo1AwTjAdBgNVHQ4EFgQUugLrSJshOBk5TSsU\nANs4+SmJUGwwHwYDVR0jBBgwFoAUugLrSJshOBk5TSsUANs4+SmJUGwwDAYDVR0T\nBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaMJ33zAMV4korHo5aPfayV3uHoYZ\n1ChzP3eSsF+FjoscpoNSKs91ZXZF6LquzoNezbfiihK4PYqgwVD2+O0/Ty7UjN4S\nqzFKVR4OS/6lCJ8YncxoFpTntbvjgojf1DEataKFUN196PAANc3yz8cWHF4uvjPv\nWkgFqbIjb+7D1YgglNyovXkRDlRZl0LD1OQ0ZWhd4Ge1qx8mmmanoBeYZ9+DgpFC\nj9tQAbS867yeOryNe7sEOIpXAAqK/DTu0hB6+ySsDfMo4piXCc2aA/eI2DCuw08e\nw17Dz9WnupZjVdwTKzDhFgJZMLDqn37HQnT6EemLFqbcR0VPEnfyhDtZIQ==\n-----END CERTIFICATE-----" +        } +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${JENKINS_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "strategy": { +          "type": "Recreate" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": false, +              "containerNames": [ +                "jenkins" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "jenkins:latest", +                "namespace": "openshift" +              }, +              "lastTriggeredImage": "" +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${JENKINS_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "creationTimestamp": null, +            "labels": { +              "name": "${JENKINS_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "jenkins", +                "image": "${JENKINS_IMAGE}", +                "env": [ +                  { +                    "name": "JENKINS_PASSWORD", +                    "value": "${JENKINS_PASSWORD}" +                  } +                ], +                "resources": { +		    "limits": { +			"memory": "${MEMORY_LIMIT}" +		    } +		}, +                "volumeMounts": [ +                  { +                    "name": "${JENKINS_SERVICE_NAME}-data", +                    "mountPath": "/var/lib/jenkins" +                  } +                ], +                "terminationMessagePath": "/dev/termination-log", +                "imagePullPolicy": "IfNotPresent", +                "capabilities": {}, +                "securityContext": { +                  "capabilities": {}, +                  "privileged": false +                } +              } +            ], +            "volumes": [ +              { +                "name": "${JENKINS_SERVICE_NAME}-data", +                "emptyDir": { +                  "medium": "" +                } +              } +            ], +            "restartPolicy": "Always", +            "dnsPolicy": "ClusterFirst" +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "MEMORY_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the container can use", +      "value": "512Mi" +    }, +    { +      "name": "JENKINS_SERVICE_NAME", +      "displayName": "Jenkins service name", +      "description": "The name of the OpenShift Service exposed for the Jenkins container", +      "value": "jenkins" +    }, +    { +      "name": "JENKINS_PASSWORD", +      "displayName": "Jenkins password", +      "description": "Password for the Jenkins user", +      "generate": "expression", +      "value": "password" +    } +  ], +  "labels": { +    "template": "jenkins-ephemeral-template" +  } +} diff --git a/roles/openshift_examples/files/examples/v1.2/quickstart-templates/jenkins-persistent-template.json b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/jenkins-persistent-template.json new file mode 100644 index 000000000..4388350cb --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/jenkins-persistent-template.json @@ -0,0 +1,195 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "jenkins-persistent", +    "creationTimestamp": null, +    "annotations": { +      "description": "Jenkins service, with persistent storage.", +      "iconClass": "icon-jenkins", +      "tags": "instant-app,jenkins" +    } +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "${JENKINS_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "protocol": "TCP", +            "port": 8080, +            "targetPort": 8080, +            "nodePort": 0 +          } +        ], +        "selector": { +          "name": "${JENKINS_SERVICE_NAME}" +        }, +        "portalIP": "", +        "type": "ClusterIP", +        "sessionAffinity": "None" +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "jenkins", +        "creationTimestamp": null +      }, +      "spec": { +        "to": { +          "kind": "Service", +          "name": "${JENKINS_SERVICE_NAME}" +        }, +        "tls": { +          "termination": "edge", +          "certificate": "-----BEGIN CERTIFICATE-----\nMIIDIjCCAgqgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBoTELMAkGA1UEBhMCVVMx\nCzAJBgNVBAgMAlNDMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0Rl\nZmF1bHQgQ29tcGFueSBMdGQxEDAOBgNVBAsMB1Rlc3QgQ0ExGjAYBgNVBAMMEXd3\ndy5leGFtcGxlY2EuY29tMSIwIAYJKoZIhvcNAQkBFhNleGFtcGxlQGV4YW1wbGUu\nY29tMB4XDTE1MDExMjE0MTk0MVoXDTE2MDExMjE0MTk0MVowfDEYMBYGA1UEAwwP\nd3d3LmV4YW1wbGUuY29tMQswCQYDVQQIDAJTQzELMAkGA1UEBhMCVVMxIjAgBgkq\nhkiG9w0BCQEWE2V4YW1wbGVAZXhhbXBsZS5jb20xEDAOBgNVBAoMB0V4YW1wbGUx\nEDAOBgNVBAsMB0V4YW1wbGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMrv\ngu6ZTTefNN7jjiZbS/xvQjyXjYMN7oVXv76jbX8gjMOmg9m0xoVZZFAE4XyQDuCm\n47VRx5Qrf/YLXmB2VtCFvB0AhXr5zSeWzPwaAPrjA4ebG+LUo24ziS8KqNxrFs1M\nmNrQUgZyQC6XIe1JHXc9t+JlL5UZyZQC1IfaJulDAgMBAAGjDTALMAkGA1UdEwQC\nMAAwDQYJKoZIhvcNAQEFBQADggEBAFCi7ZlkMnESvzlZCvv82Pq6S46AAOTPXdFd\nTMvrh12E1sdVALF1P1oYFJzG1EiZ5ezOx88fEDTW+Lxb9anw5/KJzwtWcfsupf1m\nV7J0D3qKzw5C1wjzYHh9/Pz7B1D0KthQRATQCfNf8s6bbFLaw/dmiIUhHLtIH5Qc\nyfrejTZbOSP77z8NOWir+BWWgIDDB2//3AkDIQvT20vmkZRhkqSdT7et4NmXOX/j\njhPti4b2Fie0LeuvgaOdKjCpQQNrYthZHXeVlOLRhMTSk3qUczenkKTOhvP7IS9q\n+Dzv5hqgSfvMG392KWh5f8xXfJNs4W5KLbZyl901MeReiLrPH3w=\n-----END CERTIFICATE-----", +          "key": "-----BEGIN PRIVATE KEY-----\nMIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAMrvgu6ZTTefNN7j\njiZbS/xvQjyXjYMN7oVXv76jbX8gjMOmg9m0xoVZZFAE4XyQDuCm47VRx5Qrf/YL\nXmB2VtCFvB0AhXr5zSeWzPwaAPrjA4ebG+LUo24ziS8KqNxrFs1MmNrQUgZyQC6X\nIe1JHXc9t+JlL5UZyZQC1IfaJulDAgMBAAECgYEAnxOjEj/vrLNLMZE1Q9H7PZVF\nWdP/JQVNvQ7tCpZ3ZdjxHwkvf//aQnuxS5yX2Rnf37BS/TZu+TIkK4373CfHomSx\nUTAn2FsLmOJljupgGcoeLx5K5nu7B7rY5L1NHvdpxZ4YjeISrRtEPvRakllENU5y\ngJE8c2eQOx08ZSRE4TkCQQD7dws2/FldqwdjJucYijsJVuUdoTqxP8gWL6bB251q\nelP2/a6W2elqOcWId28560jG9ZS3cuKvnmu/4LG88vZFAkEAzphrH3673oTsHN+d\nuBd5uyrlnGjWjuiMKv2TPITZcWBjB8nJDSvLneHF59MYwejNNEof2tRjgFSdImFH\nmi995wJBAMtPjW6wiqRz0i41VuT9ZgwACJBzOdvzQJfHgSD9qgFb1CU/J/hpSRIM\nkYvrXK9MbvQFvG6x4VuyT1W8mpe1LK0CQAo8VPpffhFdRpF7psXLK/XQ/0VLkG3O\nKburipLyBg/u9ZkaL0Ley5zL5dFBjTV2Qkx367Ic2b0u9AYTCcgi2DsCQQD3zZ7B\nv7BOm7MkylKokY2MduFFXU0Bxg6pfZ7q3rvg8gqhUFbaMStPRYg6myiDiW/JfLhF\nTcFT4touIo7oriFJ\n-----END PRIVATE KEY-----", +          "caCertificate": "-----BEGIN CERTIFICATE-----\nMIIEFzCCAv+gAwIBAgIJALK1iUpF2VQLMA0GCSqGSIb3DQEBBQUAMIGhMQswCQYD\nVQQGEwJVUzELMAkGA1UECAwCU0MxFTATBgNVBAcMDERlZmF1bHQgQ2l0eTEcMBoG\nA1UECgwTRGVmYXVsdCBDb21wYW55IEx0ZDEQMA4GA1UECwwHVGVzdCBDQTEaMBgG\nA1UEAwwRd3d3LmV4YW1wbGVjYS5jb20xIjAgBgkqhkiG9w0BCQEWE2V4YW1wbGVA\nZXhhbXBsZS5jb20wHhcNMTUwMTEyMTQxNTAxWhcNMjUwMTA5MTQxNTAxWjCBoTEL\nMAkGA1UEBhMCVVMxCzAJBgNVBAgMAlNDMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkx\nHDAaBgNVBAoME0RlZmF1bHQgQ29tcGFueSBMdGQxEDAOBgNVBAsMB1Rlc3QgQ0Ex\nGjAYBgNVBAMMEXd3dy5leGFtcGxlY2EuY29tMSIwIAYJKoZIhvcNAQkBFhNleGFt\ncGxlQGV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nw2rK1J2NMtQj0KDug7g7HRKl5jbf0QMkMKyTU1fBtZ0cCzvsF4CqV11LK4BSVWaK\nrzkaXe99IVJnH8KdOlDl5Dh/+cJ3xdkClSyeUT4zgb6CCBqg78ePp+nN11JKuJlV\nIG1qdJpB1J5O/kCLsGcTf7RS74MtqMFo96446Zvt7YaBhWPz6gDaO/TUzfrNcGLA\nEfHVXkvVWqb3gqXUztZyVex/gtP9FXQ7gxTvJml7UkmT0VAFjtZnCqmFxpLZFZ15\n+qP9O7Q2MpsGUO/4vDAuYrKBeg1ZdPSi8gwqUP2qWsGd9MIWRv3thI2903BczDc7\nr8WaIbm37vYZAS9G56E4+wIDAQABo1AwTjAdBgNVHQ4EFgQUugLrSJshOBk5TSsU\nANs4+SmJUGwwHwYDVR0jBBgwFoAUugLrSJshOBk5TSsUANs4+SmJUGwwDAYDVR0T\nBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaMJ33zAMV4korHo5aPfayV3uHoYZ\n1ChzP3eSsF+FjoscpoNSKs91ZXZF6LquzoNezbfiihK4PYqgwVD2+O0/Ty7UjN4S\nqzFKVR4OS/6lCJ8YncxoFpTntbvjgojf1DEataKFUN196PAANc3yz8cWHF4uvjPv\nWkgFqbIjb+7D1YgglNyovXkRDlRZl0LD1OQ0ZWhd4Ge1qx8mmmanoBeYZ9+DgpFC\nj9tQAbS867yeOryNe7sEOIpXAAqK/DTu0hB6+ySsDfMo4piXCc2aA/eI2DCuw08e\nw17Dz9WnupZjVdwTKzDhFgJZMLDqn37HQnT6EemLFqbcR0VPEnfyhDtZIQ==\n-----END CERTIFICATE-----" +        } +      } +    }, +    { +      "kind": "PersistentVolumeClaim", +      "apiVersion": "v1", +      "metadata": { +        "name": "${JENKINS_SERVICE_NAME}" +      }, +      "spec": { +        "accessModes": [ +          "ReadWriteOnce" +        ], +        "resources": { +          "requests": { +            "storage": "${VOLUME_CAPACITY}" +          } +        } +      } +    },     +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${JENKINS_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "strategy": { +            "type": "Recreate" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "jenkins" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "jenkins:latest", +                "namespace": "openshift" +              }, +              "lastTriggeredImage": "" +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${JENKINS_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "creationTimestamp": null, +            "labels": { +              "name": "${JENKINS_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "jenkins", +                "image": "${JENKINS_IMAGE}", +                "env": [ +                  { +                    "name": "JENKINS_PASSWORD", +                    "value": "${JENKINS_PASSWORD}" +                  } +                ], +                "resources": { +		    "limits": { +			"memory": "${MEMORY_LIMIT}" +		    } +		}, +                "volumeMounts": [ +                  { +                    "name": "${JENKINS_SERVICE_NAME}-data", +                    "mountPath": "/var/lib/jenkins" +                  } +                ], +                "terminationMessagePath": "/dev/termination-log", +                "imagePullPolicy": "IfNotPresent", +                "capabilities": {}, +                "securityContext": { +                  "capabilities": {}, +                  "privileged": false +                } +              } +            ], +            "volumes": [ +              { +                "name": "${JENKINS_SERVICE_NAME}-data", +                "persistentVolumeClaim": { +                  "claimName": "${JENKINS_SERVICE_NAME}" +                } +              } +            ], +            "restartPolicy": "Always", +            "dnsPolicy": "ClusterFirst" +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "MEMORY_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the container can use", +      "value": "512Mi" +    }, +    { +      "name": "JENKINS_SERVICE_NAME", +      "displayName": "Jenkins service name", +      "description": "The name of the OpenShift Service exposed for the Jenkins container", +      "value": "jenkins" +    }, +    { +      "name": "JENKINS_PASSWORD", +      "displayName": "Jenkins password", +      "description": "Password for the Jenkins user", +      "generate": "expression", +      "value": "password" +    }, +    { +      "name": "VOLUME_CAPACITY", +      "displayName": "Volume capacity", +      "description": "Volume space available for data, e.g. 512Mi, 2Gi", +      "value": "512Mi", +      "required": true +    } +  ], +  "labels": { +    "template": "jenkins-persistent-template" +  } +} diff --git a/roles/openshift_examples/files/examples/v1.2/quickstart-templates/nodejs-mongodb.json b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/nodejs-mongodb.json new file mode 100644 index 000000000..d5a1be659 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/nodejs-mongodb.json @@ -0,0 +1,421 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "nodejs-mongodb-example", +    "annotations": { +      "description": "An example Node.js application with a MongoDB database", +      "tags": "quickstart,nodejs,mongodb", +      "iconClass": "icon-nodejs" +    } +  }, +  "labels": { +    "template": "nodejs-mongodb-example" +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs-mongodb-example", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "nodejs-mongodb-example" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs-mongodb-example" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "nodejs-mongodb-example" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs-mongodb-example", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs-mongodb-example", +        "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": "openshift", +              "name": "nodejs:0.10" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "nodejs-mongodb-example:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "ConfigChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          }, +          { +            "type": "Generic", +            "generic": { +              "secret": "${GENERIC_WEBHOOK_SECRET}" +            } +          } +        ] +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs-mongodb-example", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Rolling" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "nodejs-mongodb-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "nodejs-mongodb-example:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "nodejs-mongodb-example" +        }, +        "template": { +          "metadata": { +            "name": "nodejs-mongodb-example", +            "labels": { +              "name": "nodejs-mongodb-example" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "nodejs-mongodb-example", +                "image": "nodejs-mongodb-example", +                "ports": [ +                  { +                    "containerPort": 8080 +                  } +                ], +                "env": [ +                  { +                    "name": "DATABASE_SERVICE_NAME", +                    "value": "${DATABASE_SERVICE_NAME}" +                  }, +                  { +                    "name": "MONGODB_USER", +                    "value": "${DATABASE_USER}" +                  }, +                  { +                    "name": "MONGODB_PASSWORD", +                    "value": "${DATABASE_PASSWORD}" +                  }, +                  { +                    "name": "MONGODB_DATABASE", +                    "value": "${DATABASE_NAME}" +                  }, +                  { +                    "name": "MONGODB_ADMIN_PASSWORD", +                    "value": "${DATABASE_ADMIN_PASSWORD}" +                  } +                ], +                "readinessProbe": { +                  "timeoutSeconds": 3, +                  "initialDelaySeconds": 3, +                  "httpGet": { +                    "path": "/pagecount", +                    "port": 8080 +                  } +                }, +                "livenessProbe": { +                    "timeoutSeconds": 3, +                    "initialDelaySeconds": 30, +                    "httpGet": { +                        "path": "/pagecount", +                        "port": 8080 +                    } +                }, +                "resources": { +                    "limits": { +                        "memory": "${MEMORY_LIMIT}" +                    } +                } +              } +            ] +          } +        } +      } +    }, +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "annotations": { +          "description": "Exposes the database server" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "mongodb", +            "port": 27017, +            "targetPort": 27017 +          } +        ], +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        } +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "annotations": { +          "description": "Defines how to deploy the database" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Recreate" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": false, +              "containerNames": [ +                "mongodb" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "namespace": "openshift", +                "name": "mongodb:2.6" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "name": "${DATABASE_SERVICE_NAME}", +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "mongodb", +                "image": "mongodb", +                "ports": [ +                  { +                    "containerPort": 27017 +                  } +                ], +                "env": [ +                  { +                    "name": "MONGODB_USER", +                    "value": "${DATABASE_USER}" +                  }, +                  { +                    "name": "MONGODB_PASSWORD", +                    "value": "${DATABASE_PASSWORD}" +                  }, +                  { +                    "name": "MONGODB_DATABASE", +                    "value": "${DATABASE_NAME}" +                  }, +                  { +                    "name": "MONGODB_ADMIN_PASSWORD", +                    "value": "${DATABASE_ADMIN_PASSWORD}" +                  } +                ], +                "readinessProbe": { +                  "timeoutSeconds": 1, +                  "initialDelaySeconds": 3, +                  "exec": { +                    "command": [ "/bin/sh", "-i", "-c", "mongostat --host 127.0.0.1 -u admin -p ${DATABASE_ADMIN_PASSWORD} -n 1 --noheaders"] +                  } +                }, +                "livenessProbe": { +                  "timeoutSeconds": 1, +                  "initialDelaySeconds": 30, +                  "tcpSocket": { +                    "port": 27017 +                  } +                }, +                "resources": { +                    "limits": { +                        "memory": "${MEMORY_MONGODB_LIMIT}" +                    } +                } +              } +            ] +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "MEMORY_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the Node.js container can use", +      "value": "512Mi" +    }, +    { +      "name": "MEMORY_MONGODB_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the MongoDB container can use", +      "value": "512Mi" +    }, +    { +      "name": "SOURCE_REPOSITORY_URL", +      "displayName": "Source repository URL", +      "description": "The URL of the repository with your application source code", +      "value": "https://github.com/openshift/nodejs-ex.git" +    }, +    { +      "name": "SOURCE_REPOSITORY_REF", +      "displayName": "Source repository 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", +      "description": "Database service name", +      "value": "mongodb" +    }, +    { +      "name": "DATABASE_USER", +      "displayName": "MongoDB user name", +      "description": "Username for MongoDB user that will be used for accessing the database", +      "generate": "expression", +      "from": "user[A-Z0-9]{3}" +    }, +    { +      "name": "DATABASE_PASSWORD", +      "displayName": "MongoDB password", +      "description": "Password for the MongoDB user", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}" +    }, +    { +      "name": "DATABASE_NAME", +      "displayName": "Database name", +      "description": "Database name", +      "value": "sampledb" +    }, +    { +      "name": "DATABASE_ADMIN_PASSWORD", +      "displayName": "Database administrator password", +      "description": "Password for the database admin user", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/quickstart-templates/nodejs.json b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/nodejs.json new file mode 100644 index 000000000..ef36a88bd --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/nodejs.json @@ -0,0 +1,294 @@ +{ +  "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": "nodejs-example", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "nodejs-example" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs-example" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "nodejs-example" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs-example", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs-example", +        "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": "openshift", +              "name": "nodejs:0.10" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "nodejs-example:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "ConfigChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          }, +          { +            "type": "Generic", +            "generic": { +              "secret": "${GENERIC_WEBHOOK_SECRET}" +            } +          } +        ] +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs-example", +        "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": "nodejs-example:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "nodejs-example" +        }, +        "template": { +          "metadata": { +            "name": "nodejs-example", +            "labels": { +              "name": "nodejs-example" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "nodejs-example", +                "image": "nodejs-example", +                "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": "MEMORY_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the container can use", +      "value": "512Mi" +    }, +    { +      "name": "SOURCE_REPOSITORY_URL", +      "displayName": "Source repository URL", +      "description": "The URL of the repository with your application source code", +      "value": "https://github.com/openshift/nodejs-ex.git" +    }, +    { +      "name": "SOURCE_REPOSITORY_REF", +      "displayName": "Source repository 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", +      "description": "Database service name" +    }, +    { +      "name": "MONGODB_USER", +      "displayName": "MongoDB user name", +      "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", +      "description": "Database name" +    }, +    { +      "name": "MONGODB_ADMIN_PASSWORD", +      "displayName": "Database administrator password", +      "description": "Password for the database admin user" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/quickstart-templates/rails-postgresql.json b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/rails-postgresql.json new file mode 100644 index 000000000..7599f70aa --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/quickstart-templates/rails-postgresql.json @@ -0,0 +1,480 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "rails-postgresql-example", +    "annotations": { +      "description": "An example Rails application with a PostgreSQL database", +      "tags": "quickstart,ruby,rails,postgresql", +      "iconClass": "icon-ruby" +    } +  }, +  "labels": { +    "template": "rails-postgresql-example" +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "rails-postgresql-example", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "rails-postgresql-example" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "rails-postgresql-example" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "rails-postgresql-example" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "rails-postgresql-example", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "rails-postgresql-example", +        "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": "openshift", +              "name": "ruby:2.2" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "rails-postgresql-example:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "ConfigChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ], +        "postCommit": { +          "script": "bundle exec rake test" +        } +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "rails-postgresql-example", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Recreate", +          "recreateParams": { +          "pre": { +              "failurePolicy": "Abort", +              "execNewPod": { +                "command": [ +                  "./migrate-database.sh" +                ], +                "containerName": "rails-postgresql-example" +              } +            } +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "rails-postgresql-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "rails-postgresql-example:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "rails-postgresql-example" +        }, +        "template": { +          "metadata": { +            "name": "rails-postgresql-example", +            "labels": { +              "name": "rails-postgresql-example" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "rails-postgresql-example", +                "image": "rails-postgresql-example", +                "ports": [ +                  { +                    "containerPort": 8080 +                  } +                ], +                "readinessProbe": { +                  "timeoutSeconds": 3, +                  "initialDelaySeconds": 5, +                  "httpGet": { +                    "path": "/articles", +                    "port": 8080 +                  } +                }, +                "livenessProbe": { +                  "timeoutSeconds": 3, +                  "initialDelaySeconds": 10, +                  "httpGet": { +                    "path": "/articles", +                    "port": 8080 +                  } +                }, +                "env": [ +                  { +                    "name": "DATABASE_SERVICE_NAME", +                    "value": "${DATABASE_SERVICE_NAME}" +                  }, +                  { +                    "name": "POSTGRESQL_USER", +                    "value": "${DATABASE_USER}" +                  }, +                  { +                    "name": "POSTGRESQL_PASSWORD", +                    "value": "${DATABASE_PASSWORD}" +                  }, +                  { +                    "name": "POSTGRESQL_DATABASE", +                    "value": "${DATABASE_NAME}" +                  }, +                  { +                    "name": "SECRET_KEY_BASE", +                    "value": "${SECRET_KEY_BASE}" +                  }, +                  { +                    "name": "POSTGRESQL_MAX_CONNECTIONS", +                    "value": "${POSTGRESQL_MAX_CONNECTIONS}" +                  }, +                  { +                    "name": "POSTGRESQL_SHARED_BUFFERS", +                    "value": "${POSTGRESQL_SHARED_BUFFERS}" +                  }, +                  { +                    "name": "APPLICATION_DOMAIN", +                    "value": "${APPLICATION_DOMAIN}" +                  }, +                  { +                    "name": "APPLICATION_USER", +                    "value": "${APPLICATION_USER}" +                  }, +                  { +                    "name": "APPLICATION_PASSWORD", +                    "value": "${APPLICATION_PASSWORD}" +                  }, +                  { +                    "name": "RAILS_ENV", +                    "value": "${RAILS_ENV}" +                  } +                ], +                "resources": { +		      "limits": { +			  "memory": "${MEMORY_LIMIT}" +		      } +                } +              } +            ] +          } +        } +      } +    }, +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "annotations": { +          "description": "Exposes the database server" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "postgresql", +            "port": 5432, +            "targetPort": 5432 +          } +        ], +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        } +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "annotations": { +          "description": "Defines how to deploy the database" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Recreate" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": false, +              "containerNames": [ +                "postgresql" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "namespace": "openshift", +                "name": "postgresql:9.4" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "name": "${DATABASE_SERVICE_NAME}", +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "postgresql", +                "image": "postgresql", +                "ports": [ +                  { +                    "containerPort": 5432 +                  } +                ], +                "readinessProbe": { +                  "timeoutSeconds": 1, +                  "initialDelaySeconds": 5, +                  "exec": { +                    "command": [ "/bin/sh", "-i", "-c", "psql -h 127.0.0.1 -U ${POSTGRESQL_USER} -q -d ${POSTGRESQL_DATABASE} -c 'SELECT 1'"] +                  } +                }, +                "livenessProbe": { +                  "timeoutSeconds": 1, +                  "initialDelaySeconds": 30, +                  "tcpSocket": { +                    "port": 5432 +                  } +                }, +                "env": [ +                  { +                    "name": "POSTGRESQL_USER", +                    "value": "${DATABASE_USER}" +                  }, +                  { +                    "name": "POSTGRESQL_PASSWORD", +                    "value": "${DATABASE_PASSWORD}" +                  }, +                  { +                    "name": "POSTGRESQL_DATABASE", +                    "value": "${DATABASE_NAME}" +                  }, +                  { +                    "name": "POSTGRESQL_MAX_CONNECTIONS", +                    "value": "${POSTGRESQL_MAX_CONNECTIONS}" +                  }, +                  { +                    "name": "POSTGRESQL_SHARED_BUFFERS", +                    "value": "${POSTGRESQL_SHARED_BUFFERS}" +                  } +                ], +                "resources": { +		      "limits": { +			  "memory": "${MEMORY_POSTGRESQL_LIMIT}" +		      } +                } +              } +            ] +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "MEMORY_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the Rails container can use", +      "value": "512Mi" +    }, +    { +      "name": "MEMORY_POSTGRESQL_LIMIT", +      "displayName": "Memory limit", +      "description": "Maximum amount of memory the PostgreSQL container can use", +      "value": "512Mi" +    }, +    { +      "name": "SOURCE_REPOSITORY_URL", +      "displayName": "Source repository URL", +      "description": "The URL of the repository with your application source code", +      "value": "https://github.com/openshift/rails-ex.git" +    }, +    { +      "name": "SOURCE_REPOSITORY_REF", +      "displayName": "Source repository 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 Rails 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": "APPLICATION_USER", +      "displayName": "Application user name", +      "description": "The application user that is used within the sample application to authorize access on pages", +      "value": "openshift" +    }, +    { +      "name": "APPLICATION_PASSWORD", +      "displayName": "Application password", +      "description": "The application password that is used within the sample application to authorize access on pages", +      "value": "secret" +    }, +    { +      "name": "RAILS_ENV", +      "displayName": "Rails environment", +      "description": "Environment under which the sample application will run. Could be set to production, development or test", +      "value": "production" +    }, +    { +      "name": "DATABASE_SERVICE_NAME", +      "displayName": "Database service name", +      "description": "Database service name", +      "value": "postgresql" +    }, +    { +      "name": "DATABASE_USER", +      "displayName": "Database user name", +      "description": "database username", +      "generate": "expression", +      "from": "user[A-Z0-9]{3}" +    }, +    { +      "name": "DATABASE_PASSWORD", +      "displayName": "Database password", +      "description": "database password", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{8}" +    }, +    { +      "name": "DATABASE_NAME", +      "displayName": "Database name", +      "description": "database name", +      "value": "root" +    }, +    { +      "name": "POSTGRESQL_MAX_CONNECTIONS", +      "displayName": "Maximum database connections", +      "description": "database max connections", +      "value": "100" +    }, +    { +      "name": "POSTGRESQL_SHARED_BUFFERS", +      "displayName": "Shared buffer amount", +      "description": "database shared buffers", +      "value": "12MB" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-streams/fis-image-streams.json b/roles/openshift_examples/files/examples/v1.2/xpaas-streams/fis-image-streams.json new file mode 100644 index 000000000..ed0e94bed --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-streams/fis-image-streams.json @@ -0,0 +1,56 @@ +{ +    "kind": "List", +    "apiVersion": "v1", +    "metadata": { +        "name": "fis-image-streams", +        "annotations": { +            "description": "ImageStream definitions for JBoss Fuse Integration Services." +        } +    }, +    "items": [ +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "fis-java-openshift" +            }, +            "spec": { +                "dockerImageRepository": "registry.access.redhat.com/jboss-fuse-6/fis-java-openshift", +                "tags": [ +                    { +                        "name": "1.0", +                        "annotations": { +                            "description": "JBoss Fuse Integration Services 6.2.1 Java S2I images.", +                            "iconClass": "icon-jboss", +                            "tags": "builder,jboss-fuse,java,xpaas", +                            "supports":"jboss-fuse:6.2.1,java:8,xpaas:1.2", +                            "version": "1.0" +                        } +                    } +                ] +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "fis-karaf-openshift" +            }, +            "spec": { +                "dockerImageRepository": "registry.access.redhat.com/jboss-fuse-6/fis-karaf-openshift", +                "tags": [ +                    { +                        "name": "1.0", +                        "annotations": { +                            "description": "JBoss Fuse Integration Services 6.2.1 Karaf S2I images.", +                            "iconClass": "icon-jboss", +                            "tags": "builder,jboss-fuse,java,karaf,xpaas", +                            "supports":"jboss-fuse:6.2.1,java:8,xpaas:1.2", +                            "version": "1.0" +                        } +                    } +                ] +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-streams/jboss-image-streams.json b/roles/openshift_examples/files/examples/v1.2/xpaas-streams/jboss-image-streams.json new file mode 100644 index 000000000..26e4ef6d8 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-streams/jboss-image-streams.json @@ -0,0 +1,239 @@ +{ +    "kind": "List", +    "apiVersion": "v1", +    "metadata": { +        "name": "jboss-image-streams", +        "annotations": { +            "description": "ImageStream definitions for JBoss Middleware products." +        } +    }, +    "items": [ +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "jboss-webserver30-tomcat7-openshift" +            }, +            "spec": { +                "dockerImageRepository": "registry.access.redhat.com/jboss-webserver-3/webserver30-tomcat7-openshift", +                "tags": [ +                    { +                        "name": "1.1", +                        "annotations": { +                            "description": "JBoss Web Server 3.0 Tomcat 7 S2I images.", +                            "iconClass": "icon-jboss", +                            "tags": "builder,tomcat,tomcat7,java,jboss,xpaas", +                            "supports":"tomcat7:3.0,tomcat:7,java:8,xpaas:1.1", +                            "sampleRepo": "https://github.com/jboss-openshift/openshift-quickstarts.git", +                            "sampleContextDir": "tomcat-websocket-chat", +                            "version": "1.1" +                        } +                    }, +                    { +                        "name": "1.2", +                        "annotations": { +                            "description": "JBoss Web Server 3.0 Tomcat 7 S2I images.", +                            "iconClass": "icon-jboss", +                            "tags": "builder,tomcat,tomcat7,java,jboss,xpaas", +                            "supports":"tomcat7:3.0,tomcat:7,java:8,xpaas:1.2", +                            "sampleRepo": "https://github.com/jboss-openshift/openshift-quickstarts.git", +                            "sampleContextDir": "tomcat-websocket-chat", +                            "version": "1.2" +                        } +                    } +                ] +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "jboss-webserver30-tomcat8-openshift" +            }, +            "spec": { +                "dockerImageRepository": "registry.access.redhat.com/jboss-webserver-3/webserver30-tomcat8-openshift", +                "tags": [ +                    { +                        "name": "1.1", +                        "annotations": { +                            "description": "JBoss Web Server 3.0 Tomcat 8 S2I images.", +                            "iconClass": "icon-jboss", +                            "tags": "builder,tomcat,tomcat8,java,jboss,xpaas", +                            "supports":"tomcat8:3.0,tomcat:8,java:8,xpaas:1.1", +                            "sampleRepo": "https://github.com/jboss-openshift/openshift-quickstarts.git", +                            "sampleContextDir": "tomcat-websocket-chat", +                            "version": "1.1" +                        } +                    }, +                    { +                        "name": "1.2", +                        "annotations": { +                            "description": "JBoss Web Server 3.0 Tomcat 8 S2I images.", +                            "iconClass": "icon-jboss", +                            "tags": "builder,tomcat,tomcat8,java,jboss,xpaas", +                            "supports":"tomcat8:3.0,tomcat:8,java:8,xpaas:1.2", +                            "sampleRepo": "https://github.com/jboss-openshift/openshift-quickstarts.git", +                            "sampleContextDir": "tomcat-websocket-chat", +                            "version": "1.2" +                        } +                    } +                ] +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "jboss-eap64-openshift" +            }, +            "spec": { +                "dockerImageRepository": "registry.access.redhat.com/jboss-eap-6/eap64-openshift", +                "tags": [ +                    { +                        "name": "1.1", +                        "annotations": { +                            "description": "JBoss EAP 6.4 S2I images.", +                            "iconClass": "icon-jboss", +                            "tags": "builder,eap,javaee,java,jboss,xpaas", +                            "supports":"eap:6.4,javaee:6,java:8,xpaas:1.1", +                            "sampleRepo": "https://github.com/jboss-developer/jboss-eap-quickstarts.git", +                            "sampleContextDir": "kitchensink", +                            "sampleRef": "6.4.x", +                            "version": "1.1" +                        } +                    }, +                    { +                        "name": "1.2", +                        "annotations": { +                            "description": "JBoss EAP 6.4 S2I images.", +                            "iconClass": "icon-jboss", +                            "tags": "builder,eap,javaee,java,jboss,xpaas", +                            "supports":"eap:6.4,javaee:6,java:8,xpaas:1.2", +                            "sampleRepo": "https://github.com/jboss-developer/jboss-eap-quickstarts.git", +                            "sampleContextDir": "kitchensink", +                            "sampleRef": "6.4.x", +                            "version": "1.2" +                        } +                    } +                ] +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "jboss-decisionserver62-openshift" +            }, +            "spec": { +                "dockerImageRepository": "registry.access.redhat.com/jboss-decisionserver-6/decisionserver62-openshift", +                "tags": [ +                    { +                        "name": "1.2", +                        "annotations": { +                            "description": "Decision Server 6.2 S2I images.", +                            "iconClass": "icon-jboss", +                            "tags": "builder,decisionserver,java,xpaas", +                            "supports":"decisionserver:6.2,java:8,xpaas:1.2", +                            "sampleRepo": "https://github.com/jboss-openshift/openshift-quickstarts.git", +                            "sampleContextDir": "decisionserver/hellorules", +                            "sampleRef": "1.2", +                            "version": "1.2" +                        } +                    }, +                    { +                        "name": "1.3", +                        "annotations": { +                            "description": "Decision Server 6.2 S2I images.", +                            "iconClass": "icon-jboss", +                            "tags": "builder,decisionserver,java,xpaas", +                            "supports":"decisionserver:6.2,java:8,xpaas:1.3", +                            "sampleRepo": "https://github.com/jboss-openshift/openshift-quickstarts.git", +                            "sampleContextDir": "decisionserver/hellorules", +                            "sampleRef": "master", +                            "version": "1.3" +                        } +                    } +                ] +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "jboss-processserver62-openshift" +            }, +            "spec": { +                "dockerImageRepository": "registry.access.redhat.com/jboss-processserver-6/processserver62-openshift", +                "tags": [ +                    { +                        "name": "1.3", +                        "annotations": { +                            "description": "Intelligent Process Server 6.2 S2I images.", +                            "iconClass": "icon-jboss", +                            "tags": "builder,processserver,java,xpaas", +                            "supports":"processserver:6.2,java:8,xpaas:1.3", +                            "sampleRepo": "https://github.com/jboss-openshift/openshift-quickstarts.git", +                            "sampleContextDir": "processserver/library", +                            "sampleRef": "master", +                            "version": "1.3" +                        } +                    } +                ] +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "jboss-datagrid65-openshift" +            }, +            "spec": { +                "dockerImageRepository": "registry.access.redhat.com/jboss-datagrid-6/datagrid65-openshift", +                "tags": [ +                    { +                        "name": "1.2", +                        "annotations": { +                            "description": "JBoss Data Grid 6.5 S2I images.", +                            "iconClass": "icon-jboss", +                            "tags": "datagrid,java,jboss,xpaas", +                            "supports":"datagrid:6.5,java:8,xpaas:1.2", +                            "version": "1.2" +                        } +                    } +                ] +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "jboss-amq-62" +            }, +            "spec": { +                "dockerImageRepository": "registry.access.redhat.com/jboss-amq-6/amq62-openshift", +                "tags": [ +                    { +                        "name": "1.1", +                        "annotations": { +                            "description": "JBoss A-MQ 6.2 broker image.", +                            "iconClass": "icon-jboss", +                            "tags": "messaging,amq,jboss,xpaas", +                            "supports":"amq:6.2,messaging,xpaas:1.1", +                            "version": "1.1" +                        } +                    }, +                    { +                        "name": "1.2", +                        "annotations": { +                            "description": "JBoss A-MQ 6.2 broker image.", +                            "iconClass": "icon-jboss", +                            "tags": "messaging,amq,jboss,xpaas", +                            "supports":"amq:6.2,messaging,xpaas:1.2", +                            "version": "1.2" +                        } +                    } +                ] +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/amq62-basic.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/amq62-basic.json new file mode 100644 index 000000000..2b1680755 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/amq62-basic.json @@ -0,0 +1,308 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for JBoss A-MQ brokers. These can be deployed as standalone or in a mesh. This template doesn't feature SSL support.", +            "iconClass": "icon-jboss", +            "tags": "messaging,amq,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "amq62-basic" +    }, +    "labels": { +        "template": "amq62-basic", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "broker", +            "required": true +        }, +        { +            "description": "Protocols to configure, separated by commas. Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`.", +            "name": "MQ_PROTOCOL", +            "value": "openwire", +            "required": false +        }, +        { +            "description": "Queue names, separated by commas. These queues will be automatically created when the broker starts. If left empty, queues will be still created dynamically.", +            "name": "MQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names, separated by commas. These topics will be automatically created when the broker starts. If left empty, topics will be still created dynamically.", +            "name": "MQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "User name for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", +            "name": "MQ_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "Password for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", +            "name": "MQ_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "The discovery agent type to use for discovering mesh endpoints.  'dns' will use OpenShift's DNS service to resolve endpoints.  'kube' will use Kubernetes REST API to resolve service endpoints.  If using 'kube' the service account for the pod must have the 'view' role, which can be added via 'oc policy add-role-to-user view system:serviceaccount:<namespace>:default' where <namespace> is the project namespace.", +            "name": "AMQ_MESH_DISCOVERY_TYPE", +            "value": "kube", +            "required": false +        }, +        { +            "description": "The A-MQ storage usage limit", +            "name": "AMQ_STORAGE_USAGE_LIMIT", +            "value": "100 gb", +            "required": false +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 5672, +                        "targetPort": 5672 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-amqp", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's AMQP port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 1883, +                        "targetPort": 1883 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-mqtt", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's MQTT port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 61613, +                        "targetPort": 61613 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-stomp", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's STOMP port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 61616, +                        "targetPort": 61616 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-tcp", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's OpenWire port." +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-amq", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-amq" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-amq-62:1.2" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-amq", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-amq", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-amq", +                                "image": "jboss-amq-62", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/amq/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "amqp", +                                        "containerPort": 5672, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "mqtt", +                                        "containerPort": 1883, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "stomp", +                                        "containerPort": 61613, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "tcp", +                                        "containerPort": 61616, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "AMQ_USER", +                                        "value": "${MQ_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_PASSWORD", +                                        "value": "${MQ_PASSWORD}" +                                    }, +                                    { +                                        "name": "AMQ_TRANSPORTS", +                                        "value": "${MQ_PROTOCOL}" +                                    }, +                                    { +                                        "name": "AMQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "AMQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "AMQ_MESH_DISCOVERY_TYPE", +                                        "value": "${AMQ_MESH_DISCOVERY_TYPE}" +                                    }, +                                    { +                                        "name": "AMQ_MESH_SERVICE_NAME", +                                        "value": "${APPLICATION_NAME}-amq-tcp" +                                    }, +                                    { +                                        "name": "AMQ_MESH_SERVICE_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "AMQ_STORAGE_USAGE_LIMIT", +                                        "value": "${AMQ_STORAGE_USAGE_LIMIT}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/amq62-persistent-ssl.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/amq62-persistent-ssl.json new file mode 100644 index 000000000..0755fef45 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/amq62-persistent-ssl.json @@ -0,0 +1,504 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for JBoss A-MQ brokers. These are deployed as standalone and use persistent storage for saving messages. This template supports SSL and requires usage of OpenShift secrets.", +            "iconClass": "icon-jboss", +            "tags": "messaging,amq,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "amq62-persistent-ssl" +    }, +    "labels": { +        "template": "amq62-persistent-ssl", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "broker", +            "required": true +        }, +        { +            "description": "Protocols to configure, separated by commas.  Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`.  SSL variants of these protocols will be configured automaticaly.", +            "name": "MQ_PROTOCOL", +            "value": "openwire", +            "required": false +        }, +        { +            "description": "Queue names, separated by commas.  These queues will be automatically created when the broker starts.  If left empty, queues will be still created dynamically.", +            "name": "MQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names, separated by commas.  These topics will be automatically created when the broker starts.  If left empty, topics will be still created dynamically.", +            "name": "MQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "required": true +        }, +        { +            "description": "User name for standard broker user.  It is required for connecting to the broker.  If left empty, it will be generated.", +            "name": "MQ_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "Password for standard broker user.  It is required for connecting to the broker.  If left empty, it will be generated.", +            "name": "MQ_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "Name of a secret containing SSL related files", +            "name": "AMQ_SECRET", +            "value": "amq-app-secret", +            "required": true +        }, +        { +            "description": "SSL trust store filename", +            "name": "AMQ_TRUSTSTORE", +            "value": "broker.ts", +            "required": true +        }, +        { +            "description": "SSL trust store password", +            "name": "AMQ_TRUSTSTORE_PASSWORD", +            "value": "", +            "required": true +        }, +        { +            "description": "SSL key store filename", +            "name": "AMQ_KEYSTORE", +            "value": "broker.ks", +            "required": true +        }, +        { +            "description": "Password for accessing SSL keystore", +            "name": "AMQ_KEYSTORE_PASSWORD", +            "value": "", +            "required": true +        }, +        { +            "description": "The A-MQ storage usage limit", +            "name": "AMQ_STORAGE_USAGE_LIMIT", +            "value": "100 gb", +            "required": false +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 5672, +                        "targetPort": 5672 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-amqp", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's AMQP port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 5671, +                        "targetPort": 5671 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-amqp-ssl", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's AMQP SSL port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 1883, +                        "targetPort": 1883 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-mqtt", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's MQTT port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8883, +                        "targetPort": 8883 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-mqtt-ssl", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's MQTT SSL port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 61613, +                        "targetPort": 61613 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-stomp", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's STOMP port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 61612, +                        "targetPort": 61612 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-stomp-ssl", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's STOMP SSL port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 61616, +                        "targetPort": 61616 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-tcp", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's OpenWire port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 61617, +                        "targetPort": 61617 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-tcp-ssl", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's OpenWire (SSL) port." +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-amq", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-amq" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-amq-62:1.2" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-amq", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-amq", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "amq-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-amq", +                                "image": "jboss-amq-62", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "broker-secret-volume", +                                        "mountPath": "/etc/amq-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "mountPath": "/opt/amq/data/kahadb", +                                        "name": "${APPLICATION_NAME}-amq-pvol" +                                    } +                                ], +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/amq/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "amqp", +                                        "containerPort": 5672, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "amqp-ssl", +                                        "containerPort": 5671, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "mqtt", +                                        "containerPort": 1883, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "mqtt-ssl", +                                        "containerPort": 8883, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "stomp", +                                        "containerPort": 61613, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "stomp-ssl", +                                        "containerPort": 61612, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "tcp", +                                        "containerPort": 61616, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "tcp-ssl", +                                        "containerPort": 61617, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "AMQ_USER", +                                        "value": "${MQ_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_PASSWORD", +                                        "value": "${MQ_PASSWORD}" +                                    }, +                                    { +                                        "name": "AMQ_TRANSPORTS", +                                        "value": "${MQ_PROTOCOL}" +                                    }, +                                    { +                                        "name": "AMQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "AMQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "AMQ_KEYSTORE_TRUSTSTORE_DIR", +                                        "value": "/etc/amq-secret-volume" +                                    }, +                                    { +                                        "name": "AMQ_TRUSTSTORE", +                                        "value": "${AMQ_TRUSTSTORE}" +                                    }, +                                    { +                                        "name": "AMQ_TRUSTSTORE_PASSWORD", +                                        "value": "${AMQ_TRUSTSTORE_PASSWORD}" +                                    }, +                                    { +                                        "name": "AMQ_KEYSTORE", +                                        "value": "${AMQ_KEYSTORE}" +                                    }, +                                    { +                                        "name": "AMQ_KEYSTORE_PASSWORD", +                                        "value": "${AMQ_KEYSTORE_PASSWORD}" +                                    }, +                                    { +                                        "name": "AMQ_STORAGE_USAGE_LIMIT", +                                        "value": "${AMQ_STORAGE_USAGE_LIMIT}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "broker-secret-volume", +                                "secret": { +                                    "secretName": "${AMQ_SECRET}" +                                } +                            }, +                            { +                                "name": "${APPLICATION_NAME}-amq-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-amq-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ +                    "ReadWriteOnce" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/amq62-persistent.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/amq62-persistent.json new file mode 100644 index 000000000..a8b3d5714 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/amq62-persistent.json @@ -0,0 +1,326 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for JBoss A-MQ brokers. These can be deployed as standalone and use persistent storage for saving messages. This template doesn't feature SSL support.", +            "iconClass": "icon-jboss", +            "tags": "messaging,amq,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "amq62-persistent" +    }, +    "labels": { +        "template": "amq62-persistent", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "broker", +            "required": true +        }, +        { +            "description": "Protocols to configure, separated by commas.  Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`.", +            "name": "MQ_PROTOCOL", +            "value": "openwire", +            "required": false +        }, +        { +            "description": "Queue names, separated by commas.  These queues will be automatically created when the broker starts.  If left empty, queues will be still created dynamically.", +            "name": "MQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names, separated by commas.  These topics will be automatically created when the broker starts.  If left empty, topics will be still created dynamically.", +            "name": "MQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "required": true +        }, +        { +            "description": "User name for standard broker user.  It is required for connecting to the broker.  If left empty, it will be generated.", +            "name": "MQ_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "Password for standard broker user.  It is required for connecting to the broker.  If left empty, it will be generated.", +            "name": "MQ_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "The A-MQ storage usage limit", +            "name": "AMQ_STORAGE_USAGE_LIMIT", +            "value": "100 gb", +            "required": false +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 5672, +                        "targetPort": 5672 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-amqp", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's AMQP port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 1883, +                        "targetPort": 1883 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-mqtt", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's MQTT port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 61613, +                        "targetPort": 61613 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-stomp", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's STOMP port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 61616, +                        "targetPort": 61616 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-tcp", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's OpenWire port." +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-amq", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-amq" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-amq-62:1.2" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-amq", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-amq", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-amq", +                                "image": "jboss-amq-62", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "mountPath": "/opt/amq/data/kahadb", +                                        "name": "${APPLICATION_NAME}-amq-pvol" +                                    } +                                ], +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/amq/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "amqp", +                                        "containerPort": 5672, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "mqtt", +                                        "containerPort": 1883, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "stomp", +                                        "containerPort": 61613, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "tcp", +                                        "containerPort": 61616, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "AMQ_USER", +                                        "value": "${MQ_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_PASSWORD", +                                        "value": "${MQ_PASSWORD}" +                                    }, +                                    { +                                        "name": "AMQ_TRANSPORTS", +                                        "value": "${MQ_PROTOCOL}" +                                    }, +                                    { +                                        "name": "AMQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "AMQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "AMQ_STORAGE_USAGE_LIMIT", +                                        "value": "${AMQ_STORAGE_USAGE_LIMIT}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "${APPLICATION_NAME}-amq-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-amq-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ +                    "ReadWriteOnce" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/amq62-ssl.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/amq62-ssl.json new file mode 100644 index 000000000..ced360b09 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/amq62-ssl.json @@ -0,0 +1,490 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for JBoss A-MQ brokers. These can be deployed as standalone or in a mesh. This template supports SSL and requires usage of OpenShift secrets.", +            "iconClass": "icon-jboss", +            "tags": "messaging,amq,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "amq62-ssl" +    }, +    "labels": { +        "template": "amq62-ssl", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "broker", +            "required": true +        }, +        { +            "description": "Protocols to configure, separated by commas. Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`. SSL variants of these protocols will be configured automaticaly.", +            "name": "MQ_PROTOCOL", +            "value": "openwire", +            "required": false +        }, +        { +            "description": "Queue names, separated by commas. These queues will be automatically created when the broker starts. If left empty, queues will be still created dynamically.", +            "name": "MQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names, separated by commas. These topics will be automatically created when the broker starts. If left empty, topics will be still created dynamically.", +            "name": "MQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "User name for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", +            "name": "MQ_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "Password for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", +            "name": "MQ_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "Name of a secret containing SSL related files", +            "name": "AMQ_SECRET", +            "value": "amq-app-secret", +            "required": true +        }, +        { +            "description": "SSL trust store filename", +            "name": "AMQ_TRUSTSTORE", +            "value": "broker.ts", +            "required": true +        }, +        { +            "description": "SSL trust store password", +            "name": "AMQ_TRUSTSTORE_PASSWORD", +            "value": "", +            "required": true +        }, +        { +            "description": "SSL key store filename", +            "name": "AMQ_KEYSTORE", +            "value": "broker.ks", +            "required": true +        }, +        { +            "description": "Password for accessing SSL keystore", +            "name": "AMQ_KEYSTORE_PASSWORD", +            "value": "", +            "required": true +        }, +        { +            "description": "The discovery agent type to use for discovering mesh endpoints.  'dns' will use OpenShift's DNS service to resolve endpoints.  'kube' will use Kubernetes REST API to resolve service endpoints.  If using 'kube' the service account for the pod must have the 'view' role, which can be added via 'oc policy add-role-to-user view system:serviceaccount:<namespace>:default' where <namespace> is the project namespace.", +            "name": "AMQ_MESH_DISCOVERY_TYPE", +            "value": "kube", +            "required": false +        }, +        { +            "description": "The A-MQ storage usage limit", +            "name": "AMQ_STORAGE_USAGE_LIMIT", +            "value": "100 gb", +            "required": false +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 5672, +                        "targetPort": 5672 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-amqp", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's AMQP port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 5671, +                        "targetPort": 5671 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-amqp-ssl", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's AMQP SSL port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 1883, +                        "targetPort": 1883 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-mqtt", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's MQTT port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8883, +                        "targetPort": 8883 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-mqtt-ssl", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's MQTT SSL port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 61613, +                        "targetPort": 61613 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-stomp", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's STOMP port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 61612, +                        "targetPort": 61612 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-stomp-ssl", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's STOMP SSL port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 61616, +                        "targetPort": 61616 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-tcp", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's OpenWire port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 61617, +                        "targetPort": 61617 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-tcp-ssl", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's OpenWire (SSL) port." +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-amq", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-amq" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-amq-62:1.2" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-amq", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-amq", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "amq-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-amq", +                                "image": "jboss-amq-62", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "broker-secret-volume", +                                        "mountPath": "/etc/amq-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/amq/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "amqp", +                                        "containerPort": 5672, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "amqp-ssl", +                                        "containerPort": 5671, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "mqtt", +                                        "containerPort": 1883, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "mqtt-ssl", +                                        "containerPort": 8883, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "stomp", +                                        "containerPort": 61613, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "stomp-ssl", +                                        "containerPort": 61612, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "tcp", +                                        "containerPort": 61616, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "tcp-ssl", +                                        "containerPort": 61617, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "AMQ_USER", +                                        "value": "${MQ_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_PASSWORD", +                                        "value": "${MQ_PASSWORD}" +                                    }, +                                    { +                                        "name": "AMQ_TRANSPORTS", +                                        "value": "${MQ_PROTOCOL}" +                                    }, +                                    { +                                        "name": "AMQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "AMQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "AMQ_MESH_DISCOVERY_TYPE", +                                        "value": "${AMQ_MESH_DISCOVERY_TYPE}" +                                    }, +                                    { +                                        "name": "AMQ_MESH_SERVICE_NAME", +                                        "value": "${APPLICATION_NAME}-amq-tcp" +                                    }, +                                    { +                                        "name": "AMQ_MESH_SERVICE_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "AMQ_KEYSTORE_TRUSTSTORE_DIR", +                                        "value": "/etc/amq-secret-volume" +                                    }, +                                    { +                                        "name": "AMQ_TRUSTSTORE", +                                        "value": "${AMQ_TRUSTSTORE}" +                                    }, +                                    { +                                        "name": "AMQ_TRUSTSTORE_PASSWORD", +                                        "value": "${AMQ_TRUSTSTORE_PASSWORD}" +                                    }, +                                    { +                                        "name": "AMQ_KEYSTORE", +                                        "value": "${AMQ_KEYSTORE}" +                                    }, +                                    { +                                        "name": "AMQ_KEYSTORE_PASSWORD", +                                        "value": "${AMQ_KEYSTORE_PASSWORD}" +                                    }, +                                    { +                                        "name": "AMQ_STORAGE_USAGE_LIMIT", +                                        "value": "${AMQ_STORAGE_USAGE_LIMIT}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "broker-secret-volume", +                                "secret": { +                                    "secretName": "${AMQ_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/datagrid65-basic.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/datagrid65-basic.json new file mode 100644 index 000000000..56e76016f --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/datagrid65-basic.json @@ -0,0 +1,332 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-jboss", +            "description": "Application template for JDG 6.5 applications.", +            "tags": "datagrid,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "datagrid65-basic" +    }, +    "labels": { +        "template": "datagrid65-basic", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "datagrid-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "User name for JDG user.", +            "name": "USERNAME", +            "value": "", +            "required": false +        }, +        { +            "description": "Password for JDG user.", +            "name": "PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "Comma-separated list of connector types that should be configured (defaults to 'memcached,hotrod,rest')", +            "name": "INFINISPAN_CONNECTORS", +            "value": "hotrod,memcached,rest", +            "required": false +        }, +        { +            "description": "Comma-separated list of caches to configure.  By default, a distributed-cache, with a mode of SYNC will be configured for each entry.", +            "name": "CACHE_NAMES", +            "value": "", +            "required": false +        }, +        { +            "description": "", +            "name": "ENCRYPTION_REQUIRE_SSL_CLIENT_AUTH", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the cache to expose through this memcached connector (defaults to 'default')", +            "name": "MEMCACHED_CACHE", +            "value": "default", +            "required": false +        }, +        { +            "description": "The domain, declared in the security subsystem, that should be used to authenticate access to the REST endpoint", +            "name": "REST_SECURITY_DOMAIN", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's HTTP port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 11211, +                        "targetPort": 11211 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-memcached", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Memcached service for clustered applications." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 11333, +                        "targetPort": 11333 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-hotrod", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Hot Rod service for clustered applications." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's HTTP service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-datagrid65-openshift:1.2" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "jboss-datagrid65-openshift", +                                "imagePullPolicy": "Always", +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/datagrid/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/datagrid/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "memcached", +                                        "containerPort": 11211, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "hotrod", +                                        "containerPort": 11222, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "USERNAME", +                                        "value": "${USERNAME}" +                                    }, +                                    { +                                        "name": "PASSWORD", +                                        "value": "${PASSWORD}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "INFINISPAN_CONNECTORS", +                                        "value": "${INFINISPAN_CONNECTORS}" +                                    }, +                                    { +                                        "name": "CACHE_NAMES", +                                        "value": "${CACHE_NAMES}" +                                    }, +                                    { +                                        "name": "ENCRYPTION_REQUIRE_SSL_CLIENT_AUTH", +                                        "value": "${ENCRYPTION_REQUIRE_SSL_CLIENT_AUTH}" +                                    }, +                                    { +                                        "name": "HOTROD_SERVICE_NAME", +                                        "value": "${APPLICATION_NAME}-hotrod" +                                    }, +                                    { +                                        "name": "MEMCACHED_CACHE", +                                        "value": "${MEMCACHED_CACHE}" +                                    }, +                                    { +                                        "name": "REST_SECURITY_DOMAIN", +                                        "value": "${REST_SECURITY_DOMAIN}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/datagrid65-https.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/datagrid65-https.json new file mode 100644 index 000000000..033e70063 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/datagrid65-https.json @@ -0,0 +1,501 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-jboss", +            "description": "Application template for JDG 6.5 applications.", +            "tags": "datagrid,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "datagrid65-https" +    }, +    "labels": { +        "template": "datagrid65-https", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "datagrid-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "User name for JDG user.", +            "name": "USERNAME", +            "value": "", +            "required": false +        }, +        { +            "description": "Password for JDG user.", +            "name": "PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "datagrid-app-secret", +            "required": true +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "Comma-separated list of connector types that should be configured (defaults to 'memcached,hotrod,rest')", +            "name": "INFINISPAN_CONNECTORS", +            "value": "hotrod,memcached,rest", +            "required": false +        }, +        { +            "description": "Comma-separated list of caches to configure.  By default, a distributed-cache, with a mode of SYNC will be configured for each entry.", +            "name": "CACHE_NAMES", +            "value": "", +            "required": false +        }, +        { +            "description": "", +            "name": "ENCRYPTION_REQUIRE_SSL_CLIENT_AUTH", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the cache to expose through this memcached connector (defaults to 'default')", +            "name": "MEMCACHED_CACHE", +            "value": "default", +            "required": false +        }, +        { +            "description": "The domain, declared in the security subsystem, that should be used to authenticate access to the REST endpoint", +            "name": "REST_SECURITY_DOMAIN", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "JGROUPS_ENCRYPT_SECRET", +            "value": "datagrid-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "JGROUPS_ENCRYPT_KEYSTORE", +            "value": "jgroups.jceks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "JGROUPS_ENCRYPT_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's HTTP port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's HTTPS port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 11211, +                        "targetPort": 11211 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-memcached", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Memcached service for clustered applications." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 11333, +                        "targetPort": 11333 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-hotrod", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Hot Rod service for clustered applications." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's HTTP service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's HTTPS service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-datagrid65-openshift:1.2" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "datagrid-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "jboss-datagrid65-openshift", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "datagrid-keystore-volume", +                                        "mountPath": "/etc/datagrid-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "name": "datagrid-jgroups-keystore-volume", +                                        "mountPath": "/etc/jgroups-encrypt-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/datagrid/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/datagrid/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "memcached", +                                        "containerPort": 11211, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "hotrod", +                                        "containerPort": 11222, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "USERNAME", +                                        "value": "${USERNAME}" +                                    }, +                                    { +                                        "name": "PASSWORD", +                                        "value": "${PASSWORD}" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/datagrid-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "INFINISPAN_CONNECTORS", +                                        "value": "${INFINISPAN_CONNECTORS}" +                                    }, +                                    { +                                        "name": "CACHE_NAMES", +                                        "value": "${CACHE_NAMES}" +                                    }, +                                    { +                                        "name": "ENCRYPTION_REQUIRE_SSL_CLIENT_AUTH", +                                        "value": "${ENCRYPTION_REQUIRE_SSL_CLIENT_AUTH}" +                                    }, +                                    { +                                        "name": "HOTROD_SERVICE_NAME", +                                        "value": "${APPLICATION_NAME}-hotrod" +                                    }, +                                    { +                                        "name": "MEMCACHED_CACHE", +                                        "value": "${MEMCACHED_CACHE}" +                                    }, +                                    { +                                        "name": "REST_SECURITY_DOMAIN", +                                        "value": "${REST_SECURITY_DOMAIN}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_SECRET", +                                        "value": "${JGROUPS_ENCRYPT_SECRET}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE", +                                        "value": "${JGROUPS_ENCRYPT_KEYSTORE}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE_DIR", +                                        "value": "/etc/jgroups-encrypt-secret-volume" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_NAME", +                                        "value": "${JGROUPS_ENCRYPT_NAME}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_PASSWORD", +                                        "value": "${JGROUPS_ENCRYPT_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "datagrid-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            }, +                            { +                                "name": "datagrid-jgroups-keystore-volume", +                                "secret": { +                                    "secretName": "${JGROUPS_ENCRYPT_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/datagrid65-mysql-persistent.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/datagrid65-mysql-persistent.json new file mode 100644 index 000000000..05bc7c236 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/datagrid65-mysql-persistent.json @@ -0,0 +1,779 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-jboss", +            "description": "Application template for JDG 6.5 and MySQL applications with persistent storage.", +            "tags": "datagrid,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "datagrid65-mysql-persistent" +    }, +    "labels": { +        "template": "datagrid65-mysql-persistent", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "datagrid-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "User name for JDG user.", +            "name": "USERNAME", +            "value": "", +            "required": false +        }, +        { +            "description": "Password for JDG user.", +            "name": "PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "datagrid-app-secret", +            "required": true +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mysql", +            "name": "DB_JNDI", +            "value": "java:/jboss/datasources/mysql", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Sets how the table names are stored and compared.", +            "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +            "required": false +        }, +        { +            "description": "The maximum permitted number of simultaneous client connections.", +            "name": "MYSQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "The minimum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MIN_WORD_LEN", +            "required": false +        }, +        { +            "description": "The maximum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MAX_WORD_LEN", +            "required": false +        }, +        { +            "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", +            "name": "MYSQL_AIO", +            "required": false +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "Comma-separated list of connector types that should be configured (defaults to 'memcached,hotrod,rest')", +            "name": "INFINISPAN_CONNECTORS", +            "value": "hotrod,memcached,rest", +            "required": false +        }, +        { +            "description": "Comma-separated list of caches to configure.  By default, a distributed-cache, with a mode of SYNC will be configured for each entry.", +            "name": "CACHE_NAMES", +            "value": "", +            "required": false +        }, +        { +            "description": "", +            "name": "ENCRYPTION_REQUIRE_SSL_CLIENT_AUTH", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the cache to expose through this memcached connector (defaults to 'default')", +            "name": "MEMCACHED_CACHE", +            "value": "default", +            "required": false +        }, +        { +            "description": "The domain, declared in the security subsystem, that should be used to authenticate access to the REST endpoint", +            "name": "REST_SECURITY_DOMAIN", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "JGROUPS_ENCRYPT_SECRET", +            "value": "datagrid-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "JGROUPS_ENCRYPT_KEYSTORE", +            "value": "jgroups.jceks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "JGROUPS_ENCRYPT_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's HTTP port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's HTTPS port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 11211, +                        "targetPort": 11211 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-memcached", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Memcached service for clustered applications." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 11333, +                        "targetPort": 11333 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-hotrod", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Hot Rod service for clustered applications." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 3306, +                        "targetPort": 3306 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's HTTP service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's HTTPS service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-datagrid65-openshift:1.2" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "datagrid-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "jboss-datagrid65-openshift", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "datagrid-keystore-volume", +                                        "mountPath": "/etc/datagrid-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "name": "datagrid-jgroups-keystore-volume", +                                        "mountPath": "/etc/jgroups-encrypt-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/datagrid/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/datagrid/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "memcached", +                                        "containerPort": 11211, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "hotrod", +                                        "containerPort": 11222, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "USERNAME", +                                        "value": "${USERNAME}" +                                    }, +                                    { +                                        "name": "PASSWORD", +                                        "value": "${PASSWORD}" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/datagrid-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "TX_DATABASE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "DEFAULT_JDBC_STORE_TYPE", +                                        "value": "string" +                                    }, +                                    { +                                        "name": "DEFAULT_JDBC_STORE_DATASOURCE", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "MEMCACHED_JDBC_STORE_TYPE", +                                        "value": "string" +                                    }, +                                    { +                                        "name": "MEMCACHED_JDBC_STORE_DATASOURCE", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "INFINISPAN_CONNECTORS", +                                        "value": "${INFINISPAN_CONNECTORS}" +                                    }, +                                    { +                                        "name": "CACHE_NAMES", +                                        "value": "${CACHE_NAMES}" +                                    }, +                                    { +                                        "name": "ENCRYPTION_REQUIRE_SSL_CLIENT_AUTH", +                                        "value": "${ENCRYPTION_REQUIRE_SSL_CLIENT_AUTH}" +                                    }, +                                    { +                                        "name": "HOTROD_SERVICE_NAME", +                                        "value": "${APPLICATION_NAME}-hotrod" +                                    }, +                                    { +                                        "name": "MEMCACHED_CACHE", +                                        "value": "${MEMCACHED_CACHE}" +                                    }, +                                    { +                                        "name": "REST_SECURITY_DOMAIN", +                                        "value": "${REST_SECURITY_DOMAIN}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_SECRET", +                                        "value": "${JGROUPS_ENCRYPT_SECRET}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE", +                                        "value": "${JGROUPS_ENCRYPT_KEYSTORE}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE_DIR", +                                        "value": "/etc/jgroups-encrypt-secret-volume" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_NAME", +                                        "value": "${JGROUPS_ENCRYPT_NAME}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_PASSWORD", +                                        "value": "${JGROUPS_ENCRYPT_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "datagrid-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            }, +                            { +                                "name": "datagrid-jgroups-keystore-volume", +                                "secret": { +                                    "secretName": "${JGROUPS_ENCRYPT_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mysql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mysql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mysql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mysql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mysql", +                                "image": "mysql", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 3306, +                                        "protocol": "TCP" +                                    } +                                ], +                                "volumeMounts": [ +                                    { +                                        "mountPath": "/var/lib/mysql/data", +                                        "name": "${APPLICATION_NAME}-mysql-pvol" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MYSQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MYSQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MYSQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +                                        "value": "${MYSQL_LOWER_CASE_TABLE_NAMES}" +                                    }, +                                    { +                                        "name": "MYSQL_MAX_CONNECTIONS", +                                        "value": "${MYSQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MIN_WORD_LEN", +                                        "value": "${MYSQL_FT_MIN_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MAX_WORD_LEN", +                                        "value": "${MYSQL_FT_MAX_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_AIO", +                                        "value": "${MYSQL_AIO}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "${APPLICATION_NAME}-mysql-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-mysql-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ +                    "ReadWriteOnce" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/datagrid65-mysql.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/datagrid65-mysql.json new file mode 100644 index 000000000..1856c8dc2 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/datagrid65-mysql.json @@ -0,0 +1,739 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-jboss", +            "description": "Application template for JDG 6.5 and MySQL applications.", +            "tags": "datagrid,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "datagrid65-mysql" +    }, +    "labels": { +        "template": "datagrid65-mysql", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "datagrid-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "User name for JDG user.", +            "name": "USERNAME", +            "value": "", +            "required": false +        }, +        { +            "description": "Password for JDG user.", +            "name": "PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "datagrid-app-secret", +            "required": true +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mysql", +            "name": "DB_JNDI", +            "value": "java:/jboss/datasources/mysql", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Sets how the table names are stored and compared.", +            "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +            "required": false +        }, +        { +            "description": "The maximum permitted number of simultaneous client connections.", +            "name": "MYSQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "The minimum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MIN_WORD_LEN", +            "required": false +        }, +        { +            "description": "The maximum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MAX_WORD_LEN", +            "required": false +        }, +        { +            "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", +            "name": "MYSQL_AIO", +            "required": false +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "Comma-separated list of connector types that should be configured (defaults to 'memcached,hotrod,rest')", +            "name": "INFINISPAN_CONNECTORS", +            "value": "hotrod,memcached,rest", +            "required": false +        }, +        { +            "description": "Comma-separated list of caches to configure.  By default, a distributed-cache, with a mode of SYNC will be configured for each entry.", +            "name": "CACHE_NAMES", +            "value": "", +            "required": false +        }, +        { +            "description": "", +            "name": "ENCRYPTION_REQUIRE_SSL_CLIENT_AUTH", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the cache to expose through this memcached connector (defaults to 'default')", +            "name": "MEMCACHED_CACHE", +            "value": "default", +            "required": false +        }, +        { +            "description": "The domain, declared in the security subsystem, that should be used to authenticate access to the REST endpoint", +            "name": "REST_SECURITY_DOMAIN", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "JGROUPS_ENCRYPT_SECRET", +            "value": "datagrid-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "JGROUPS_ENCRYPT_KEYSTORE", +            "value": "jgroups.jceks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "JGROUPS_ENCRYPT_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's HTTP port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's HTTPS port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 11211, +                        "targetPort": 11211 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-memcached", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Memcached service for clustered applications." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 11333, +                        "targetPort": 11333 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-hotrod", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Hot Rod service for clustered applications." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 3306, +                        "targetPort": 3306 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's HTTP service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's HTTPS service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-datagrid65-openshift:1.2" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "datagrid-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "jboss-datagrid65-openshift", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "datagrid-keystore-volume", +                                        "mountPath": "/etc/datagrid-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "name": "datagrid-jgroups-keystore-volume", +                                        "mountPath": "/etc/jgroups-encrypt-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/datagrid/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/datagrid/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "memcached", +                                        "containerPort": 11211, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "hotrod", +                                        "containerPort": 11222, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "USERNAME", +                                        "value": "${USERNAME}" +                                    }, +                                    { +                                        "name": "PASSWORD", +                                        "value": "${PASSWORD}" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/datagrid-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "TX_DATABASE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "DEFAULT_JDBC_STORE_TYPE", +                                        "value": "string" +                                    }, +                                    { +                                        "name": "DEFAULT_JDBC_STORE_DATASOURCE", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "MEMCACHED_JDBC_STORE_TYPE", +                                        "value": "string" +                                    }, +                                    { +                                        "name": "MEMCACHED_JDBC_STORE_DATASOURCE", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "INFINISPAN_CONNECTORS", +                                        "value": "${INFINISPAN_CONNECTORS}" +                                    }, +                                    { +                                        "name": "CACHE_NAMES", +                                        "value": "${CACHE_NAMES}" +                                    }, +                                    { +                                        "name": "ENCRYPTION_REQUIRE_SSL_CLIENT_AUTH", +                                        "value": "${ENCRYPTION_REQUIRE_SSL_CLIENT_AUTH}" +                                    }, +                                    { +                                        "name": "HOTROD_SERVICE_NAME", +                                        "value": "${APPLICATION_NAME}-hotrod" +                                    }, +                                    { +                                        "name": "MEMCACHED_CACHE", +                                        "value": "${MEMCACHED_CACHE}" +                                    }, +                                    { +                                        "name": "REST_SECURITY_DOMAIN", +                                        "value": "${REST_SECURITY_DOMAIN}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_SECRET", +                                        "value": "${JGROUPS_ENCRYPT_SECRET}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE", +                                        "value": "${JGROUPS_ENCRYPT_KEYSTORE}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE_DIR", +                                        "value": "/etc/jgroups-encrypt-secret-volume" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_NAME", +                                        "value": "${JGROUPS_ENCRYPT_NAME}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_PASSWORD", +                                        "value": "${JGROUPS_ENCRYPT_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "datagrid-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            }, +                            { +                                "name": "datagrid-jgroups-keystore-volume", +                                "secret": { +                                    "secretName": "${JGROUPS_ENCRYPT_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mysql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mysql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mysql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mysql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mysql", +                                "image": "mysql", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 3306, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MYSQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MYSQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MYSQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +                                        "value": "${MYSQL_LOWER_CASE_TABLE_NAMES}" +                                    }, +                                    { +                                        "name": "MYSQL_MAX_CONNECTIONS", +                                        "value": "${MYSQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MIN_WORD_LEN", +                                        "value": "${MYSQL_FT_MIN_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MAX_WORD_LEN", +                                        "value": "${MYSQL_FT_MAX_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_AIO", +                                        "value": "${MYSQL_AIO}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/datagrid65-postgresql-persistent.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/datagrid65-postgresql-persistent.json new file mode 100644 index 000000000..10d0f77ce --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/datagrid65-postgresql-persistent.json @@ -0,0 +1,752 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-jboss", +            "description": "Application template for JDG 6.5 and PostgreSQL applications with persistent storage.", +            "tags": "datagrid,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "datagrid65-postgresql-persistent" +    }, +    "labels": { +        "template": "datagrid65-postgresql-persistent", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "datagrid-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "User name for JDG user.", +            "name": "USERNAME", +            "value": "", +            "required": false +        }, +        { +            "description": "Password for JDG user.", +            "name": "PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "datagrid-app-secret", +            "required": true +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/postgresql", +            "name": "DB_JNDI", +            "value": "java:jboss/datasources/postgresql", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", +            "name": "POSTGRESQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", +            "name": "POSTGRESQL_SHARED_BUFFERS", +            "required": false +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "Comma-separated list of connector types that should be configured (defaults to 'memcached,hotrod,rest')", +            "name": "INFINISPAN_CONNECTORS", +            "value": "hotrod,memcached,rest", +            "required": false +        }, +        { +            "description": "Comma-separated list of caches to configure.  By default, a distributed-cache, with a mode of SYNC will be configured for each entry.", +            "name": "CACHE_NAMES", +            "value": "", +            "required": false +        }, +        { +            "description": "", +            "name": "ENCRYPTION_REQUIRE_SSL_CLIENT_AUTH", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the cache to expose through this memcached connector (defaults to 'default')", +            "name": "MEMCACHED_CACHE", +            "value": "default", +            "required": false +        }, +        { +            "description": "The domain, declared in the security subsystem, that should be used to authenticate access to the REST endpoint", +            "name": "REST_SECURITY_DOMAIN", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "JGROUPS_ENCRYPT_SECRET", +            "value": "datagrid-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "JGROUPS_ENCRYPT_KEYSTORE", +            "value": "jgroups.jceks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "JGROUPS_ENCRYPT_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's HTTP port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's HTTPS port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 11211, +                        "targetPort": 11211 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-memcached", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Memcached service for clustered applications." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 11333, +                        "targetPort": 11333 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-hotrod", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Hot Rod service for clustered applications." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 5432, +                        "targetPort": 5432 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's HTTP service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's HTTPS service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-datagrid65-openshift:1.2" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "datagrid-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "jboss-datagrid65-openshift", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "datagrid-keystore-volume", +                                        "mountPath": "/etc/datagrid-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "name": "datagrid-jgroups-keystore-volume", +                                        "mountPath": "/etc/jgroups-encrypt-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/datagrid/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/datagrid/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "memcached", +                                        "containerPort": 11211, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "hotrod", +                                        "containerPort": 11222, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "USERNAME", +                                        "value": "${USERNAME}" +                                    }, +                                    { +                                        "name": "PASSWORD", +                                        "value": "${PASSWORD}" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/datagrid-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "TX_DATABASE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "DEFAULT_JDBC_STORE_TYPE", +                                        "value": "string" +                                    }, +                                    { +                                        "name": "DEFAULT_JDBC_STORE_DATASOURCE", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "MEMCACHED_JDBC_STORE_TYPE", +                                        "value": "string" +                                    }, +                                    { +                                        "name": "MEMCACHED_JDBC_STORE_DATASOURCE", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "INFINISPAN_CONNECTORS", +                                        "value": "${INFINISPAN_CONNECTORS}" +                                    }, +                                    { +                                        "name": "CACHE_NAMES", +                                        "value": "${CACHE_NAMES}" +                                    }, +                                    { +                                        "name": "ENCRYPTION_REQUIRE_SSL_CLIENT_AUTH", +                                        "value": "${ENCRYPTION_REQUIRE_SSL_CLIENT_AUTH}" +                                    }, +                                    { +                                        "name": "HOTROD_SERVICE_NAME", +                                        "value": "${APPLICATION_NAME}-hotrod" +                                    }, +                                    { +                                        "name": "MEMCACHED_CACHE", +                                        "value": "${MEMCACHED_CACHE}" +                                    }, +                                    { +                                        "name": "REST_SECURITY_DOMAIN", +                                        "value": "${REST_SECURITY_DOMAIN}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_SECRET", +                                        "value": "${JGROUPS_ENCRYPT_SECRET}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE", +                                        "value": "${JGROUPS_ENCRYPT_KEYSTORE}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE_DIR", +                                        "value": "/etc/jgroups-encrypt-secret-volume" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_NAME", +                                        "value": "${JGROUPS_ENCRYPT_NAME}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_PASSWORD", +                                        "value": "${JGROUPS_ENCRYPT_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "datagrid-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            }, +                            { +                                "name": "datagrid-jgroups-keystore-volume", +                                "secret": { +                                    "secretName": "${JGROUPS_ENCRYPT_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-postgresql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "postgresql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-postgresql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-postgresql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-postgresql", +                                "image": "postgresql", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 5432, +                                        "protocol": "TCP" +                                    } +                                ], +                                "volumeMounts": [ +                                    { +                                        "mountPath": "/var/lib/pgsql/data", +                                        "name": "${APPLICATION_NAME}-postgresql-pvol" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "POSTGRESQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_MAX_CONNECTIONS", +                                        "value": "${POSTGRESQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_SHARED_BUFFERS", +                                        "value": "${POSTGRESQL_SHARED_BUFFERS}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "${APPLICATION_NAME}-postgresql-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-postgresql-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ +                    "ReadWriteOnce" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/datagrid65-postgresql.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/datagrid65-postgresql.json new file mode 100644 index 000000000..9dd378f92 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/datagrid65-postgresql.json @@ -0,0 +1,712 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-jboss", +            "description": "Application template for JDG 6.5 and PostgreSQL applications built using.", +            "tags": "datagrid,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "datagrid65-postgresql" +    }, +    "labels": { +        "template": "datagrid65-postgresql", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "datagrid-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "User name for JDG user.", +            "name": "USERNAME", +            "value": "", +            "required": false +        }, +        { +            "description": "Password for JDG user.", +            "name": "PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "datagrid-app-secret", +            "required": true +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/postgresql", +            "name": "DB_JNDI", +            "value": "java:jboss/datasources/postgresql", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", +            "name": "POSTGRESQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", +            "name": "POSTGRESQL_SHARED_BUFFERS", +            "required": false +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "Comma-separated list of connector types that should be configured (defaults to 'memcached,hotrod,rest')", +            "name": "INFINISPAN_CONNECTORS", +            "value": "hotrod,memcached,rest", +            "required": false +        }, +        { +            "description": "Comma-separated list of caches to configure.  By default, a distributed-cache, with a mode of SYNC will be configurd for each entry.", +            "name": "CACHE_NAMES", +            "value": "", +            "required": false +        }, +        { +            "description": "", +            "name": "ENCRYPTION_REQUIRE_SSL_CLIENT_AUTH", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the cache to expose through this memcached connector (defaults to 'default')", +            "name": "MEMCACHED_CACHE", +            "value": "default", +            "required": false +        }, +        { +            "description": "The domain, declared in the security subsystem, that should be used to authenticate access to the REST endpoint", +            "name": "REST_SECURITY_DOMAIN", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "JGROUPS_ENCRYPT_SECRET", +            "value": "datagrid-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "JGROUPS_ENCRYPT_KEYSTORE", +            "value": "jgroups.jceks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "JGROUPS_ENCRYPT_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's HTTP port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's HTTPS port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 11211, +                        "targetPort": 11211 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-memcached", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Memcached service for clustered applications." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 11333, +                        "targetPort": 11333 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-hotrod", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Hot Rod service for clustered applications." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 5432, +                        "targetPort": 5432 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's HTTP service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's HTTPS service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-datagrid65-openshift:1.2" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "datagrid-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "jboss-datagrid65-openshift", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "datagrid-keystore-volume", +                                        "mountPath": "/etc/datagrid-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "name": "datagrid-jgroups-keystore-volume", +                                        "mountPath": "/etc/jgroups-encrypt-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/datagrid/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/datagrid/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "memcached", +                                        "containerPort": 11211, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "hotrod", +                                        "containerPort": 11222, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "USERNAME", +                                        "value": "${USERNAME}" +                                    }, +                                    { +                                        "name": "PASSWORD", +                                        "value": "${PASSWORD}" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/datagrid-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "TX_DATABASE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "DEFAULT_JDBC_STORE_TYPE", +                                        "value": "string" +                                    }, +                                    { +                                        "name": "DEFAULT_JDBC_STORE_DATASOURCE", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "MEMCACHED_JDBC_STORE_TYPE", +                                        "value": "string" +                                    }, +                                    { +                                        "name": "MEMCACHED_JDBC_STORE_DATASOURCE", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "INFINISPAN_CONNECTORS", +                                        "value": "${INFINISPAN_CONNECTORS}" +                                    }, +                                    { +                                        "name": "CACHE_NAMES", +                                        "value": "${CACHE_NAMES}" +                                    }, +                                    { +                                        "name": "ENCRYPTION_REQUIRE_SSL_CLIENT_AUTH", +                                        "value": "${ENCRYPTION_REQUIRE_SSL_CLIENT_AUTH}" +                                    }, +                                    { +                                        "name": "HOTROD_SERVICE_NAME", +                                        "value": "${APPLICATION_NAME}-hotrod" +                                    }, +                                    { +                                        "name": "MEMCACHED_CACHE", +                                        "value": "${MEMCACHED_CACHE}" +                                    }, +                                    { +                                        "name": "REST_SECURITY_DOMAIN", +                                        "value": "${REST_SECURITY_DOMAIN}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_SECRET", +                                        "value": "${JGROUPS_ENCRYPT_SECRET}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE", +                                        "value": "${JGROUPS_ENCRYPT_KEYSTORE}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE_DIR", +                                        "value": "/etc/jgroups-encrypt-secret-volume" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_NAME", +                                        "value": "${JGROUPS_ENCRYPT_NAME}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_PASSWORD", +                                        "value": "${JGROUPS_ENCRYPT_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "datagrid-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            }, +                            { +                                "name": "datagrid-jgroups-keystore-volume", +                                "secret": { +                                    "secretName": "${JGROUPS_ENCRYPT_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-postgresql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "postgresql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-postgresql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-postgresql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-postgresql", +                                "image": "postgresql", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 5432, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "POSTGRESQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_MAX_CONNECTIONS", +                                        "value": "${POSTGRESQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_SHARED_BUFFERS", +                                        "value": "${POSTGRESQL_SHARED_BUFFERS}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/decisionserver62-amq-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/decisionserver62-amq-s2i.json new file mode 100644 index 000000000..432fa9ebb --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/decisionserver62-amq-s2i.json @@ -0,0 +1,684 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for BRMS Realtime Decision Server 6 A-MQ applications built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "decisionserver,amq,java,messaging,jboss,xpaas", +            "version": "1.3.0" +        }, +        "name": "decisionserver62-amq-s2i" +    }, +    "labels": { +        "template": "decisionserver62-amq-s2i", +        "xpaas": "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The KIE Container deployment configuration in format: containerId=groupId:artifactId:version|c2=g2:a2:v2", +            "name": "KIE_CONTAINER_DEPLOYMENT", +            "value": "HelloRulesContainer=org.openshift.quickstarts:decisionserver-hellorules:1.3.0-SNAPSHOT", +            "required": false +        }, +        { +            "description": "The user name to access the KIE Server REST or JMS interface.", +            "name": "KIE_SERVER_USER", +            "value": "kieserver", +            "required": false +        }, +        { +            "description": "The password to access the KIE Server REST or JMS interface. Must be different than username; must not be root, admin, or administrator; must contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), and 1 non-alphanumeric symbol(s).", +            "name": "KIE_SERVER_PASSWORD", +            "from": "[a-zA-Z]{6}[0-9]{1}!", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "JAAS LoginContext domain that shall be used to authenticate users when using JMS.", +            "name": "KIE_SERVER_DOMAIN", +            "value": "other", +            "required": false +        }, +        { +            "description": "JNDI name of response queue for JMS.", +            "name": "KIE_SERVER_JMS_QUEUES_RESPONSE", +            "value": "queue/KIE.SERVER.RESPONSE", +            "required": false +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "kie-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts.git", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "master", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "decisionserver/hellorules", +            "required": false +        }, +        { +            "description": "JNDI name for connection factory used by applications to connect to the broker, e.g. java:/JmsXA", +            "name": "MQ_JNDI", +            "value": "java:/JmsXA", +            "required": false +        }, +        { +            "description": "Broker protocols to configure, separated by commas. Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`. Only `openwire` is supported by EAP.", +            "name": "MQ_PROTOCOL", +            "value": "openwire", +            "required": false +        }, +        { +            "description": "Queue names, separated by commas. These queues will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.", +            "name": "MQ_QUEUES", +            "value": "KIE.SERVER.REQUEST,KIE.SERVER.RESPONSE", +            "required": false +        }, +        { +            "description": "Topic names, separated by commas. These topics will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.", +            "name": "MQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "decisionserver-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "jboss", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "mykeystorepass", +            "required": false +        }, +        { +            "description": "User name for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", +            "name": "MQ_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "Password for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", +            "name": "MQ_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "User name for broker admin. If left empty, it will be generated.", +            "name": "AMQ_ADMIN_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Password for broker admin. If left empty, it will be generated.", +            "name": "AMQ_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's HTTP port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's HTTPS port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 61616, +                        "targetPort": 61616 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-tcp", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's OpenWire port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's HTTP service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's HTTPS service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "env": [ +                            { +                                "name": "KIE_CONTAINER_DEPLOYMENT", +                                "value": "${KIE_CONTAINER_DEPLOYMENT}" +                            } +                        ], +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-decisionserver62-openshift:1.3" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "decisionserver-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "decisionserver-keystore-volume", +                                        "mountPath": "/etc/decisionserver-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "KIE_CONTAINER_DEPLOYMENT", +                                        "value": "${KIE_CONTAINER_DEPLOYMENT}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_USER", +                                        "value": "${KIE_SERVER_USER}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PASSWORD", +                                        "value": "${KIE_SERVER_PASSWORD}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_DOMAIN", +                                        "value": "${KIE_SERVER_DOMAIN}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_JMS_QUEUES_RESPONSE", +                                        "value": "${KIE_SERVER_JMS_QUEUES_RESPONSE}" +                                    }, +                                    { +                                        "name": "MQ_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-amq=MQ" +                                    }, +                                    { +                                        "name": "MQ_JNDI", +                                        "value": "${MQ_JNDI}" +                                    }, +                                    { +                                        "name": "MQ_USERNAME", +                                        "value": "${MQ_USERNAME}" +                                    }, +                                    { +                                        "name": "MQ_PASSWORD", +                                        "value": "${MQ_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_PROTOCOL", +                                        "value": "tcp" +                                    }, +                                    { +                                        "name": "MQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "MQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/decisionserver-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "decisionserver-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-amq", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-amq" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-amq-62:1.2" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-amq", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-amq", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-amq", +                                "image": "jboss-amq-62", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/amq/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "amqp", +                                        "containerPort": 5672, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "amqp-ssl", +                                        "containerPort": 5671, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "mqtt", +                                        "containerPort": 1883, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "stomp", +                                        "containerPort": 61613, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "stomp-ssl", +                                        "containerPort": 61612, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "tcp", +                                        "containerPort": 61616, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "tcp-ssl", +                                        "containerPort": 61617, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "AMQ_USER", +                                        "value": "${MQ_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_PASSWORD", +                                        "value": "${MQ_PASSWORD}" +                                    }, +                                    { +                                        "name": "AMQ_TRANSPORTS", +                                        "value": "${MQ_PROTOCOL}" +                                    }, +                                    { +                                        "name": "AMQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "AMQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "AMQ_ADMIN_USERNAME", +                                        "value": "${AMQ_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_ADMIN_PASSWORD", +                                        "value": "${AMQ_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/decisionserver62-basic-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/decisionserver62-basic-s2i.json new file mode 100644 index 000000000..a4dc1e302 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/decisionserver62-basic-s2i.json @@ -0,0 +1,344 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for BRMS Realtime Decision Server 6 applications built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "decisionserver,java,jboss,xpaas", +            "version": "1.3.0" +        }, +        "name": "decisionserver62-basic-s2i" +    }, +    "labels": { +        "template": "decisionserver62-basic-s2i", +        "xpaas": "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The KIE Container deployment configuration in format: containerId=groupId:artifactId:version|c2=g2:a2:v2", +            "name": "KIE_CONTAINER_DEPLOYMENT", +            "value": "HelloRulesContainer=org.openshift.quickstarts:decisionserver-hellorules:1.3.0-SNAPSHOT", +            "required": false +        }, +        { +            "description": "The user name to access the KIE Server REST or JMS interface.", +            "name": "KIE_SERVER_USER", +            "value": "kieserver", +            "required": false +        }, +        { +            "description": "The password to access the KIE Server REST or JMS interface. Must be different than username; must not be root, admin, or administrator; must contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), and 1 non-alphanumeric symbol(s).", +            "name": "KIE_SERVER_PASSWORD", +            "from": "[a-zA-Z]{6}[0-9]{1}!", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "kie-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts.git", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "master", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "decisionserver/hellorules", +            "required": false +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "env": [ +                            { +                                "name": "KIE_CONTAINER_DEPLOYMENT", +                                "value": "${KIE_CONTAINER_DEPLOYMENT}" +                            } +                        ], +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-decisionserver62-openshift:1.3" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "KIE_CONTAINER_DEPLOYMENT", +                                        "value": "${KIE_CONTAINER_DEPLOYMENT}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_USER", +                                        "value": "${KIE_SERVER_USER}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PASSWORD", +                                        "value": "${KIE_SERVER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/decisionserver62-https-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/decisionserver62-https-s2i.json new file mode 100644 index 000000000..c6910ae18 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/decisionserver62-https-s2i.json @@ -0,0 +1,478 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for BRMS Realtime Decision Server 6 HTTPS applications built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "decisionserver,java,jboss,xpaas", +            "version": "1.3.0" +        }, +        "name": "decisionserver62-https-s2i" +    }, +    "labels": { +        "template": "decisionserver62-https-s2i", +        "xpaas": "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The KIE Container deployment configuration in format: containerId=groupId:artifactId:version|c2=g2:a2:v2", +            "name": "KIE_CONTAINER_DEPLOYMENT", +            "value": "HelloRulesContainer=org.openshift.quickstarts:decisionserver-hellorules:1.3.0-SNAPSHOT", +            "required": false +        }, +        { +            "description": "The protocol to access the KIE Server REST interface.", +            "name": "KIE_SERVER_PROTOCOL", +            "value": "https", +            "required": false +        }, +        { +            "description": "The port to access the KIE Server REST interface.", +            "name": "KIE_SERVER_PORT", +            "value": "8443", +            "required": false +        }, +        { +            "description": "The user name to access the KIE Server REST or JMS interface.", +            "name": "KIE_SERVER_USER", +            "value": "kieserver", +            "required": false +        }, +        { +            "description": "The password to access the KIE Server REST or JMS interface. Must be different than username; must not be root, admin, or administrator; must contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), and 1 non-alphanumeric symbol(s).", +            "name": "KIE_SERVER_PASSWORD", +            "from": "[a-zA-Z]{6}[0-9]{1}!", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "kie-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts.git", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "master", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "decisionserver/hellorules", +            "required": false +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "decisionserver-app-secret", +            "required": true +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "jboss", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "mykeystorepass", +            "required": false +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "env": [ +                            { +                                "name": "KIE_CONTAINER_DEPLOYMENT", +                                "value": "${KIE_CONTAINER_DEPLOYMENT}" +                            } +                        ], +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-decisionserver62-openshift:1.3" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "decisionserver-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "decisionserver-keystore-volume", +                                        "mountPath": "/etc/decisionserver-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "KIE_CONTAINER_DEPLOYMENT", +                                        "value": "${KIE_CONTAINER_DEPLOYMENT}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PROTOCOL", +                                        "value": "${KIE_SERVER_PROTOCOL}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PORT", +                                        "value": "${KIE_SERVER_PORT}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_USER", +                                        "value": "${KIE_SERVER_USER}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PASSWORD", +                                        "value": "${KIE_SERVER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/decisionserver-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "decisionserver-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-amq-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-amq-persistent-s2i.json new file mode 100644 index 000000000..4b38dade3 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-amq-persistent-s2i.json @@ -0,0 +1,745 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 6 A-MQ applications with persistent storage built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "eap,amq,javaee,java,messaging,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "eap64-amq-persistent-s2i" +    }, +    "labels": { +        "template": "eap64-amq-persistent-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-developer/jboss-eap-quickstarts.git", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "6.4.x", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "helloworld-mdb", +            "required": false +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "required": true +        }, +        { +            "description": "JNDI name for connection factory used by applications to connect to the broker, e.g. java:/ConnectionFactory", +            "name": "MQ_JNDI", +            "value": "java:/ConnectionFactory", +            "required": false +        }, +        { +            "description": "Broker protocols to configure, separated by commas. Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`. Only `openwire` is supported by EAP.", +            "name": "MQ_PROTOCOL", +            "value": "openwire", +            "required": false +        }, +        { +            "description": "Queue names, separated by commas. These queues will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.", +            "name": "MQ_QUEUES", +            "value": "HELLOWORLDMDBQueue", +            "required": false +        }, +        { +            "description": "Topic names, separated by commas. These topics will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.", +            "name": "MQ_TOPICS", +            "value": "HELLOWORLDMDBTopic", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "eap-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "User name for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", +            "name": "MQ_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "Password for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", +            "name": "MQ_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "User name for broker admin. If left empty, it will be generated.", +            "name": "AMQ_ADMIN_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Password for broker admin. If left empty, it will be generated.", +            "name": "AMQ_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "JGROUPS_ENCRYPT_SECRET", +            "value": "eap-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "JGROUPS_ENCRYPT_KEYSTORE", +            "value": "jgroups.jceks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "JGROUPS_ENCRYPT_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's HTTP port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's HTTPS port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 61616, +                        "targetPort": 61616 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-tcp", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's OpenWire port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's HTTP service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's HTTPS service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-eap64-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "name": "eap-jgroups-keystore-volume", +                                        "mountPath": "/etc/jgroups-encrypt-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MQ_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-amq=MQ" +                                    }, +                                    { +                                        "name": "MQ_JNDI", +                                        "value": "${MQ_JNDI}" +                                    }, +                                    { +                                        "name": "MQ_USERNAME", +                                        "value": "${MQ_USERNAME}" +                                    }, +                                    { +                                        "name": "MQ_PASSWORD", +                                        "value": "${MQ_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_PROTOCOL", +                                        "value": "tcp" +                                    }, +                                    { +                                        "name": "MQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "MQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_SECRET", +                                        "value": "${JGROUPS_ENCRYPT_SECRET}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE_DIR", +                                        "value": "/etc/jgroups-encrypt-secret-volume" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE", +                                        "value": "${JGROUPS_ENCRYPT_KEYSTORE}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_NAME", +                                        "value": "${JGROUPS_ENCRYPT_NAME}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_PASSWORD", +                                        "value": "${JGROUPS_ENCRYPT_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            }, +                            { +                                "name": "eap-jgroups-keystore-volume", +                                "secret": { +                                    "secretName": "${JGROUPS_ENCRYPT_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-amq", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-amq" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-amq-62:1.2" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-amq", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-amq", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-amq", +                                "image": "jboss-amq-62", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/amq/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "amqp", +                                        "containerPort": 5672, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "amqp-ssl", +                                        "containerPort": 5671, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "mqtt", +                                        "containerPort": 1883, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "stomp", +                                        "containerPort": 61613, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "stomp-ssl", +                                        "containerPort": 61612, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "tcp", +                                        "containerPort": 61616, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "tcp-ssl", +                                        "containerPort": 61617, +                                        "protocol": "TCP" +                                    } +                                ], +                                "volumeMounts": [ +                                    { +                                        "mountPath": "/opt/amq/data/kahadb", +                                        "name": "${APPLICATION_NAME}-amq-pvol" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "AMQ_USER", +                                        "value": "${MQ_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_PASSWORD", +                                        "value": "${MQ_PASSWORD}" +                                    }, +                                    { +                                        "name": "AMQ_TRANSPORTS", +                                        "value": "${MQ_PROTOCOL}" +                                    }, +                                    { +                                        "name": "AMQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "AMQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "AMQ_ADMIN_USERNAME", +                                        "value": "${AMQ_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_ADMIN_PASSWORD", +                                        "value": "${AMQ_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "${APPLICATION_NAME}-amq-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-amq-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ +                    "ReadWriteOnce" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-amq-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-amq-s2i.json new file mode 100644 index 000000000..d321af9c9 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-amq-s2i.json @@ -0,0 +1,705 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 6 A-MQ applications built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "eap,amq,javaee,java,messaging,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "eap64-amq-s2i" +    }, +    "labels": { +        "template": "eap64-amq-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-developer/jboss-eap-quickstarts.git", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "6.4.x", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "helloworld-mdb", +            "required": false +        }, +        { +            "description": "JNDI name for connection factory used by applications to connect to the broker, e.g. java:/ConnectionFactory", +            "name": "MQ_JNDI", +            "value": "java:/ConnectionFactory", +            "required": false +        }, +        { +            "description": "Broker protocols to configure, separated by commas. Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`. Only `openwire` is supported by EAP.", +            "name": "MQ_PROTOCOL", +            "value": "openwire", +            "required": false +        }, +        { +            "description": "Queue names, separated by commas. These queues will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.", +            "name": "MQ_QUEUES", +            "value": "HELLOWORLDMDBQueue", +            "required": false +        }, +        { +            "description": "Topic names, separated by commas. These topics will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.", +            "name": "MQ_TOPICS", +            "value": "HELLOWORLDMDBTopic", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "eap-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "User name for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", +            "name": "MQ_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "Password for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", +            "name": "MQ_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "User name for broker admin. If left empty, it will be generated.", +            "name": "AMQ_ADMIN_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Password for broker admin. If left empty, it will be generated.", +            "name": "AMQ_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "JGROUPS_ENCRYPT_SECRET", +            "value": "eap-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "JGROUPS_ENCRYPT_KEYSTORE", +            "value": "jgroups.jceks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "JGROUPS_ENCRYPT_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's HTTP port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's HTTPS port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 61616, +                        "targetPort": 61616 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-tcp", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's OpenWire port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's HTTP service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's HTTPS service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-eap64-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "name": "eap-jgroups-keystore-volume", +                                        "mountPath": "/etc/jgroups-encrypt-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MQ_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-amq=MQ" +                                    }, +                                    { +                                        "name": "MQ_JNDI", +                                        "value": "${MQ_JNDI}" +                                    }, +                                    { +                                        "name": "MQ_USERNAME", +                                        "value": "${MQ_USERNAME}" +                                    }, +                                    { +                                        "name": "MQ_PASSWORD", +                                        "value": "${MQ_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_PROTOCOL", +                                        "value": "tcp" +                                    }, +                                    { +                                        "name": "MQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "MQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_SECRET", +                                        "value": "${JGROUPS_ENCRYPT_SECRET}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE_DIR", +                                        "value": "/etc/jgroups-encrypt-secret-volume" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE", +                                        "value": "${JGROUPS_ENCRYPT_KEYSTORE}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_NAME", +                                        "value": "${JGROUPS_ENCRYPT_NAME}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_PASSWORD", +                                        "value": "${JGROUPS_ENCRYPT_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            }, +                            { +                                "name": "eap-jgroups-keystore-volume", +                                "secret": { +                                    "secretName": "${JGROUPS_ENCRYPT_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-amq", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-amq" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-amq-62:1.2" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-amq", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-amq", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-amq", +                                "image": "jboss-amq-62", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/amq/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "amqp", +                                        "containerPort": 5672, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "amqp-ssl", +                                        "containerPort": 5671, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "mqtt", +                                        "containerPort": 1883, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "stomp", +                                        "containerPort": 61613, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "stomp-ssl", +                                        "containerPort": 61612, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "tcp", +                                        "containerPort": 61616, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "tcp-ssl", +                                        "containerPort": 61617, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "AMQ_USER", +                                        "value": "${MQ_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_PASSWORD", +                                        "value": "${MQ_PASSWORD}" +                                    }, +                                    { +                                        "name": "AMQ_TRANSPORTS", +                                        "value": "${MQ_PROTOCOL}" +                                    }, +                                    { +                                        "name": "AMQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "AMQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "AMQ_ADMIN_USERNAME", +                                        "value": "${AMQ_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_ADMIN_PASSWORD", +                                        "value": "${AMQ_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-basic-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-basic-s2i.json new file mode 100644 index 000000000..2e3849e2a --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-basic-s2i.json @@ -0,0 +1,330 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-jboss", +            "description": "Application template for EAP 6 applications built using S2I.", +            "tags": "eap,javaee,java,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "eap64-basic-s2i" +    }, +    "labels": { +        "template": "eap64-basic-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-developer/jboss-eap-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "6.4.x", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "kitchensink", +            "required": false +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-eap64-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-https-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-https-s2i.json new file mode 100644 index 000000000..54514cb6b --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-https-s2i.json @@ -0,0 +1,499 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-jboss", +            "description": "Application template for EAP 6 applications built using S2I.", +            "tags": "eap,javaee,java,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "eap64-https-s2i" +    }, +    "labels": { +        "template": "eap64-https-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-developer/jboss-eap-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "6.4.x", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "kitchensink", +            "required": false +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "eap-app-secret", +            "required": true +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "JGROUPS_ENCRYPT_SECRET", +            "value": "eap-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "JGROUPS_ENCRYPT_KEYSTORE", +            "value": "jgroups.jceks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "JGROUPS_ENCRYPT_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-eap64-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "name": "eap-jgroups-keystore-volume", +                                        "mountPath": "/etc/jgroups-encrypt-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_SECRET", +                                        "value": "${JGROUPS_ENCRYPT_SECRET}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE_DIR", +                                        "value": "/etc/jgroups-encrypt-secret-volume" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE", +                                        "value": "${JGROUPS_ENCRYPT_KEYSTORE}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_NAME", +                                        "value": "${JGROUPS_ENCRYPT_NAME}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_PASSWORD", +                                        "value": "${JGROUPS_ENCRYPT_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            }, +                            { +                                "name": "eap-jgroups-keystore-volume", +                                "secret": { +                                    "secretName": "${JGROUPS_ENCRYPT_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-mongodb-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-mongodb-persistent-s2i.json new file mode 100644 index 000000000..c958bb1c4 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-mongodb-persistent-s2i.json @@ -0,0 +1,755 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 6 MongoDB applications with persistent storage built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "eap,mongodb,javaee,java,database,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "eap64-mongodb-persistent-s2i" +    }, +    "labels": { +        "template": "eap64-mongodb-persistent-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-mongodb", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "required": true +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "eap-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Disable data file preallocation.", +            "name": "MONGODB_NOPREALLOC", +            "required": false +        }, +        { +            "description": "Set MongoDB to use a smaller default data file size.", +            "name": "MONGODB_SMALLFILES", +            "required": false +        }, +        { +            "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.", +            "name": "MONGODB_QUIET", +            "required": false +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database admin password", +            "name": "DB_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "JGROUPS_ENCRYPT_SECRET", +            "value": "eap-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "JGROUPS_ENCRYPT_KEYSTORE", +            "value": "jgroups.jceks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "JGROUPS_ENCRYPT_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 27017, +                        "targetPort": 27017 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mongodb", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-eap64-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "name": "eap-jgroups-keystore-volume", +                                        "mountPath": "/etc/jgroups-encrypt-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mongodb=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "DB_ADMIN_PASSWORD", +                                        "value": "${DB_ADMIN_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_SECRET", +                                        "value": "${JGROUPS_ENCRYPT_SECRET}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE_DIR", +                                        "value": "/etc/jgroups-encrypt-secret-volume" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE", +                                        "value": "${JGROUPS_ENCRYPT_KEYSTORE}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_NAME", +                                        "value": "${JGROUPS_ENCRYPT_NAME}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_PASSWORD", +                                        "value": "${JGROUPS_ENCRYPT_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            }, +                            { +                                "name": "eap-jgroups-keystore-volume", +                                "secret": { +                                    "secretName": "${JGROUPS_ENCRYPT_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mongodb", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mongodb" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mongodb:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mongodb", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mongodb", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mongodb", +                                "image": "mongodb", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 27017, +                                        "protocol": "TCP" +                                    } +                                ], +                                "volumeMounts": [ +                                    { +                                        "mountPath": "/var/lib/mongodb/data", +                                        "name": "${APPLICATION_NAME}-mongodb-pvol" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MONGODB_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MONGODB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MONGODB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MONGODB_ADMIN_PASSWORD", +                                        "value": "${DB_ADMIN_PASSWORD}" +                                    }, +                                    { +                                        "name": "MONGODB_NOPREALLOC", +                                        "value": "${MONGODB_NOPREALLOC}" +                                    }, +                                    { +                                        "name": "MONGODB_SMALLFILES", +                                        "value": "${MONGODB_SMALLFILES}" +                                    }, +                                    { +                                        "name": "MONGODB_QUIET", +                                        "value": "${MONGODB_QUIET}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "${APPLICATION_NAME}-mongodb-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-mongodb-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-mongodb-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ +                    "ReadWriteOnce" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-mongodb-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-mongodb-s2i.json new file mode 100644 index 000000000..6c14dfaa0 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-mongodb-s2i.json @@ -0,0 +1,715 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 6 MongoDB applications built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "eap,mongodb,javaee,java,database,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "eap64-mongodb-s2i" +    }, +    "labels": { +        "template": "eap64-mongodb-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-mongodb", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "eap-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Disable data file preallocation.", +            "name": "MONGODB_NOPREALLOC", +            "required": false +        }, +        { +            "description": "Set MongoDB to use a smaller default data file size.", +            "name": "MONGODB_SMALLFILES", +            "required": false +        }, +        { +            "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.", +            "name": "MONGODB_QUIET", +            "required": false +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database admin password", +            "name": "DB_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "JGROUPS_ENCRYPT_SECRET", +            "value": "eap-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "JGROUPS_ENCRYPT_KEYSTORE", +            "value": "jgroups.jceks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "JGROUPS_ENCRYPT_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 27017, +                        "targetPort": 27017 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mongodb", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-eap64-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "name": "eap-jgroups-keystore-volume", +                                        "mountPath": "/etc/jgroups-encrypt-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mongodb=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "DB_ADMIN_PASSWORD", +                                        "value": "${DB_ADMIN_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_SECRET", +                                        "value": "${JGROUPS_ENCRYPT_SECRET}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE_DIR", +                                        "value": "/etc/jgroups-encrypt-secret-volume" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE", +                                        "value": "${JGROUPS_ENCRYPT_KEYSTORE}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_NAME", +                                        "value": "${JGROUPS_ENCRYPT_NAME}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_PASSWORD", +                                        "value": "${JGROUPS_ENCRYPT_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            }, +                            { +                                "name": "eap-jgroups-keystore-volume", +                                "secret": { +                                    "secretName": "${JGROUPS_ENCRYPT_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mongodb", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mongodb" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mongodb:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mongodb", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mongodb", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mongodb", +                                "image": "mongodb", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 27017, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MONGODB_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MONGODB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MONGODB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MONGODB_ADMIN_PASSWORD", +                                        "value": "${DB_ADMIN_PASSWORD}" +                                    }, +                                    { +                                        "name": "MONGODB_NOPREALLOC", +                                        "value": "${MONGODB_NOPREALLOC}" +                                    }, +                                    { +                                        "name": "MONGODB_SMALLFILES", +                                        "value": "${MONGODB_SMALLFILES}" +                                    }, +                                    { +                                        "name": "MONGODB_QUIET", +                                        "value": "${MONGODB_QUIET}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-mysql-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-mysql-persistent-s2i.json new file mode 100644 index 000000000..d2631580b --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-mysql-persistent-s2i.json @@ -0,0 +1,762 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 6 MySQL applications with persistent storage built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "eap,mysql,javaee,java,database,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "eap64-mysql-persistent-s2i" +    }, +    "labels": { +        "template": "eap64-mysql-persistent-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-jdbc", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mysql", +            "name": "DB_JNDI", +            "value": "java:jboss/datasources/TodoListDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "required": true +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "eap-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Sets how the table names are stored and compared.", +            "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +            "required": false +        }, +        { +            "description": "The maximum permitted number of simultaneous client connections.", +            "name": "MYSQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "The minimum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MIN_WORD_LEN", +            "required": false +        }, +        { +            "description": "The maximum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MAX_WORD_LEN", +            "required": false +        }, +        { +            "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", +            "name": "MYSQL_AIO", +            "required": false +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "JGROUPS_ENCRYPT_SECRET", +            "value": "eap-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "JGROUPS_ENCRYPT_KEYSTORE", +            "value": "jgroups.jceks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "JGROUPS_ENCRYPT_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 3306, +                        "targetPort": 3306 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-eap64-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "name": "eap-jgroups-keystore-volume", +                                        "mountPath": "/etc/jgroups-encrypt-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "TX_DATABASE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_SECRET", +                                        "value": "${JGROUPS_ENCRYPT_SECRET}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE_DIR", +                                        "value": "/etc/jgroups-encrypt-secret-volume" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE", +                                        "value": "${JGROUPS_ENCRYPT_KEYSTORE}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_NAME", +                                        "value": "${JGROUPS_ENCRYPT_NAME}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_PASSWORD", +                                        "value": "${JGROUPS_ENCRYPT_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            }, +                            { +                                "name": "eap-jgroups-keystore-volume", +                                "secret": { +                                    "secretName": "${JGROUPS_ENCRYPT_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mysql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mysql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mysql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mysql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mysql", +                                "image": "mysql", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 3306, +                                        "protocol": "TCP" +                                    } +                                ], +                                "volumeMounts": [ +                                    { +                                        "mountPath": "/var/lib/mysql/data", +                                        "name": "${APPLICATION_NAME}-mysql-pvol" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MYSQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MYSQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MYSQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +                                        "value": "${MYSQL_LOWER_CASE_TABLE_NAMES}" +                                    }, +                                    { +                                        "name": "MYSQL_MAX_CONNECTIONS", +                                        "value": "${MYSQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MIN_WORD_LEN", +                                        "value": "${MYSQL_FT_MIN_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MAX_WORD_LEN", +                                        "value": "${MYSQL_FT_MAX_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_AIO", +                                        "value": "${MYSQL_AIO}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "${APPLICATION_NAME}-mysql-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-mysql-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ +                    "ReadWriteOnce" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-mysql-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-mysql-s2i.json new file mode 100644 index 000000000..ba6a32fec --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-mysql-s2i.json @@ -0,0 +1,722 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 6 MySQL applications built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "eap,mysql,javaee,java,database,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "eap64-mysql-s2i" +    }, +    "labels": { +        "template": "eap64-mysql-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-jdbc", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mysql", +            "name": "DB_JNDI", +            "value": "java:jboss/datasources/TodoListDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "eap-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Sets how the table names are stored and compared.", +            "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +            "required": false +        }, +        { +            "description": "The maximum permitted number of simultaneous client connections.", +            "name": "MYSQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "The minimum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MIN_WORD_LEN", +            "required": false +        }, +        { +            "description": "The maximum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MAX_WORD_LEN", +            "required": false +        }, +        { +            "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", +            "name": "MYSQL_AIO", +            "required": false +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "JGROUPS_ENCRYPT_SECRET", +            "value": "eap-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "JGROUPS_ENCRYPT_KEYSTORE", +            "value": "jgroups.jceks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "JGROUPS_ENCRYPT_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 3306, +                        "targetPort": 3306 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-eap64-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "name": "eap-jgroups-keystore-volume", +                                        "mountPath": "/etc/jgroups-encrypt-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "TX_DATABASE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_SECRET", +                                        "value": "${JGROUPS_ENCRYPT_SECRET}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE_DIR", +                                        "value": "/etc/jgroups-encrypt-secret-volume" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE", +                                        "value": "${JGROUPS_ENCRYPT_KEYSTORE}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_NAME", +                                        "value": "${JGROUPS_ENCRYPT_NAME}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_PASSWORD", +                                        "value": "${JGROUPS_ENCRYPT_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            }, +                            { +                                "name": "eap-jgroups-keystore-volume", +                                "secret": { +                                    "secretName": "${JGROUPS_ENCRYPT_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mysql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mysql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mysql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mysql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mysql", +                                "image": "mysql", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 3306, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MYSQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MYSQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MYSQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +                                        "value": "${MYSQL_LOWER_CASE_TABLE_NAMES}" +                                    }, +                                    { +                                        "name": "MYSQL_MAX_CONNECTIONS", +                                        "value": "${MYSQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MIN_WORD_LEN", +                                        "value": "${MYSQL_FT_MIN_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MAX_WORD_LEN", +                                        "value": "${MYSQL_FT_MAX_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_AIO", +                                        "value": "${MYSQL_AIO}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-postgresql-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-postgresql-persistent-s2i.json new file mode 100644 index 000000000..670260769 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-postgresql-persistent-s2i.json @@ -0,0 +1,735 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 6 PostgreSQL applications with persistent storage built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "eap,postgresql,javaee,java,database,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "eap64-postgresql-persistent-s2i" +    }, +    "labels": { +        "template": "eap64-postgresql-persistent-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-jdbc", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/postgresql", +            "name": "DB_JNDI", +            "value": "java:jboss/datasources/TodoListDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "required": true +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "eap-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", +            "name": "POSTGRESQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", +            "name": "POSTGRESQL_SHARED_BUFFERS", +            "required": false +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "JGROUPS_ENCRYPT_SECRET", +            "value": "eap-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "JGROUPS_ENCRYPT_KEYSTORE", +            "value": "jgroups.jceks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "JGROUPS_ENCRYPT_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 5432, +                        "targetPort": 5432 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-eap64-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "name": "eap-jgroups-keystore-volume", +                                        "mountPath": "/etc/jgroups-encrypt-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "TX_DATABASE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_SECRET", +                                        "value": "${JGROUPS_ENCRYPT_SECRET}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE_DIR", +                                        "value": "/etc/jgroups-encrypt-secret-volume" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE", +                                        "value": "${JGROUPS_ENCRYPT_KEYSTORE}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_NAME", +                                        "value": "${JGROUPS_ENCRYPT_NAME}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_PASSWORD", +                                        "value": "${JGROUPS_ENCRYPT_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            }, +                            { +                                "name": "eap-jgroups-keystore-volume", +                                "secret": { +                                    "secretName": "${JGROUPS_ENCRYPT_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-postgresql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "postgresql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-postgresql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-postgresql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-postgresql", +                                "image": "postgresql", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 5432, +                                        "protocol": "TCP" +                                    } +                                ], +                                "volumeMounts": [ +                                    { +                                        "mountPath": "/var/lib/pgsql/data", +                                        "name": "${APPLICATION_NAME}-postgresql-pvol" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "POSTGRESQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_MAX_CONNECTIONS", +                                        "value": "${POSTGRESQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_SHARED_BUFFERS", +                                        "value": "${POSTGRESQL_SHARED_BUFFERS}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "${APPLICATION_NAME}-postgresql-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-postgresql-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ +                    "ReadWriteOnce" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-postgresql-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-postgresql-s2i.json new file mode 100644 index 000000000..822731335 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap64-postgresql-s2i.json @@ -0,0 +1,695 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 6 PostgreSQL applications built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "eap,postgresql,javaee,java,database,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "eap64-postgresql-s2i" +    }, +    "labels": { +        "template": "eap64-postgresql-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-jdbc", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/postgresql", +            "name": "DB_JNDI", +            "value": "java:jboss/datasources/TodoListDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "eap-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", +            "name": "POSTGRESQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", +            "name": "POSTGRESQL_SHARED_BUFFERS", +            "required": false +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "JGROUPS_ENCRYPT_SECRET", +            "value": "eap-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "JGROUPS_ENCRYPT_KEYSTORE", +            "value": "jgroups.jceks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "JGROUPS_ENCRYPT_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 5432, +                        "targetPort": 5432 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-eap64-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "name": "eap-jgroups-keystore-volume", +                                        "mountPath": "/etc/jgroups-encrypt-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "TX_DATABASE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_SECRET", +                                        "value": "${JGROUPS_ENCRYPT_SECRET}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE_DIR", +                                        "value": "/etc/jgroups-encrypt-secret-volume" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE", +                                        "value": "${JGROUPS_ENCRYPT_KEYSTORE}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_NAME", +                                        "value": "${JGROUPS_ENCRYPT_NAME}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_PASSWORD", +                                        "value": "${JGROUPS_ENCRYPT_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            }, +                            { +                                "name": "eap-jgroups-keystore-volume", +                                "secret": { +                                    "secretName": "${JGROUPS_ENCRYPT_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-postgresql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "postgresql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-postgresql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-postgresql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-postgresql", +                                "image": "postgresql", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 5432, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "POSTGRESQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_MAX_CONNECTIONS", +                                        "value": "${POSTGRESQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_SHARED_BUFFERS", +                                        "value": "${POSTGRESQL_SHARED_BUFFERS}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-basic-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-basic-s2i.json new file mode 100644 index 000000000..f704adce9 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-basic-s2i.json @@ -0,0 +1,330 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-jboss", +            "description": "Application template for EAP 7 applications built using S2I.", +            "tags": "eap,javaee,java,jboss,xpaas", +            "version": "1.3.0" +        }, +        "name": "eap70-basic-s2i" +    }, +    "labels": { +        "template": "eap70-basic-s2i", +        "xpaas": "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-developer/jboss-eap-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "7.0.x-develop", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "kitchensink", +            "required": false +        }, +        { +            "description": "Queue names", +            "name": "MQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "MQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "ActiveMQ cluster admin password", +            "name": "MQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-eap70-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "MQ_CLUSTER_PASSWORD", +                                        "value": "${MQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "MQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-https-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-https-s2i.json new file mode 100644 index 000000000..ca3d7146f --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-https-s2i.json @@ -0,0 +1,499 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-jboss", +            "description": "Application template for EAP 7 applications built using S2I.", +            "tags": "eap,javaee,java,jboss,xpaas", +            "version": "1.3.0" +        }, +        "name": "eap70-https-s2i" +    }, +    "labels": { +        "template": "eap70-https-s2i", +        "xpaas": "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-developer/jboss-eap-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "7.0.x-develop", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "kitchensink", +            "required": false +        }, +        { +            "description": "Queue names", +            "name": "MQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "MQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "eap7-app-secret", +            "required": true +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "ActiveMQ cluster admin password", +            "name": "MQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "JGROUPS_ENCRYPT_SECRET", +            "value": "eap7-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "JGROUPS_ENCRYPT_KEYSTORE", +            "value": "jgroups.jceks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "JGROUPS_ENCRYPT_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-eap70-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "name": "eap-jgroups-keystore-volume", +                                        "mountPath": "/etc/jgroups-encrypt-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_CLUSTER_PASSWORD", +                                        "value": "${MQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "MQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_SECRET", +                                        "value": "${JGROUPS_ENCRYPT_SECRET}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE_DIR", +                                        "value": "/etc/jgroups-encrypt-secret-volume" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE", +                                        "value": "${JGROUPS_ENCRYPT_KEYSTORE}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_NAME", +                                        "value": "${JGROUPS_ENCRYPT_NAME}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_PASSWORD", +                                        "value": "${JGROUPS_ENCRYPT_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            }, +                            { +                                "name": "eap-jgroups-keystore-volume", +                                "secret": { +                                    "secretName": "${JGROUPS_ENCRYPT_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-mongodb-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-mongodb-persistent-s2i.json new file mode 100644 index 000000000..00ddf7472 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-mongodb-persistent-s2i.json @@ -0,0 +1,755 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 7 MongoDB applications with persistent storage built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "eap,mongodb,javaee,java,database,jboss,xpaas", +            "version": "1.3.0" +        }, +        "name": "eap70-mongodb-persistent-s2i" +    }, +    "labels": { +        "template": "eap70-mongodb-persistent-s2i", +        "xpaas": "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-mongodb", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "required": true +        }, +        { +            "description": "Queue names", +            "name": "MQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "MQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "eap7-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Disable data file preallocation.", +            "name": "MONGODB_NOPREALLOC", +            "required": false +        }, +        { +            "description": "Set MongoDB to use a smaller default data file size.", +            "name": "MONGODB_SMALLFILES", +            "required": false +        }, +        { +            "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.", +            "name": "MONGODB_QUIET", +            "required": false +        }, +        { +            "description": "ActiveMQ cluster admin password", +            "name": "MQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database admin password", +            "name": "DB_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "JGROUPS_ENCRYPT_SECRET", +            "value": "eap7-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "JGROUPS_ENCRYPT_KEYSTORE", +            "value": "jgroups.jceks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "JGROUPS_ENCRYPT_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 27017, +                        "targetPort": 27017 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mongodb", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-eap70-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "name": "eap-jgroups-keystore-volume", +                                        "mountPath": "/etc/jgroups-encrypt-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mongodb=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "DB_ADMIN_PASSWORD", +                                        "value": "${DB_ADMIN_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_CLUSTER_PASSWORD", +                                        "value": "${MQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "MQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_SECRET", +                                        "value": "${JGROUPS_ENCRYPT_SECRET}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE_DIR", +                                        "value": "/etc/jgroups-encrypt-secret-volume" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE", +                                        "value": "${JGROUPS_ENCRYPT_KEYSTORE}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_NAME", +                                        "value": "${JGROUPS_ENCRYPT_NAME}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_PASSWORD", +                                        "value": "${JGROUPS_ENCRYPT_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            }, +                            { +                                "name": "eap-jgroups-keystore-volume", +                                "secret": { +                                    "secretName": "${JGROUPS_ENCRYPT_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mongodb", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mongodb" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mongodb:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mongodb", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mongodb", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mongodb", +                                "image": "mongodb", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 27017, +                                        "protocol": "TCP" +                                    } +                                ], +                                "volumeMounts": [ +                                    { +                                        "mountPath": "/var/lib/mongodb/data", +                                        "name": "${APPLICATION_NAME}-mongodb-pvol" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MONGODB_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MONGODB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MONGODB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MONGODB_ADMIN_PASSWORD", +                                        "value": "${DB_ADMIN_PASSWORD}" +                                    }, +                                    { +                                        "name": "MONGODB_NOPREALLOC", +                                        "value": "${MONGODB_NOPREALLOC}" +                                    }, +                                    { +                                        "name": "MONGODB_SMALLFILES", +                                        "value": "${MONGODB_SMALLFILES}" +                                    }, +                                    { +                                        "name": "MONGODB_QUIET", +                                        "value": "${MONGODB_QUIET}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "${APPLICATION_NAME}-mongodb-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-mongodb-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-mongodb-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ +                    "ReadWriteOnce" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-mongodb-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-mongodb-s2i.json new file mode 100644 index 000000000..cf2b1a86c --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-mongodb-s2i.json @@ -0,0 +1,715 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 7 MongoDB applications built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "eap,mongodb,javaee,java,database,jboss,xpaas", +            "version": "1.3.0" +        }, +        "name": "eap70-mongodb-s2i" +    }, +    "labels": { +        "template": "eap70-mongodb-s2i", +        "xpaas": "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-mongodb", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Queue names", +            "name": "MQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "MQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "eap7-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Disable data file preallocation.", +            "name": "MONGODB_NOPREALLOC", +            "required": false +        }, +        { +            "description": "Set MongoDB to use a smaller default data file size.", +            "name": "MONGODB_SMALLFILES", +            "required": false +        }, +        { +            "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.", +            "name": "MONGODB_QUIET", +            "required": false +        }, +        { +            "description": "ActiveMQ cluster admin password", +            "name": "MQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database admin password", +            "name": "DB_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "JGROUPS_ENCRYPT_SECRET", +            "value": "eap7-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "JGROUPS_ENCRYPT_KEYSTORE", +            "value": "jgroups.jceks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "JGROUPS_ENCRYPT_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 27017, +                        "targetPort": 27017 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mongodb", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-eap70-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "name": "eap-jgroups-keystore-volume", +                                        "mountPath": "/etc/jgroups-encrypt-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mongodb=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "DB_ADMIN_PASSWORD", +                                        "value": "${DB_ADMIN_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_CLUSTER_PASSWORD", +                                        "value": "${MQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "MQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_SECRET", +                                        "value": "${JGROUPS_ENCRYPT_SECRET}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE_DIR", +                                        "value": "/etc/jgroups-encrypt-secret-volume" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE", +                                        "value": "${JGROUPS_ENCRYPT_KEYSTORE}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_NAME", +                                        "value": "${JGROUPS_ENCRYPT_NAME}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_PASSWORD", +                                        "value": "${JGROUPS_ENCRYPT_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            }, +                            { +                                "name": "eap-jgroups-keystore-volume", +                                "secret": { +                                    "secretName": "${JGROUPS_ENCRYPT_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mongodb", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mongodb" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mongodb:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mongodb", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mongodb", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mongodb", +                                "image": "mongodb", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 27017, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MONGODB_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MONGODB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MONGODB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MONGODB_ADMIN_PASSWORD", +                                        "value": "${DB_ADMIN_PASSWORD}" +                                    }, +                                    { +                                        "name": "MONGODB_NOPREALLOC", +                                        "value": "${MONGODB_NOPREALLOC}" +                                    }, +                                    { +                                        "name": "MONGODB_SMALLFILES", +                                        "value": "${MONGODB_SMALLFILES}" +                                    }, +                                    { +                                        "name": "MONGODB_QUIET", +                                        "value": "${MONGODB_QUIET}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-mysql-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-mysql-persistent-s2i.json new file mode 100644 index 000000000..a12fec8fb --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-mysql-persistent-s2i.json @@ -0,0 +1,762 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 7 MySQL applications with persistent storage built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "eap,mysql,javaee,java,database,jboss,xpaas", +            "version": "1.3.0" +        }, +        "name": "eap70-mysql-persistent-s2i" +    }, +    "labels": { +        "template": "eap70-mysql-persistent-s2i", +        "xpaas": "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-jdbc", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mysql", +            "name": "DB_JNDI", +            "value": "java:jboss/datasources/TodoListDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "required": true +        }, +        { +            "description": "Queue names", +            "name": "MQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "MQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "eap7-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Sets how the table names are stored and compared.", +            "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +            "required": false +        }, +        { +            "description": "The maximum permitted number of simultaneous client connections.", +            "name": "MYSQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "The minimum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MIN_WORD_LEN", +            "required": false +        }, +        { +            "description": "The maximum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MAX_WORD_LEN", +            "required": false +        }, +        { +            "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", +            "name": "MYSQL_AIO", +            "required": false +        }, +        { +            "description": "ActiveMQ cluster admin password", +            "name": "MQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "JGROUPS_ENCRYPT_SECRET", +            "value": "eap7-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "JGROUPS_ENCRYPT_KEYSTORE", +            "value": "jgroups.jceks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "JGROUPS_ENCRYPT_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 3306, +                        "targetPort": 3306 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-eap70-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "name": "eap-jgroups-keystore-volume", +                                        "mountPath": "/etc/jgroups-encrypt-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "TX_DATABASE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_CLUSTER_PASSWORD", +                                        "value": "${MQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "MQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_SECRET", +                                        "value": "${JGROUPS_ENCRYPT_SECRET}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE_DIR", +                                        "value": "/etc/jgroups-encrypt-secret-volume" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE", +                                        "value": "${JGROUPS_ENCRYPT_KEYSTORE}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_NAME", +                                        "value": "${JGROUPS_ENCRYPT_NAME}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_PASSWORD", +                                        "value": "${JGROUPS_ENCRYPT_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            }, +                            { +                                "name": "eap-jgroups-keystore-volume", +                                "secret": { +                                    "secretName": "${JGROUPS_ENCRYPT_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mysql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mysql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mysql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mysql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mysql", +                                "image": "mysql", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 3306, +                                        "protocol": "TCP" +                                    } +                                ], +                                "volumeMounts": [ +                                    { +                                        "mountPath": "/var/lib/mysql/data", +                                        "name": "${APPLICATION_NAME}-mysql-pvol" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MYSQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MYSQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MYSQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +                                        "value": "${MYSQL_LOWER_CASE_TABLE_NAMES}" +                                    }, +                                    { +                                        "name": "MYSQL_MAX_CONNECTIONS", +                                        "value": "${MYSQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MIN_WORD_LEN", +                                        "value": "${MYSQL_FT_MIN_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MAX_WORD_LEN", +                                        "value": "${MYSQL_FT_MAX_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_AIO", +                                        "value": "${MYSQL_AIO}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "${APPLICATION_NAME}-mysql-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-mysql-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ +                    "ReadWriteOnce" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-mysql-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-mysql-s2i.json new file mode 100644 index 000000000..02721375a --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-mysql-s2i.json @@ -0,0 +1,722 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 7 MySQL applications built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "eap,mysql,javaee,java,database,jboss,xpaas", +            "version": "1.3.0" +        }, +        "name": "eap70-mysql-s2i" +    }, +    "labels": { +        "template": "eap70-mysql-s2i", +        "xpaas": "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-jdbc", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mysql", +            "name": "DB_JNDI", +            "value": "java:jboss/datasources/TodoListDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Queue names", +            "name": "MQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "MQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "eap7-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Sets how the table names are stored and compared.", +            "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +            "required": false +        }, +        { +            "description": "The maximum permitted number of simultaneous client connections.", +            "name": "MYSQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "The minimum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MIN_WORD_LEN", +            "required": false +        }, +        { +            "description": "The maximum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MAX_WORD_LEN", +            "required": false +        }, +        { +            "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", +            "name": "MYSQL_AIO", +            "required": false +        }, +        { +            "description": "ActiveMQ cluster admin password", +            "name": "MQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "JGROUPS_ENCRYPT_SECRET", +            "value": "eap7-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "JGROUPS_ENCRYPT_KEYSTORE", +            "value": "jgroups.jceks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "JGROUPS_ENCRYPT_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 3306, +                        "targetPort": 3306 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-eap70-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "name": "eap-jgroups-keystore-volume", +                                        "mountPath": "/etc/jgroups-encrypt-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "TX_DATABASE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_CLUSTER_PASSWORD", +                                        "value": "${MQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "MQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_SECRET", +                                        "value": "${JGROUPS_ENCRYPT_SECRET}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE_DIR", +                                        "value": "/etc/jgroups-encrypt-secret-volume" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE", +                                        "value": "${JGROUPS_ENCRYPT_KEYSTORE}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_NAME", +                                        "value": "${JGROUPS_ENCRYPT_NAME}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_PASSWORD", +                                        "value": "${JGROUPS_ENCRYPT_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            }, +                            { +                                "name": "eap-jgroups-keystore-volume", +                                "secret": { +                                    "secretName": "${JGROUPS_ENCRYPT_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mysql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mysql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mysql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mysql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mysql", +                                "image": "mysql", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 3306, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MYSQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MYSQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MYSQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +                                        "value": "${MYSQL_LOWER_CASE_TABLE_NAMES}" +                                    }, +                                    { +                                        "name": "MYSQL_MAX_CONNECTIONS", +                                        "value": "${MYSQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MIN_WORD_LEN", +                                        "value": "${MYSQL_FT_MIN_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MAX_WORD_LEN", +                                        "value": "${MYSQL_FT_MAX_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_AIO", +                                        "value": "${MYSQL_AIO}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-postgresql-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-postgresql-persistent-s2i.json new file mode 100644 index 000000000..7a9530355 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-postgresql-persistent-s2i.json @@ -0,0 +1,735 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 7 PostgreSQL applications with persistent storage built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "eap,postgresql,javaee,java,database,jboss,xpaas", +            "version": "1.3.0" +        }, +        "name": "eap70-postgresql-persistent-s2i" +    }, +    "labels": { +        "template": "eap70-postgresql-persistent-s2i", +        "xpaas": "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-jdbc", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/postgresql", +            "name": "DB_JNDI", +            "value": "java:jboss/datasources/TodoListDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "required": true +        }, +        { +            "description": "Queue names", +            "name": "MQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "MQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "eap7-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", +            "name": "POSTGRESQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", +            "name": "POSTGRESQL_SHARED_BUFFERS", +            "required": false +        }, +        { +            "description": "ActiveMQ cluster admin password", +            "name": "MQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "JGROUPS_ENCRYPT_SECRET", +            "value": "eap7-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "JGROUPS_ENCRYPT_KEYSTORE", +            "value": "jgroups.jceks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "JGROUPS_ENCRYPT_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 5432, +                        "targetPort": 5432 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-eap70-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "name": "eap-jgroups-keystore-volume", +                                        "mountPath": "/etc/jgroups-encrypt-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "TX_DATABASE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_CLUSTER_PASSWORD", +                                        "value": "${MQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "MQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_SECRET", +                                        "value": "${JGROUPS_ENCRYPT_SECRET}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE_DIR", +                                        "value": "/etc/jgroups-encrypt-secret-volume" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE", +                                        "value": "${JGROUPS_ENCRYPT_KEYSTORE}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_NAME", +                                        "value": "${JGROUPS_ENCRYPT_NAME}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_PASSWORD", +                                        "value": "${JGROUPS_ENCRYPT_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            }, +                            { +                                "name": "eap-jgroups-keystore-volume", +                                "secret": { +                                    "secretName": "${JGROUPS_ENCRYPT_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-postgresql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "postgresql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-postgresql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-postgresql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-postgresql", +                                "image": "postgresql", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 5432, +                                        "protocol": "TCP" +                                    } +                                ], +                                "volumeMounts": [ +                                    { +                                        "mountPath": "/var/lib/pgsql/data", +                                        "name": "${APPLICATION_NAME}-postgresql-pvol" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "POSTGRESQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_MAX_CONNECTIONS", +                                        "value": "${POSTGRESQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_SHARED_BUFFERS", +                                        "value": "${POSTGRESQL_SHARED_BUFFERS}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "${APPLICATION_NAME}-postgresql-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-postgresql-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ +                    "ReadWriteOnce" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-postgresql-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-postgresql-s2i.json new file mode 100644 index 000000000..4e85853f6 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/eap70-postgresql-s2i.json @@ -0,0 +1,695 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 7 PostgreSQL applications built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "eap,postgresql,javaee,java,database,jboss,xpaas", +            "version": "1.3.0" +        }, +        "name": "eap70-postgresql-s2i" +    }, +    "labels": { +        "template": "eap70-postgresql-s2i", +        "xpaas": "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-jdbc", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/postgresql", +            "name": "DB_JNDI", +            "value": "java:jboss/datasources/TodoListDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Queue names", +            "name": "MQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "MQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "eap7-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", +            "name": "POSTGRESQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", +            "name": "POSTGRESQL_SHARED_BUFFERS", +            "required": false +        }, +        { +            "description": "ActiveMQ cluster admin password", +            "name": "MQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "JGROUPS_ENCRYPT_SECRET", +            "value": "eap7-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "JGROUPS_ENCRYPT_KEYSTORE", +            "value": "jgroups.jceks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "JGROUPS_ENCRYPT_NAME", +            "value": "", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 5432, +                        "targetPort": 5432 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-eap70-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "name": "eap-jgroups-keystore-volume", +                                        "mountPath": "/etc/jgroups-encrypt-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "ping", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "TX_DATABASE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_LABELS", +                                        "value": "application=${APPLICATION_NAME}" +                                    }, +                                    { +                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE", +                                        "valueFrom": { +                                            "fieldRef": { +                                                "fieldPath": "metadata.namespace" +                                            } +                                        } +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_CLUSTER_PASSWORD", +                                        "value": "${MQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "MQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_SECRET", +                                        "value": "${JGROUPS_ENCRYPT_SECRET}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE_DIR", +                                        "value": "/etc/jgroups-encrypt-secret-volume" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_KEYSTORE", +                                        "value": "${JGROUPS_ENCRYPT_KEYSTORE}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_NAME", +                                        "value": "${JGROUPS_ENCRYPT_NAME}" +                                    }, +                                    { +                                        "name": "JGROUPS_ENCRYPT_PASSWORD", +                                        "value": "${JGROUPS_ENCRYPT_PASSWORD}" +                                    }, +                                    { +                                        "name": "JGROUPS_CLUSTER_PASSWORD", +                                        "value": "${JGROUPS_CLUSTER_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            }, +                            { +                                "name": "eap-jgroups-keystore-volume", +                                "secret": { +                                    "secretName": "${JGROUPS_ENCRYPT_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-postgresql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "postgresql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-postgresql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-postgresql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-postgresql", +                                "image": "postgresql", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 5432, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "POSTGRESQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_MAX_CONNECTIONS", +                                        "value": "${POSTGRESQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_SHARED_BUFFERS", +                                        "value": "${POSTGRESQL_SHARED_BUFFERS}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-basic-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-basic-s2i.json new file mode 100644 index 000000000..376f2f61b --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-basic-s2i.json @@ -0,0 +1,284 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-tomcat", +            "description": "Application template for JWS applications built using S2I.", +            "tags": "tomcat,tomcat7,java,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "jws30-tomcat7-basic-s2i" +    }, +    "labels": { +        "template": "jws30-tomcat7-basic-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts.git", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "tomcat-websocket-chat", +            "required": false +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-webserver30-tomcat7-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "JWS_ADMIN_USERNAME", +                                        "value": "${JWS_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_PASSWORD", +                                        "value": "${JWS_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-https-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-https-s2i.json new file mode 100644 index 000000000..e7bbd1154 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-https-s2i.json @@ -0,0 +1,398 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-tomcat", +            "description": "Application template for JWS applications built using S2I.", +            "tags": "tomcat,tomcat7,java,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "jws30-tomcat7-https-s2i" +    }, +    "labels": { +        "template": "jws30-tomcat7-https-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts.git", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "tomcat-websocket-chat", +            "required": false +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret", +            "required": true +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt", +            "required": false +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key", +            "required": false +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-webserver30-tomcat7-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_DIR", +                                        "value": "/etc/jws-secret-volume" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE", +                                        "value": "${JWS_HTTPS_CERTIFICATE}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_KEY", +                                        "value": "${JWS_HTTPS_CERTIFICATE_KEY}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +                                        "value": "${JWS_HTTPS_CERTIFICATE_PASSWORD}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_USERNAME", +                                        "value": "${JWS_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_PASSWORD", +                                        "value": "${JWS_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "jws-certificate-volume", +                                "secret": { +                                    "secretName": "${JWS_HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-mongodb-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-mongodb-persistent-s2i.json new file mode 100644 index 000000000..3a3ca8e24 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-mongodb-persistent-s2i.json @@ -0,0 +1,654 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-tomcat", +            "description": "Application template for JWS MongoDB applications with persistent storage built using S2I.", +            "tags": "tomcat,tomcat7,mongodb,java,database,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "jws30-tomcat7-mongodb-persistent-s2i" +    }, +    "labels": { +        "template": "jws30-tomcat7-mongodb-persistent-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-mongodb", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "required": true +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret", +            "required": true +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt", +            "required": false +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key", +            "required": false +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Disable data file preallocation.", +            "name": "MONGODB_NOPREALLOC", +            "required": false +        }, +        { +            "description": "Set MongoDB to use a smaller default data file size.", +            "name": "MONGODB_SMALLFILES", +            "required": false +        }, +        { +            "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.", +            "name": "MONGODB_QUIET", +            "required": false +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database admin password", +            "name": "DB_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 27017, +                        "targetPort": 27017 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mongodb", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-webserver30-tomcat7-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mongodb=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "DB_ADMIN_PASSWORD", +                                        "value": "${DB_ADMIN_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_DIR", +                                        "value": "/etc/jws-secret-volume" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE", +                                        "value": "${JWS_HTTPS_CERTIFICATE}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_KEY", +                                        "value": "${JWS_HTTPS_CERTIFICATE_KEY}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +                                        "value": "${JWS_HTTPS_CERTIFICATE_PASSWORD}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_USERNAME", +                                        "value": "${JWS_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_PASSWORD", +                                        "value": "${JWS_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "jws-certificate-volume", +                                "secret": { +                                    "secretName": "${JWS_HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mongodb", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mongodb" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mongodb:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mongodb", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mongodb", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mongodb", +                                "image": "mongodb", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 27017, +                                        "protocol": "TCP" +                                    } +                                ], +                                "volumeMounts": [ +                                    { +                                        "mountPath": "/var/lib/mongodb/data", +                                        "name": "${APPLICATION_NAME}-mongodb-pvol" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MONGODB_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MONGODB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MONGODB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MONGODB_ADMIN_PASSWORD", +                                        "value": "${DB_ADMIN_PASSWORD}" +                                    }, +                                    { +                                        "name": "MONGODB_NOPREALLOC", +                                        "value": "${MONGODB_NOPREALLOC}" +                                    }, +                                    { +                                        "name": "MONGODB_SMALLFILES", +                                        "value": "${MONGODB_SMALLFILES}" +                                    }, +                                    { +                                        "name": "MONGODB_QUIET", +                                        "value": "${MONGODB_QUIET}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "${APPLICATION_NAME}-mongodb-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-mongodb-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-mongodb-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ +                    "ReadWriteOnce" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-mongodb-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-mongodb-s2i.json new file mode 100644 index 000000000..b3fd295b9 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-mongodb-s2i.json @@ -0,0 +1,614 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-tomcat", +            "description": "Application template for JWS MongoDB applications built using S2I.", +            "tags": "tomcat,tomcat7,mongodb,java,database,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "jws30-tomcat7-mongodb-s2i" +    }, +    "labels": { +        "template": "jws30-tomcat7-mongodb-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-mongodb", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret", +            "required": true +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt", +            "required": false +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key", +            "required": false +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Disable data file preallocation.", +            "name": "MONGODB_NOPREALLOC", +            "required": false +        }, +        { +            "description": "Set MongoDB to use a smaller default data file size.", +            "name": "MONGODB_SMALLFILES", +            "required": false +        }, +        { +            "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.", +            "name": "MONGODB_QUIET", +            "required": false +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database admin password", +            "name": "DB_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 27017, +                        "targetPort": 27017 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mongodb", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-webserver30-tomcat7-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mongodb=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "DB_ADMIN_PASSWORD", +                                        "value": "${DB_ADMIN_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_DIR", +                                        "value": "/etc/jws-secret-volume" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE", +                                        "value": "${JWS_HTTPS_CERTIFICATE}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_KEY", +                                        "value": "${JWS_HTTPS_CERTIFICATE_KEY}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +                                        "value": "${JWS_HTTPS_CERTIFICATE_PASSWORD}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_USERNAME", +                                        "value": "${JWS_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_PASSWORD", +                                        "value": "${JWS_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "jws-certificate-volume", +                                "secret": { +                                    "secretName": "${JWS_HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mongodb", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mongodb" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mongodb:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mongodb", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mongodb", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mongodb", +                                "image": "mongodb", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 27017, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MONGODB_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MONGODB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MONGODB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MONGODB_ADMIN_PASSWORD", +                                        "value": "${DB_ADMIN_PASSWORD}" +                                    }, +                                    { +                                        "name": "MONGODB_NOPREALLOC", +                                        "value": "${MONGODB_NOPREALLOC}" +                                    }, +                                    { +                                        "name": "MONGODB_SMALLFILES", +                                        "value": "${MONGODB_SMALLFILES}" +                                    }, +                                    { +                                        "name": "MONGODB_QUIET", +                                        "value": "${MONGODB_QUIET}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-mysql-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-mysql-persistent-s2i.json new file mode 100644 index 000000000..b0b2f5ec4 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-mysql-persistent-s2i.json @@ -0,0 +1,656 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-tomcat", +            "description": "Application template for JWS MySQL applications with persistent storage built using S2I.", +            "tags": "tomcat,tomcat7,mysql,java,database,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "jws30-tomcat7-mysql-persistent-s2i" +    }, +    "labels": { +        "template": "jws30-tomcat7-mysql-persistent-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-jdbc", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. jboss/datasources/mysqlDS", +            "name": "DB_JNDI", +            "value": "jboss/datasources/defaultDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "required": true +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret", +            "required": true +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt", +            "required": false +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key", +            "required": false +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Sets how the table names are stored and compared.", +            "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +            "required": false +        }, +        { +            "description": "The maximum permitted number of simultaneous client connections.", +            "name": "MYSQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "The minimum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MIN_WORD_LEN", +            "required": false +        }, +        { +            "description": "The maximum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MAX_WORD_LEN", +            "required": false +        }, +        { +            "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", +            "name": "MYSQL_AIO", +            "required": false +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 3306, +                        "targetPort": 3306 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-webserver30-tomcat7-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_DIR", +                                        "value": "/etc/jws-secret-volume" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE", +                                        "value": "${JWS_HTTPS_CERTIFICATE}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_KEY", +                                        "value": "${JWS_HTTPS_CERTIFICATE_KEY}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +                                        "value": "${JWS_HTTPS_CERTIFICATE_PASSWORD}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_USERNAME", +                                        "value": "${JWS_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_PASSWORD", +                                        "value": "${JWS_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "jws-certificate-volume", +                                "secret": { +                                    "secretName": "${JWS_HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mysql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mysql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mysql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mysql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mysql", +                                "image": "mysql", +                                "ports": [ +                                    { +                                        "containerPort": 3306, +                                        "protocol": "TCP" +                                    } +                                ], +                                "volumeMounts": [ +                                    { +                                        "mountPath": "/var/lib/mysql/data", +                                        "name": "${APPLICATION_NAME}-mysql-pvol" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MYSQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MYSQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MYSQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +                                        "value": "${MYSQL_LOWER_CASE_TABLE_NAMES}" +                                    }, +                                    { +                                        "name": "MYSQL_MAX_CONNECTIONS", +                                        "value": "${MYSQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MIN_WORD_LEN", +                                        "value": "${MYSQL_FT_MIN_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MAX_WORD_LEN", +                                        "value": "${MYSQL_FT_MAX_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_AIO", +                                        "value": "${MYSQL_AIO}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "${APPLICATION_NAME}-mysql-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-mysql-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ +                    "ReadWriteOnce" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-mysql-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-mysql-s2i.json new file mode 100644 index 000000000..e48276f1b --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-mysql-s2i.json @@ -0,0 +1,616 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-tomcat", +            "description": "Application template for JWS MySQL applications built using S2I.", +            "tags": "tomcat,tomcat7,mysql,java,database,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "jws30-tomcat7-mysql-s2i" +    }, +    "labels": { +        "template": "jws30-tomcat7-mysql-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-jdbc", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. jboss/datasources/mysqlDS", +            "name": "DB_JNDI", +            "value": "jboss/datasources/defaultDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret", +            "required": true +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt", +            "required": false +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key", +            "required": false +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Sets how the table names are stored and compared.", +            "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +            "required": false +        }, +        { +            "description": "The maximum permitted number of simultaneous client connections.", +            "name": "MYSQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "The minimum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MIN_WORD_LEN", +            "required": false +        }, +        { +            "description": "The maximum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MAX_WORD_LEN", +            "required": false +        }, +        { +            "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", +            "name": "MYSQL_AIO", +            "required": false +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 3306, +                        "targetPort": 3306 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-webserver30-tomcat7-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_DIR", +                                        "value": "/etc/jws-secret-volume" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE", +                                        "value": "${JWS_HTTPS_CERTIFICATE}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_KEY", +                                        "value": "${JWS_HTTPS_CERTIFICATE_KEY}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +                                        "value": "${JWS_HTTPS_CERTIFICATE_PASSWORD}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_USERNAME", +                                        "value": "${JWS_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_PASSWORD", +                                        "value": "${JWS_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "jws-certificate-volume", +                                "secret": { +                                    "secretName": "${JWS_HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mysql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mysql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mysql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mysql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mysql", +                                "image": "mysql", +                                "ports": [ +                                    { +                                        "containerPort": 3306, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MYSQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MYSQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MYSQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +                                        "value": "${MYSQL_LOWER_CASE_TABLE_NAMES}" +                                    }, +                                    { +                                        "name": "MYSQL_MAX_CONNECTIONS", +                                        "value": "${MYSQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MIN_WORD_LEN", +                                        "value": "${MYSQL_FT_MIN_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MAX_WORD_LEN", +                                        "value": "${MYSQL_FT_MAX_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_AIO", +                                        "value": "${MYSQL_AIO}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-postgresql-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-postgresql-persistent-s2i.json new file mode 100644 index 000000000..d7876d066 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-postgresql-persistent-s2i.json @@ -0,0 +1,629 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-tomcat", +            "description": "Application template for JWS PostgreSQL applications with persistent storage built using S2I.", +            "tags": "tomcat,tomcat7,postgresql,java,database,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "jws30-tomcat7-postgresql-persistent-s2i" +    }, +    "labels": { +        "template": "jws30-tomcat7-postgresql-persistent-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-jdbc", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. jboss/datasources/postgresqlDS", +            "name": "DB_JNDI", +            "value": "jboss/datasources/defaultDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "required": true +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret", +            "required": true +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt", +            "required": false +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key", +            "required": false +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", +            "name": "POSTGRESQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", +            "name": "POSTGRESQL_SHARED_BUFFERS", +            "required": false +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 5432, +                        "targetPort": 5432 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-webserver30-tomcat7-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_DIR", +                                        "value": "/etc/jws-secret-volume" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE", +                                        "value": "${JWS_HTTPS_CERTIFICATE}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_KEY", +                                        "value": "${JWS_HTTPS_CERTIFICATE_KEY}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +                                        "value": "${JWS_HTTPS_CERTIFICATE_PASSWORD}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_USERNAME", +                                        "value": "${JWS_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_PASSWORD", +                                        "value": "${JWS_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "jws-certificate-volume", +                                "secret": { +                                    "secretName": "${JWS_HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-postgresql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "postgresql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-postgresql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-postgresql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-postgresql", +                                "image": "postgresql", +                                "ports": [ +                                    { +                                        "containerPort": 5432, +                                        "protocol": "TCP" +                                    } +                                ], +                                "volumeMounts": [ +                                    { +                                        "mountPath": "/var/lib/pgsql/data", +                                        "name": "${APPLICATION_NAME}-postgresql-pvol" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "POSTGRESQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_MAX_CONNECTIONS", +                                        "value": "${POSTGRESQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_SHARED_BUFFERS", +                                        "value": "${POSTGRESQL_SHARED_BUFFERS}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "${APPLICATION_NAME}-postgresql-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-postgresql-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ +                    "ReadWriteOnce" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-postgresql-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-postgresql-s2i.json new file mode 100644 index 000000000..5c1bdf6d5 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat7-postgresql-s2i.json @@ -0,0 +1,589 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-tomcat", +            "description": "Application template for JWS PostgreSQL applications built using S2I.", +            "tags": "tomcat,tomcat7,postgresql,java,database,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "jws30-tomcat7-postgresql-s2i" +    }, +    "labels": { +        "template": "jws30-tomcat7-postgresql-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-jdbc", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. jboss/datasources/postgresqlDS", +            "name": "DB_JNDI", +            "value": "jboss/datasources/defaultDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret", +            "required": true +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt", +            "required": false +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key", +            "required": false +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", +            "name": "POSTGRESQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", +            "name": "POSTGRESQL_SHARED_BUFFERS", +            "required": false +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 5432, +                        "targetPort": 5432 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-webserver30-tomcat7-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_DIR", +                                        "value": "/etc/jws-secret-volume" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE", +                                        "value": "${JWS_HTTPS_CERTIFICATE}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_KEY", +                                        "value": "${JWS_HTTPS_CERTIFICATE_KEY}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +                                        "value": "${JWS_HTTPS_CERTIFICATE_PASSWORD}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_USERNAME", +                                        "value": "${JWS_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_PASSWORD", +                                        "value": "${JWS_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "jws-certificate-volume", +                                "secret": { +                                    "secretName": "${JWS_HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-postgresql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "postgresql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-postgresql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-postgresql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-postgresql", +                                "image": "postgresql", +                                "ports": [ +                                    { +                                        "containerPort": 5432, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "POSTGRESQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_MAX_CONNECTIONS", +                                        "value": "${POSTGRESQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_SHARED_BUFFERS", +                                        "value": "${POSTGRESQL_SHARED_BUFFERS}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-basic-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-basic-s2i.json new file mode 100644 index 000000000..b425891c6 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-basic-s2i.json @@ -0,0 +1,284 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-tomcat", +            "description": "Application template for JWS applications built using S2I.", +            "tags": "tomcat,tomcat8,java,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "jws30-tomcat8-basic-s2i" +    }, +    "labels": { +        "template": "jws30-tomcat8-basic-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts.git", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "tomcat-websocket-chat", +            "required": false +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-webserver30-tomcat8-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "JWS_ADMIN_USERNAME", +                                        "value": "${JWS_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_PASSWORD", +                                        "value": "${JWS_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-https-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-https-s2i.json new file mode 100644 index 000000000..a20518cbc --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-https-s2i.json @@ -0,0 +1,398 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-tomcat", +            "description": "Application template for JWS applications built using S2I.", +            "tags": "tomcat,tomcat8,java,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "jws30-tomcat8-https-s2i" +    }, +    "labels": { +        "template": "jws30-tomcat8-https-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts.git", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "tomcat-websocket-chat", +            "required": false +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret", +            "required": true +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt", +            "required": false +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key", +            "required": false +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-webserver30-tomcat8-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_DIR", +                                        "value": "/etc/jws-secret-volume" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE", +                                        "value": "${JWS_HTTPS_CERTIFICATE}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_KEY", +                                        "value": "${JWS_HTTPS_CERTIFICATE_KEY}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +                                        "value": "${JWS_HTTPS_CERTIFICATE_PASSWORD}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_USERNAME", +                                        "value": "${JWS_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_PASSWORD", +                                        "value": "${JWS_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "jws-certificate-volume", +                                "secret": { +                                    "secretName": "${JWS_HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-mongodb-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-mongodb-persistent-s2i.json new file mode 100644 index 000000000..46b99593d --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-mongodb-persistent-s2i.json @@ -0,0 +1,654 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-tomcat", +            "description": "Application template for JWS MongoDB applications with persistent storage built using S2I.", +            "tags": "tomcat,tomcat8,mongodb,java,database,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "jws30-tomcat8-mongodb-persistent-s2i" +    }, +    "labels": { +        "template": "jws30-tomcat8-mongodb-persistent-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-mongodb", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "required": true +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret", +            "required": true +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt", +            "required": false +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key", +            "required": false +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Disable data file preallocation.", +            "name": "MONGODB_NOPREALLOC", +            "required": false +        }, +        { +            "description": "Set MongoDB to use a smaller default data file size.", +            "name": "MONGODB_SMALLFILES", +            "required": false +        }, +        { +            "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.", +            "name": "MONGODB_QUIET", +            "required": false +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database admin password", +            "name": "DB_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 27017, +                        "targetPort": 27017 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mongodb", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-webserver30-tomcat8-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mongodb=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "DB_ADMIN_PASSWORD", +                                        "value": "${DB_ADMIN_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_DIR", +                                        "value": "/etc/jws-secret-volume" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE", +                                        "value": "${JWS_HTTPS_CERTIFICATE}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_KEY", +                                        "value": "${JWS_HTTPS_CERTIFICATE_KEY}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +                                        "value": "${JWS_HTTPS_CERTIFICATE_PASSWORD}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_USERNAME", +                                        "value": "${JWS_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_PASSWORD", +                                        "value": "${JWS_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "jws-certificate-volume", +                                "secret": { +                                    "secretName": "${JWS_HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mongodb", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mongodb" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mongodb:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mongodb", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mongodb", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mongodb", +                                "image": "mongodb", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 27017, +                                        "protocol": "TCP" +                                    } +                                ], +                                "volumeMounts": [ +                                    { +                                        "mountPath": "/var/lib/mongodb/data", +                                        "name": "${APPLICATION_NAME}-mongodb-pvol" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MONGODB_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MONGODB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MONGODB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MONGODB_ADMIN_PASSWORD", +                                        "value": "${DB_ADMIN_PASSWORD}" +                                    }, +                                    { +                                        "name": "MONGODB_NOPREALLOC", +                                        "value": "${MONGODB_NOPREALLOC}" +                                    }, +                                    { +                                        "name": "MONGODB_SMALLFILES", +                                        "value": "${MONGODB_SMALLFILES}" +                                    }, +                                    { +                                        "name": "MONGODB_QUIET", +                                        "value": "${MONGODB_QUIET}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "${APPLICATION_NAME}-mongodb-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-mongodb-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-mongodb-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ +                    "ReadWriteOnce" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-mongodb-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-mongodb-s2i.json new file mode 100644 index 000000000..c01b6888a --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-mongodb-s2i.json @@ -0,0 +1,614 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-tomcat", +            "description": "Application template for JWS MongoDB applications built using S2I.", +            "tags": "tomcat,tomcat8,mongodb,java,database,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "jws30-tomcat8-mongodb-s2i" +    }, +    "labels": { +        "template": "jws30-tomcat8-mongodb-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-mongodb", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret", +            "required": true +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt", +            "required": false +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key", +            "required": false +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Disable data file preallocation.", +            "name": "MONGODB_NOPREALLOC", +            "required": false +        }, +        { +            "description": "Set MongoDB to use a smaller default data file size.", +            "name": "MONGODB_SMALLFILES", +            "required": false +        }, +        { +            "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.", +            "name": "MONGODB_QUIET", +            "required": false +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database admin password", +            "name": "DB_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 27017, +                        "targetPort": 27017 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mongodb", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-webserver30-tomcat8-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mongodb=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "DB_ADMIN_PASSWORD", +                                        "value": "${DB_ADMIN_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_DIR", +                                        "value": "/etc/jws-secret-volume" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE", +                                        "value": "${JWS_HTTPS_CERTIFICATE}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_KEY", +                                        "value": "${JWS_HTTPS_CERTIFICATE_KEY}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +                                        "value": "${JWS_HTTPS_CERTIFICATE_PASSWORD}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_USERNAME", +                                        "value": "${JWS_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_PASSWORD", +                                        "value": "${JWS_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "jws-certificate-volume", +                                "secret": { +                                    "secretName": "${JWS_HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mongodb", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mongodb" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mongodb:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mongodb", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mongodb", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mongodb", +                                "image": "mongodb", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 27017, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MONGODB_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MONGODB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MONGODB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MONGODB_ADMIN_PASSWORD", +                                        "value": "${DB_ADMIN_PASSWORD}" +                                    }, +                                    { +                                        "name": "MONGODB_NOPREALLOC", +                                        "value": "${MONGODB_NOPREALLOC}" +                                    }, +                                    { +                                        "name": "MONGODB_SMALLFILES", +                                        "value": "${MONGODB_SMALLFILES}" +                                    }, +                                    { +                                        "name": "MONGODB_QUIET", +                                        "value": "${MONGODB_QUIET}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-mysql-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-mysql-persistent-s2i.json new file mode 100644 index 000000000..ebe1dc6af --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-mysql-persistent-s2i.json @@ -0,0 +1,656 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-tomcat", +            "description": "Application template for JWS MySQL applications with persistent storage built using S2I.", +            "tags": "tomcat,tomcat8,mysql,java,database,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "jws30-tomcat8-mysql-persistent-s2i" +    }, +    "labels": { +        "template": "jws30-tomcat8-mysql-persistent-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-jdbc", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. jboss/datasources/mysqlDS", +            "name": "DB_JNDI", +            "value": "jboss/datasources/defaultDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "required": true +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret", +            "required": true +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt", +            "required": false +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key", +            "required": false +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Sets how the table names are stored and compared.", +            "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +            "required": false +        }, +        { +            "description": "The maximum permitted number of simultaneous client connections.", +            "name": "MYSQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "The minimum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MIN_WORD_LEN", +            "required": false +        }, +        { +            "description": "The maximum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MAX_WORD_LEN", +            "required": false +        }, +        { +            "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", +            "name": "MYSQL_AIO", +            "required": false +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 3306, +                        "targetPort": 3306 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-webserver30-tomcat8-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_DIR", +                                        "value": "/etc/jws-secret-volume" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE", +                                        "value": "${JWS_HTTPS_CERTIFICATE}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_KEY", +                                        "value": "${JWS_HTTPS_CERTIFICATE_KEY}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +                                        "value": "${JWS_HTTPS_CERTIFICATE_PASSWORD}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_USERNAME", +                                        "value": "${JWS_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_PASSWORD", +                                        "value": "${JWS_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "jws-certificate-volume", +                                "secret": { +                                    "secretName": "${JWS_HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mysql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mysql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mysql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mysql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mysql", +                                "image": "mysql", +                                "ports": [ +                                    { +                                        "containerPort": 3306, +                                        "protocol": "TCP" +                                    } +                                ], +                                "volumeMounts": [ +                                    { +                                        "mountPath": "/var/lib/mysql/data", +                                        "name": "${APPLICATION_NAME}-mysql-pvol" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MYSQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MYSQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MYSQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +                                        "value": "${MYSQL_LOWER_CASE_TABLE_NAMES}" +                                    }, +                                    { +                                        "name": "MYSQL_MAX_CONNECTIONS", +                                        "value": "${MYSQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MIN_WORD_LEN", +                                        "value": "${MYSQL_FT_MIN_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MAX_WORD_LEN", +                                        "value": "${MYSQL_FT_MAX_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_AIO", +                                        "value": "${MYSQL_AIO}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "${APPLICATION_NAME}-mysql-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-mysql-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ +                    "ReadWriteOnce" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-mysql-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-mysql-s2i.json new file mode 100644 index 000000000..fe068842a --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-mysql-s2i.json @@ -0,0 +1,616 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-tomcat", +            "description": "Application template for JWS MySQL applications built using S2I.", +            "tags": "tomcat,tomcat8,mysql,java,database,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "jws30-tomcat8-mysql-s2i" +    }, +    "labels": { +        "template": "jws30-tomcat8-mysql-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-jdbc", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. jboss/datasources/mysqlDS", +            "name": "DB_JNDI", +            "value": "jboss/datasources/defaultDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret", +            "required": true +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt", +            "required": false +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key", +            "required": false +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Sets how the table names are stored and compared.", +            "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +            "required": false +        }, +        { +            "description": "The maximum permitted number of simultaneous client connections.", +            "name": "MYSQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "The minimum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MIN_WORD_LEN", +            "required": false +        }, +        { +            "description": "The maximum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MAX_WORD_LEN", +            "required": false +        }, +        { +            "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", +            "name": "MYSQL_AIO", +            "required": false +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 3306, +                        "targetPort": 3306 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-webserver30-tomcat8-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_DIR", +                                        "value": "/etc/jws-secret-volume" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE", +                                        "value": "${JWS_HTTPS_CERTIFICATE}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_KEY", +                                        "value": "${JWS_HTTPS_CERTIFICATE_KEY}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +                                        "value": "${JWS_HTTPS_CERTIFICATE_PASSWORD}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_USERNAME", +                                        "value": "${JWS_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_PASSWORD", +                                        "value": "${JWS_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "jws-certificate-volume", +                                "secret": { +                                    "secretName": "${JWS_HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mysql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mysql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mysql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mysql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mysql", +                                "image": "mysql", +                                "ports": [ +                                    { +                                        "containerPort": 3306, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MYSQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MYSQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MYSQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +                                        "value": "${MYSQL_LOWER_CASE_TABLE_NAMES}" +                                    }, +                                    { +                                        "name": "MYSQL_MAX_CONNECTIONS", +                                        "value": "${MYSQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MIN_WORD_LEN", +                                        "value": "${MYSQL_FT_MIN_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MAX_WORD_LEN", +                                        "value": "${MYSQL_FT_MAX_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_AIO", +                                        "value": "${MYSQL_AIO}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-postgresql-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-postgresql-persistent-s2i.json new file mode 100644 index 000000000..302a55315 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-postgresql-persistent-s2i.json @@ -0,0 +1,629 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-tomcat", +            "description": "Application template for JWS PostgreSQL applications with persistent storage built using S2I.", +            "tags": "tomcat,tomcat8,postgresql,java,database,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "jws30-tomcat8-postgresql-persistent-s2i" +    }, +    "labels": { +        "template": "jws30-tomcat8-postgresql-persistent-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-jdbc", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. jboss/datasources/postgresqlDS", +            "name": "DB_JNDI", +            "value": "jboss/datasources/defaultDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "required": true +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret", +            "required": true +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt", +            "required": false +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key", +            "required": false +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", +            "name": "POSTGRESQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", +            "name": "POSTGRESQL_SHARED_BUFFERS", +            "required": false +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 5432, +                        "targetPort": 5432 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-webserver30-tomcat8-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_DIR", +                                        "value": "/etc/jws-secret-volume" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE", +                                        "value": "${JWS_HTTPS_CERTIFICATE}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_KEY", +                                        "value": "${JWS_HTTPS_CERTIFICATE_KEY}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +                                        "value": "${JWS_HTTPS_CERTIFICATE_PASSWORD}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_USERNAME", +                                        "value": "${JWS_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_PASSWORD", +                                        "value": "${JWS_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "jws-certificate-volume", +                                "secret": { +                                    "secretName": "${JWS_HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-postgresql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "postgresql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-postgresql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-postgresql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-postgresql", +                                "image": "postgresql", +                                "ports": [ +                                    { +                                        "containerPort": 5432, +                                        "protocol": "TCP" +                                    } +                                ], +                                "volumeMounts": [ +                                    { +                                        "mountPath": "/var/lib/pgsql/data", +                                        "name": "${APPLICATION_NAME}-postgresql-pvol" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "POSTGRESQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_MAX_CONNECTIONS", +                                        "value": "${POSTGRESQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_SHARED_BUFFERS", +                                        "value": "${POSTGRESQL_SHARED_BUFFERS}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "${APPLICATION_NAME}-postgresql-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-postgresql-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ +                    "ReadWriteOnce" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-postgresql-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-postgresql-s2i.json new file mode 100644 index 000000000..af2415905 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/jws30-tomcat8-postgresql-s2i.json @@ -0,0 +1,587 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass": "icon-tomcat", +            "description": "Application template for JWS PostgreSQL applications built using S2I.", +            "tags": "tomcat,tomcat8,postgresql,java,database,jboss,xpaas", +            "version": "1.2.0" +        }, +        "name": "jws30-tomcat8-postgresql-s2i" +    }, +    "labels": { +        "template": "jws30-tomcat8-postgresql-s2i", +        "xpaas": "1.2.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.2", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "todolist/todolist-jdbc", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. jboss/datasources/postgresqlDS", +            "name": "DB_JNDI", +            "value": "jboss/datasources/defaultDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret", +            "required": true +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt", +            "required": false +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key", +            "required": false +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", +            "name": "POSTGRESQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", +            "name": "POSTGRESQL_SHARED_BUFFERS", +            "required": false +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 5432, +                        "targetPort": 5432 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-webserver30-tomcat8-openshift:1.2" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_DIR", +                                        "value": "/etc/jws-secret-volume" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE", +                                        "value": "${JWS_HTTPS_CERTIFICATE}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_KEY", +                                        "value": "${JWS_HTTPS_CERTIFICATE_KEY}" +                                    }, +                                    { +                                        "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +                                        "value": "${JWS_HTTPS_CERTIFICATE_PASSWORD}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_USERNAME", +                                        "value": "${JWS_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "JWS_ADMIN_PASSWORD", +                                        "value": "${JWS_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "jws-certificate-volume", +                                "secret": { +                                    "secretName": "${JWS_HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-postgresql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "postgresql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-postgresql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-postgresql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-postgresql", +                                "image": "postgresql", +                                "ports": [ +                                    { +                                        "containerPort": 5432, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "POSTGRESQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_MAX_CONNECTIONS", +                                        "value": "${POSTGRESQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_SHARED_BUFFERS", +                                        "value": "${POSTGRESQL_SHARED_BUFFERS}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-amq-mysql-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-amq-mysql-persistent-s2i.json new file mode 100644 index 000000000..348b2a201 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-amq-mysql-persistent-s2i.json @@ -0,0 +1,982 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for BPMS Intelligent Process Server 6 AMQ and MySQL applications with persistent storage built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "processserver,amq,mysql,javaee,java,database,jboss,xpaas", +            "version": "1.3.0" +        }, +        "name": "processserver62-amq-mysql-persistent-s2i" +    }, +    "labels": { +        "template": "processserver62-amq-mysql-persistent-s2i", +        "xpaas": "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The KIE Container deployment configuration in format: containerId=groupId:artifactId:version|c2=g2:a2:v2", +            "name": "KIE_CONTAINER_DEPLOYMENT", +            "value": "LibraryContainer=org.openshift.quickstarts:processserver-library:1.3.0-SNAPSHOT", +            "required": false +        }, +        { +            "description": "The protocol to access the KIE Server REST interface.", +            "name": "KIE_SERVER_PROTOCOL", +            "value": "https", +            "required": false +        }, +        { +            "description": "The port to access the KIE Server REST interface.", +            "name": "KIE_SERVER_PORT", +            "value": "8443", +            "required": false +        }, +        { +            "description": "The user name to access the KIE Server REST or JMS interface.", +            "name": "KIE_SERVER_USER", +            "value": "kieserver", +            "required": false +        }, +        { +            "description": "The password to access the KIE Server REST or JMS interface. Must be different than username; must not be root, admin, or administrator; must contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), and 1 non-alphanumeric symbol(s).", +            "name": "KIE_SERVER_PASSWORD", +            "from": "[a-zA-Z]{6}[0-9]{1}!", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "JAAS LoginContext domain that shall be used to authenticate users when using JMS.", +            "name": "KIE_SERVER_DOMAIN", +            "value": "other", +            "required": false +        }, +        { +            "description": "JNDI name of executor queue for JMS.", +            "name": "KIE_SERVER_EXECUTOR_JMS_QUEUE", +            "value": "queue/KIE.EXECUTOR", +            "required": false +        }, +        { +            "description": "JNDI name of response queue for JMS.", +            "name": "KIE_SERVER_JMS_QUEUES_RESPONSE", +            "value": "queue/KIE.SERVER.RESPONSE", +            "required": false +        }, +        { +            "description": "Hibernate persistence dialect.", +            "name": "KIE_SERVER_PERSISTENCE_DIALECT", +            "value": "org.hibernate.dialect.MySQL5Dialect", +            "required": false +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "kie-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "master", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "processserver/library", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/ExampleDS", +            "name": "DB_JNDI", +            "value": "java:jboss/datasources/ExampleDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "required": true +        }, +        { +            "description": "JNDI name for connection factory used by applications to connect to the broker, e.g. java:/JmsXA", +            "name": "MQ_JNDI", +            "value": "java:/JmsXA", +            "required": false +        }, +        { +            "description": "Broker protocols to configure, separated by commas. Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`. Only `openwire` is supported by EAP.", +            "name": "MQ_PROTOCOL", +            "value": "openwire", +            "required": false +        }, +        { +            "description": "Queue names, separated by commas. These queues will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.", +            "name": "MQ_QUEUES", +            "value": "KIE.SERVER.REQUEST,KIE.SERVER.RESPONSE,KIE.EXECUTOR", +            "required": false +        }, +        { +            "description": "Topic names, separated by commas. These topics will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.", +            "name": "MQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "processserver-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "jboss", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "mykeystorepass", +            "required": false +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Sets how the table names are stored and compared.", +            "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +            "required": false +        }, +        { +            "description": "The maximum permitted number of simultaneous client connections.", +            "name": "MYSQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "The minimum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MIN_WORD_LEN", +            "required": false +        }, +        { +            "description": "The maximum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MAX_WORD_LEN", +            "required": false +        }, +        { +            "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", +            "name": "MYSQL_AIO", +            "required": false +        }, +        { +            "description": "User name for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", +            "name": "MQ_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "Password for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", +            "name": "MQ_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "User name for broker admin. If left empty, it will be generated.", +            "name": "AMQ_ADMIN_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Password for broker admin. If left empty, it will be generated.", +            "name": "AMQ_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 3306, +                        "targetPort": 3306 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 61616, +                        "targetPort": 61616 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-tcp", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's OpenWire port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "env": [ +                            { +                                "name": "KIE_CONTAINER_DEPLOYMENT", +                                "value": "${KIE_CONTAINER_DEPLOYMENT}" +                            } +                        ], +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-processserver62-openshift:1.3" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "processserver-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "processserver-keystore-volume", +                                        "mountPath": "/etc/processserver-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "KIE_CONTAINER_DEPLOYMENT", +                                        "value": "${KIE_CONTAINER_DEPLOYMENT}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PROTOCOL", +                                        "value": "${KIE_SERVER_PROTOCOL}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PORT", +                                        "value": "${KIE_SERVER_PORT}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_USER", +                                        "value": "${KIE_SERVER_USER}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PASSWORD", +                                        "value": "${KIE_SERVER_PASSWORD}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_DOMAIN", +                                        "value": "${KIE_SERVER_DOMAIN}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_EXECUTOR_JMS_QUEUE", +                                        "value": "${KIE_SERVER_EXECUTOR_JMS_QUEUE}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_JMS_QUEUES_RESPONSE", +                                        "value": "${KIE_SERVER_JMS_QUEUES_RESPONSE}" +                                    }, +                                    { +                                        "name": "MQ_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-amq=MQ" +                                    }, +                                    { +                                        "name": "MQ_JNDI", +                                        "value": "${MQ_JNDI}" +                                    }, +                                    { +                                        "name": "MQ_USERNAME", +                                        "value": "${MQ_USERNAME}" +                                    }, +                                    { +                                        "name": "MQ_PASSWORD", +                                        "value": "${MQ_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_PROTOCOL", +                                        "value": "tcp" +                                    }, +                                    { +                                        "name": "MQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "MQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PERSISTENCE_DIALECT", +                                        "value": "${KIE_SERVER_PERSISTENCE_DIALECT}" +                                    }, +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "TX_DATABASE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/processserver-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "processserver-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mysql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mysql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mysql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mysql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mysql", +                                "image": "mysql", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 3306, +                                        "protocol": "TCP" +                                    } +                                ], +                                "volumeMounts": [ +                                    { +                                        "mountPath": "/var/lib/mysql/data", +                                        "name": "${APPLICATION_NAME}-mysql-pvol" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MYSQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MYSQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MYSQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +                                        "value": "${MYSQL_LOWER_CASE_TABLE_NAMES}" +                                    }, +                                    { +                                        "name": "MYSQL_MAX_CONNECTIONS", +                                        "value": "${MYSQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MIN_WORD_LEN", +                                        "value": "${MYSQL_FT_MIN_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MAX_WORD_LEN", +                                        "value": "${MYSQL_FT_MAX_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_AIO", +                                        "value": "${MYSQL_AIO}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "${APPLICATION_NAME}-mysql-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-mysql-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ +                    "ReadWriteOnce" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-amq", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-amq" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-amq-62:1.2" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-amq", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-amq", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-amq", +                                "image": "jboss-amq-62", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/amq/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "amqp", +                                        "containerPort": 5672, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "amqp-ssl", +                                        "containerPort": 5671, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "mqtt", +                                        "containerPort": 1883, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "stomp", +                                        "containerPort": 61613, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "stomp-ssl", +                                        "containerPort": 61612, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "tcp", +                                        "containerPort": 61616, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "tcp-ssl", +                                        "containerPort": 61617, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "AMQ_USER", +                                        "value": "${MQ_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_PASSWORD", +                                        "value": "${MQ_PASSWORD}" +                                    }, +                                    { +                                        "name": "AMQ_TRANSPORTS", +                                        "value": "${MQ_PROTOCOL}" +                                    }, +                                    { +                                        "name": "AMQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "AMQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "AMQ_ADMIN_USERNAME", +                                        "value": "${AMQ_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_ADMIN_PASSWORD", +                                        "value": "${AMQ_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-amq-mysql-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-amq-mysql-s2i.json new file mode 100644 index 000000000..e694f726d --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-amq-mysql-s2i.json @@ -0,0 +1,942 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for BPMS Intelligent Process Server 6 AMQ and MySQL applications built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "processserver,amq,mysql,javaee,java,database,jboss,xpaas", +            "version": "1.3.0" +        }, +        "name": "processserver62-amq-mysql-s2i" +    }, +    "labels": { +        "template": "processserver62-amq-mysql-s2i", +        "xpaas": "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The KIE Container deployment configuration in format: containerId=groupId:artifactId:version|c2=g2:a2:v2", +            "name": "KIE_CONTAINER_DEPLOYMENT", +            "value": "LibraryContainer=org.openshift.quickstarts:processserver-library:1.3.0-SNAPSHOT", +            "required": false +        }, +        { +            "description": "The protocol to access the KIE Server REST interface.", +            "name": "KIE_SERVER_PROTOCOL", +            "value": "https", +            "required": false +        }, +        { +            "description": "The port to access the KIE Server REST interface.", +            "name": "KIE_SERVER_PORT", +            "value": "8443", +            "required": false +        }, +        { +            "description": "The user name to access the KIE Server REST or JMS interface.", +            "name": "KIE_SERVER_USER", +            "value": "kieserver", +            "required": false +        }, +        { +            "description": "The password to access the KIE Server REST or JMS interface. Must be different than username; must not be root, admin, or administrator; must contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), and 1 non-alphanumeric symbol(s).", +            "name": "KIE_SERVER_PASSWORD", +            "from": "[a-zA-Z]{6}[0-9]{1}!", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "JAAS LoginContext domain that shall be used to authenticate users when using JMS.", +            "name": "KIE_SERVER_DOMAIN", +            "value": "other", +            "required": false +        }, +        { +            "description": "JNDI name of executor queue for JMS.", +            "name": "KIE_SERVER_EXECUTOR_JMS_QUEUE", +            "value": "queue/KIE.EXECUTOR", +            "required": false +        }, +        { +            "description": "JNDI name of response queue for JMS.", +            "name": "KIE_SERVER_JMS_QUEUES_RESPONSE", +            "value": "queue/KIE.SERVER.RESPONSE", +            "required": false +        }, +        { +            "description": "Hibernate persistence dialect.", +            "name": "KIE_SERVER_PERSISTENCE_DIALECT", +            "value": "org.hibernate.dialect.MySQL5Dialect", +            "required": false +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "kie-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "master", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "processserver/library", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/ExampleDS", +            "name": "DB_JNDI", +            "value": "java:jboss/datasources/ExampleDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "JNDI name for connection factory used by applications to connect to the broker, e.g. java:/JmsXA", +            "name": "MQ_JNDI", +            "value": "java:/JmsXA", +            "required": false +        }, +        { +            "description": "Broker protocols to configure, separated by commas. Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`. Only `openwire` is supported by EAP.", +            "name": "MQ_PROTOCOL", +            "value": "openwire", +            "required": false +        }, +        { +            "description": "Queue names, separated by commas. These queues will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.", +            "name": "MQ_QUEUES", +            "value": "KIE.SERVER.REQUEST,KIE.SERVER.RESPONSE,KIE.EXECUTOR", +            "required": false +        }, +        { +            "description": "Topic names, separated by commas. These topics will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.", +            "name": "MQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "processserver-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "jboss", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "mykeystorepass", +            "required": false +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Sets how the table names are stored and compared.", +            "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +            "required": false +        }, +        { +            "description": "The maximum permitted number of simultaneous client connections.", +            "name": "MYSQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "The minimum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MIN_WORD_LEN", +            "required": false +        }, +        { +            "description": "The maximum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MAX_WORD_LEN", +            "required": false +        }, +        { +            "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", +            "name": "MYSQL_AIO", +            "required": false +        }, +        { +            "description": "User name for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", +            "name": "MQ_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "Password for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", +            "name": "MQ_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "User name for broker admin. If left empty, it will be generated.", +            "name": "AMQ_ADMIN_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Password for broker admin. If left empty, it will be generated.", +            "name": "AMQ_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 3306, +                        "targetPort": 3306 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 61616, +                        "targetPort": 61616 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-tcp", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's OpenWire port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "env": [ +                            { +                                "name": "KIE_CONTAINER_DEPLOYMENT", +                                "value": "${KIE_CONTAINER_DEPLOYMENT}" +                            } +                        ], +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-processserver62-openshift:1.3" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "processserver-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "processserver-keystore-volume", +                                        "mountPath": "/etc/processserver-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "KIE_CONTAINER_DEPLOYMENT", +                                        "value": "${KIE_CONTAINER_DEPLOYMENT}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PROTOCOL", +                                        "value": "${KIE_SERVER_PROTOCOL}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PORT", +                                        "value": "${KIE_SERVER_PORT}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_USER", +                                        "value": "${KIE_SERVER_USER}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PASSWORD", +                                        "value": "${KIE_SERVER_PASSWORD}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_DOMAIN", +                                        "value": "${KIE_SERVER_DOMAIN}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_EXECUTOR_JMS_QUEUE", +                                        "value": "${KIE_SERVER_EXECUTOR_JMS_QUEUE}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_JMS_QUEUES_RESPONSE", +                                        "value": "${KIE_SERVER_JMS_QUEUES_RESPONSE}" +                                    }, +                                    { +                                        "name": "MQ_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-amq=MQ" +                                    }, +                                    { +                                        "name": "MQ_JNDI", +                                        "value": "${MQ_JNDI}" +                                    }, +                                    { +                                        "name": "MQ_USERNAME", +                                        "value": "${MQ_USERNAME}" +                                    }, +                                    { +                                        "name": "MQ_PASSWORD", +                                        "value": "${MQ_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_PROTOCOL", +                                        "value": "tcp" +                                    }, +                                    { +                                        "name": "MQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "MQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PERSISTENCE_DIALECT", +                                        "value": "${KIE_SERVER_PERSISTENCE_DIALECT}" +                                    }, +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "TX_DATABASE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/processserver-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "processserver-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mysql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mysql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mysql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mysql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mysql", +                                "image": "mysql", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 3306, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MYSQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MYSQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MYSQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +                                        "value": "${MYSQL_LOWER_CASE_TABLE_NAMES}" +                                    }, +                                    { +                                        "name": "MYSQL_MAX_CONNECTIONS", +                                        "value": "${MYSQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MIN_WORD_LEN", +                                        "value": "${MYSQL_FT_MIN_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MAX_WORD_LEN", +                                        "value": "${MYSQL_FT_MAX_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_AIO", +                                        "value": "${MYSQL_AIO}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-amq", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-amq" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-amq-62:1.2" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-amq", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-amq", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-amq", +                                "image": "jboss-amq-62", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/amq/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "amqp", +                                        "containerPort": 5672, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "amqp-ssl", +                                        "containerPort": 5671, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "mqtt", +                                        "containerPort": 1883, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "stomp", +                                        "containerPort": 61613, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "stomp-ssl", +                                        "containerPort": 61612, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "tcp", +                                        "containerPort": 61616, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "tcp-ssl", +                                        "containerPort": 61617, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "AMQ_USER", +                                        "value": "${MQ_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_PASSWORD", +                                        "value": "${MQ_PASSWORD}" +                                    }, +                                    { +                                        "name": "AMQ_TRANSPORTS", +                                        "value": "${MQ_PROTOCOL}" +                                    }, +                                    { +                                        "name": "AMQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "AMQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "AMQ_ADMIN_USERNAME", +                                        "value": "${AMQ_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_ADMIN_PASSWORD", +                                        "value": "${AMQ_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-amq-postgresql-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-amq-postgresql-persistent-s2i.json new file mode 100644 index 000000000..b0e365df2 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-amq-postgresql-persistent-s2i.json @@ -0,0 +1,955 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for BPMS Intelligent Process Server 6 AMQ and PostgreSQL applications with persistent storage built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "processserver,amq,postgresql,javaee,java,database,jboss,xpaas", +            "version": "1.3.0" +        }, +        "name": "processserver62-amq-postgresql-persistent-s2i" +    }, +    "labels": { +        "template": "processserver62-amq-postgresql-persistent-s2i", +        "xpaas": "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The KIE Container deployment configuration in format: containerId=groupId:artifactId:version|c2=g2:a2:v2", +            "name": "KIE_CONTAINER_DEPLOYMENT", +            "value": "LibraryContainer=org.openshift.quickstarts:processserver-library:1.3.0-SNAPSHOT", +            "required": false +        }, +        { +            "description": "The protocol to access the KIE Server REST interface.", +            "name": "KIE_SERVER_PROTOCOL", +            "value": "https", +            "required": false +        }, +        { +            "description": "The port to access the KIE Server REST interface.", +            "name": "KIE_SERVER_PORT", +            "value": "8443", +            "required": false +        }, +        { +            "description": "The user name to access the KIE Server REST or JMS interface.", +            "name": "KIE_SERVER_USER", +            "value": "kieserver", +            "required": false +        }, +        { +            "description": "The password to access the KIE Server REST or JMS interface. Must be different than username; must not be root, admin, or administrator; must contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), and 1 non-alphanumeric symbol(s).", +            "name": "KIE_SERVER_PASSWORD", +            "from": "[a-zA-Z]{6}[0-9]{1}!", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "JAAS LoginContext domain that shall be used to authenticate users when using JMS.", +            "name": "KIE_SERVER_DOMAIN", +            "value": "other", +            "required": false +        }, +        { +            "description": "JNDI name of executor queue for JMS.", +            "name": "KIE_SERVER_EXECUTOR_JMS_QUEUE", +            "value": "queue/KIE.EXECUTOR", +            "required": false +        }, +        { +            "description": "JNDI name of response queue for JMS.", +            "name": "KIE_SERVER_JMS_QUEUES_RESPONSE", +            "value": "queue/KIE.SERVER.RESPONSE", +            "required": false +        }, +        { +            "description": "Hibernate persistence dialect.", +            "name": "KIE_SERVER_PERSISTENCE_DIALECT", +            "value": "org.hibernate.dialect.PostgreSQL82Dialect", +            "required": false +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "kie-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "master", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "processserver/library", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/ExampleDS", +            "name": "DB_JNDI", +            "value": "java:jboss/datasources/ExampleDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "required": true +        }, +        { +            "description": "JNDI name for connection factory used by applications to connect to the broker, e.g. java:/JmsXA", +            "name": "MQ_JNDI", +            "value": "java:/JmsXA", +            "required": false +        }, +        { +            "description": "Broker protocols to configure, separated by commas. Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`. Only `openwire` is supported by EAP.", +            "name": "MQ_PROTOCOL", +            "value": "openwire", +            "required": false +        }, +        { +            "description": "Queue names, separated by commas. These queues will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.", +            "name": "MQ_QUEUES", +            "value": "KIE.SERVER.REQUEST,KIE.SERVER.RESPONSE,KIE.EXECUTOR", +            "required": false +        }, +        { +            "description": "Topic names, separated by commas. These topics will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.", +            "name": "MQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "processserver-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "jboss", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "mykeystorepass", +            "required": false +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", +            "name": "POSTGRESQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", +            "name": "POSTGRESQL_SHARED_BUFFERS", +            "required": false +        }, +        { +            "description": "User name for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", +            "name": "MQ_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "Password for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", +            "name": "MQ_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "User name for broker admin. If left empty, it will be generated.", +            "name": "AMQ_ADMIN_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Password for broker admin. If left empty, it will be generated.", +            "name": "AMQ_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 5432, +                        "targetPort": 5432 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 61616, +                        "targetPort": 61616 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-tcp", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's OpenWire port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "env": [ +                            { +                                "name": "KIE_CONTAINER_DEPLOYMENT", +                                "value": "${KIE_CONTAINER_DEPLOYMENT}" +                            } +                        ], +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-processserver62-openshift:1.3" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "processserver-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "processserver-keystore-volume", +                                        "mountPath": "/etc/processserver-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "KIE_CONTAINER_DEPLOYMENT", +                                        "value": "${KIE_CONTAINER_DEPLOYMENT}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PROTOCOL", +                                        "value": "${KIE_SERVER_PROTOCOL}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PORT", +                                        "value": "${KIE_SERVER_PORT}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_USER", +                                        "value": "${KIE_SERVER_USER}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PASSWORD", +                                        "value": "${KIE_SERVER_PASSWORD}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_DOMAIN", +                                        "value": "${KIE_SERVER_DOMAIN}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_EXECUTOR_JMS_QUEUE", +                                        "value": "${KIE_SERVER_EXECUTOR_JMS_QUEUE}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_JMS_QUEUES_RESPONSE", +                                        "value": "${KIE_SERVER_JMS_QUEUES_RESPONSE}" +                                    }, +                                    { +                                        "name": "MQ_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-amq=MQ" +                                    }, +                                    { +                                        "name": "MQ_JNDI", +                                        "value": "${MQ_JNDI}" +                                    }, +                                    { +                                        "name": "MQ_USERNAME", +                                        "value": "${MQ_USERNAME}" +                                    }, +                                    { +                                        "name": "MQ_PASSWORD", +                                        "value": "${MQ_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_PROTOCOL", +                                        "value": "tcp" +                                    }, +                                    { +                                        "name": "MQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "MQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PERSISTENCE_DIALECT", +                                        "value": "${KIE_SERVER_PERSISTENCE_DIALECT}" +                                    }, +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "TX_DATABASE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/processserver-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "processserver-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-postgresql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "postgresql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-postgresql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-postgresql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-postgresql", +                                "image": "postgresql", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 5432, +                                        "protocol": "TCP" +                                    } +                                ], +                                "volumeMounts": [ +                                    { +                                        "mountPath": "/var/lib/pgsql/data", +                                        "name": "${APPLICATION_NAME}-postgresql-pvol" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "POSTGRESQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_MAX_CONNECTIONS", +                                        "value": "${POSTGRESQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_SHARED_BUFFERS", +                                        "value": "${POSTGRESQL_SHARED_BUFFERS}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "${APPLICATION_NAME}-postgresql-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-postgresql-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ +                    "ReadWriteOnce" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-amq", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-amq" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-amq-62:1.2" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-amq", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-amq", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-amq", +                                "image": "jboss-amq-62", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/amq/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "amqp", +                                        "containerPort": 5672, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "amqp-ssl", +                                        "containerPort": 5671, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "mqtt", +                                        "containerPort": 1883, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "stomp", +                                        "containerPort": 61613, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "stomp-ssl", +                                        "containerPort": 61612, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "tcp", +                                        "containerPort": 61616, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "tcp-ssl", +                                        "containerPort": 61617, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "AMQ_USER", +                                        "value": "${MQ_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_PASSWORD", +                                        "value": "${MQ_PASSWORD}" +                                    }, +                                    { +                                        "name": "AMQ_TRANSPORTS", +                                        "value": "${MQ_PROTOCOL}" +                                    }, +                                    { +                                        "name": "AMQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "AMQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "AMQ_ADMIN_USERNAME", +                                        "value": "${AMQ_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_ADMIN_PASSWORD", +                                        "value": "${AMQ_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-amq-postgresql-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-amq-postgresql-s2i.json new file mode 100644 index 000000000..2cfb84650 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-amq-postgresql-s2i.json @@ -0,0 +1,915 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for BPMS Intelligent Process Server 6 AMQ and PostgreSQL applications built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "processserver,amq,postgresql,javaee,java,database,jboss,xpaas", +            "version": "1.3.0" +        }, +        "name": "processserver62-amq-postgresql-s2i" +    }, +    "labels": { +        "template": "processserver62-amq-postgresql-s2i", +        "xpaas": "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The KIE Container deployment configuration in format: containerId=groupId:artifactId:version|c2=g2:a2:v2", +            "name": "KIE_CONTAINER_DEPLOYMENT", +            "value": "LibraryContainer=org.openshift.quickstarts:processserver-library:1.3.0-SNAPSHOT", +            "required": false +        }, +        { +            "description": "The protocol to access the KIE Server REST interface.", +            "name": "KIE_SERVER_PROTOCOL", +            "value": "https", +            "required": false +        }, +        { +            "description": "The port to access the KIE Server REST interface.", +            "name": "KIE_SERVER_PORT", +            "value": "8443", +            "required": false +        }, +        { +            "description": "The user name to access the KIE Server REST or JMS interface.", +            "name": "KIE_SERVER_USER", +            "value": "kieserver", +            "required": false +        }, +        { +            "description": "The password to access the KIE Server REST or JMS interface. Must be different than username; must not be root, admin, or administrator; must contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), and 1 non-alphanumeric symbol(s).", +            "name": "KIE_SERVER_PASSWORD", +            "from": "[a-zA-Z]{6}[0-9]{1}!", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "JAAS LoginContext domain that shall be used to authenticate users when using JMS.", +            "name": "KIE_SERVER_DOMAIN", +            "value": "other", +            "required": false +        }, +        { +            "description": "JNDI name of executor queue for JMS.", +            "name": "KIE_SERVER_EXECUTOR_JMS_QUEUE", +            "value": "queue/KIE.EXECUTOR", +            "required": false +        }, +        { +            "description": "JNDI name of response queue for JMS.", +            "name": "KIE_SERVER_JMS_QUEUES_RESPONSE", +            "value": "queue/KIE.SERVER.RESPONSE", +            "required": false +        }, +        { +            "description": "Hibernate persistence dialect.", +            "name": "KIE_SERVER_PERSISTENCE_DIALECT", +            "value": "org.hibernate.dialect.PostgreSQL82Dialect", +            "required": false +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "kie-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "master", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "processserver/library", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/ExampleDS", +            "name": "DB_JNDI", +            "value": "java:jboss/datasources/ExampleDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "JNDI name for connection factory used by applications to connect to the broker, e.g. java:/JmsXA", +            "name": "MQ_JNDI", +            "value": "java:/JmsXA", +            "required": false +        }, +        { +            "description": "Broker protocols to configure, separated by commas. Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`. Only `openwire` is supported by EAP.", +            "name": "MQ_PROTOCOL", +            "value": "openwire", +            "required": false +        }, +        { +            "description": "Queue names, separated by commas. These queues will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.", +            "name": "MQ_QUEUES", +            "value": "KIE.SERVER.REQUEST,KIE.SERVER.RESPONSE,KIE.EXECUTOR", +            "required": false +        }, +        { +            "description": "Topic names, separated by commas. These topics will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.", +            "name": "MQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "processserver-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "jboss", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "mykeystorepass", +            "required": false +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", +            "name": "POSTGRESQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", +            "name": "POSTGRESQL_SHARED_BUFFERS", +            "required": false +        }, +        { +            "description": "User name for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", +            "name": "MQ_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "Password for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", +            "name": "MQ_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "User name for broker admin. If left empty, it will be generated.", +            "name": "AMQ_ADMIN_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Password for broker admin. If left empty, it will be generated.", +            "name": "AMQ_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 5432, +                        "targetPort": 5432 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 61616, +                        "targetPort": 61616 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-tcp", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The broker's OpenWire port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "env": [ +                            { +                                "name": "KIE_CONTAINER_DEPLOYMENT", +                                "value": "${KIE_CONTAINER_DEPLOYMENT}" +                            } +                        ], +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-processserver62-openshift:1.3" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "processserver-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "processserver-keystore-volume", +                                        "mountPath": "/etc/processserver-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "KIE_CONTAINER_DEPLOYMENT", +                                        "value": "${KIE_CONTAINER_DEPLOYMENT}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PROTOCOL", +                                        "value": "${KIE_SERVER_PROTOCOL}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PORT", +                                        "value": "${KIE_SERVER_PORT}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_USER", +                                        "value": "${KIE_SERVER_USER}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PASSWORD", +                                        "value": "${KIE_SERVER_PASSWORD}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_DOMAIN", +                                        "value": "${KIE_SERVER_DOMAIN}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_EXECUTOR_JMS_QUEUE", +                                        "value": "${KIE_SERVER_EXECUTOR_JMS_QUEUE}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_JMS_QUEUES_RESPONSE", +                                        "value": "${KIE_SERVER_JMS_QUEUES_RESPONSE}" +                                    }, +                                    { +                                        "name": "MQ_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-amq=MQ" +                                    }, +                                    { +                                        "name": "MQ_JNDI", +                                        "value": "${MQ_JNDI}" +                                    }, +                                    { +                                        "name": "MQ_USERNAME", +                                        "value": "${MQ_USERNAME}" +                                    }, +                                    { +                                        "name": "MQ_PASSWORD", +                                        "value": "${MQ_PASSWORD}" +                                    }, +                                    { +                                        "name": "MQ_PROTOCOL", +                                        "value": "tcp" +                                    }, +                                    { +                                        "name": "MQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "MQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PERSISTENCE_DIALECT", +                                        "value": "${KIE_SERVER_PERSISTENCE_DIALECT}" +                                    }, +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "TX_DATABASE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/processserver-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "processserver-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-postgresql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "postgresql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-postgresql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-postgresql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-postgresql", +                                "image": "postgresql", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 5432, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "POSTGRESQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_MAX_CONNECTIONS", +                                        "value": "${POSTGRESQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_SHARED_BUFFERS", +                                        "value": "${POSTGRESQL_SHARED_BUFFERS}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-amq", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-amq" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-amq-62:1.2" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-amq", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-amq", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-amq", +                                "image": "jboss-amq-62", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/amq/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "amqp", +                                        "containerPort": 5672, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "amqp-ssl", +                                        "containerPort": 5671, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "mqtt", +                                        "containerPort": 1883, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "stomp", +                                        "containerPort": 61613, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "stomp-ssl", +                                        "containerPort": 61612, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "tcp", +                                        "containerPort": 61616, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "tcp-ssl", +                                        "containerPort": 61617, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "AMQ_USER", +                                        "value": "${MQ_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_PASSWORD", +                                        "value": "${MQ_PASSWORD}" +                                    }, +                                    { +                                        "name": "AMQ_TRANSPORTS", +                                        "value": "${MQ_PROTOCOL}" +                                    }, +                                    { +                                        "name": "AMQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "AMQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "AMQ_ADMIN_USERNAME", +                                        "value": "${AMQ_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_ADMIN_PASSWORD", +                                        "value": "${AMQ_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-basic-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-basic-s2i.json new file mode 100644 index 000000000..edf316021 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-basic-s2i.json @@ -0,0 +1,345 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for BPMS Intelligent Process Server 6 applications built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "processserver,javaee,java,jboss,xpaas", +            "version": "1.3.0" +        }, +        "name": "processserver62-basic-s2i" +    }, +    "labels": { +        "template": "processserver62-basic-s2i", +        "xpaas": "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The KIE Container deployment configuration in format: containerId=groupId:artifactId:version|c2=g2:a2:v2", +            "name": "KIE_CONTAINER_DEPLOYMENT", +            "value": "LibraryContainer=org.openshift.quickstarts:processserver-library:1.3.0-SNAPSHOT", +            "required": false +        }, +        { +            "description": "The user name to access the KIE Server REST or JMS interface.", +            "name": "KIE_SERVER_USER", +            "value": "kieserver", +            "required": false +        }, +        { +            "description": "The password to access the KIE Server REST or JMS interface. Must be different than username; must not be root, admin, or administrator; must contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), and 1 non-alphanumeric symbol(s).", +            "name": "KIE_SERVER_PASSWORD", +            "from": "[a-zA-Z]{6}[0-9]{1}!", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "Hibernate persistence dialect.", +            "name": "KIE_SERVER_PERSISTENCE_DIALECT", +            "value": "org.hibernate.dialect.H2Dialect", +            "required": false +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "kie-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts.git", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "master", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "processserver/library", +            "required": false +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "env": [ +                            { +                                "name": "KIE_CONTAINER_DEPLOYMENT", +                                "value": "${KIE_CONTAINER_DEPLOYMENT}" +                            } +                        ], +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-processserver62-openshift:1.3" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "KIE_CONTAINER_DEPLOYMENT", +                                        "value": "${KIE_CONTAINER_DEPLOYMENT}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_USER", +                                        "value": "${KIE_SERVER_USER}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PASSWORD", +                                        "value": "${KIE_SERVER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-mysql-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-mysql-persistent-s2i.json new file mode 100644 index 000000000..4c1edc936 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-mysql-persistent-s2i.json @@ -0,0 +1,766 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for BPMS Intelligent Process Server 6 MySQL applications with persistent storage built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "processserver,mysql,javaee,java,database,jboss,xpaas", +            "version": "1.3.0" +        }, +        "name": "processserver62-mysql-persistent-s2i" +    }, +    "labels": { +        "template": "processserver62-mysql-persistent-s2i", +        "xpaas": "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The KIE Container deployment configuration in format: containerId=groupId:artifactId:version|c2=g2:a2:v2", +            "name": "KIE_CONTAINER_DEPLOYMENT", +            "value": "LibraryContainer=org.openshift.quickstarts:processserver-library:1.3.0-SNAPSHOT", +            "required": false +        }, +        { +            "description": "The protocol to access the KIE Server REST interface.", +            "name": "KIE_SERVER_PROTOCOL", +            "value": "https", +            "required": false +        }, +        { +            "description": "The port to access the KIE Server REST interface.", +            "name": "KIE_SERVER_PORT", +            "value": "8443", +            "required": false +        }, +        { +            "description": "The user name to access the KIE Server REST or JMS interface.", +            "name": "KIE_SERVER_USER", +            "value": "kieserver", +            "required": false +        }, +        { +            "description": "The password to access the KIE Server REST or JMS interface. Must be different than username; must not be root, admin, or administrator; must contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), and 1 non-alphanumeric symbol(s).", +            "name": "KIE_SERVER_PASSWORD", +            "from": "[a-zA-Z]{6}[0-9]{1}!", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "JAAS LoginContext domain that shall be used to authenticate users when using JMS.", +            "name": "KIE_SERVER_DOMAIN", +            "value": "other", +            "required": false +        }, +        { +            "description": "JNDI name of executor queue for JMS.", +            "name": "KIE_SERVER_EXECUTOR_JMS_QUEUE", +            "value": "queue/KIE.EXECUTOR", +            "required": false +        }, +        { +            "description": "Hibernate persistence dialect.", +            "name": "KIE_SERVER_PERSISTENCE_DIALECT", +            "value": "org.hibernate.dialect.MySQL5Dialect", +            "required": false +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "kie-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "master", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "processserver/library", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/ExampleDS", +            "name": "DB_JNDI", +            "value": "java:jboss/datasources/ExampleDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "required": true +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "processserver-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "jboss", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "mykeystorepass", +            "required": false +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Sets how the table names are stored and compared.", +            "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +            "required": false +        }, +        { +            "description": "The maximum permitted number of simultaneous client connections.", +            "name": "MYSQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "The minimum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MIN_WORD_LEN", +            "required": false +        }, +        { +            "description": "The maximum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MAX_WORD_LEN", +            "required": false +        }, +        { +            "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", +            "name": "MYSQL_AIO", +            "required": false +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 3306, +                        "targetPort": 3306 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "env": [ +                            { +                                "name": "KIE_CONTAINER_DEPLOYMENT", +                                "value": "${KIE_CONTAINER_DEPLOYMENT}" +                            } +                        ], +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-processserver62-openshift:1.3" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "processserver-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "processserver-keystore-volume", +                                        "mountPath": "/etc/processserver-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "KIE_CONTAINER_DEPLOYMENT", +                                        "value": "${KIE_CONTAINER_DEPLOYMENT}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PROTOCOL", +                                        "value": "${KIE_SERVER_PROTOCOL}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PORT", +                                        "value": "${KIE_SERVER_PORT}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_USER", +                                        "value": "${KIE_SERVER_USER}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PASSWORD", +                                        "value": "${KIE_SERVER_PASSWORD}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_DOMAIN", +                                        "value": "${KIE_SERVER_DOMAIN}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_EXECUTOR_JMS_QUEUE", +                                        "value": "${KIE_SERVER_EXECUTOR_JMS_QUEUE}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PERSISTENCE_DIALECT", +                                        "value": "${KIE_SERVER_PERSISTENCE_DIALECT}" +                                    }, +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "TX_DATABASE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/processserver-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "processserver-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mysql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mysql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mysql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mysql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mysql", +                                "image": "mysql", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 3306, +                                        "protocol": "TCP" +                                    } +                                ], +                                "volumeMounts": [ +                                    { +                                        "mountPath": "/var/lib/mysql/data", +                                        "name": "${APPLICATION_NAME}-mysql-pvol" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MYSQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MYSQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MYSQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +                                        "value": "${MYSQL_LOWER_CASE_TABLE_NAMES}" +                                    }, +                                    { +                                        "name": "MYSQL_MAX_CONNECTIONS", +                                        "value": "${MYSQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MIN_WORD_LEN", +                                        "value": "${MYSQL_FT_MIN_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MAX_WORD_LEN", +                                        "value": "${MYSQL_FT_MAX_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_AIO", +                                        "value": "${MYSQL_AIO}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "${APPLICATION_NAME}-mysql-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-mysql-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ +                    "ReadWriteOnce" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-mysql-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-mysql-s2i.json new file mode 100644 index 000000000..91ffa0f52 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-mysql-s2i.json @@ -0,0 +1,726 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for BPMS Intelligent Process Server 6 MySQL applications built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "processserver,mysql,javaee,java,database,jboss,xpaas", +            "version": "1.3.0" +        }, +        "name": "processserver62-mysql-s2i" +    }, +    "labels": { +        "template": "processserver62-mysql-s2i", +        "xpaas": "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The KIE Container deployment configuration in format: containerId=groupId:artifactId:version|c2=g2:a2:v2", +            "name": "KIE_CONTAINER_DEPLOYMENT", +            "value": "LibraryContainer=org.openshift.quickstarts:processserver-library:1.3.0-SNAPSHOT", +            "required": false +        }, +        { +            "description": "The protocol to access the KIE Server REST interface.", +            "name": "KIE_SERVER_PROTOCOL", +            "value": "https", +            "required": false +        }, +        { +            "description": "The port to access the KIE Server REST interface.", +            "name": "KIE_SERVER_PORT", +            "value": "8443", +            "required": false +        }, +        { +            "description": "The user name to access the KIE Server REST or JMS interface.", +            "name": "KIE_SERVER_USER", +            "value": "kieserver", +            "required": false +        }, +        { +            "description": "The password to access the KIE Server REST or JMS interface. Must be different than username; must not be root, admin, or administrator; must contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), and 1 non-alphanumeric symbol(s).", +            "name": "KIE_SERVER_PASSWORD", +            "from": "[a-zA-Z]{6}[0-9]{1}!", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "JAAS LoginContext domain that shall be used to authenticate users when using JMS.", +            "name": "KIE_SERVER_DOMAIN", +            "value": "other", +            "required": false +        }, +        { +            "description": "JNDI name of executor queue for JMS.", +            "name": "KIE_SERVER_EXECUTOR_JMS_QUEUE", +            "value": "queue/KIE.EXECUTOR", +            "required": false +        }, +        { +            "description": "Hibernate persistence dialect.", +            "name": "KIE_SERVER_PERSISTENCE_DIALECT", +            "value": "org.hibernate.dialect.MySQL5Dialect", +            "required": false +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "kie-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "master", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "processserver/library", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/ExampleDS", +            "name": "DB_JNDI", +            "value": "java:jboss/datasources/ExampleDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "processserver-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "jboss", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "mykeystorepass", +            "required": false +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "Sets how the table names are stored and compared.", +            "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +            "required": false +        }, +        { +            "description": "The maximum permitted number of simultaneous client connections.", +            "name": "MYSQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "The minimum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MIN_WORD_LEN", +            "required": false +        }, +        { +            "description": "The maximum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MAX_WORD_LEN", +            "required": false +        }, +        { +            "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", +            "name": "MYSQL_AIO", +            "required": false +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 3306, +                        "targetPort": 3306 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "env": [ +                            { +                                "name": "KIE_CONTAINER_DEPLOYMENT", +                                "value": "${KIE_CONTAINER_DEPLOYMENT}" +                            } +                        ], +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-processserver62-openshift:1.3" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "processserver-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "processserver-keystore-volume", +                                        "mountPath": "/etc/processserver-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "KIE_CONTAINER_DEPLOYMENT", +                                        "value": "${KIE_CONTAINER_DEPLOYMENT}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PROTOCOL", +                                        "value": "${KIE_SERVER_PROTOCOL}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PORT", +                                        "value": "${KIE_SERVER_PORT}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_USER", +                                        "value": "${KIE_SERVER_USER}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PASSWORD", +                                        "value": "${KIE_SERVER_PASSWORD}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_DOMAIN", +                                        "value": "${KIE_SERVER_DOMAIN}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_EXECUTOR_JMS_QUEUE", +                                        "value": "${KIE_SERVER_EXECUTOR_JMS_QUEUE}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PERSISTENCE_DIALECT", +                                        "value": "${KIE_SERVER_PERSISTENCE_DIALECT}" +                                    }, +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "TX_DATABASE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-mysql=DB" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/processserver-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "processserver-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-mysql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-mysql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "mysql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mysql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mysql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mysql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mysql", +                                "image": "mysql", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 3306, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "MYSQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "MYSQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "MYSQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "MYSQL_LOWER_CASE_TABLE_NAMES", +                                        "value": "${MYSQL_LOWER_CASE_TABLE_NAMES}" +                                    }, +                                    { +                                        "name": "MYSQL_MAX_CONNECTIONS", +                                        "value": "${MYSQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MIN_WORD_LEN", +                                        "value": "${MYSQL_FT_MIN_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_FT_MAX_WORD_LEN", +                                        "value": "${MYSQL_FT_MAX_WORD_LEN}" +                                    }, +                                    { +                                        "name": "MYSQL_AIO", +                                        "value": "${MYSQL_AIO}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-postgresql-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-postgresql-persistent-s2i.json new file mode 100644 index 000000000..cc747030a --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-postgresql-persistent-s2i.json @@ -0,0 +1,739 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for BPMS Intelligent Process Server 6 PostgreSQL applications with persistent storage built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "processserver,postgresql,javaee,java,database,jboss,xpaas", +            "version": "1.3.0" +        }, +        "name": "processserver62-postgresql-persistent-s2i" +    }, +    "labels": { +        "template": "processserver62-postgresql-persistent-s2i", +        "xpaas": "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The KIE Container deployment configuration in format: containerId=groupId:artifactId:version|c2=g2:a2:v2", +            "name": "KIE_CONTAINER_DEPLOYMENT", +            "value": "LibraryContainer=org.openshift.quickstarts:processserver-library:1.3.0-SNAPSHOT", +            "required": false +        }, +        { +            "description": "The protocol to access the KIE Server REST interface.", +            "name": "KIE_SERVER_PROTOCOL", +            "value": "https", +            "required": false +        }, +        { +            "description": "The port to access the KIE Server REST interface.", +            "name": "KIE_SERVER_PORT", +            "value": "8443", +            "required": false +        }, +        { +            "description": "The user name to access the KIE Server REST or JMS interface.", +            "name": "KIE_SERVER_USER", +            "value": "kieserver", +            "required": false +        }, +        { +            "description": "The password to access the KIE Server REST or JMS interface. Must be different than username; must not be root, admin, or administrator; must contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), and 1 non-alphanumeric symbol(s).", +            "name": "KIE_SERVER_PASSWORD", +            "from": "[a-zA-Z]{6}[0-9]{1}!", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "JAAS LoginContext domain that shall be used to authenticate users when using JMS.", +            "name": "KIE_SERVER_DOMAIN", +            "value": "other", +            "required": false +        }, +        { +            "description": "JNDI name of executor queue for JMS.", +            "name": "KIE_SERVER_EXECUTOR_JMS_QUEUE", +            "value": "queue/KIE.EXECUTOR", +            "required": false +        }, +        { +            "description": "Hibernate persistence dialect.", +            "name": "KIE_SERVER_PERSISTENCE_DIALECT", +            "value": "org.hibernate.dialect.PostgreSQL82Dialect", +            "required": false +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "kie-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "master", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "processserver/library", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/ExampleDS", +            "name": "DB_JNDI", +            "value": "java:jboss/datasources/ExampleDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "required": true +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "processserver-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "jboss", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "mykeystorepass", +            "required": false +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", +            "name": "POSTGRESQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", +            "name": "POSTGRESQL_SHARED_BUFFERS", +            "required": false +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 5432, +                        "targetPort": 5432 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "env": [ +                            { +                                "name": "KIE_CONTAINER_DEPLOYMENT", +                                "value": "${KIE_CONTAINER_DEPLOYMENT}" +                            } +                        ], +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-processserver62-openshift:1.3" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "processserver-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "processserver-keystore-volume", +                                        "mountPath": "/etc/processserver-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "KIE_CONTAINER_DEPLOYMENT", +                                        "value": "${KIE_CONTAINER_DEPLOYMENT}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PROTOCOL", +                                        "value": "${KIE_SERVER_PROTOCOL}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PORT", +                                        "value": "${KIE_SERVER_PORT}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_USER", +                                        "value": "${KIE_SERVER_USER}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PASSWORD", +                                        "value": "${KIE_SERVER_PASSWORD}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_DOMAIN", +                                        "value": "${KIE_SERVER_DOMAIN}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_EXECUTOR_JMS_QUEUE", +                                        "value": "${KIE_SERVER_EXECUTOR_JMS_QUEUE}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PERSISTENCE_DIALECT", +                                        "value": "${KIE_SERVER_PERSISTENCE_DIALECT}" +                                    }, +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "TX_DATABASE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/processserver-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "processserver-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-postgresql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "postgresql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-postgresql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-postgresql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-postgresql", +                                "image": "postgresql", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 5432, +                                        "protocol": "TCP" +                                    } +                                ], +                                "volumeMounts": [ +                                    { +                                        "mountPath": "/var/lib/pgsql/data", +                                        "name": "${APPLICATION_NAME}-postgresql-pvol" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "POSTGRESQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_MAX_CONNECTIONS", +                                        "value": "${POSTGRESQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_SHARED_BUFFERS", +                                        "value": "${POSTGRESQL_SHARED_BUFFERS}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "${APPLICATION_NAME}-postgresql-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-postgresql-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ +                    "ReadWriteOnce" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-postgresql-s2i.json b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-postgresql-s2i.json new file mode 100644 index 000000000..f62358ad8 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/xpaas-templates/processserver62-postgresql-s2i.json @@ -0,0 +1,699 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for BPMS Intelligent Process Server 6 PostgreSQL applications built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "processserver,postgresql,javaee,java,database,jboss,xpaas", +            "version": "1.3.0" +        }, +        "name": "processserver62-postgresql-s2i" +    }, +    "labels": { +        "template": "processserver62-postgresql-s2i", +        "xpaas": "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The KIE Container deployment configuration in format: containerId=groupId:artifactId:version|c2=g2:a2:v2", +            "name": "KIE_CONTAINER_DEPLOYMENT", +            "value": "LibraryContainer=org.openshift.quickstarts:processserver-library:1.3.0-SNAPSHOT", +            "required": false +        }, +        { +            "description": "The protocol to access the KIE Server REST interface.", +            "name": "KIE_SERVER_PROTOCOL", +            "value": "https", +            "required": false +        }, +        { +            "description": "The port to access the KIE Server REST interface.", +            "name": "KIE_SERVER_PORT", +            "value": "8443", +            "required": false +        }, +        { +            "description": "The user name to access the KIE Server REST or JMS interface.", +            "name": "KIE_SERVER_USER", +            "value": "kieserver", +            "required": false +        }, +        { +            "description": "The password to access the KIE Server REST or JMS interface. Must be different than username; must not be root, admin, or administrator; must contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), and 1 non-alphanumeric symbol(s).", +            "name": "KIE_SERVER_PASSWORD", +            "from": "[a-zA-Z]{6}[0-9]{1}!", +            "generate": "expression", +            "required": false +        }, +        { +            "description": "JAAS LoginContext domain that shall be used to authenticate users when using JMS.", +            "name": "KIE_SERVER_DOMAIN", +            "value": "other", +            "required": false +        }, +        { +            "description": "JNDI name of executor queue for JMS.", +            "name": "KIE_SERVER_EXECUTOR_JMS_QUEUE", +            "value": "queue/KIE.EXECUTOR", +            "required": false +        }, +        { +            "description": "Hibernate persistence dialect.", +            "name": "KIE_SERVER_PERSISTENCE_DIALECT", +            "value": "org.hibernate.dialect.PostgreSQL82Dialect", +            "required": false +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "kie-app", +            "required": true +        }, +        { +            "description": "Custom hostname for http service route.  Leave blank for default hostname, e.g.: <application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTP", +            "value": "", +            "required": false +        }, +        { +            "description": "Custom hostname for https service route.  Leave blank for default hostname, e.g.: secure-<application-name>-<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "Git source URI for application", +            "name": "SOURCE_REPOSITORY_URL", +            "value": "https://github.com/jboss-openshift/openshift-quickstarts", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "master", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "processserver/library", +            "required": false +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/ExampleDS", +            "name": "DB_JNDI", +            "value": "java:jboss/datasources/ExampleDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "processserver-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "HTTPS_KEYSTORE", +            "value": "keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "HTTPS_NAME", +            "value": "jboss", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "HTTPS_PASSWORD", +            "value": "mykeystorepass", +            "required": false +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE", +            "required": false +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION", +            "required": false +        }, +        { +            "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", +            "name": "POSTGRESQL_MAX_CONNECTIONS", +            "required": false +        }, +        { +            "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", +            "name": "POSTGRESQL_SHARED_BUFFERS", +            "required": false +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "GitHub trigger secret", +            "name": "GITHUB_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_WEBHOOK_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", +            "name": "IMAGE_STREAM_NAMESPACE", +            "value": "openshift", +            "required": true +        } +    ], +    "objects": [ +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8080, +                        "targetPort": 8080 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's http port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 8443, +                        "targetPort": 8443 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The web server's https port." +                } +            } +        }, +        { +            "kind": "Service", +            "apiVersion": "v1", +            "spec": { +                "ports": [ +                    { +                        "port": 5432, +                        "targetPort": 5432 +                    } +                ], +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTP}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https", +            "metadata": { +                "name": "secure-${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${HOSTNAME_HTTPS}", +                "to": { +                    "name": "secure-${APPLICATION_NAME}" +                }, +                "tls": { +                    "termination": "passthrough" +                } +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "BuildConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "source": { +                    "type": "Git", +                    "git": { +                        "uri": "${SOURCE_REPOSITORY_URL}", +                        "ref": "${SOURCE_REPOSITORY_REF}" +                    }, +                    "contextDir": "${CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "env": [ +                            { +                                "name": "KIE_CONTAINER_DEPLOYMENT", +                                "value": "${KIE_CONTAINER_DEPLOYMENT}" +                            } +                        ], +                        "forcePull": true, +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "${IMAGE_STREAM_NAMESPACE}", +                            "name": "jboss-processserver62-openshift:1.3" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "kind": "ImageStreamTag", +                        "name": "${APPLICATION_NAME}:latest" +                    } +                }, +                "triggers": [ +                    { +                        "type": "GitHub", +                        "github": { +                            "secret": "${GITHUB_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "Generic", +                        "generic": { +                            "secret": "${GENERIC_WEBHOOK_SECRET}" +                        } +                    }, +                    { +                        "type": "ImageChange", +                        "imageChange": {} +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ] +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                            "from": { +                                "kind": "ImageStream", +                                "name": "${APPLICATION_NAME}" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "processserver-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "processserver-keystore-volume", +                                        "mountPath": "/etc/processserver-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "livenessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/livenessProbe.sh" +                                        ] +                                    } +                                }, +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "jolokia", +                                        "containerPort": 8778, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "http", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "https", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "KIE_CONTAINER_DEPLOYMENT", +                                        "value": "${KIE_CONTAINER_DEPLOYMENT}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PROTOCOL", +                                        "value": "${KIE_SERVER_PROTOCOL}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PORT", +                                        "value": "${KIE_SERVER_PORT}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_USER", +                                        "value": "${KIE_SERVER_USER}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PASSWORD", +                                        "value": "${KIE_SERVER_PASSWORD}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_DOMAIN", +                                        "value": "${KIE_SERVER_DOMAIN}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_EXECUTOR_JMS_QUEUE", +                                        "value": "${KIE_SERVER_EXECUTOR_JMS_QUEUE}" +                                    }, +                                    { +                                        "name": "KIE_SERVER_PERSISTENCE_DIALECT", +                                        "value": "${KIE_SERVER_PERSISTENCE_DIALECT}" +                                    }, +                                    { +                                        "name": "DB_SERVICE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_JNDI", +                                        "value": "${DB_JNDI}" +                                    }, +                                    { +                                        "name": "DB_USERNAME", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "DB_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "DB_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "TX_DATABASE_PREFIX_MAPPING", +                                        "value": "${APPLICATION_NAME}-postgresql=DB" +                                    }, +                                    { +                                        "name": "DB_MIN_POOL_SIZE", +                                        "value": "${DB_MIN_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_MAX_POOL_SIZE", +                                        "value": "${DB_MAX_POOL_SIZE}" +                                    }, +                                    { +                                        "name": "DB_TX_ISOLATION", +                                        "value": "${DB_TX_ISOLATION}" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/processserver-secret-volume" +                                    }, +                                    { +                                        "name": "HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "HTTPS_PASSWORD", +                                        "value": "${HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "processserver-keystore-volume", +                                "secret": { +                                    "secretName": "${HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-postgresql", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-postgresql" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "postgresql:latest" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-postgresql" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-postgresql", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-postgresql", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-postgresql", +                                "image": "postgresql", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "containerPort": 5432, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "POSTGRESQL_USER", +                                        "value": "${DB_USERNAME}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_PASSWORD", +                                        "value": "${DB_PASSWORD}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_DATABASE", +                                        "value": "${DB_DATABASE}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_MAX_CONNECTIONS", +                                        "value": "${POSTGRESQL_MAX_CONNECTIONS}" +                                    }, +                                    { +                                        "name": "POSTGRESQL_SHARED_BUFFERS", +                                        "value": "${POSTGRESQL_SHARED_BUFFERS}" +                                    } +                                ] +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_facts/library/openshift_facts.py b/roles/openshift_facts/library/openshift_facts.py index 25b9534dd..71e3284af 100755 --- a/roles/openshift_facts/library/openshift_facts.py +++ b/roles/openshift_facts/library/openshift_facts.py @@ -713,12 +713,12 @@ def set_version_facts_if_unset(facts):      """      if 'common' in facts:          deployment_type = facts['common']['deployment_type'] -        facts['common']['version'] = version = get_openshift_version() +        facts['common']['version'] = version = get_openshift_version(facts)          if version is not None:              if deployment_type == 'origin':                  version_gte_3_1_or_1_1 = LooseVersion(version) >= LooseVersion('1.1.0')                  version_gte_3_1_1_or_1_1_1 = LooseVersion(version) >= LooseVersion('1.1.1') -                version_gte_3_2_or_1_2 = LooseVersion(version) >= LooseVersion('1.1.2') +                version_gte_3_2_or_1_2 = LooseVersion(version) >= LooseVersion('1.2.0')              else:                  version_gte_3_1_or_1_1 = LooseVersion(version) >= LooseVersion('3.0.2.905')                  version_gte_3_1_1_or_1_1_1 = LooseVersion(version) >= LooseVersion('3.1.1') @@ -731,6 +731,15 @@ def set_version_facts_if_unset(facts):          facts['common']['version_gte_3_1_1_or_1_1_1'] = version_gte_3_1_1_or_1_1_1          facts['common']['version_gte_3_2_or_1_2'] = version_gte_3_2_or_1_2 +        if version_gte_3_2_or_1_2: +            examples_content_version = 'v1.2' +        elif version_gte_3_1_or_1_1: +            examples_content_version = 'v1.1' +        else: +            examples_content_version = 'v1.0' + +        facts['common']['examples_content_version'] = examples_content_version +      return facts  def set_manageiq_facts_if_unset(facts): @@ -873,22 +882,65 @@ def get_current_config(facts):      return current_config -def get_openshift_version(): +def get_openshift_version(facts, cli_image=None):      """ Get current version of openshift on the host +        Args: +            facts (dict): existing facts +            optional cli_image for pulling the version number +          Returns:              version: the current openshift version      """      version = None +    # No need to run this method repeatedly on a system if we already know the +    # version +    if 'common' in facts: +        if 'version' in facts['common'] and facts['common']['version'] is not None: +            return facts['common']['version'] +      if os.path.isfile('/usr/bin/openshift'):          _, output, _ = module.run_command(['/usr/bin/openshift', 'version']) -        versions = dict(e.split(' v') for e in output.splitlines() if ' v' in e) -        version = versions.get('openshift', '') +        version = parse_openshift_version(output) + +    if 'is_containerized' in facts['common'] and facts['common']['is_containerized']: +        container = None +        if 'master' in facts: +            if 'cluster_method' in facts['master']: +                container = facts['common']['service_type'] + '-master-api' +            else: +                container = facts['common']['service_type'] + '-master' +        elif 'node' in facts: +            container = facts['common']['service_type'] + '-node' + +        if container is not None: +            exit_code, output, _ = module.run_command(['docker', 'exec', container, 'openshift', 'version']) +            # if for some reason the container is installed by not running +            # we'll fall back to using docker run later in this method. +            if exit_code == 0: +                version = parse_openshift_version(output) + +        if version is None and cli_image is not None: +            # Assume we haven't installed the environment yet and we need +            # to query the latest image +            exit_code, output, _ = module.run_command(['docker', 'run', '--rm', cli_image, 'version']) +            version = parse_openshift_version(output) -        #TODO: acknowledge the possility of a containerized install      return version +def parse_openshift_version(output): +    """ Apply provider facts to supplied facts dict + +        Args: +            string: output of 'openshift version' +        Returns: +            string: the version number +    """ +    versions = dict(e.split(' v') for e in output.splitlines() if ' v' in e) +    return versions.get('openshift', '') + +  def apply_provider_facts(facts, provider_facts):      """ Apply provider facts to supplied facts dict @@ -916,41 +968,79 @@ def apply_provider_facts(facts, provider_facts):      facts['provider'] = provider_facts      return facts - -def merge_facts(orig, new, additive_facts_to_overwrite): +# Disabling pylint too many branches. This function needs refactored +# but is a very core part of openshift_facts. +# pylint: disable=too-many-branches +def merge_facts(orig, new, additive_facts_to_overwrite, protected_facts_to_overwrite):      """ Recursively merge facts dicts          Args:              orig (dict): existing facts              new (dict): facts to update -              additive_facts_to_overwrite (list): additive facts to overwrite in jinja                                                  '.' notation ex: ['master.named_certificates'] +            protected_facts_to_overwrite (list): protected facts to overwrite in jinja +                                                 '.' notation ex: ['master.master_count']          Returns:              dict: the merged facts      """      additive_facts = ['named_certificates'] +    protected_facts = ['ha', 'master_count']      facts = dict()      for key, value in orig.iteritems(): +        # Key exists in both old and new facts.          if key in new: +            # Continue to recurse if old and new fact is a dictionary.              if isinstance(value, dict) and isinstance(new[key], dict): +                # Collect the subset of additive facts to overwrite if +                # key matches. These will be passed to the subsequent +                # merge_facts call.                  relevant_additive_facts = [] -                # Keep additive_facts_to_overwrite if key matches                  for item in additive_facts_to_overwrite:                      if '.' in item and item.startswith(key + '.'):                          relevant_additive_facts.append(item) -                facts[key] = merge_facts(value, new[key], relevant_additive_facts) + +                # Collect the subset of protected facts to overwrite +                # if key matches. These will be passed to the +                # subsequent merge_facts call. +                relevant_protected_facts = [] +                for item in protected_facts_to_overwrite: +                    if '.' in item and item.startswith(key + '.'): +                        relevant_protected_facts.append(item) +                facts[key] = merge_facts(value, new[key], relevant_additive_facts, relevant_protected_facts) +            # Key matches an additive fact and we are not overwriting +            # it so we will append the new value to the existing value.              elif key in additive_facts and key not in [x.split('.')[-1] for x in additive_facts_to_overwrite]: -                # Fact is additive so we'll combine orig and new.                  if isinstance(value, list) and isinstance(new[key], list):                      new_fact = []                      for item in copy.deepcopy(value) + copy.deepcopy(new[key]):                          if item not in new_fact:                              new_fact.append(item)                      facts[key] = new_fact +            # Key matches a protected fact and we are not overwriting +            # it so we will determine if it is okay to change this +            # fact. +            elif key in protected_facts and key not in [x.split('.')[-1] for x in protected_facts_to_overwrite]: +                # The master count (int) can only increase unless it +                # has been passed as a protected fact to overwrite. +                if key == 'master_count': +                    if int(value) <= int(new[key]): +                        facts[key] = copy.deepcopy(new[key]) +                    else: +                        module.fail_json(msg='openshift_facts received a lower value for openshift.master.master_count') +                # ha (bool) can not change unless it has been passed +                # as a protected fact to overwrite. +                if key == 'ha': +                    if bool(value) != bool(new[key]): +                        module.fail_json(msg='openshift_facts received a different value for openshift.master.ha') +                    else: +                        facts[key] = value +            # No other condition has been met. Overwrite the old fact +            # with the new value.              else:                  facts[key] = copy.deepcopy(new[key]) +        # Key isn't in new so add it to facts to keep it.          else:              facts[key] = copy.deepcopy(value)      new_keys = set(new.keys()) - set(orig.keys()) @@ -1052,9 +1142,11 @@ def set_container_facts_if_unset(facts):          if 'ovs_image' not in facts['node']:              facts['node']['ovs_image'] = ovs_image -    if facts['common']['is_containerized']: +    if bool(strtobool(str(facts['common']['is_containerized']))):          facts['common']['admin_binary'] = '/usr/local/bin/oadm'          facts['common']['client_binary'] = '/usr/local/bin/oc' +        base_version = get_openshift_version(facts, cli_image).split('-')[0] +        facts['common']['image_tag'] = "v" + base_version      return facts @@ -1114,6 +1206,8 @@ class OpenShiftFacts(object):              local_facts (dict): local facts to set              additive_facts_to_overwrite (list): additive facts to overwrite in jinja                                                  '.' notation ex: ['master.named_certificates'] +            protected_facts_to_overwrite (list): protected facts to overwrite in jinja +                                                 '.' notation ex: ['master.master_count']          Raises:              OpenShiftFactsUnsupportedRoleError: @@ -1122,7 +1216,10 @@ class OpenShiftFacts(object):      # Disabling too-many-arguments, this should be cleaned up as a TODO item.      # pylint: disable=too-many-arguments -    def __init__(self, role, filename, local_facts, additive_facts_to_overwrite=False, openshift_env=None): +    def __init__(self, role, filename, local_facts, +                 additive_facts_to_overwrite=None, +                 openshift_env=None, +                 protected_facts_to_overwrite=None):          self.changed = False          self.filename = filename          if role not in self.known_roles: @@ -1131,27 +1228,41 @@ class OpenShiftFacts(object):              )          self.role = role          self.system_facts = ansible_facts(module) -        self.facts = self.generate_facts(local_facts, additive_facts_to_overwrite, openshift_env) - -    def generate_facts(self, local_facts, additive_facts_to_overwrite, openshift_env): +        self.facts = self.generate_facts(local_facts, +                                         additive_facts_to_overwrite, +                                         openshift_env, +                                         protected_facts_to_overwrite) + +    def generate_facts(self, +                       local_facts, +                       additive_facts_to_overwrite, +                       openshift_env, +                       protected_facts_to_overwrite):          """ Generate facts              Args: -                local_facts (dict): local_facts for overriding generated -                                    defaults +                local_facts (dict): local_facts for overriding generated defaults                  additive_facts_to_overwrite (list): additive facts to overwrite in jinja                                                      '.' notation ex: ['master.named_certificates'] - +                openshift_env (dict): openshift_env facts for overriding generated defaults +                protected_facts_to_overwrite (list): protected facts to overwrite in jinja +                                                     '.' notation ex: ['master.master_count']              Returns:                  dict: The generated facts          """ -        local_facts = self.init_local_facts(local_facts, additive_facts_to_overwrite, openshift_env) +        local_facts = self.init_local_facts(local_facts, +                                            additive_facts_to_overwrite, +                                            openshift_env, +                                            protected_facts_to_overwrite)          roles = local_facts.keys()          defaults = self.get_defaults(roles)          provider_facts = self.init_provider_facts()          facts = apply_provider_facts(defaults, provider_facts) -        facts = merge_facts(facts, local_facts, additive_facts_to_overwrite) +        facts = merge_facts(facts, +                            local_facts, +                            additive_facts_to_overwrite, +                            protected_facts_to_overwrite)          facts['current_config'] = get_current_config(facts)          facts = set_url_facts_if_unset(facts)          facts = set_project_cfg_facts_if_unset(facts) @@ -1315,13 +1426,20 @@ class OpenShiftFacts(object):      # Disabling too-many-branches. This should be cleaned up as a TODO item.      #pylint: disable=too-many-branches -    def init_local_facts(self, facts=None, additive_facts_to_overwrite=False, openshift_env=None): +    def init_local_facts(self, facts=None, +                         additive_facts_to_overwrite=None, +                         openshift_env=None, +                         protected_facts_to_overwrite=None):          """ Initialize the provider facts              Args:                  facts (dict): local facts to set                  additive_facts_to_overwrite (list): additive facts to overwrite in jinja                                                      '.' notation ex: ['master.named_certificates'] +                openshift_env (dict): openshift env facts to set +                protected_facts_to_overwrite (list): protected facts to overwrite in jinja +                                                     '.' notation ex: ['master.master_count'] +              Returns:                  dict: The result of merging the provided facts with existing @@ -1347,7 +1465,10 @@ class OpenShiftFacts(object):                      elif key not in current_level:                          current_level[key] = dict()                          current_level = current_level[key] -                facts_to_set = merge_facts(facts_to_set, oo_env_facts, []) +                facts_to_set = merge_facts(orig=facts_to_set, +                                           new=oo_env_facts, +                                           additive_facts_to_overwrite=[], +                                           protected_facts_to_overwrite=[])          local_facts = get_local_facts_from_file(self.filename) @@ -1356,7 +1477,10 @@ class OpenShiftFacts(object):                                                    basestring):                  facts_to_set[arg] = module.from_json(facts_to_set[arg]) -        new_local_facts = merge_facts(local_facts, facts_to_set, additive_facts_to_overwrite) +        new_local_facts = merge_facts(local_facts, +                                      facts_to_set, +                                      additive_facts_to_overwrite, +                                      protected_facts_to_overwrite)          for facts in new_local_facts.values():              keys_to_delete = []              if isinstance(facts, dict): @@ -1452,7 +1576,8 @@ def main():                        choices=OpenShiftFacts.known_roles),              local_facts=dict(default=None, type='dict', required=False),              additive_facts_to_overwrite=dict(default=[], type='list', required=False), -            openshift_env=dict(default={}, type='dict', required=False) +            openshift_env=dict(default={}, type='dict', required=False), +            protected_facts_to_overwrite=dict(default=[], type='list', required=False),          ),          supports_check_mode=True,          add_file_common_args=True, @@ -1462,6 +1587,7 @@ def main():      local_facts = module.params['local_facts']      additive_facts_to_overwrite = module.params['additive_facts_to_overwrite']      openshift_env = module.params['openshift_env'] +    protected_facts_to_overwrite = module.params['protected_facts_to_overwrite']      fact_file = '/etc/ansible/facts.d/openshift.fact' @@ -1469,7 +1595,8 @@ def main():                                       fact_file,                                       local_facts,                                       additive_facts_to_overwrite, -                                     openshift_env) +                                     openshift_env, +                                     protected_facts_to_overwrite)      file_params = module.params.copy()      file_params['path'] = fact_file diff --git a/roles/openshift_manage_node/tasks/main.yml b/roles/openshift_manage_node/tasks/main.yml index 06f12053a..cee1f1738 100644 --- a/roles/openshift_manage_node/tasks/main.yml +++ b/roles/openshift_manage_node/tasks/main.yml @@ -3,7 +3,7 @@        {{ openshift.common.client_binary }} get node {{ item | lower }}    register: omd_get_node    until: omd_get_node.rc == 0 -  retries: 20 +  retries: 50    delay: 5    changed_when: false    with_items: openshift_nodes diff --git a/roles/openshift_master/tasks/main.yml b/roles/openshift_master/tasks/main.yml index 4aede31f6..4f722679d 100644 --- a/roles/openshift_master/tasks/main.yml +++ b/roles/openshift_master/tasks/main.yml @@ -70,7 +70,7 @@        oauth_grant_method: "{{ openshift_master_oauth_grant_method | default(None) }}"        sdn_cluster_network_cidr: "{{ osm_cluster_network_cidr | default(None) }}"        sdn_host_subnet_length: "{{ osm_host_subnet_length | default(None) }}" -      default_subdomain: "{{ osm_default_subdomain | default(None) }}" +      default_subdomain: "{{ openshift_master_default_subdomain | default(osm_default_subdomain) | default(None) }}"        custom_cors_origins: "{{ osm_custom_cors_origins | default(None) }}"        default_node_selector: "{{ osm_default_node_selector | default(None) }}"        project_request_message: "{{ osm_project_request_message | default(None) }}" @@ -92,11 +92,6 @@    action: "{{ ansible_pkg_mgr }} name={{ openshift.common.service_type }}-master{{ openshift_version  }} state=present"    when: not openshift.common.is_containerized | bool -- name: Pull master image -  command: > -    docker pull {{ openshift.master.master_image }} -  when: openshift.common.is_containerized | bool -  - name: Install Master docker service file    template:      dest: "/etc/systemd/system/{{ openshift.common.service_type }}-master.service" @@ -221,6 +216,9 @@    template:      dest: "{{ openshift.master.session_secrets_file }}"      src: sessionSecretsFile.yaml.v1.j2 +    owner: root +    group: root +    mode: 0600    when: openshift.master.session_auth_secrets is defined and openshift.master.session_encryption_secrets is defined    notify:    - restart master @@ -235,6 +233,9 @@      dest: "{{ openshift_master_config_file }}"      src: master.yaml.v1.j2      backup: true +    owner: root +    group: root +    mode: 0600    notify:    - restart master    - restart master api @@ -259,7 +260,7 @@  - name: Mask master service    command: systemctl mask {{ openshift.common.service_type }}-master -  when: openshift_master_ha | bool and openshift.master.cluster_method == 'native' and not openshift.common.is_atomic | bool +  when: openshift_master_ha | bool and openshift.master.cluster_method == 'native' and not openshift.common.is_containerized | bool  - name: Start and enable master api    service: name={{ openshift.common.service_type }}-master-api enabled=yes state=started diff --git a/roles/openshift_master/templates/atomic-openshift-master.j2 b/roles/openshift_master/templates/atomic-openshift-master.j2 index 81bae5470..9342614a3 100644 --- a/roles/openshift_master/templates/atomic-openshift-master.j2 +++ b/roles/openshift_master/templates/atomic-openshift-master.j2 @@ -1,5 +1,8 @@  OPTIONS=--loglevel={{ openshift.master.debug_level }}  CONFIG_FILE={{ openshift_master_config_file }} +{% if openshift.common.is_containerized %} +IMAGE_VERSION={{ openshift.common.image_tag }} +{% endif %}  # Proxy configuration  # Origin uses standard HTTP_PROXY environment variables. Be sure to set diff --git a/roles/openshift_master/templates/docker-cluster/atomic-openshift-master-api.service.j2 b/roles/openshift_master/templates/docker-cluster/atomic-openshift-master-api.service.j2 index a935b82f6..9c1f5a300 100644 --- a/roles/openshift_master/templates/docker-cluster/atomic-openshift-master-api.service.j2 +++ b/roles/openshift_master/templates/docker-cluster/atomic-openshift-master-api.service.j2 @@ -12,7 +12,7 @@ PartOf=docker.service  EnvironmentFile=/etc/sysconfig/{{ openshift.common.service_type }}-master-api  Environment=GOTRACEBACK=crash  ExecStartPre=-/usr/bin/docker rm -f {{ openshift.common.service_type}}-master-api -ExecStart=/usr/bin/docker run --rm --privileged --net=host --name {{ openshift.common.service_type }}-master-api -v {{ openshift.common.data_dir }}:{{ openshift.common.data_dir }} -v /var/run/docker.sock:/var/run/docker.sock -v {{ openshift.common.config_base }}:{{ openshift.common.config_base }} {{ openshift.master.master_image }} start master api --config=${CONFIG_FILE} $OPTIONS +ExecStart=/usr/bin/docker run --rm --privileged --net=host --name {{ openshift.common.service_type }}-master-api -v {{ openshift.common.data_dir }}:{{ openshift.common.data_dir }} -v /var/run/docker.sock:/var/run/docker.sock -v {{ openshift.common.config_base }}:{{ openshift.common.config_base }} {{ openshift.master.master_image }}:${IMAGE_VERSION} start master api --config=${CONFIG_FILE} $OPTIONS  ExecStartPost=/usr/bin/sleep 10  ExecStop=/usr/bin/docker stop {{ openshift.common.service_type }}-master-api  LimitNOFILE=131072 diff --git a/roles/openshift_master/templates/docker-cluster/atomic-openshift-master-controllers.service.j2 b/roles/openshift_master/templates/docker-cluster/atomic-openshift-master-controllers.service.j2 index 6ba7d6e2a..915c0cb8c 100644 --- a/roles/openshift_master/templates/docker-cluster/atomic-openshift-master-controllers.service.j2 +++ b/roles/openshift_master/templates/docker-cluster/atomic-openshift-master-controllers.service.j2 @@ -11,7 +11,7 @@ PartOf=docker.service  EnvironmentFile=/etc/sysconfig/{{ openshift.common.service_type }}-master-controllers  Environment=GOTRACEBACK=crash  ExecStartPre=-/usr/bin/docker rm -f {{ openshift.common.service_type}}-master-controllers -ExecStart=/usr/bin/docker run --rm --privileged --net=host --name {{ openshift.common.service_type }}-master-controllers -v {{ openshift.common.data_dir }}:{{ openshift.common.data_dir }} -v /var/run/docker.sock:/var/run/docker.sock -v {{ openshift.common.config_base }}:{{ openshift.common.config_base }} {{ openshift.master.master_image }} start master controllers --config=${CONFIG_FILE} $OPTIONS +ExecStart=/usr/bin/docker run --rm --privileged --net=host --name {{ openshift.common.service_type }}-master-controllers -v {{ openshift.common.data_dir }}:{{ openshift.common.data_dir }} -v /var/run/docker.sock:/var/run/docker.sock -v {{ openshift.common.config_base }}:{{ openshift.common.config_base }} {{ openshift.master.master_image }}:${IMAGE_VERSION} start master controllers --config=${CONFIG_FILE} $OPTIONS  ExecStartPost=/usr/bin/sleep 10  ExecStop=/usr/bin/docker stop {{ openshift.common.service_type }}-master-controllers  LimitNOFILE=131072 diff --git a/roles/openshift_master/templates/docker/master.docker.service.j2 b/roles/openshift_master/templates/docker/master.docker.service.j2 index 23781a313..f88262567 100644 --- a/roles/openshift_master/templates/docker/master.docker.service.j2 +++ b/roles/openshift_master/templates/docker/master.docker.service.j2 @@ -7,7 +7,7 @@ PartOf=docker.service  [Service]  EnvironmentFile=/etc/sysconfig/{{ openshift.common.service_type }}-master  ExecStartPre=-/usr/bin/docker rm -f {{ openshift.common.service_type }}-master -ExecStart=/usr/bin/docker run --rm --privileged --net=host --name {{ openshift.common.service_type }}-master -v {{ openshift.common.data_dir }}:{{ openshift.common.data_dir }} -v /var/run/docker.sock:/var/run/docker.sock -v {{ openshift.common.config_base }}:{{ openshift.common.config_base }} {{ openshift.master.master_image }} start master --config=${CONFIG_FILE} $OPTIONS +ExecStart=/usr/bin/docker run --rm --privileged --net=host --name {{ openshift.common.service_type }}-master -v {{ openshift.common.data_dir }}:{{ openshift.common.data_dir }} -v /var/run/docker.sock:/var/run/docker.sock -v {{ openshift.common.config_base }}:{{ openshift.common.config_base }} {{ openshift.master.master_image }}:${IMAGE_VERSION} start master --config=${CONFIG_FILE} $OPTIONS  ExecStartPost=/usr/bin/sleep 10  ExecStop=/usr/bin/docker stop {{ openshift.common.service_type }}-master  Restart=always diff --git a/roles/openshift_master/templates/native-cluster/atomic-openshift-master-api.j2 b/roles/openshift_master/templates/native-cluster/atomic-openshift-master-api.j2 index 48bfa5f04..cfa3b3bfc 100644 --- a/roles/openshift_master/templates/native-cluster/atomic-openshift-master-api.j2 +++ b/roles/openshift_master/templates/native-cluster/atomic-openshift-master-api.j2 @@ -1,5 +1,8 @@  OPTIONS=--loglevel={{ openshift.master.debug_level }} --listen={{ 'https' if openshift.master.api_use_ssl else 'http' }}://{{ openshift.master.bind_addr }}:{{ openshift.master.api_port }} --master={{ openshift.master.loopback_api_url }}  CONFIG_FILE={{ openshift_master_config_file }} +{% if openshift.common.is_containerized %} +IMAGE_VERSION={{ openshift.common.image_tag }} +{% endif %}  # Proxy configuration  # Origin uses standard HTTP_PROXY environment variables. Be sure to set diff --git a/roles/openshift_master/templates/native-cluster/atomic-openshift-master-controllers.j2 b/roles/openshift_master/templates/native-cluster/atomic-openshift-master-controllers.j2 index cdc56eece..0b86f5f6b 100644 --- a/roles/openshift_master/templates/native-cluster/atomic-openshift-master-controllers.j2 +++ b/roles/openshift_master/templates/native-cluster/atomic-openshift-master-controllers.j2 @@ -1,5 +1,8 @@  OPTIONS=--loglevel={{ openshift.master.debug_level }} --listen={{ 'https' if openshift.master.api_use_ssl else 'http' }}://{{ openshift.master.bind_addr }}:{{ openshift.master.controllers_port }}  CONFIG_FILE={{ openshift_master_config_file }} +{% if openshift.common.is_containerized %} +IMAGE_VERSION={{ openshift.common.image_tag }} +{% endif %}  # Proxy configuration  # Origin uses standard HTTP_PROXY environment variables. Be sure to set diff --git a/roles/openshift_master_ca/tasks/main.yml b/roles/openshift_master_ca/tasks/main.yml index 6d9be81c0..4b7ef1d84 100644 --- a/roles/openshift_master_ca/tasks/main.yml +++ b/roles/openshift_master_ca/tasks/main.yml @@ -13,11 +13,6 @@      path: "{{ openshift_master_config_dir }}"      state: directory -- name: Pull master docker image -  command: > -    docker pull {{ openshift.common.cli_image }} -  when: openshift.common.is_containerized | bool -  - name: Create the master certificates if they do not already exist    command: >      {{ openshift.common.admin_binary }} create-master-certs @@ -25,4 +20,4 @@        --master={{ openshift.master.api_url }}        --public-master={{ openshift.master.public_api_url }}        --cert-dir={{ openshift_master_config_dir }} --overwrite=false -  when: master_certs_missing +  when: master_certs_missing | bool diff --git a/roles/openshift_master_certificates/tasks/main.yml b/roles/openshift_master_certificates/tasks/main.yml index 7c58e943a..9017b7d2b 100644 --- a/roles/openshift_master_certificates/tasks/main.yml +++ b/roles/openshift_master_certificates/tasks/main.yml @@ -6,40 +6,16 @@      mode: 0700    with_items: masters_needing_certs -- set_fact: -    master_certificates: -    - ca.crt -    - ca.key -    - ca.serial.txt -    - admin.crt -    - admin.key -    - admin.kubeconfig -    - master.kubelet-client.crt -    - master.kubelet-client.key -    - master.server.crt -    - master.server.key -    - openshift-master.crt -    - openshift-master.key -    - openshift-master.kubeconfig -    - openshift-registry.crt -    - openshift-registry.key -    - openshift-registry.kubeconfig -    - openshift-router.crt -    - openshift-router.key -    - openshift-router.kubeconfig -    - serviceaccounts.private.key -    - serviceaccounts.public.key -    master_31_certificates: -    - master.proxy-client.crt -    - master.proxy-client.key -  - file:      src: "{{ openshift_master_config_dir }}/{{ item.1 }}"      dest: "{{ openshift_generated_configs_dir }}/{{ item.0.master_cert_subdir }}/{{ item.1 }}"      state: hard    with_nested:    - masters_needing_certs -  - "{{ master_certificates | union(master_31_certificates) if openshift.common.version_gte_3_1_or_1_1 | bool else master_certificates }}" +  - +    - ca.crt +    - ca.key +    - ca.serial.txt  - name: Create the master certificates if they do not already exist    command: > @@ -49,5 +25,14 @@        --public-master={{ item.openshift.master.public_api_url }}        --cert-dir={{ openshift_generated_configs_dir }}/{{ item.master_cert_subdir }}        --overwrite=false -  when: master_certs_missing +  when: item.master_certs_missing | bool    with_items: masters_needing_certs + +- file: +    src: "{{ openshift_master_config_dir }}/{{ item.1 }}" +    dest: "{{ openshift_generated_configs_dir }}/{{ item.0.master_cert_subdir }}/{{ item.1 }}" +    state: hard +    force: true +  with_nested: +  - masters_needing_certs +  - "{{ hostvars[inventory_hostname] | certificates_to_synchronize }}" diff --git a/roles/openshift_node/handlers/main.yml b/roles/openshift_node/handlers/main.yml index c288f4d05..3fec4b1dd 100644 --- a/roles/openshift_node/handlers/main.yml +++ b/roles/openshift_node/handlers/main.yml @@ -5,3 +5,6 @@  - name: restart docker    service: name=docker state=restarted + +- name: restart openvswitch +  service: name=openvswitch state=restarted diff --git a/roles/openshift_node/tasks/main.yml b/roles/openshift_node/tasks/main.yml index acf2f74e3..71ed9ba08 100644 --- a/roles/openshift_node/tasks/main.yml +++ b/roles/openshift_node/tasks/main.yml @@ -62,17 +62,25 @@    register: install_node_result    when: openshift.common.is_containerized | bool +- name: Create the openvswitch service env file +  template: +    src: openvswitch.sysconfig.j2 +    dest: /etc/sysconfig/openvswitch +  when: openshift.common.is_containerized | bool +  register: install_ovs_sysconfig +  - name: Install OpenvSwitch docker service file    template:      dest: "/etc/systemd/system/openvswitch.service"      src: openvswitch.docker.service -  register: install_ovs_result    when: openshift.common.is_containerized | bool and openshift.common.use_openshift_sdn | bool +  notify: +  - restart openvswitch  - name: Reload systemd units    command: systemctl daemon-reload    when: openshift.common.is_containerized and ( ( install_node_result  | changed ) -    or ( install_ovs_result | changed ) ) +    or ( install_ovs_sysconfig | changed ) )  - name: Start and enable openvswitch docker service    service: name=openvswitch.service enabled=yes state=started @@ -84,6 +92,9 @@      dest: "{{ openshift_node_config_file }}"      src: node.yaml.v1.j2      backup: true +    owner: root +    group: root +    mode: 0600    notify:    - restart node @@ -98,6 +109,8 @@        line: "OPTIONS=--loglevel={{ openshift.node.debug_level }}"      - regex: '^CONFIG_FILE='        line: "CONFIG_FILE={{ openshift_node_config_file }}" +    - regex: '^IMAGE_VERSION=' +      line: "IMAGE_VERSION=v{{ openshift.common.version.split('-')[0] }}"    notify:    - restart node diff --git a/roles/openshift_node/templates/openshift.docker.node.service b/roles/openshift_node/templates/openshift.docker.node.service index 7a11a10fa..83b697f73 100644 --- a/roles/openshift_node/templates/openshift.docker.node.service +++ b/roles/openshift_node/templates/openshift.docker.node.service @@ -11,7 +11,7 @@ PartOf=docker.service  [Service]  EnvironmentFile=/etc/sysconfig/{{ openshift.common.service_type }}-node  ExecStartPre=-/usr/bin/docker rm -f {{ openshift.common.service_type }}-node -ExecStart=/usr/bin/docker run --name {{ openshift.common.service_type }}-node --rm --privileged --net=host --pid=host -v /:/rootfs:ro -e CONFIG_FILE=${CONFIG_FILE} -e OPTIONS=${OPTIONS} -e HOST=/rootfs -e HOST_ETC=/host-etc -v {{ openshift.common.data_dir }}:{{ openshift.common.data_dir }} -v {{ openshift.common.config_base }}/node:{{ openshift.common.config_base }}/node -v /etc/localtime:/etc/localtime:ro -v /etc/machine-id:/etc/machine-id:ro -v /run:/run -v /sys:/sys:ro -v /usr/bin/docker:/usr/bin/docker:ro -v /var/lib/docker:/var/lib/docker -v /lib/modules:/lib/modules -v /etc/origin/openvswitch:/etc/openvswitch -v /etc/origin/sdn:/etc/openshift-sdn  -v /etc/systemd/system:/host-etc/systemd/system {{ openshift.node.node_image }} +ExecStart=/usr/bin/docker run --name {{ openshift.common.service_type }}-node --rm --privileged --net=host --pid=host -v /:/rootfs:ro -e CONFIG_FILE=${CONFIG_FILE} -e OPTIONS=${OPTIONS} -e HOST=/rootfs -e HOST_ETC=/host-etc -v {{ openshift.common.data_dir }}:{{ openshift.common.data_dir }} -v {{ openshift.common.config_base }}/node:{{ openshift.common.config_base }}/node -v /etc/localtime:/etc/localtime:ro -v /etc/machine-id:/etc/machine-id:ro -v /run:/run -v /sys:/sys:ro -v /usr/bin/docker:/usr/bin/docker:ro -v /var/lib/docker:/var/lib/docker -v /lib/modules:/lib/modules -v /etc/origin/openvswitch:/etc/openvswitch -v /etc/origin/sdn:/etc/openshift-sdn  -v /etc/systemd/system:/host-etc/systemd/system -v /var/log:/var/log {{ openshift.node.node_image }}:${IMAGE_VERSION}  ExecStartPost=/usr/bin/sleep 10  ExecStop=/usr/bin/docker stop {{ openshift.common.service_type }}-node  Restart=always diff --git a/roles/openshift_node/templates/openvswitch.docker.service b/roles/openshift_node/templates/openvswitch.docker.service index 6c02b26bf..7af2b7431 100644 --- a/roles/openshift_node/templates/openvswitch.docker.service +++ b/roles/openshift_node/templates/openvswitch.docker.service @@ -4,8 +4,9 @@ Requires=docker.service  PartOf=docker.service  [Service] +EnvironmentFile=/etc/sysconfig/openvswitch  ExecStartPre=-/usr/bin/docker rm -f openvswitch -ExecStart=/usr/bin/docker run --name openvswitch --rm --privileged --net=host --pid=host -v /lib/modules:/lib/modules -v /run:/run -v /sys:/sys:ro -v /etc/origin/openvswitch:/etc/openvswitch {{ openshift.node.ovs_image }} +ExecStart=/usr/bin/docker run --name openvswitch --rm --privileged --net=host --pid=host -v /lib/modules:/lib/modules -v /run:/run -v /sys:/sys:ro -v /etc/origin/openvswitch:/etc/openvswitch {{ openshift.node.ovs_image }}:${IMAGE_VERSION}  ExecStartPost=/usr/bin/sleep 5  ExecStop=/usr/bin/docker stop openvswitch  Restart=always diff --git a/roles/openshift_node/templates/openvswitch.sysconfig.j2 b/roles/openshift_node/templates/openvswitch.sysconfig.j2 new file mode 100644 index 000000000..190ffd51b --- /dev/null +++ b/roles/openshift_node/templates/openvswitch.sysconfig.j2 @@ -0,0 +1 @@ +IMAGE_VERSION={{ openshift.common.image_tag }} diff --git a/roles/openshift_node_certificates/tasks/main.yml b/roles/openshift_node_certificates/tasks/main.yml index b54811414..c9a7a40c8 100644 --- a/roles/openshift_node_certificates/tasks/main.yml +++ b/roles/openshift_node_certificates/tasks/main.yml @@ -3,6 +3,7 @@    file:      path: "{{ openshift_generated_configs_dir }}"      state: directory +    mode: 0700    when: nodes_needing_certs | length > 0  - name: Generate the node client config diff --git a/roles/openshift_persistent_volumes/tasks/main.yml b/roles/openshift_persistent_volumes/tasks/main.yml index 2455fc792..e431e978c 100644 --- a/roles/openshift_persistent_volumes/tasks/main.yml +++ b/roles/openshift_persistent_volumes/tasks/main.yml @@ -23,7 +23,7 @@      --config={{ mktemp.stdout }}/admin.kubeconfig    register: pv_create_output    when: persistent_volumes | length > 0 -  failed_when: ('already exists' not in pv_create_output.stderr if pv_create_output.stderr else False) or ('created' not in pv_create_output.stdout if pv_create_output.stdout else False) +  failed_when: ('already exists' not in pv_create_output.stderr) and ('created' not in pv_create_output.stdout)    changed_when: ('created' in pv_create_output.stdout)  - name: Deploy PersistentVolumeClaim definitions @@ -40,7 +40,7 @@      --config={{ mktemp.stdout }}/admin.kubeconfig    register: pvc_create_output    when: persistent_volume_claims | length > 0 -  failed_when: ('already exists' not in pvc_create_output.stderr if pvc_create_output.stderr else False) or ('created' not in pvc_create_output.stdout if pvc_create_output.stdout else False) +  failed_when: ('already exists' not in pvc_create_output.stderr) and ('created' not in pvc_create_output.stdout)    changed_when: ('created' in pvc_create_output.stdout)  - name: Delete temp directory diff --git a/roles/openshift_repos/tasks/main.yaml b/roles/openshift_repos/tasks/main.yaml index 8a75639c2..af9fefec6 100644 --- a/roles/openshift_repos/tasks/main.yaml +++ b/roles/openshift_repos/tasks/main.yaml @@ -9,6 +9,7 @@  - assert:      that: openshift_deployment_type in known_openshift_deployment_types +  when: not openshift.common.is_containerized | bool  - name: Ensure libselinux-python is installed    action: "{{ ansible_pkg_mgr }} name=libselinux-python state=present" @@ -34,9 +35,9 @@      state: absent    with_fileglob:    - '*/repos/*' -  when: not (item | search("/files/" ~ openshift_deployment_type ~ "/repos")) and -        (ansible_os_family == "RedHat" and ansible_distribution != "Fedora") -        and not openshift.common.is_containerized | bool +  when: not openshift.common.is_containerized | bool  +        and not (item | search("/files/" ~ openshift_deployment_type ~ "/repos")) +        and (ansible_os_family == "RedHat" and ansible_distribution != "Fedora")    notify: refresh cache  - name: Remove any yum repo files for other deployment types Fedora @@ -45,20 +46,20 @@      state: absent    with_fileglob:    - '*/repos/*' -  when: not (item | search("/files/fedora-" ~ openshift_deployment_type ~ "/repos")) and -        (ansible_distribution == "Fedora")  -        and not openshift.common.is_containerized | bool +  when: not openshift.common.is_containerized | bool +        and not (item | search("/files/fedora-" ~ openshift_deployment_type ~ "/repos")) +        and (ansible_distribution == "Fedora")    notify: refresh cache  - name: Configure gpg keys if needed -  copy: src={{ item }} dest=/etc/pki/rpm-gpg/ +  copy: src="{{ item }}" dest=/etc/pki/rpm-gpg/    with_fileglob:    - "{{ openshift_deployment_type }}/gpg_keys/*"    notify: refresh cache    when: not openshift.common.is_containerized | bool  - name: Configure yum repositories RHEL/CentOS -  copy: src={{ item }} dest=/etc/yum.repos.d/ +  copy: src="{{ item }}" dest=/etc/yum.repos.d/    with_fileglob:    - "{{ openshift_deployment_type }}/repos/*"    notify: refresh cache @@ -66,7 +67,7 @@          and not openshift.common.is_containerized | bool  - name: Configure yum repositories Fedora -  copy: src={{ item }} dest=/etc/yum.repos.d/ +  copy: src="{{ item }}" dest=/etc/yum.repos.d/    with_fileglob:    - "fedora-{{ openshift_deployment_type }}/repos/*"    notify: refresh cache diff --git a/roles/openshift_serviceaccounts/tasks/legacy_add_scc_to_user.yml b/roles/openshift_serviceaccounts/tasks/legacy_add_scc_to_user.yml new file mode 100644 index 000000000..1efab9466 --- /dev/null +++ b/roles/openshift_serviceaccounts/tasks/legacy_add_scc_to_user.yml @@ -0,0 +1,37 @@ +#### +# +# OSE 3.0.z did not have 'oadm policy add-scc-to-user'. +# +#### + +- name: tmp dir for openshift +  file: +    path: /tmp/openshift +    state: directory +    owner: root +    mode: 700 + +- name: Create service account configs +  template: +    src: serviceaccount.j2 +    dest: "/tmp/openshift/{{ item }}-serviceaccount.yaml" +  with_items: openshift_serviceaccounts_names + +- name: Get current security context constraints +  shell: > +    {{ openshift.common.client_binary }} get scc privileged -o yaml +    --output-version=v1 > /tmp/openshift/scc.yaml +  changed_when: false + +- name: Add security context constraint for {{ item }} +  lineinfile: +    dest: /tmp/openshift/scc.yaml +    line: "- system:serviceaccount:{{ openshift_serviceaccounts_namespace }}:{{ item.0 }}" +    insertafter: "^users:$" +  when: "item.1.rc == 0 and 'system:serviceaccount:{{ openshift_serviceaccounts_namespace }}:{{ item.0 }}' not in {{ (item.1.stdout | from_yaml).users }}" +  with_nested: +  - openshift_serviceaccounts_names +  - scc_test.results + +- name: Apply new scc rules for service accounts +  command: "{{ openshift.common.client_binary }} update -f /tmp/openshift/scc.yaml --api-version=v1" diff --git a/roles/openshift_serviceaccounts/tasks/main.yml b/roles/openshift_serviceaccounts/tasks/main.yml index 5fe7d28f3..f34fa7b74 100644 --- a/roles/openshift_serviceaccounts/tasks/main.yml +++ b/roles/openshift_serviceaccounts/tasks/main.yml @@ -27,7 +27,10 @@    command: >        {{ openshift.common.admin_binary }} policy add-scc-to-user        privileged system:serviceaccount:{{ openshift_serviceaccounts_namespace }}:{{ item.0 }} -  when: "item.1.rc == 0 and 'system:serviceaccount:{{ openshift_serviceaccounts_namespace }}:{{ item.0 }}' not in {{ (item.1.stdout | from_yaml).users }}" +  when: "openshift.common.version_gte_3_1_or_1_1 and item.1.rc == 0 and 'system:serviceaccount:{{ openshift_serviceaccounts_namespace }}:{{ item.0 }}' not in {{ (item.1.stdout | from_yaml).users }}"    with_nested:    - openshift_serviceaccounts_names    - scc_test.results + +- include: legacy_add_scc_to_user.yml +  when: not openshift.common.version_gte_3_1_or_1_1 diff --git a/roles/os_reboot_server/tasks/main.yaml b/roles/os_reboot_server/tasks/main.yaml new file mode 100644 index 000000000..581ed3e0a --- /dev/null +++ b/roles/os_reboot_server/tasks/main.yaml @@ -0,0 +1,16 @@ +--- +# Role to reboot a server +- name: Restart server +  shell: sleep 2 && shutdown -r now "Ansible updates triggered" +  async: 1 +  poll: 0 +  ignore_errors: true + +- name: Wait for server to restart +  local_action: +    module: wait_for +      host={{ ansible_ssh_host }} +      port=22 +      delay=3 +      timeout=300 +  sudo: false diff --git a/roles/os_update_latest/tasks/main.yml b/roles/os_update_latest/tasks/main.yml index 2400164fa..ff2b52275 100644 --- a/roles/os_update_latest/tasks/main.yml +++ b/roles/os_update_latest/tasks/main.yml @@ -1,8 +1,3 @@  --- -- fail: -    msg: "Update is not yet supported by this playbook on atomic hosts" -  when: openshift.common.is_containerized | bool -  - name: Update all packages    action: "{{ ansible_pkg_mgr }} name=* state=latest" -  when: not openshift.common.is_containerized | bool
\ No newline at end of file diff --git a/roles/os_utils/tasks/main.yaml b/roles/os_utils/tasks/main.yaml new file mode 100644 index 000000000..346f6566f --- /dev/null +++ b/roles/os_utils/tasks/main.yaml @@ -0,0 +1,17 @@ +--- +# Utility packages that make things helpful + +- name: Install useful rpm packages +  action: "{{ ansible_pkg_mgr }} name={{ item }} state=present" +  with_items: +  - wget +  - git +  - net-tools +  - bind-utils +  - iptables-services +  - bridge-utils +  - bash-completion +  - atop +  - htop +  - ack +  - telnet diff --git a/roles/os_zabbix/vars/template_openshift_master.yml b/roles/os_zabbix/vars/template_openshift_master.yml index 1824d7881..e36f23a2b 100644 --- a/roles/os_zabbix/vars/template_openshift_master.yml +++ b/roles/os_zabbix/vars/template_openshift_master.yml @@ -7,12 +7,6 @@ g_template_openshift_master:      - Openshift Master      key: openshift.master.app.create -  - key: openshift.master.registry.healthy_pct -    description: "Shows the percentage of healthy registries in the cluster" -    type: int -    applications: -    - Openshift Master -    - key: openshift.master.process.count      description: Shows number of master processes running      type: int @@ -278,11 +272,6 @@ g_template_openshift_master:      url: 'https://github.com/openshift/ops-sop/blob/master/V3/Alerts/openshift_master.asciidoc'      priority: high -  - name: 'Low number of etcd watchers on {HOST.NAME}' -    expression: '{Template Openshift Master:openshift.master.etcd.watchers.last(#1)}<10 and {Template Openshift Master:openshift.master.etcd.watchers.last(#2)}<10' -    url: 'https://github.com/openshift/ops-sop/blob/master/V3/Alerts/check_etcd.asciidoc' -    priority: avg -    - name: 'Etcd ping failed on {HOST.NAME}'      expression: '{Template Openshift Master:openshift.master.etcd.ping.last(#1)}=0 and {Template Openshift Master:openshift.master.etcd.ping.last(#2)}=0'      url: 'https://github.com/openshift/ops-sop/blob/master/V3/Alerts/check_etcd.asciidoc' @@ -345,20 +334,6 @@ g_template_openshift_master:      - 'Openshift Master process not running on {HOST.NAME}'      priority: avg -  - name: 'One or more Docker Registries is unhealthy according to {HOST.NAME}' -    expression: '{Template Openshift Master:openshift.master.registry.healthy_pct.last(#2)}<100 and {Template Openshift Master:openshift.master.registry.healthy_pct.max(#2)}>50' -    url: 'https://github.com/openshift/ops-sop/blob/master/V3/Alerts/openshift_registry.asciidoc' -    dependencies: -    - 'Openshift Master process not running on {HOST.NAME}' -    priority: avg - -  - name: 'Multiple Docker Registries are unhealthy according to {HOST.NAME}' -    expression: '{Template Openshift Master:openshift.master.registry.healthy_pct.last(#2)}<51' -    url: 'https://github.com/openshift/ops-sop/blob/master/V3/Alerts/openshift_registry.asciidoc' -    dependencies: -    - 'Openshift Master process not running on {HOST.NAME}' -    priority: high -    - name: 'SkyDNS port not listening on {HOST.NAME}'      expression: '{Template Openshift Master:openshift.master.skydns.port.open.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_openshift_node.yml b/roles/os_zabbix/vars/template_openshift_node.yml index b0488656d..66bd3a147 100644 --- a/roles/os_zabbix/vars/template_openshift_node.yml +++ b/roles/os_zabbix/vars/template_openshift_node.yml @@ -26,7 +26,29 @@ g_template_openshift_node:      applications:      - Openshift Node +  - key: openshift.node.registry-pods.healthy_pct +    description: Shows the percentage of healthy registries in the cluster +    type: int +    applications: +    - Openshift Node + +  - key: openshift.node.registry.service.ping +    description: Ping docker-registry service from node +    type: int +    applications: +    - Openshift Node +    ztriggers: +  - name: 'One or more Docker Registries is unhealthy according to {HOST.NAME}' +    expression: '{Template Openshift Node:openshift.node.registry-pods.healthy_pct.last(#2)}<100 and {Template Openshift Node:openshift.node.registry-pods.healthy_pct.last(#1)}<100' +    url: 'https://github.com/openshift/ops-sop/blob/master/V3/Alerts/openshift_registry.asciidoc' +    priority: avg + +  - name: 'Docker Registry service is unhealthy according to {HOST.NAME}' +    expression: '{Template Openshift Node:openshift.node.registry.service.ping.last(#2)}<1 and {Template Openshift Node:openshift.node.registry.service.ping.last(#1)}<1' +    url: 'https://github.com/openshift/ops-sop/blob/master/V3/Alerts/openshift_registry.asciidoc' +    priority: avg +    - name: 'Openshift Node process not running on {HOST.NAME}'      expression: '{Template Openshift Node:openshift.node.process.count.max(#3)}<1'      url: 'https://github.com/openshift/ops-sop/blob/node/V3/Alerts/openshift_node.asciidoc' @@ -37,7 +59,7 @@ g_template_openshift_node:      url: 'https://github.com/openshift/ops-sop/blob/node/V3/Alerts/openshift_node.asciidoc'      priority: high -  - name: '[HEAL] OVS may not be running on {HOST.NAME}' +  - name: '[Heal] OVS may not be running on {HOST.NAME}'      expression: '{Template Openshift Node:openshift.node.ovs.pids.count.last(#1)}<>4 and {Template Openshift Node:openshift.node.ovs.pids.count.last(#2)}<>4'      url: 'https://github.com/openshift/ops-sop/blob/node/V3/Alerts/openshift_node.asciidoc'      priority: high @@ -46,5 +68,3 @@ g_template_openshift_node:      expression: '{Template Openshift Node:openshift.node.ovs.ports.count.last()}=0'      url: 'https://github.com/openshift/ops-sop/blob/node/V3/Alerts/openshift_node.asciidoc'      priority: high - - diff --git a/roles/os_zabbix/vars/template_ops_tools.yml b/roles/os_zabbix/vars/template_ops_tools.yml index d1b8a2514..a0a5a4d03 100644 --- a/roles/os_zabbix/vars/template_ops_tools.yml +++ b/roles/os_zabbix/vars/template_ops_tools.yml @@ -21,3 +21,34 @@ g_template_ops_tools:      expression: '{Template Operations Tools:disc.ops.runner.command.exitcode[{#OSO_COMMAND}].last()}<>0'      url: 'https://github.com/openshift/ops-sop/blob/master/V3/Alerts/check_ops_runner_command.asciidoc'      priority: average + +  zactions: +  - name: 'Remote command for [Heal] triggers' +    status: enabled +    escalation_time: 60 +    conditions_filter: +      calculation_type: "and/or" +      conditions: +      - conditiontype: maintenance status +        operator: not in +      - conditiontype: trigger name +        operator: like +        value: "[Heal]" +      - conditiontype: trigger value +        operator: "=" +        value: PROBLEM +    operations: +    - esc_step_from: 1 +      esc_step_to: 1 +      esc_period: 0 +      operationtype: remote command +      opcommand: +        command: 'ssh -i /etc/openshift_tools/scriptrunner_id_rsa {{ ozb_scriptrunner_user }}@{{ ozb_scriptrunner_bastion_host }} remote-healer --host \"{HOST.NAME}\" --trigger \"{TRIGGER.NAME}\" --trigger-val \"{TRIGGER.VALUE}\"' +        execute_on: "zabbix server" +        type: 'custom script' +      target_hosts: +      - target_type: 'zabbix server' +      opconditions: +      - conditiontype: 'event acknowledged' +        operator: '=' +        value: 'not acknowledged' diff --git a/roles/oso_host_monitoring/templates/oso-rhel7-host-monitoring.service.j2 b/roles/oso_host_monitoring/templates/oso-rhel7-host-monitoring.service.j2 index 453a9a3b4..e17092202 100644 --- a/roles/oso_host_monitoring/templates/oso-rhel7-host-monitoring.service.j2 +++ b/roles/oso_host_monitoring/templates/oso-rhel7-host-monitoring.service.j2 @@ -43,13 +43,13 @@ ExecStart=/usr/bin/docker run --name {{ osohm_host_monitoring }}             -e ZAGG_URL={{ osohm_zagg_web_url }}                                              \             -e ZAGG_USER={{ osohm_default_zagg_server_user }}                                 \             -e ZAGG_PASSWORD={{ osohm_default_zagg_server_password }}                         \ -           -e ZAGG_CLIENT_HOSTNAME={{ ec2_tag_Name }}                                        \ +           -e ZAGG_CLIENT_HOSTNAME={{ oo_name }}                                        \             -e ZAGG_SSL_VERIFY={{ osohm_zagg_verify_ssl }}                                    \             -e OSO_CLUSTER_GROUP={{ cluster_group }}                                          \             -e OSO_CLUSTER_ID={{ oo_clusterid }}                                              \             -e OSO_ENVIRONMENT={{ oo_environment }}                                           \ -           -e OSO_HOST_TYPE={{ hostvars[inventory_hostname]['ec2_tag_host-type'] }}          \ -           -e OSO_SUB_HOST_TYPE={{ hostvars[inventory_hostname]['ec2_tag_sub-host-type'] }}  \ +           -e OSO_HOST_TYPE={{ hostvars[inventory_hostname]['oo_hosttype'] }}          \ +           -e OSO_SUB_HOST_TYPE={{ hostvars[inventory_hostname]['oo_subhosttype'] }}  \             -e OSO_MASTER_HA={{ osohm_master_ha }}                                            \             -v /etc/localtime:/etc/localtime                                                  \             -v /sys:/sys:ro                                                                   \ @@ -57,11 +57,13 @@ ExecStart=/usr/bin/docker run --name {{ osohm_host_monitoring }}             -v /var/lib/docker:/var/lib/docker:ro                                             \             -v /var/run/docker.sock:/var/run/docker.sock                                      \             -v /var/run/openvswitch:/var/run/openvswitch                                      \ -{% if hostvars[inventory_hostname]['ec2_tag_host-type'] == 'master' %} +{% if hostvars[inventory_hostname]['oo_hosttype'] == 'master' %}             -v /etc/origin/master/admin.kubeconfig:/etc/origin/master/admin.kubeconfig  \             -v /etc/origin/master/master.etcd-client.crt:/etc/origin/master/master.etcd-client.crt \             -v /etc/origin/master/master.etcd-client.key:/etc/origin/master/master.etcd-client.key \             -v /etc/origin/master/master-config.yaml:/etc/origin/master/master-config.yaml \ +{% elif hostvars[inventory_hostname]['oo_hosttype'] == 'node' %} +           -v /etc/origin/node:/etc/origin/node                                              \  {% endif %}             {{ osohm_docker_registry_url }}{{ osohm_host_monitoring }} diff --git a/utils/src/ooinstall/cli_installer.py b/utils/src/ooinstall/cli_installer.py index 3046d4d58..ace834323 100644 --- a/utils/src/ooinstall/cli_installer.py +++ b/utils/src/ooinstall/cli_installer.py @@ -138,9 +138,10 @@ http://docs.openshift.com/enterprise/latest/architecture/infrastructure_componen          host_props['containerized'] = False          if oo_cfg.settings['variant_version'] != '3.0': -            rpm_or_container = click.prompt('Will this host be RPM or Container based (rpm/container)?', -                                            type=click.Choice(['rpm', 'container']), -                                            default='rpm') +            rpm_or_container = \ +                click.prompt('Will this host be RPM or Container based (rpm/container)?', +                             type=click.Choice(['rpm', 'container']), +                             default='rpm')              if rpm_or_container == 'container':                  host_props['containerized'] = True @@ -281,7 +282,8 @@ hostname.      host_props['connect_to'] = click.prompt('Enter hostname or IP address',                                              value_proc=validate_prompt_lb) -    install_haproxy = click.confirm('Should the reference haproxy load balancer be installed on this host?') +    install_haproxy = \ +        click.confirm('Should the reference haproxy load balancer be installed on this host?')      host_props['preconfigured'] = not install_haproxy      host_props['master'] = False      host_props['node'] = False @@ -375,7 +377,8 @@ def check_hosts_config(oo_cfg, unattended):              sys.exit(1)          elif len(master_lb) == 1:              if master_lb[0].master or master_lb[0].node: -                click.echo('ERROR: The Master load balancer is configured as a master or node. Please correct this.') +                click.echo('ERROR: The Master load balancer is configured as a master or node. ' \ +                           'Please correct this.')                  sys.exit(1)          else:              message = """ @@ -525,14 +528,30 @@ Add new nodes here  def get_installed_hosts(hosts, callback_facts):      installed_hosts = [] + +    # count nativeha lb as an installed host +    try: +        first_master = next(host for host in hosts if host.master) +        lb_hostname = callback_facts[first_master.connect_to]['master'].get('cluster_hostname', '') +        lb_host = \ +            next(host for host in hosts if host.ip == callback_facts[lb_hostname]['common']['ip']) + +        installed_hosts.append(lb_host) +    except (KeyError, StopIteration): +        pass +      for host in hosts: -        if(host.connect_to in callback_facts.keys() -           and 'common' in callback_facts[host.connect_to].keys() -           and callback_facts[host.connect_to]['common'].get('version', '') -           and callback_facts[host.connect_to]['common'].get('version', '') != 'None'): +        if host.connect_to in callback_facts.keys() and is_installed_host(host, callback_facts):              installed_hosts.append(host)      return installed_hosts +def is_installed_host(host, callback_facts): +    version_found = 'common' in callback_facts[host.connect_to].keys() and \ +           callback_facts[host.connect_to]['common'].get('version', '') and \ +           callback_facts[host.connect_to]['common'].get('version', '') != 'None' + +    return version_found or host.master_lb or host.preconfigured +  # pylint: disable=too-many-branches  # This pylint error will be corrected shortly in separate PR.  def get_hosts_to_run_on(oo_cfg, callback_facts, unattended, force, verbose): @@ -722,14 +741,30 @@ def upgrade(ctx):          click.echo("No hosts defined in: %s" % oo_cfg.config_path)          sys.exit(1) -    # Update config to reflect the version we're targetting, we'll write -    # to disk once ansible completes successfully, not before.      old_variant = oo_cfg.settings['variant']      old_version = oo_cfg.settings['variant_version'] -    if oo_cfg.settings['variant'] == 'enterprise': -        oo_cfg.settings['variant'] = 'openshift-enterprise' -    version = find_variant(oo_cfg.settings['variant'])[1] -    oo_cfg.settings['variant_version'] = version.name + + +    message = """ +        This tool will help you upgrade your existing OpenShift installation. +""" +    click.echo(message) +    click.echo("Version {} found. Do you want to update to the latest version of {} " \ +               "or migrate to the next major release?".format(old_version, old_version)) +    resp = click.prompt("(1) Update to latest {} (2) Migrate to next relese".format(old_version)) + +    if resp == "2": +        # TODO: Make this a lot more flexible +        new_version = "3.1" +        # Update config to reflect the version we're targetting, we'll write +        # to disk once ansible completes successfully, not before. +        if oo_cfg.settings['variant'] == 'enterprise': +            oo_cfg.settings['variant'] = 'openshift-enterprise' +        version = find_variant(oo_cfg.settings['variant'])[1] +        oo_cfg.settings['variant_version'] = version.name +    else: +        new_version = old_version +      click.echo("Openshift will be upgraded from %s %s to %s %s on the following hosts:\n" % (          old_variant, old_version, oo_cfg.settings['variant'],          oo_cfg.settings['variant_version'])) @@ -743,7 +778,7 @@ def upgrade(ctx):              click.echo("Upgrade cancelled.")              sys.exit(0) -    retcode = openshift_ansible.run_upgrade_playbook(verbose) +    retcode = openshift_ansible.run_upgrade_playbook(old_version, new_version, verbose)      if retcode > 0:          click.echo("Errors encountered during upgrade, please check %s." %              oo_cfg.settings['ansible_log_path']) diff --git a/utils/src/ooinstall/oo_config.py b/utils/src/ooinstall/oo_config.py index 33ab27567..b1af21773 100644 --- a/utils/src/ooinstall/oo_config.py +++ b/utils/src/ooinstall/oo_config.py @@ -10,6 +10,7 @@ PERSIST_SETTINGS = [      'ansible_ssh_user',      'ansible_config',      'ansible_log_path', +    'master_routingconfig_subdomain',      'variant',      'variant_version',      'version', @@ -146,7 +147,8 @@ class OOConfig(object):              raise OOConfigFileError('Cannot open config file "{}": {}'.format(ferr.filename,                                                                                ferr.strerror))          except yaml.scanner.ScannerError: -            raise OOConfigFileError('Config file "{}" is not a valid YAML document'.format(self.config_path)) +            raise OOConfigFileError( +                'Config file "{}" is not a valid YAML document'.format(self.config_path))      def _upgrade_legacy_config(self):          new_hosts = [] @@ -179,7 +181,8 @@ class OOConfig(object):          if not os.path.exists(self.settings['ansible_inventory_directory']):              os.makedirs(self.settings['ansible_inventory_directory'])          if 'ansible_plugins_directory' not in self.settings: -            self.settings['ansible_plugins_directory'] = resource_filename(__name__, 'ansible_plugins') +            self.settings['ansible_plugins_directory'] = \ +                resource_filename(__name__, 'ansible_plugins')          if 'version' not in self.settings:              self.settings['version'] = 'v1' @@ -190,7 +193,8 @@ class OOConfig(object):          if 'ansible_ssh_user' not in self.settings:              self.settings['ansible_ssh_user'] = '' -        self.settings['ansible_inventory_path'] = '{}/hosts'.format(self.settings['ansible_inventory_directory']) +        self.settings['ansible_inventory_path'] = \ +            '{}/hosts'.format(self.settings['ansible_inventory_directory'])          # clean up any empty sets          for setting in self.settings.keys(): diff --git a/utils/src/ooinstall/openshift_ansible.py b/utils/src/ooinstall/openshift_ansible.py index 042ce1023..3a135139b 100644 --- a/utils/src/ooinstall/openshift_ansible.py +++ b/utils/src/ooinstall/openshift_ansible.py @@ -113,9 +113,11 @@ def write_inventory_vars(base_inventory, multiple_masters, proxy):      if multiple_masters and proxy is not None:          base_inventory.write('openshift_master_cluster_method=native\n')          base_inventory.write("openshift_master_cluster_hostname={}\n".format(proxy.hostname)) -        base_inventory.write("openshift_master_cluster_public_hostname={}\n".format(proxy.public_hostname)) +        base_inventory.write( +            "openshift_master_cluster_public_hostname={}\n".format(proxy.public_hostname))      if CFG.settings.get('master_routingconfig_subdomain', False): -        base_inventory.write("osm_default_subdomain={}\n".format(CFG.settings['master_routingconfig_subdomain'])) +        base_inventory.write( +            "openshift_master_default_subdomain={}\n".format(CFG.settings['master_routingconfig_subdomain'])) @@ -204,7 +206,7 @@ def run_main_playbook(hosts, hosts_to_run_on, verbose=False):      inventory_file = generate_inventory(hosts_to_run_on)      if len(hosts_to_run_on) != len(hosts):          main_playbook_path = os.path.join(CFG.ansible_playbook_directory, -                                          'playbooks/byo/openshift-cluster/scaleup.yml') +                                          'playbooks/byo/openshift-node/scaleup.yml')      else:          main_playbook_path = os.path.join(CFG.ansible_playbook_directory,                                            'playbooks/byo/openshift-cluster/config.yml') @@ -237,11 +239,18 @@ def run_uninstall_playbook(verbose=False):      return run_ansible(playbook, inventory_file, facts_env, verbose) -def run_upgrade_playbook(verbose=False): +def run_upgrade_playbook(old_version, new_version, verbose=False):      # TODO: do not hardcode the upgrade playbook, add ability to select the      # right playbook depending on the type of upgrade. -    playbook = os.path.join(CFG.settings['ansible_playbook_directory'], -        'playbooks/byo/openshift-cluster/upgrades/v3_0_to_v3_1/upgrade.yml') +    old_version = old_version.replace('.', '_') +    new_version = old_version.replace('.', '_') +    if old_version == new_version: +        playbook = os.path.join(CFG.settings['ansible_playbook_directory'], +            'playbooks/byo/openshift-cluster/upgrades/v{}_minor/upgrade.yml'.format(new_version)) +    else: +        playbook = os.path.join(CFG.settings['ansible_playbook_directory'], +            'playbooks/byo/openshift-cluster/upgrades/v{}_to_v{}/upgrade.yml'.format(old_version, +                                                                                     new_version))      # TODO: Upgrade inventory for upgrade?      inventory_file = generate_inventory(CFG.hosts)      facts_env = os.environ.copy()  | 
