diff options
84 files changed, 40791 insertions, 3 deletions
diff --git a/roles/openshift_examples/defaults/main.yml b/roles/openshift_examples/defaults/main.yml index d88014bea..0f5189974 100644 --- a/roles/openshift_examples/defaults/main.yml +++ b/roles/openshift_examples/defaults/main.yml @@ -21,4 +21,4 @@ infrastructure_enterprise_base: "{{ examples_base }}/infrastructure-templates/en  openshift_examples_import_command: "create"  registry_url: "" -registry_host: "{{ registry_url.split('/')[0] if '.' in registry_url.split('/')[0] else '' }}"
\ No newline at end of file +registry_host: "{{ registry_url.split('/')[0] if '.' in registry_url.split('/')[0] else '' }}" diff --git a/roles/openshift_examples/examples-sync.sh b/roles/openshift_examples/examples-sync.sh index 24c18f2b8..7b4a8440e 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.3.1 -ORIGIN_VERSION=${1:-v1.2} +ORIGIN_VERSION=${1:-v1.3}  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/v1.3/db-templates/README.md b/roles/openshift_examples/files/examples/v1.3/db-templates/README.md new file mode 100644 index 000000000..609f4dec9 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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 vs 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.3/db-templates/mongodb-ephemeral-template.json b/roles/openshift_examples/files/examples/v1.3/db-templates/mongodb-ephemeral-template.json new file mode 100644 index 000000000..9a935be5e --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/db-templates/mongodb-ephemeral-template.json @@ -0,0 +1,218 @@ +{ +  "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": true, +              "containerNames": [ +                "mongodb" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "mongodb:latest", +                "namespace": "${NAMESPACE}" +              }, +              "lastTriggeredImage": "" +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "creationTimestamp": null, +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "mongodb", +                "image": " ", +                "ports": [ +                  { +                    "containerPort": 27017, +                    "protocol": "TCP" +                  } +                ], +                "readinessProbe": { +                  "timeoutSeconds": 1, +                  "initialDelaySeconds": 3, +                  "exec": { +                    "command": [ "/bin/sh", "-i", "-c", "mongo 127.0.0.1:27017/$MONGODB_DATABASE -u $MONGODB_USER -p $MONGODB_PASSWORD --eval=\"quit()\""] +                  } +                }, +                "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": "NAMESPACE", +      "displayName": "Namespace", +      "description": "The OpenShift Namespace where the ImageStream resides.", +      "value": "openshift" +    }, +    { +      "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.3/db-templates/mongodb-persistent-template.json b/roles/openshift_examples/files/examples/v1.3/db-templates/mongodb-persistent-template.json new file mode 100644 index 000000000..4f73d00cc --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/db-templates/mongodb-persistent-template.json @@ -0,0 +1,242 @@ +{ +  "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.  You must have persistent volumes available in your cluster to use this template.", +      "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": "${NAMESPACE}" +              }, +              "lastTriggeredImage": "" +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "creationTimestamp": null, +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "mongodb", +                "image": " ", +                "ports": [ +                  { +                    "containerPort": 27017, +                    "protocol": "TCP" +                  } +                ], +                "readinessProbe": { +                  "timeoutSeconds": 1, +                  "initialDelaySeconds": 3, +                  "exec": { +                    "command": [ "/bin/sh", "-i", "-c", "mongo 127.0.0.1:27017/$MONGODB_DATABASE -u $MONGODB_USER -p $MONGODB_PASSWORD --eval=\"quit()\""] +                  } +                }, +                "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": "NAMESPACE", +      "displayName": "Namespace", +      "description": "The OpenShift Namespace where the ImageStream resides.", +      "value": "openshift" +    }, +    { +      "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": "1Gi", +      "required": true +    } +  ], +  "labels": { +    "template": "mongodb-persistent-template" +  } +} diff --git a/roles/openshift_examples/files/examples/v1.3/db-templates/mysql-ephemeral-template.json b/roles/openshift_examples/files/examples/v1.3/db-templates/mysql-ephemeral-template.json new file mode 100644 index 000000000..5f133b946 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/db-templates/mysql-ephemeral-template.json @@ -0,0 +1,207 @@ +{ +  "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": true, +              "containerNames": [ +                "mysql" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "mysql:latest", +                "namespace": "${NAMESPACE}" +              }, +              "lastTriggeredImage": "" +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "creationTimestamp": null, +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "mysql", +                "image": " ", +                "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": "NAMESPACE", +      "displayName": "Namespace", +      "description": "The OpenShift Namespace where the ImageStream resides.", +      "value": "openshift" +    }, +    { +      "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.3/db-templates/mysql-persistent-template.json b/roles/openshift_examples/files/examples/v1.3/db-templates/mysql-persistent-template.json new file mode 100644 index 000000000..88d8c3940 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/db-templates/mysql-persistent-template.json @@ -0,0 +1,208 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "mysql-persistent", +    "annotations": { +      "description": "MySQL database service, with persistent storage.  Scaling to more than one replica is not supported.  You must have persistent volumes available in your cluster to use this template.", +      "iconClass": "icon-mysql-database", +      "tags": "database,mysql" +    } +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}" +      }, +      "spec": { +        "ports": [ +          { +            "name": "mysql", +            "port": 3306 +          } +        ], +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        } +      } +    }, +    { +      "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}" +      }, +      "spec": { +        "strategy": { +          "type": "Recreate" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "mysql" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "mysql:latest", +                "namespace": "${NAMESPACE}" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "mysql", +                "image": " ", +                "ports": [ +                  { +                    "containerPort": 3306 +                  } +                ], +                "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" +                  } +                ], +                "imagePullPolicy": "IfNotPresent" +              } +            ], +            "volumes": [ +              { +                "name": "${DATABASE_SERVICE_NAME}-data", +                "persistentVolumeClaim": { +                  "claimName": "${DATABASE_SERVICE_NAME}" +                } +              } +            ] +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "MEMORY_LIMIT", +      "displayName": "Memory Limit", +      "description": "Maximum amount of memory the container can use.", +      "value": "512Mi", +      "required": true +    }, +    { +      "name": "NAMESPACE", +      "displayName": "Namespace", +      "description": "The OpenShift Namespace where the ImageStream resides.", +      "value": "openshift" +    }, +    { +      "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": "1Gi", +      "required": true +    } +  ], +  "labels": { +    "template": "mysql-persistent-template" +  } +} diff --git a/roles/openshift_examples/files/examples/v1.3/db-templates/postgresql-ephemeral-template.json b/roles/openshift_examples/files/examples/v1.3/db-templates/postgresql-ephemeral-template.json new file mode 100644 index 000000000..e90244a6b --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/db-templates/postgresql-ephemeral-template.json @@ -0,0 +1,206 @@ +{ +  "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": true, +              "containerNames": [ +                "postgresql" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "postgresql:latest", +                "namespace": "${NAMESPACE}" +              }, +              "lastTriggeredImage": "" +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "creationTimestamp": null, +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "postgresql", +                "image": " ", +                "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": "NAMESPACE", +      "displayName": "Namespace", +      "description": "The OpenShift Namespace where the ImageStream resides.", +      "value": "openshift" +    }, +    { +      "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.3/db-templates/postgresql-persistent-template.json b/roles/openshift_examples/files/examples/v1.3/db-templates/postgresql-persistent-template.json new file mode 100644 index 000000000..7b05076a5 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/db-templates/postgresql-persistent-template.json @@ -0,0 +1,230 @@ +{ +  "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.  You must have persistent volumes available in your cluster to use this template.", +      "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": "${NAMESPACE}" +              }, +              "lastTriggeredImage": "" +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "creationTimestamp": null, +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "postgresql", +                "image": " ", +                "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": "NAMESPACE", +      "displayName": "Namespace", +      "description": "The OpenShift Namespace where the ImageStream resides.", +      "value": "openshift" +    }, +    { +      "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": "1Gi", +      "required": true +    } +  ], +  "labels": { +    "template": "postgresql-persistent-template" +  } +} diff --git a/roles/openshift_examples/files/examples/v1.3/image-streams/image-streams-centos7.json b/roles/openshift_examples/files/examples/v1.3/image-streams/image-streams-centos7.json new file mode 100644 index 000000000..d971e5e7a --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/image-streams/image-streams-centos7.json @@ -0,0 +1,628 @@ +{ +  "kind": "ImageStreamList", +  "apiVersion": "v1", +  "metadata": {}, +  "items": [ +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "ruby" +      }, +      "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.3" +            } +          }, +          { +            "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" +            } +          }, +          { +            "name": "2.3", +            "annotations": { +              "description": "Build and run Ruby 2.3 applications", +              "iconClass": "icon-ruby", +              "tags": "builder,ruby", +              "supports": "ruby:2.3,ruby", +              "version": "2.3", +              "sampleRepo": "https://github.com/openshift/ruby-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "centos/ruby-23-centos7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs" +      }, +      "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" +      }, +      "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" +      }, +      "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" +      }, +      "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.5" +            } +          }, +          { +            "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" +            } +          }, +          { +            "name": "3.5", +            "annotations": { +              "description": "Build and run Python 3.5 applications", +              "iconClass": "icon-python", +              "tags": "builder,python", +              "supports":"python:3.5,python", +              "version": "3.5", +              "sampleRepo": "https://github.com/openshift/django-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "centos/python-35-centos7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "wildfly" +      }, +      "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" +      }, +      "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": "mariadb" +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Provides a MariaDB database", +              "iconClass": "icon-mariadb", +              "tags": "mariadb" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "10.1" +            } +          }, +          { +            "name": "10.1", +            "annotations": { +              "description": "Provides a MariaDB v10.1 database", +              "iconClass": "icon-mariadb", +              "tags": "mariadb", +              "version": "10.1" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "centos/mariadb-101-centos7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "postgresql" +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Provides a PostgreSQL database", +              "iconClass": "icon-postgresql", +              "tags": "postgresql" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "9.5" +            } +          }, +          { +            "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" +            } +          }, +          { +            "name": "9.5", +            "annotations": { +              "description": "Provides a PostgreSQL v9.5 database", +              "iconClass": "icon-postgresql", +              "tags": "postgresql", +              "version": "9.5" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "centos/postgresql-95-centos7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "mongodb" +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Provides a MongoDB database", +              "iconClass": "icon-mongodb", +              "tags": "mongodb" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "3.2" +            } +          }, +          { +            "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" +            } +          }, +          { +            "name": "3.2", +            "annotations": { +              "description": "Provides a MongoDB v3.2 database", +              "iconClass": "icon-mongodb", +              "tags": "mongodb", +              "version": "3.2" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "centos/mongodb-32-centos7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "jenkins" +      }, +      "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.3/image-streams/image-streams-rhel7.json b/roles/openshift_examples/files/examples/v1.3/image-streams/image-streams-rhel7.json new file mode 100644 index 000000000..56c63263b --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/image-streams/image-streams-rhel7.json @@ -0,0 +1,573 @@ +{ +  "kind": "ImageStreamList", +  "apiVersion": "v1", +  "metadata": {}, +  "items": [ +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "ruby" +      }, +      "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.3" +            } +          }, +          { +            "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" +            } +          }, +          { +            "name": "2.3", +            "annotations": { +              "description": "Build and run Ruby 2.3 applications", +              "iconClass": "icon-ruby", +              "tags": "builder,ruby", +              "supports": "ruby:2.3,ruby", +              "version": "2.3", +              "sampleRepo": "https://github.com/openshift/ruby-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/rhscl/ruby-23-rhel7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs" +      }, +      "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": "4" +            } +          }, +          { +            "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" +            } +          }, +          { +            "name": "4", +            "annotations": { +              "description": "Build and run NodeJS 4.x applications", +              "iconClass": "icon-nodejs", +              "tags": "builder,nodejs", +              "supports":"nodejs:4,nodejs", +              "version": "4", +              "sampleRepo": "https://github.com/openshift/nodejs-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/rhscl/nodejs-4-rhel7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "perl" +      }, +      "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" +      }, +      "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" +      }, +      "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.5" +            } +          }, +          { +            "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" +            } +          }, +          { +            "name": "3.5", +            "annotations": { +              "description": "Build and run Python 3.5 applications", +              "iconClass": "icon-python", +              "tags": "builder,python", +              "supports":"python:3.5,python", +              "version": "3.5", +              "sampleRepo": "https://github.com/openshift/django-ex.git" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/rhscl/python-35-rhel7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "mysql" +      }, +      "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": "mariadb" +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Provides a MariaDB database", +              "iconClass": "icon-mariadb", +              "tags": "mariadb" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "10.1" +            } +          }, +          { +            "name": "10.1", +            "annotations": { +              "description": "Provides a MariaDB v10.1 database", +              "iconClass": "icon-mariadb", +              "tags": "mariadb", +              "version": "10.1" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/rhscl/mariadb-101-rhel7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "postgresql" +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Provides a PostgreSQL database", +              "iconClass": "icon-postgresql", +              "tags": "postgresql" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "9.5" +            } +          }, +          { +            "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" +            } +          }, +          { +            "name": "9.5", +            "annotations": { +              "description": "Provides a PostgreSQL v9.5 database", +              "iconClass": "icon-postgresql", +              "tags": "postgresql", +              "version": "9.5" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/rhscl/postgresql-95-rhel7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "mongodb" +      }, +      "spec": { +        "tags": [ +          { +            "name": "latest", +            "annotations": { +              "description": "Provides a MongoDB database", +              "iconClass": "icon-mongodb", +              "tags": "mongodb" +            }, +            "from": { +              "kind": "ImageStreamTag", +              "name": "3.2" +            } +          }, +          { +            "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" +            } +          }, +          { +            "name": "3.2", +            "annotations": { +              "description": "Provides a MongoDB v3.2 database", +              "iconClass": "icon-mongodb", +              "tags": "mongodb", +              "version": "3.2" +            }, +            "from": { +              "kind": "DockerImage", +              "name": "registry.access.redhat.com/rhscl/mongodb-32-rhel7:latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "jenkins" +      }, +      "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.3/infrastructure-templates/enterprise/logging-deployer.yaml b/roles/openshift_examples/files/examples/v1.3/infrastructure-templates/enterprise/logging-deployer.yaml new file mode 100644 index 000000000..b9835e7e9 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/infrastructure-templates/enterprise/logging-deployer.yaml @@ -0,0 +1,326 @@ +apiVersion: "v1" +kind: "List" +items: +- +  apiVersion: "v1" +  kind: "Template" +  metadata: +    name: logging-deployer-account-template +    annotations: +      description: "Template for creating the deployer account and roles needed for the aggregated logging deployer. Create as cluster-admin." +      tags: "infrastructure" +  objects: +  - +    apiVersion: v1 +    kind: ServiceAccount +    name: logging-deployer +    metadata: +      name: logging-deployer +      labels: +        logging-infra: deployer +        provider: openshift +        component: deployer +  - +    apiVersion: v1 +    kind: ServiceAccount +    metadata: +      name: aggregated-logging-kibana +  - +    apiVersion: v1 +    kind: ServiceAccount +    metadata: +      name: aggregated-logging-elasticsearch +  - +    apiVersion: v1 +    kind: ServiceAccount +    metadata: +      name: aggregated-logging-fluentd +  - +    apiVersion: v1 +    kind: ServiceAccount +    metadata: +      name: aggregated-logging-curator +  - apiVersion: v1 +    kind: ClusterRole +    metadata: +      name: oauth-editor +    rules: +    - resources: +      - oauthclients +      verbs: +      - create +      - delete +  - apiVersion: v1 +    kind: ClusterRole +    metadata: +      name: daemonset-admin +    rules: +    - resources: +      - daemonsets +      apiGroups: +      - extensions +      verbs: +      - create +      - get +      - list +      - watch +      - delete +      - update +  - +    apiVersion: v1 +    kind: RoleBinding +    metadata: +      name: logging-deployer-edit-role +    roleRef: +      kind: ClusterRole +      name: edit +    subjects: +    - kind: ServiceAccount +      name: logging-deployer +  - +    apiVersion: v1 +    kind: RoleBinding +    metadata: +      name: logging-deployer-dsadmin-role +    roleRef: +      kind: ClusterRole +      name: daemonset-admin +    subjects: +    - kind: ServiceAccount +      name: logging-deployer +- +  apiVersion: "v1" +  kind: "Template" +  metadata: +    name: logging-deployer-template +    annotations: +      description: "Template for running the aggregated logging deployer in a pod. Requires empowered 'logging-deployer' service account." +      tags: "infrastructure" +  labels: +    logging-infra: deployer +    provider: openshift +  objects: +  - +    apiVersion: v1 +    kind: Pod +    metadata: +      generateName: logging-deployer- +    spec: +      containers: +      - image: ${IMAGE_PREFIX}logging-deployer:${IMAGE_VERSION} +        imagePullPolicy: Always +        name: deployer +        volumeMounts: +        - 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: IMAGE_PULL_SECRET +            value: ${IMAGE_PULL_SECRET} +          - name: INSECURE_REGISTRY +            value: ${INSECURE_REGISTRY} +          - 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_PVC_SIZE +            value: ${ES_PVC_SIZE} +          - name: ES_PVC_PREFIX +            value: ${ES_PVC_PREFIX} +          - name: ES_PVC_DYNAMIC +            value: ${ES_PVC_DYNAMIC} +          - 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_PVC_SIZE +            value: ${ES_OPS_PVC_SIZE} +          - name: ES_OPS_PVC_PREFIX +            value: ${ES_OPS_PVC_PREFIX} +          - name: ES_OPS_PVC_DYNAMIC +            value: ${ES_OPS_PVC_DYNAMIC} +          - 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} +          - name: FLUENTD_NODESELECTOR +            value: ${FLUENTD_NODESELECTOR} +          - name: ES_NODESELECTOR +            value: ${ES_NODESELECTOR} +          - name: ES_OPS_NODESELECTOR +            value: ${ES_OPS_NODESELECTOR} +          - name: KIBANA_NODESELECTOR +            value: ${KIBANA_NODESELECTOR} +          - name: KIBANA_OPS_NODESELECTOR +            value: ${KIBANA_OPS_NODESELECTOR} +          - name: CURATOR_NODESELECTOR +            value: ${CURATOR_NODESELECTOR} +          - name: CURATOR_OPS_NODESELECTOR +            value: ${CURATOR_OPS_NODESELECTOR} +          - name: MODE +            value: ${MODE} +      dnsPolicy: ClusterFirst +      restartPolicy: Never +      serviceAccount: logging-deployer +      volumes: +      - name: empty +        emptyDir: {} +  parameters: +  - +    description: "The mode that the deployer runs in." +    name: MODE +    value: "install" +  - +    description: 'Specify prefix for logging components; e.g. for "registry.access.redhat.com/openshift3/logging-deployer:3.3.0", set prefix "registry.access.redhat.com/openshift3/"' +    name: IMAGE_PREFIX +    value: "docker.io/openshift/origin-" +  - +    description: 'Specify version for logging components; e.g. for "registry.access.redhat.com/openshift3/logging-deployer:3.3.0", set version "3.3.0"' +    name: IMAGE_VERSION +    value: "latest" +  - +    description: "(Deprecated) Specify the name of an existing pull secret to be used for pulling component images from an authenticated registry." +    name: IMAGE_PULL_SECRET +  - +    description: "(Deprecated) Allow the registry for logging component images to be non-secure (not secured with a certificate signed by a known CA)" +    name: INSECURE_REGISTRY +    value: "false" +  - +    description: "(Deprecated) If true, set up to use a second ES cluster for ops logs." +    name: ENABLE_OPS_CLUSTER +    value: "false" +  - +    description: "(Deprecated) External hostname where clients will reach kibana" +    name: KIBANA_HOSTNAME +    value: "kibana.example.com" +  - +    description: "(Deprecated) External hostname at which admins will visit the ops Kibana." +    name: KIBANA_OPS_HOSTNAME +    value: kibana-ops.example.com +  - +    description: "(Deprecated) External URL for the master, for OAuth purposes" +    name: PUBLIC_MASTER_URL +    value: "https://localhost:8443" +  - +    description: "(Deprecated) Internal URL for the master, for authentication retrieval" +    name: MASTER_URL +    value: "https://kubernetes.default.svc.cluster.local" +  - +    description: "(Deprecated) How many instances of ElasticSearch to deploy." +    name: ES_CLUSTER_SIZE +    value: "1" +  - +    description: "(Deprecated) Amount of RAM to reserve per ElasticSearch instance." +    name: ES_INSTANCE_RAM +    value: "8G" +  - +    description: "(Deprecated) Size of the PersistentVolumeClaim to create per ElasticSearch instance, e.g. 100G. If empty, no PVCs will be created and emptyDir volumes are used instead." +    name: ES_PVC_SIZE +  - +    description: "(Deprecated) Prefix for the names of PersistentVolumeClaims to be created; a number will be appended per instance. If they don't already exist, they will be created with size ES_PVC_SIZE." +    name: ES_PVC_PREFIX +    value: "logging-es-" +  - +    description: '(Deprecated) Set to "true" to request dynamic provisioning (if enabled for your cluster) of a PersistentVolume for the ES PVC. ' +    name: ES_PVC_DYNAMIC +  - +    description: "(Deprecated) 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: "(Deprecated) 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: "(Deprecated) 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: "(Deprecated) Timeout for *expected* nodes to be present when cluster is recovering from a full restart." +    name: ES_RECOVER_AFTER_TIME +    value: "5m" +  - +    description: "(Deprecated) How many ops instances of ElasticSearch to deploy. By default, ES_CLUSTER_SIZE." +    name: ES_OPS_CLUSTER_SIZE +  - +    description: "(Deprecated) Amount of RAM to reserve per ops ElasticSearch instance." +    name: ES_OPS_INSTANCE_RAM +    value: "8G" +  - +    description: "(Deprecated) Size of the PersistentVolumeClaim to create per ElasticSearch ops instance, e.g. 100G. If empty, no PVCs will be created and emptyDir volumes are used instead." +    name: ES_OPS_PVC_SIZE +  - +    description: "(Deprecated) Prefix for the names of PersistentVolumeClaims to be created; a number will be appended per instance. If they don't already exist, they will be created with size ES_OPS_PVC_SIZE." +    name: ES_OPS_PVC_PREFIX +    value: "logging-es-ops-" +  - +    description: '(Deprecated) Set to "true" to request dynamic provisioning (if enabled for your cluster) of a PersistentVolume for the ES ops PVC. ' +    name: ES_OPS_PVC_DYNAMIC +  - +    description: "(Deprecated) 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: "(Deprecated) 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: "(Deprecated) 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: "(Deprecated) Timeout for *expected* ops nodes to be present when cluster is recovering from a full restart." +    name: ES_OPS_RECOVER_AFTER_TIME +    value: "5m" +  - +    description: "(Deprecated) The nodeSelector used for the Fluentd DaemonSet." +    name: FLUENTD_NODESELECTOR +    value: "logging-infra-fluentd=true" +  - +    description: "(Deprecated) Node selector Elasticsearch cluster (label=value)." +    name: ES_NODESELECTOR +    value: "" +  - +    description: "(Deprecated) Node selector Elasticsearch operations cluster (label=value)." +    name: ES_OPS_NODESELECTOR +    value: "" +  - +    description: "(Deprecated) Node selector Kibana cluster (label=value)." +    name: KIBANA_NODESELECTOR +    value: "" +  - +    description: "(Deprecated) Node selector Kibana operations cluster (label=value)." +    name: KIBANA_OPS_NODESELECTOR +    value: "" +  - +    description: "(Deprecated) Node selector Curator (label=value)." +    name: CURATOR_NODESELECTOR +    value: "" +  - +    description: "(Deprecated) Node selector operations Curator (label=value)." +    name: CURATOR_OPS_NODESELECTOR +    value: "" + diff --git a/roles/openshift_examples/files/examples/v1.3/infrastructure-templates/enterprise/metrics-deployer.yaml b/roles/openshift_examples/files/examples/v1.3/infrastructure-templates/enterprise/metrics-deployer.yaml new file mode 100644 index 000000000..032f94a18 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/infrastructure-templates/enterprise/metrics-deployer.yaml @@ -0,0 +1,126 @@ +#!/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: MODE +          value: ${MODE} +        - 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} +        - name: METRIC_RESOLUTION +          value: ${METRIC_RESOLUTION} +    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: "registry.access.redhat.com/openshift3/" +- +  description: 'Specify version for metrics components; e.g. for "openshift/origin-metrics-deployer:latest", set version "latest"' +  name: IMAGE_VERSION +  value: "3.2.1" +- +  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: "Can be set to: 'deploy' to perform an initial deployment; 'refresh' to delete and redeploy all components but to keep persisted data and routes; 'redeploy' to delete and redeploy everything (losing all data in the process)" +  name: MODE +  value: "deploy" +- +  description: "(Deprecated) Turns 'deploy' mode into 'redeploy' mode, deleting and redeploying everything (losing all data in the process)" +  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" +- +  description: "How often metrics should be gathered. Defaults value of '10s' for 10 seconds" +  name: METRIC_RESOLUTION +  value: "10s" diff --git a/roles/openshift_examples/files/examples/v1.3/infrastructure-templates/origin/logging-deployer.yaml b/roles/openshift_examples/files/examples/v1.3/infrastructure-templates/origin/logging-deployer.yaml new file mode 100644 index 000000000..77ffee7f9 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/infrastructure-templates/origin/logging-deployer.yaml @@ -0,0 +1,326 @@ +apiVersion: "v1" +kind: "List" +items: +- +  apiVersion: "v1" +  kind: "Template" +  metadata: +    name: logging-deployer-account-template +    annotations: +      description: "Template for creating the deployer account and roles needed for the aggregated logging deployer. Create as cluster-admin." +      tags: "infrastructure" +  objects: +  - +    apiVersion: v1 +    kind: ServiceAccount +    name: logging-deployer +    metadata: +      name: logging-deployer +      labels: +        logging-infra: deployer +        provider: openshift +        component: deployer +  - +    apiVersion: v1 +    kind: ServiceAccount +    metadata: +      name: aggregated-logging-kibana +  - +    apiVersion: v1 +    kind: ServiceAccount +    metadata: +      name: aggregated-logging-elasticsearch +  - +    apiVersion: v1 +    kind: ServiceAccount +    metadata: +      name: aggregated-logging-fluentd +  - +    apiVersion: v1 +    kind: ServiceAccount +    metadata: +      name: aggregated-logging-curator +  - apiVersion: v1 +    kind: ClusterRole +    metadata: +      name: oauth-editor +    rules: +    - resources: +      - oauthclients +      verbs: +      - create +      - delete +  - apiVersion: v1 +    kind: ClusterRole +    metadata: +      name: daemonset-admin +    rules: +    - resources: +      - daemonsets +      apiGroups: +      - extensions +      verbs: +      - create +      - get +      - list +      - watch +      - delete +      - update +  - +    apiVersion: v1 +    kind: RoleBinding +    metadata: +      name: logging-deployer-edit-role +    roleRef: +      kind: ClusterRole +      name: edit +    subjects: +    - kind: ServiceAccount +      name: logging-deployer +  - +    apiVersion: v1 +    kind: RoleBinding +    metadata: +      name: logging-deployer-dsadmin-role +    roleRef: +      kind: ClusterRole +      name: daemonset-admin +    subjects: +    - kind: ServiceAccount +      name: logging-deployer +- +  apiVersion: "v1" +  kind: "Template" +  metadata: +    name: logging-deployer-template +    annotations: +      description: "Template for running the aggregated logging deployer in a pod. Requires empowered 'logging-deployer' service account." +      tags: "infrastructure" +  labels: +    logging-infra: deployer +    provider: openshift +  objects: +  - +    apiVersion: v1 +    kind: Pod +    metadata: +      generateName: logging-deployer- +    spec: +      containers: +      - image: ${IMAGE_PREFIX}logging-deployment:${IMAGE_VERSION} +        imagePullPolicy: Always +        name: deployer +        volumeMounts: +        - 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: IMAGE_PULL_SECRET +            value: ${IMAGE_PULL_SECRET} +          - name: INSECURE_REGISTRY +            value: ${INSECURE_REGISTRY} +          - 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_PVC_SIZE +            value: ${ES_PVC_SIZE} +          - name: ES_PVC_PREFIX +            value: ${ES_PVC_PREFIX} +          - name: ES_PVC_DYNAMIC +            value: ${ES_PVC_DYNAMIC} +          - 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_PVC_SIZE +            value: ${ES_OPS_PVC_SIZE} +          - name: ES_OPS_PVC_PREFIX +            value: ${ES_OPS_PVC_PREFIX} +          - name: ES_OPS_PVC_DYNAMIC +            value: ${ES_OPS_PVC_DYNAMIC} +          - 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} +          - name: FLUENTD_NODESELECTOR +            value: ${FLUENTD_NODESELECTOR} +          - name: ES_NODESELECTOR +            value: ${ES_NODESELECTOR} +          - name: ES_OPS_NODESELECTOR +            value: ${ES_OPS_NODESELECTOR} +          - name: KIBANA_NODESELECTOR +            value: ${KIBANA_NODESELECTOR} +          - name: KIBANA_OPS_NODESELECTOR +            value: ${KIBANA_OPS_NODESELECTOR} +          - name: CURATOR_NODESELECTOR +            value: ${CURATOR_NODESELECTOR} +          - name: CURATOR_OPS_NODESELECTOR +            value: ${CURATOR_OPS_NODESELECTOR} +          - name: MODE +            value: ${MODE} +      dnsPolicy: ClusterFirst +      restartPolicy: Never +      serviceAccount: logging-deployer +      volumes: +      - name: empty +        emptyDir: {} +  parameters: +  - +    description: "The mode that the deployer runs in." +    name: MODE +    value: "install" +  - +    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: "(Deprecated) Specify the name of an existing pull secret to be used for pulling component images from an authenticated registry." +    name: IMAGE_PULL_SECRET +  - +    description: "(Deprecated) Allow the registry for logging component images to be non-secure (not secured with a certificate signed by a known CA)" +    name: INSECURE_REGISTRY +    value: "false" +  - +    description: "(Deprecated) If true, set up to use a second ES cluster for ops logs." +    name: ENABLE_OPS_CLUSTER +    value: "false" +  - +    description: "(Deprecated) External hostname where clients will reach kibana" +    name: KIBANA_HOSTNAME +    value: "kibana.example.com" +  - +    description: "(Deprecated) External hostname at which admins will visit the ops Kibana." +    name: KIBANA_OPS_HOSTNAME +    value: kibana-ops.example.com +  - +    description: "(Deprecated) External URL for the master, for OAuth purposes" +    name: PUBLIC_MASTER_URL +    value: "https://localhost:8443" +  - +    description: "(Deprecated) Internal URL for the master, for authentication retrieval" +    name: MASTER_URL +    value: "https://kubernetes.default.svc.cluster.local" +  - +    description: "(Deprecated) How many instances of ElasticSearch to deploy." +    name: ES_CLUSTER_SIZE +    value: "1" +  - +    description: "(Deprecated) Amount of RAM to reserve per ElasticSearch instance." +    name: ES_INSTANCE_RAM +    value: "8G" +  - +    description: "(Deprecated) Size of the PersistentVolumeClaim to create per ElasticSearch instance, e.g. 100G. If empty, no PVCs will be created and emptyDir volumes are used instead." +    name: ES_PVC_SIZE +  - +    description: "(Deprecated) Prefix for the names of PersistentVolumeClaims to be created; a number will be appended per instance. If they don't already exist, they will be created with size ES_PVC_SIZE." +    name: ES_PVC_PREFIX +    value: "logging-es-" +  - +    description: '(Deprecated) Set to "true" to request dynamic provisioning (if enabled for your cluster) of a PersistentVolume for the ES PVC. ' +    name: ES_PVC_DYNAMIC +  - +    description: "(Deprecated) 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: "(Deprecated) 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: "(Deprecated) 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: "(Deprecated) Timeout for *expected* nodes to be present when cluster is recovering from a full restart." +    name: ES_RECOVER_AFTER_TIME +    value: "5m" +  - +    description: "(Deprecated) How many ops instances of ElasticSearch to deploy. By default, ES_CLUSTER_SIZE." +    name: ES_OPS_CLUSTER_SIZE +  - +    description: "(Deprecated) Amount of RAM to reserve per ops ElasticSearch instance." +    name: ES_OPS_INSTANCE_RAM +    value: "8G" +  - +    description: "(Deprecated) Size of the PersistentVolumeClaim to create per ElasticSearch ops instance, e.g. 100G. If empty, no PVCs will be created and emptyDir volumes are used instead." +    name: ES_OPS_PVC_SIZE +  - +    description: "(Deprecated) Prefix for the names of PersistentVolumeClaims to be created; a number will be appended per instance. If they don't already exist, they will be created with size ES_OPS_PVC_SIZE." +    name: ES_OPS_PVC_PREFIX +    value: "logging-es-ops-" +  - +    description: '(Deprecated) Set to "true" to request dynamic provisioning (if enabled for your cluster) of a PersistentVolume for the ES ops PVC. ' +    name: ES_OPS_PVC_DYNAMIC +  - +    description: "(Deprecated) 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: "(Deprecated) 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: "(Deprecated) 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: "(Deprecated) Timeout for *expected* ops nodes to be present when cluster is recovering from a full restart." +    name: ES_OPS_RECOVER_AFTER_TIME +    value: "5m" +  - +    description: "(Deprecated) The nodeSelector used for the Fluentd DaemonSet." +    name: FLUENTD_NODESELECTOR +    value: "logging-infra-fluentd=true" +  - +    description: "(Deprecated) Node selector Elasticsearch cluster (label=value)." +    name: ES_NODESELECTOR +    value: "" +  - +    description: "(Deprecated) Node selector Elasticsearch operations cluster (label=value)." +    name: ES_OPS_NODESELECTOR +    value: "" +  - +    description: "(Deprecated) Node selector Kibana cluster (label=value)." +    name: KIBANA_NODESELECTOR +    value: "" +  - +    description: "(Deprecated) Node selector Kibana operations cluster (label=value)." +    name: KIBANA_OPS_NODESELECTOR +    value: "" +  - +    description: "(Deprecated) Node selector Curator (label=value)." +    name: CURATOR_NODESELECTOR +    value: "" +  - +    description: "(Deprecated) Node selector operations Curator (label=value)." +    name: CURATOR_OPS_NODESELECTOR +    value: "" + diff --git a/roles/openshift_examples/files/examples/v1.3/infrastructure-templates/origin/metrics-deployer.yaml b/roles/openshift_examples/files/examples/v1.3/infrastructure-templates/origin/metrics-deployer.yaml new file mode 100644 index 000000000..89639fd67 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/infrastructure-templates/origin/metrics-deployer.yaml @@ -0,0 +1,144 @@ +#!/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: +    securityContext: {} +    containers: +    - image: ${IMAGE_PREFIX}metrics-deployer:${IMAGE_VERSION} +      name: deployer +      securityContext: {} +      volumeMounts: +      - name: secret +        mountPath: /secret +        readOnly: true +      - name: empty +        mountPath: /etc/deploy +      env: +        - name: PROJECT +          valueFrom: +            fieldRef: +              fieldPath: metadata.namespace +        - name: POD_NAME +          valueFrom: +            fieldRef: +              fieldPath: metadata.name +        - name: IMAGE_PREFIX +          value: ${IMAGE_PREFIX} +        - name: IMAGE_VERSION +          value: ${IMAGE_VERSION} +        - name: MASTER_URL +          value: ${MASTER_URL} +        - name: MODE +          value: ${MODE} +        - name: REDEPLOY +          value: ${REDEPLOY} +        - name: IGNORE_PREFLIGHT +          value: ${IGNORE_PREFLIGHT} +        - 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} +        - name: HEAPSTER_NODE_ID +          value: ${HEAPSTER_NODE_ID} +        - name: METRIC_RESOLUTION +          value: ${METRIC_RESOLUTION} +    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: "Can be set to: 'preflight' to perform validation before a deployment; 'deploy' to perform an initial deployment; 'refresh' to delete and redeploy all components but to keep persisted data and routes; 'redeploy' to delete and redeploy everything (losing all data in the process); 'validate' to re-run validations after a deployment" +  name: MODE +  value: "deploy" +- +  description: "(Deprecated) Turns 'deploy' mode into 'redeploy' mode, deleting and redeploying everything (losing all data in the process)" +  name: REDEPLOY +  value: "false" +- +  description: "If preflight validation is blocking deployment and you're sure you don't care about it, this will ignore the results and proceed to deploy." +  name: IGNORE_PREFLIGHT +  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" +- +  description: "The identifier used when generating metric ids in Hawkular" +  name: HEAPSTER_NODE_ID +  value: "nodename" +- +  description: "How often metrics should be gathered. Defaults value of '10s' for 10 seconds" +  name: METRIC_RESOLUTION +  value: "10s" diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/cakephp-mysql.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/cakephp-mysql.json new file mode 100644 index 000000000..370b8c764 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/cakephp-mysql.json @@ -0,0 +1,477 @@ +{ +  "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": "${NAME}", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "${NAME}" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "${NAME}" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Defines how to build the application" +        } +      }, +      "spec": { +        "source": { +          "type": "Git", +          "git": { +            "uri": "${SOURCE_REPOSITORY_URL}", +            "ref": "${SOURCE_REPOSITORY_REF}" +          }, +          "contextDir": "${CONTEXT_DIR}" +        }, +        "strategy": { +          "type": "Source", +          "sourceStrategy": { +            "from": { +              "kind": "ImageStreamTag", +              "namespace": "${NAMESPACE}", +              "name": "php:5.6" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "${NAME}:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "ConfigChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ] +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Rolling", +          "recreateParams": { +          "pre": { +              "failurePolicy": "Retry", +              "execNewPod": { +                "command": [ +                  "./migrate-database.sh" +                ], +                "containerName": "cakephp-mysql-example" +              } +            } +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "cakephp-mysql-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "${NAME}:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${NAME}" +        }, +        "template": { +          "metadata": { +            "name": "${NAME}", +            "labels": { +              "name": "${NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "cakephp-mysql-example", +                "image": " ", +                "ports": [ +                  { +                    "containerPort": 8080 +                  } +                ], +                "readinessProbe": { +                  "timeoutSeconds": 3, +                  "initialDelaySeconds": 3, +                  "httpGet": { +                    "path": "/health.php", +                    "port": 8080 +                  } +                }, +                "livenessProbe": { +                    "timeoutSeconds": 3, +                    "initialDelaySeconds": 30, +                    "httpGet": { +                        "path": "/", +                        "port": 8080 +                    } +                }, +                "env": [ +                  { +                    "name": "DATABASE_SERVICE_NAME", +                    "value": "${DATABASE_SERVICE_NAME}" +                  }, +                  { +                    "name": "DATABASE_ENGINE", +                    "value": "${DATABASE_ENGINE}" +                  }, +                  { +                    "name": "DATABASE_NAME", +                    "value": "${DATABASE_NAME}" +                  }, +                  { +                    "name": "DATABASE_USER", +                    "value": "${DATABASE_USER}" +                  }, +                  { +                    "name": "DATABASE_PASSWORD", +                    "value": "${DATABASE_PASSWORD}" +                  }, +                  { +                    "name": "CAKEPHP_SECRET_TOKEN", +                    "value": "${CAKEPHP_SECRET_TOKEN}" +                  }, +                  { +                    "name": "CAKEPHP_SECURITY_SALT", +                    "value": "${CAKEPHP_SECURITY_SALT}" +                  }, +                  { +                    "name": "CAKEPHP_SECURITY_CIPHER_SEED", +                    "value": "${CAKEPHP_SECURITY_CIPHER_SEED}" +                  }, +                  { +                    "name": "OPCACHE_REVALIDATE_FREQ", +                    "value": "${OPCACHE_REVALIDATE_FREQ}" +                  } +                ], +                "resources": { +		    "limits": { +			"memory": "${MEMORY_LIMIT}" +		    } +                } +              } +            ] +          } +        } +      } +    }, +    { +      "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": true, +              "containerNames": [ +                "mysql" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "namespace": "${NAMESPACE}", +                "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": { +            "volumes": [ +              { +                "name": "data", +                "emptyDir": {} +              } +            ], +            "containers": [ +              { +                "name": "mysql", +                "image": " ", +                "ports": [ +                  { +                    "containerPort": 3306 +                  } +                ], +                "volumeMounts": [ +                  { +                    "name": "data", +                    "mountPath": "/var/lib/mysql/data" +                  } +                ], +                "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": "NAME", +      "displayName": "Name", +      "description": "The name assigned to all of the frontend objects defined in this template.", +      "required": true, +      "value": "cakephp-mysql-example" +    }, +    { +      "name": "NAMESPACE", +      "displayName": "Namespace", +      "description": "The OpenShift Namespace where the ImageStream resides.", +      "value": "openshift" +    }, +    { +      "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 (MySQL)", +      "description": "Maximum amount of memory the MySQL container can use.", +      "value": "512Mi" +    }, +    { +      "name": "SOURCE_REPOSITORY_URL", +      "displayName": "Git 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": "Git Reference", +      "description": "Set this to a branch name, tag or other ref of your repository if you are not using the default branch." +    }, +    { +      "name": "CONTEXT_DIR", +      "displayName": "Context Directory", +      "description": "Set this to the relative path to your project if it is not in the root of your repository." +    }, +    { +      "name": "APPLICATION_DOMAIN", +      "displayName": "Application Hostname", +      "description": "The exposed hostname that will route to the CakePHP service, if left blank a value will be defaulted.", +      "value": "" +    }, +    { +      "name": "GITHUB_WEBHOOK_SECRET", +      "displayName": "GitHub Webhook Secret", +      "description": "A secret string used to configure the GitHub webhook.", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{40}" +    }, +    { +      "name": "DATABASE_SERVICE_NAME", +      "displayName": "Database Service Name", +      "value": "mysql" +    }, +    { +      "name": "DATABASE_ENGINE", +      "displayName": "Database Engine", +      "description": "Database engine: postgresql, mysql or sqlite (default).", +      "value": "mysql" +    }, +    { +      "name": "DATABASE_NAME", +      "displayName": "Database Name", +      "value": "default" +    }, +    { +      "name": "DATABASE_USER", +      "displayName": "Database User", +      "value": "cakephp" +    }, +    { +      "name": "DATABASE_PASSWORD", +      "displayName": "Database 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.3/quickstart-templates/cakephp.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/cakephp.json new file mode 100644 index 000000000..dbf570f1f --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/cakephp.json @@ -0,0 +1,328 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "cakephp-example", +    "annotations": { +      "description": "An example CakePHP application with no database", +      "tags": "quickstart,php,cakephp", +      "iconClass": "icon-php" +    } +  }, +  "labels": { +    "template": "cakephp-example" +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "${NAME}"  +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "${NAME}" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Defines how to build the application" +        } +      }, +      "spec": { +        "source": { +          "type": "Git", +          "git": { +            "uri": "${SOURCE_REPOSITORY_URL}", +            "ref": "${SOURCE_REPOSITORY_REF}" +          }, +          "contextDir": "${CONTEXT_DIR}" +        }, +        "strategy": { +          "type": "Source", +          "sourceStrategy": { +            "from": { +              "kind": "ImageStreamTag", +              "namespace": "${NAMESPACE}", +              "name": "php:5.6" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "${NAME}:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "ConfigChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ] +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Rolling" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "cakephp-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "${NAME}:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${NAME}" +        }, +        "template": { +          "metadata": { +            "name": "${NAME}", +            "labels": { +              "name": "${NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "cakephp-example", +                "image": " ", +                "ports": [ +                  { +                    "containerPort": 8080 +                  } +                ], +                "readinessProbe": { +                  "timeoutSeconds": 3, +                  "initialDelaySeconds": 3, +                  "httpGet": { +                    "path": "/", +                    "port": 8080 +                  } +                }, +                "livenessProbe": { +                    "timeoutSeconds": 3, +                    "initialDelaySeconds": 30, +                    "httpGet": { +                        "path": "/", +                        "port": 8080 +                    } +                }, +                "env": [ +                  { +                    "name": "DATABASE_SERVICE_NAME", +                    "value": "${DATABASE_SERVICE_NAME}" +                  }, +                  { +                    "name": "DATABASE_ENGINE", +                    "value": "${DATABASE_ENGINE}" +                  }, +                  { +                    "name": "DATABASE_NAME", +                    "value": "${DATABASE_NAME}" +                  }, +                  { +                    "name": "DATABASE_USER", +                    "value": "${DATABASE_USER}" +                  }, +                  { +                    "name": "DATABASE_PASSWORD", +                    "value": "${DATABASE_PASSWORD}" +                  }, +                  { +                    "name": "CAKEPHP_SECRET_TOKEN", +                    "value": "${CAKEPHP_SECRET_TOKEN}" +                  }, +                  { +                    "name": "CAKEPHP_SECURITY_SALT", +                    "value": "${CAKEPHP_SECURITY_SALT}" +                  }, +                  { +                    "name": "CAKEPHP_SECURITY_CIPHER_SEED", +                    "value": "${CAKEPHP_SECURITY_CIPHER_SEED}" +                  }, +                  { +                    "name": "OPCACHE_REVALIDATE_FREQ", +                    "value": "${OPCACHE_REVALIDATE_FREQ}" +                  } +                ], +		"resources": { +		    "limits": { +			"memory": "${MEMORY_LIMIT}" +		    } +		} +              } +            ] +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "NAME", +      "displayName": "Name", +      "description": "The name assigned to all of the frontend objects defined in this template.", +      "required": true, +      "value": "cakephp-example" +    }, +    { +      "name": "NAMESPACE", +      "displayName": "Namespace", +      "description": "The OpenShift Namespace where the ImageStream resides.", +      "value": "openshift" +    }, +    { +      "name": "MEMORY_LIMIT", +      "displayName": "Memory Limit", +      "description": "Maximum amount of memory the container can use.", +      "value": "512Mi" +    }, +    { +      "name": "SOURCE_REPOSITORY_URL", +      "displayName": "Git 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": "Git Reference", +      "description": "Set this to a branch name, tag or other ref of your repository if you are not using the default branch." +    }, +    { +      "name": "CONTEXT_DIR", +      "displayName": "Context Directory", +      "description": "Set this to the relative path to your project if it is not in the root of your repository." +    }, +    { +      "name": "APPLICATION_DOMAIN", +      "displayName": "Application Hostname", +      "description": "The exposed hostname that will route to the CakePHP service, if left blank a value will be defaulted.", +      "value": "" +    }, +    { +      "name": "GITHUB_WEBHOOK_SECRET", +      "displayName": "GitHub Webhook Secret", +      "description": "A secret string used to configure the GitHub webhook.", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{40}" +    }, +    { +      "name": "DATABASE_SERVICE_NAME", +      "displayName": "Database Service Name" +    }, +    { +      "name": "DATABASE_ENGINE", +      "displayName": "Database Engine", +      "description": "Database engine: postgresql, mysql or sqlite (default)." +    }, +    { +      "name": "DATABASE_NAME", +      "displayName": "Database Name" +    }, +    { +      "name": "DATABASE_USER", +      "displayName": "Database User" +    }, +    { +      "name": "DATABASE_PASSWORD", +      "displayName": "Database Password" +    }, +    { +      "name": "CAKEPHP_SECRET_TOKEN", +      "displayName": "CakePHP Secret Token", +      "description": "Set this to a long random string.", +      "generate": "expression", +      "from": "[\\w]{50}" +    }, +    { +      "name": "CAKEPHP_SECURITY_SALT", +      "displayName": "CakePHP Security Salt", +      "description": "Security salt for session hash.", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{40}" +    }, +    { +      "name": "CAKEPHP_SECURITY_CIPHER_SEED", +      "displayName": "CakePHP Security Cipher Seed", +      "description": "Security cipher seed for session hash.", +      "generate": "expression", +      "from": "[0-9]{30}" +    }, +    { +      "name": "OPCACHE_REVALIDATE_FREQ", +      "displayName": "OPcache Revalidation Frequency", +      "description": "How often to check script timestamps for updates, in seconds. 0 will result in OPcache checking for updates on every request.", +      "value": "2" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/dancer-mysql.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/dancer-mysql.json new file mode 100644 index 000000000..3b738480d --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/dancer-mysql.json @@ -0,0 +1,444 @@ +{ +  "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": "${NAME}", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "${NAME}" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "${NAME}" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Defines how to build the application" +        } +      }, +      "spec": { +        "source": { +          "type": "Git", +          "git": { +            "uri": "${SOURCE_REPOSITORY_URL}", +            "ref": "${SOURCE_REPOSITORY_REF}" +          }, +          "contextDir": "${CONTEXT_DIR}" +        }, +        "strategy": { +          "type": "Source", +          "sourceStrategy": { +            "from": { +              "kind": "ImageStreamTag", +              "namespace": "${NAMESPACE}", +              "name": "perl:5.20" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "${NAME}:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "ConfigChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ] +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "dancer-mysql-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "${NAME}:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${NAME}" +        }, +        "template": { +          "metadata": { +            "name": "${NAME}", +            "labels": { +              "name": "${NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "dancer-mysql-example", +                "image": " ", +                "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": true, +              "containerNames": [ +                "mysql" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "namespace": "${NAMESPACE}", +                "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": { +            "volumes": [ +              { +                "name": "data", +                "emptyDir": {} +              } +            ], +            "containers": [ +              { +                "name": "mysql", +                "image": " ", +                "ports": [ +                  { +                    "containerPort": 3306 +                  } +                ], +                "volumeMounts": [ +                  { +                    "name": "data", +                    "mountPath": "/var/lib/mysql/data" +                  } +                ], +                "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": "NAME", +      "displayName": "Name", +      "description": "The name assigned to all of the frontend objects defined in this template.", +      "required": true, +      "value": "dancer-mysql-example" +    }, +    { +      "name": "NAMESPACE", +      "displayName": "Namespace", +      "description": "The OpenShift Namespace where the ImageStream resides.", +      "value": "openshift" +    }, +    { +      "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 (MySQL)", +      "description": "Maximum amount of memory the MySQL container can use.", +      "value": "512Mi" +    }, +    { +      "name": "SOURCE_REPOSITORY_URL", +      "displayName": "Git 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": "Git Reference", +      "description": "Set this to a branch name, tag or other ref of your repository if you are not using the default branch." +    }, +    { +      "name": "CONTEXT_DIR", +      "displayName": "Context Directory", +      "description": "Set this to the relative path to your project if it is not in the root of your repository." +    }, +    { +      "name": "APPLICATION_DOMAIN", +      "displayName": "Application Hostname", +      "description": "The exposed hostname that will route to the Dancer service, if left blank a value will be defaulted.", +      "value": "" +    }, +    { +      "name": "GITHUB_WEBHOOK_SECRET", +      "displayName": "GitHub Webhook Secret", +      "description": "A secret string used to configure the GitHub webhook.", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{40}" +    }, +    { +      "name": "ADMIN_USERNAME", +      "displayName": "Administrator Username", +      "generate": "expression", +      "from": "admin[A-Z0-9]{3}" +    }, +    { +      "name": "ADMIN_PASSWORD", +      "displayName": "Administrator Password", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{8}" +    }, +    { +      "name": "DATABASE_SERVICE_NAME", +      "displayName": "Database Service Name", +      "value": "database" +    }, +    { +      "name": "DATABASE_USER", +      "displayName": "Database Username", +      "generate": "expression", +      "from": "user[A-Z0-9]{3}" +    }, +    { +      "name": "DATABASE_PASSWORD", +      "displayName": "Database Password", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{8}" +    }, +    { +      "name": "DATABASE_NAME", +      "displayName": "Database Name", +      "value": "sampledb" +    }, +    { +      "name": "PERL_APACHE2_RELOAD", +      "displayName": "Perl Module Reload", +      "description": "Set this to \"true\" to enable automatic reloading of modified Perl modules.", +      "value": "" +    }, +    { +      "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}" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/dancer.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/dancer.json new file mode 100644 index 000000000..852f20102 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/dancer.json @@ -0,0 +1,261 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "dancer-example", +    "annotations": { +      "description": "An example Dancer application with no database", +      "tags": "quickstart,perl,dancer", +      "iconClass": "icon-perl" +    } +  }, +  "labels": { +    "template": "dancer-example" +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "${NAME}" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "${NAME}" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Defines how to build the application" +        } +      }, +      "spec": { +        "source": { +          "type": "Git", +          "git": { +            "uri": "${SOURCE_REPOSITORY_URL}", +            "ref": "${SOURCE_REPOSITORY_REF}" +          }, +          "contextDir": "${CONTEXT_DIR}" +        }, +        "strategy": { +          "type": "Source", +          "sourceStrategy": { +            "from": { +              "kind": "ImageStreamTag", +              "namespace": "${NAMESPACE}", +              "name": "perl:5.20" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "${NAME}:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "ConfigChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ] +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Rolling" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "dancer-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "${NAME}:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${NAME}" +        }, +        "template": { +          "metadata": { +            "name": "${NAME}", +            "labels": { +              "name": "${NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "dancer-example", +                "image": " ", +                "ports": [ +                  { +                    "containerPort": 8080 +                  } +                ], +                "readinessProbe": { +                  "timeoutSeconds": 3, +                  "initialDelaySeconds": 3, +                  "httpGet": { +                    "path": "/", +                    "port": 8080 +                  } +                }, +                "livenessProbe": { +                    "timeoutSeconds": 3, +                    "initialDelaySeconds": 30, +                    "httpGet": { +                        "path": "/", +                        "port": 8080 +                    } +                }, +                "env": [ +                  { +                    "name": "PERL_APACHE2_RELOAD", +                    "value": "${PERL_APACHE2_RELOAD}" +                  } +                ], +                "resources": { +		      "limits": { +			  "memory": "${MEMORY_LIMIT}" +		      } +                } +              } +            ] +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "NAME", +      "displayName": "Name", +      "description": "The name assigned to all of the frontend objects defined in this template.", +      "required": true, +      "value": "dancer-example" +    }, +    { +      "name": "NAMESPACE", +      "displayName": "Namespace", +      "description": "The OpenShift Namespace where the ImageStream resides.", +      "value": "openshift" +    }, +    { +      "name": "MEMORY_LIMIT", +      "displayName": "Memory Limit", +      "description": "Maximum amount of memory the container can use.", +      "value": "512Mi" +    }, +    { +      "name": "SOURCE_REPOSITORY_URL", +      "displayName": "Git 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": "Git Reference", +      "description": "Set this to a branch name, tag or other ref of your repository if you are not using the default branch." +    }, +    { +      "name": "CONTEXT_DIR", +      "displayName": "Context Directory", +      "description": "Set this to the relative path to your project if it is not in the root of your repository." +    }, +    { +      "name": "APPLICATION_DOMAIN", +      "displayName": "Application Hostname", +      "description": "The exposed hostname that will route to the Dancer service, if left blank a value will be defaulted.", +      "value": "" +    }, +    { +      "name": "GITHUB_WEBHOOK_SECRET", +      "displayName": "GitHub Webhook Secret", +      "description": "A secret string used to configure the GitHub webhook.", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{40}" +    }, +    { +      "name": "SECRET_KEY_BASE", +      "displayName": "Secret Key", +      "description": "Your secret key for verifying the integrity of signed cookies.", +      "generate": "expression", +      "from": "[a-z0-9]{127}" +    }, +    { +      "name": "PERL_APACHE2_RELOAD", +      "displayName": "Perl Module Reload", +      "description": "Set this to \"true\" to enable automatic reloading of modified Perl modules.", +      "value": "" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/django-postgresql.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/django-postgresql.json new file mode 100644 index 000000000..dda16ecfa --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/django-postgresql.json @@ -0,0 +1,446 @@ +{ +  "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": "${NAME}", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "${NAME}" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "${NAME}" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Defines how to build the application" +        } +      }, +      "spec": { +        "source": { +          "type": "Git", +          "git": { +            "uri": "${SOURCE_REPOSITORY_URL}", +            "ref": "${SOURCE_REPOSITORY_REF}" +          }, +          "contextDir": "${CONTEXT_DIR}" +        }, +        "strategy": { +          "type": "Source", +          "sourceStrategy": { +            "from": { +              "kind": "ImageStreamTag", +              "namespace": "${NAMESPACE}", +              "name": "python:3.4" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "${NAME}:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "ConfigChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ], +        "postCommit": { +           "script": "./manage.py test" +        } +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Rolling" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "django-psql-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "${NAME}:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${NAME}" +        }, +        "template": { +          "metadata": { +            "name": "${NAME}", +            "labels": { +              "name": "${NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "django-psql-example", +                "image": " ", +                "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": true, +              "containerNames": [ +                "postgresql" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "namespace": "${NAMESPACE}", +                "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": { +            "volumes": [ +              { +                "name": "data", +                "emptyDir": {} +              } +            ], +            "containers": [ +              { +                "name": "postgresql", +                "image": " ", +                "ports": [ +                  { +                    "containerPort": 5432 +                  } +                ], +                "env": [ +                  { +                    "name": "POSTGRESQL_USER", +                    "value": "${DATABASE_USER}" +                  }, +                  { +                    "name": "POSTGRESQL_PASSWORD", +                    "value": "${DATABASE_PASSWORD}" +                  }, +                  { +                    "name": "POSTGRESQL_DATABASE", +                    "value": "${DATABASE_NAME}" +                  } +                ], +                "volumeMounts": [ +                  { +                    "name": "data", +                    "mountPath": "/var/lib/pgsql/data" +                  } +                ], +                "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": "NAME", +      "displayName": "Name", +      "description": "The name assigned to all of the frontend objects defined in this template.", +      "required": true, +      "value": "django-psql-example" +    }, +    { +      "name": "NAMESPACE", +      "displayName": "Namespace", +      "description": "The OpenShift Namespace where the ImageStream resides.", +      "value": "openshift" +    }, +    { +      "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 (PostgreSQL)", +      "description": "Maximum amount of memory the PostgreSQL container can use.", +      "value": "512Mi" +    }, +    { +      "name": "SOURCE_REPOSITORY_URL", +      "displayName": "Git 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": "Git Reference", +      "description": "Set this to a branch name, tag or other ref of your repository if you are not using the default branch." +    }, +    { +      "name": "CONTEXT_DIR", +      "displayName": "Context Directory", +      "description": "Set this to the relative path to your project if it is not in the root of your repository." +    }, +    { +      "name": "APPLICATION_DOMAIN", +      "displayName": "Application Hostname", +      "description": "The exposed hostname that will route to the Django service, if left blank a value will be defaulted.", +      "value": "" +    }, +    { +      "name": "GITHUB_WEBHOOK_SECRET", +      "displayName": "GitHub Webhook Secret", +      "description": "A secret string used to configure the GitHub webhook.", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{40}" +    }, +    { +      "name": "DATABASE_SERVICE_NAME", +      "displayName": "Database Service Name", +      "value": "postgresql" +    }, +    { +      "name": "DATABASE_ENGINE", +      "displayName": "Database Engine", +      "description": "Database engine: postgresql, mysql or sqlite (default).", +      "value": "postgresql" +    }, +    { +      "name": "DATABASE_NAME", +      "displayName": "Database Name", +      "value": "default" +    }, +    { +      "name": "DATABASE_USER", +      "displayName": "Database Username", +      "value": "django" +    }, +    { +      "name": "DATABASE_PASSWORD", +      "displayName": "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": "Django Secret Key", +      "description": "Set this to a long random string.", +      "generate": "expression", +      "from": "[\\w]{50}" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/django.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/django.json new file mode 100644 index 000000000..5740ee963 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/django.json @@ -0,0 +1,308 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "django-example", +    "annotations": { +      "description": "An example Django application with no database", +      "tags": "quickstart,python,django", +      "iconClass": "icon-python" +    } +  }, +  "labels": { +    "template": "django-example" +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "${NAME}" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "${NAME}" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Defines how to build the application" +        } +      }, +      "spec": { +        "source": { +          "type": "Git", +          "git": { +            "uri": "${SOURCE_REPOSITORY_URL}", +            "ref": "${SOURCE_REPOSITORY_REF}" +          }, +          "contextDir": "${CONTEXT_DIR}" +        }, +        "strategy": { +          "type": "Source", +          "sourceStrategy": { +            "from": { +              "kind": "ImageStreamTag", +              "namespace": "${NAMESPACE}", +              "name": "python:3.4" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "${NAME}:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "ConfigChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ], +        "postCommit": { +          "script": "./manage.py test" +        } +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Rolling" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "django-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "${NAME}:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${NAME}" +        }, +        "template": { +          "metadata": { +            "name": "${NAME}", +            "labels": { +              "name": "${NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "django-example", +                "image": " ", +                "ports": [ +                  { +                    "containerPort": 8080 +                  } +                ], +                "readinessProbe": { +                  "timeoutSeconds": 3, +                  "initialDelaySeconds": 3, +                  "httpGet": { +                    "path": "/", +                    "port": 8080 +                  } +                }, +                "livenessProbe": { +                  "timeoutSeconds": 3, +                  "initialDelaySeconds": 30, +                  "httpGet": { +                    "path": "/", +                    "port": 8080 +                  } +                }, +                "env": [ +                  { +                    "name": "DATABASE_SERVICE_NAME", +                    "value": "${DATABASE_SERVICE_NAME}" +                  }, +                  { +                    "name": "DATABASE_ENGINE", +                    "value": "${DATABASE_ENGINE}" +                  }, +                  { +                    "name": "DATABASE_NAME", +                    "value": "${DATABASE_NAME}" +                  }, +                  { +                    "name": "DATABASE_USER", +                    "value": "${DATABASE_USER}" +                  }, +                  { +                    "name": "DATABASE_PASSWORD", +                    "value": "${DATABASE_PASSWORD}" +                  }, +                  { +                    "name": "APP_CONFIG", +                    "value": "${APP_CONFIG}" +                  }, +                  { +                    "name": "DJANGO_SECRET_KEY", +                    "value": "${DJANGO_SECRET_KEY}" +                  } +                ], +                "resources": { +		      "limits": { +			  "memory": "${MEMORY_LIMIT}" +		      } +                } +              } +            ] +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "NAME", +      "displayName": "Name", +      "description": "The name assigned to all of the frontend objects defined in this template.", +      "required": true, +      "value": "django-example" +    }, +    { +      "name": "NAMESPACE", +      "displayName": "Namespace", +      "description": "The OpenShift Namespace where the ImageStream resides.", +      "value": "openshift" +    }, +    { +      "name": "MEMORY_LIMIT", +      "displayName": "Memory Limit", +      "description": "Maximum amount of memory the container can use.", +      "value": "512Mi" +    }, +    { +      "name": "SOURCE_REPOSITORY_URL", +      "displayName": "Git 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": "Git Reference", +      "description": "Set this to a branch name, tag or other ref of your repository if you are not using the default branch." +    }, +    { +      "name": "CONTEXT_DIR", +      "displayName": "Context Directory", +      "description": "Set this to the relative path to your project if it is not in the root of your repository." +    }, +    { +      "name": "APPLICATION_DOMAIN", +      "displayName": "Application Hostname", +      "description": "The exposed hostname that will route to the Django service, if left blank a value will be defaulted.", +      "value": "" +    }, +    { +      "name": "GITHUB_WEBHOOK_SECRET", +      "displayName": "GitHub Webhook Secret", +      "description": "A secret string used to configure the GitHub webhook.", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{40}" +    }, +    { +      "name": "DATABASE_SERVICE_NAME", +      "displayName": "Database Service Name" +    }, +    { +      "name": "DATABASE_ENGINE", +      "displayName": "Database Engine", +      "description": "Database engine: postgresql, mysql or sqlite (default)." +    }, +    { +      "name": "DATABASE_NAME", +      "displayName": "Database Name" +    }, +    { +      "name": "DATABASE_USER", +      "displayName": "Database Username" +    }, +    { +      "name": "DATABASE_PASSWORD", +      "displayName": "Database User Password" +    }, +    { +      "name": "APP_CONFIG", +      "displayName": "Application Configuration File Path", +      "description": "Relative path to Gunicorn configuration file (optional)." +    }, +    { +      "name": "DJANGO_SECRET_KEY", +      "displayName": "Django Secret Key", +      "description": "Set this to a long random string.", +      "generate": "expression", +      "from": "[\\w]{50}" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/jenkins-ephemeral-template.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/jenkins-ephemeral-template.json new file mode 100644 index 000000000..d1ae6de90 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/jenkins-ephemeral-template.json @@ -0,0 +1,199 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "jenkins-ephemeral", +    "creationTimestamp": null, +    "annotations": { +      "description": "Jenkins service, without persistent storage.\nThe username is 'admin' and the tutorial at https://github.com/openshift/origin/blob/master/examples/jenkins/README.md contains more information about using this template.\nWARNING: Any data stored will be lost upon pod destruction. Only use this template for testing", +      "iconClass": "icon-jenkins", +      "tags": "instant-app,jenkins" +    } +  }, +  "objects": [ +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "${JENKINS_SERVICE_NAME}", +        "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": true, +              "containerNames": [ +                "jenkins" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "${JENKINS_IMAGE_STREAM_TAG}", +                "namespace": "${NAMESPACE}" +              }, +              "lastTriggeredImage": "" +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${JENKINS_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "creationTimestamp": null, +            "labels": { +              "name": "${JENKINS_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "jenkins", +                "image": " ", +                "readinessProbe": { +                  "timeoutSeconds": 3, +                  "initialDelaySeconds": 3, +                  "httpGet": { +                    "path": "/login", +                    "port": 8080 +                  } +                }, +                "livenessProbe": { +                    "timeoutSeconds": 3, +                    "initialDelaySeconds": 60, +                    "httpGet": { +                        "path": "/login", +                        "port": 8080 +                    } +                }, +                "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" +          } +        } +      } +    }, +    { +      "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" +      } +    } +  ], +  "parameters": [ +    { +      "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 'admin' user.", +      "generate": "expression", +      "value": "password" +    }, +    { +      "name": "MEMORY_LIMIT", +      "displayName": "Memory Limit", +      "description": "Maximum amount of memory the container can use.", +      "value": "512Mi" +    }, +    { +      "name": "NAMESPACE", +      "displayName": "Jenkins ImageStream Namespace", +      "description": "The OpenShift Namespace where the Jenkins ImageStream resides.", +      "value": "openshift" +    }, +    { +      "name": "JENKINS_IMAGE_STREAM_TAG", +      "displayName": "Jenkins ImageStreamTag", +      "description": "Name of the ImageStreamTag to be used for the Jenkins image.", +      "value": "jenkins:latest" +    } +  ], +  "labels": { +    "template": "jenkins-ephemeral-template" +  } +} diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/jenkins-persistent-template.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/jenkins-persistent-template.json new file mode 100644 index 000000000..c7bc3f2fa --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/jenkins-persistent-template.json @@ -0,0 +1,223 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "jenkins-persistent", +    "creationTimestamp": null, +    "annotations": { +      "description": "Jenkins service, with persistent storage.\nThe username is 'admin' and the tutorial at https://github.com/openshift/origin/blob/master/examples/jenkins/README.md contains more information about using this template.\nYou must have persistent volumes available in your cluster to use this template.", +      "iconClass": "icon-jenkins", +      "tags": "instant-app,jenkins" +    } +  }, +  "objects": [ +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "${JENKINS_SERVICE_NAME}", +        "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_IMAGE_STREAM_TAG}", +                "namespace": "${NAMESPACE}" +              }, +              "lastTriggeredImage": "" +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${JENKINS_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "creationTimestamp": null, +            "labels": { +              "name": "${JENKINS_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "jenkins", +                "image": " ", +                "readinessProbe": { +                  "timeoutSeconds": 3, +                  "initialDelaySeconds": 3, +                  "httpGet": { +                    "path": "/login", +                    "port": 8080 +                  } +                }, +                "livenessProbe": { +                    "timeoutSeconds": 3, +                    "initialDelaySeconds": 60, +                    "httpGet": { +                        "path": "/login", +                        "port": 8080 +                    } +                }, +                "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" +          } +        } +      } +    }, +    { +      "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" +      } +    } +  ], +  "parameters": [ +    { +      "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 'admin' user.", +      "generate": "expression", +      "value": "password" +    }, +    { +      "name": "MEMORY_LIMIT", +      "displayName": "Memory Limit", +      "description": "Maximum amount of memory the container can use.", +      "value": "512Mi" +    }, +    { +      "name": "VOLUME_CAPACITY", +      "displayName": "Volume Capacity", +      "description": "Volume space available for data, e.g. 512Mi, 2Gi.", +      "value": "1Gi", +      "required": true +    }, +    { +      "name": "NAMESPACE", +      "displayName": "Jenkins ImageStream Namespace", +      "description": "The OpenShift Namespace where the Jenkins ImageStream resides.", +      "value": "openshift" +    }, +    { +      "name": "JENKINS_IMAGE_STREAM_TAG", +      "displayName": "Jenkins ImageStreamTag", +      "description": "Name of the ImageStreamTag to be used for the Jenkins image.", +      "value": "jenkins:latest" +    } +  ], +  "labels": { +    "template": "jenkins-persistent-template" +  } +} diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/nodejs-mongodb.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/nodejs-mongodb.json new file mode 100644 index 000000000..4b64bd463 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/nodejs-mongodb.json @@ -0,0 +1,449 @@ +{ +  "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": "${NAME}", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "${NAME}" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "${NAME}" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Defines how to build the application" +        } +      }, +      "spec": { +        "source": { +          "type": "Git", +          "git": { +            "uri": "${SOURCE_REPOSITORY_URL}", +            "ref": "${SOURCE_REPOSITORY_REF}" +          }, +          "contextDir": "${CONTEXT_DIR}" +        }, +        "strategy": { +          "type": "Source", +          "sourceStrategy": { +            "from": { +              "kind": "ImageStreamTag", +              "namespace": "${NAMESPACE}", +              "name": "nodejs:0.10" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "${NAME}:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "ConfigChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          }, +          { +            "type": "Generic", +            "generic": { +              "secret": "${GENERIC_WEBHOOK_SECRET}" +            } +          } +        ], +        "postCommit": { +          "script": "npm test" +        } +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Rolling" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "nodejs-mongodb-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "${NAME}:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${NAME}" +        }, +        "template": { +          "metadata": { +            "name": "${NAME}", +            "labels": { +              "name": "${NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "nodejs-mongodb-example", +                "image": " ", +                "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": true, +              "containerNames": [ +                "mongodb" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "namespace": "${NAMESPACE}", +                "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": " ", +                "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}" +                    } +                }, +                "volumeMounts": [ +                  { +                    "name": "${DATABASE_SERVICE_NAME}-data", +                    "mountPath": "/var/lib/mongodb/data" +                  } +                ] +              } +            ], +            "volumes": [ +              { +                "name": "${DATABASE_SERVICE_NAME}-data", +                "emptyDir": { +                  "medium": "" +                } +              } +            ] +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "NAME", +      "displayName": "Name", +      "description": "The name assigned to all of the frontend objects defined in this template.", +      "required": true, +      "value": "nodejs-mongodb-example" +    }, +    { +      "name": "NAMESPACE", +      "displayName": "Namespace", +      "description": "The OpenShift Namespace where the ImageStream resides.", +      "value": "openshift" +    }, +    { +      "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 (MongoDB)", +      "description": "Maximum amount of memory the MongoDB container can use.", +      "value": "512Mi" +    }, +    { +      "name": "SOURCE_REPOSITORY_URL", +      "displayName": "Git 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": "Git Reference", +      "description": "Set this to a branch name, tag or other ref of your repository if you are not using the default branch." +    }, +    { +      "name": "CONTEXT_DIR", +      "displayName": "Context Directory", +      "description": "Set this to the relative path to your project if it is not in the root of your repository." +    }, +    { +      "name": "APPLICATION_DOMAIN", +      "displayName": "Application Hostname", +      "description": "The exposed hostname that will route to the Node.js service, if left blank a value will be defaulted.", +      "value": "" +    }, +    { +      "name": "GITHUB_WEBHOOK_SECRET", +      "displayName": "GitHub Webhook Secret", +      "description": "A secret string used to configure the GitHub webhook.", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{40}" +    }, +    { +      "name": "GENERIC_WEBHOOK_SECRET", +      "displayName": "Generic Webhook Secret", +      "description": "A secret string used to configure the Generic webhook.", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{40}" +    }, +    { +      "name": "DATABASE_SERVICE_NAME", +      "displayName": "Database Service Name", +      "value": "mongodb" +    }, +    { +      "name": "DATABASE_USER", +      "displayName": "MongoDB Username", +      "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", +      "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.3/quickstart-templates/nodejs.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/nodejs.json new file mode 100644 index 000000000..0adb02a46 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/nodejs.json @@ -0,0 +1,308 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "nodejs-example", +    "annotations": { +      "description": "An example Node.js application with no database", +      "tags": "quickstart,nodejs", +      "iconClass": "icon-nodejs" +    } +  }, +  "labels": { +    "template": "nodejs-example" +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "${NAME}" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "${NAME}" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Defines how to build the application" +        } +      }, +      "spec": { +        "source": { +          "type": "Git", +          "git": { +            "uri": "${SOURCE_REPOSITORY_URL}", +            "ref": "${SOURCE_REPOSITORY_REF}" +          }, +          "contextDir": "${CONTEXT_DIR}" +        }, +        "strategy": { +          "type": "Source", +          "sourceStrategy": { +            "from": { +              "kind": "ImageStreamTag", +              "namespace": "${NAMESPACE}", +              "name": "nodejs:0.10" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "${NAME}:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "ConfigChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          }, +          { +            "type": "Generic", +            "generic": { +              "secret": "${GENERIC_WEBHOOK_SECRET}" +            } +          } +        ], +        "postCommit": { +          "script": "npm test" +        } +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Rolling" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "nodejs-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "${NAME}:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${NAME}" +        }, +        "template": { +          "metadata": { +            "name": "${NAME}", +            "labels": { +              "name": "${NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "nodejs-example", +                "image": " ", +                "ports": [ +                  { +                    "containerPort": 8080 +                  } +                ], +                "readinessProbe": { +                  "timeoutSeconds": 3, +                  "initialDelaySeconds": 3, +                  "httpGet": { +                    "path": "/", +                    "port": 8080 +                  } +                }, +                "livenessProbe": { +                    "timeoutSeconds": 3, +                    "initialDelaySeconds": 30, +                    "httpGet": { +                        "path": "/", +                        "port": 8080 +                    } +                }, +                "resources": { +                    "limits": { +                        "memory": "${MEMORY_LIMIT}" +                    } +                }, +                "env": [ +                  { +                    "name": "DATABASE_SERVICE_NAME", +                    "value": "${DATABASE_SERVICE_NAME}" +                  }, +                  { +                    "name": "MONGODB_USER", +                    "value": "${MONGODB_USER}" +                  }, +                  { +                    "name": "MONGODB_PASSWORD", +                    "value": "${MONGODB_PASSWORD}" +                  }, +                  { +                    "name": "MONGODB_DATABASE", +                    "value": "${MONGODB_DATABASE}" +                  }, +                  { +                    "name": "MONGODB_ADMIN_PASSWORD", +                    "value": "${MONGODB_ADMIN_PASSWORD}" +                  } +                ], +                "resources": { +		      "limits": { +			  "memory": "${MEMORY_LIMIT}" +		      } +                } +              } +            ] +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "NAME", +      "displayName": "Name", +      "description": "The name assigned to all of the frontend objects defined in this template.", +      "required": true, +      "value": "nodejs-example" +    }, +    { +      "name": "NAMESPACE", +      "displayName": "Namespace", +      "description": "The OpenShift Namespace where the ImageStream resides.", +      "value": "openshift" +    }, +    { +      "name": "MEMORY_LIMIT", +      "displayName": "Memory Limit", +      "description": "Maximum amount of memory the container can use.", +      "value": "512Mi" +    }, +    { +      "name": "SOURCE_REPOSITORY_URL", +      "displayName": "Git 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": "Git Reference", +      "description": "Set this to a branch name, tag or other ref of your repository if you are not using the default branch." +    }, +    { +      "name": "CONTEXT_DIR", +      "displayName": "Context Directory", +      "description": "Set this to the relative path to your project if it is not in the root of your repository." +    }, +    { +      "name": "APPLICATION_DOMAIN", +      "displayName": "Application Hostname", +      "description": "The exposed hostname that will route to the Node.js service, if left blank a value will be defaulted.", +      "value": "" +    }, +    { +      "name": "GITHUB_WEBHOOK_SECRET", +      "displayName": "GitHub Webhook Secret", +      "description": "A secret string used to configure the GitHub webhook.", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{40}" +    }, +    { +      "name": "GENERIC_WEBHOOK_SECRET", +      "displayName": "Generic Webhook Secret", +      "description": "A secret string used to configure the Generic webhook.", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{40}" +    }, +    { +      "name": "DATABASE_SERVICE_NAME", +      "displayName": "Database Service Name" +    }, +    { +      "name": "MONGODB_USER", +      "displayName": "MongoDB Username", +      "description": "Username for MongoDB user that will be used for accessing the database." +    }, +    { +      "name": "MONGODB_PASSWORD", +      "displayName": "MongoDB Password", +      "description": "Password for the MongoDB user." +    }, +    { +      "name": "MONGODB_DATABASE", +      "displayName": "Database Name" +    }, +    { +      "name": "MONGODB_ADMIN_PASSWORD", +      "displayName": "Database Administrator Password", +      "description": "Password for the database admin user." +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/v1.3/quickstart-templates/rails-postgresql.json b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/rails-postgresql.json new file mode 100644 index 000000000..82dd757ec --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/quickstart-templates/rails-postgresql.json @@ -0,0 +1,499 @@ +{ +  "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": "${NAME}", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "${NAME}" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "${NAME}" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "${NAME}", +        "annotations": { +          "description": "Defines how to build the application" +        } +      }, +      "spec": { +        "source": { +          "type": "Git", +          "git": { +            "uri": "${SOURCE_REPOSITORY_URL}", +            "ref": "${SOURCE_REPOSITORY_REF}" +          }, +          "contextDir": "${CONTEXT_DIR}" +        }, +        "strategy": { +          "type": "Source", +          "sourceStrategy": { +            "from": { +              "kind": "ImageStreamTag", +              "namespace": "${NAMESPACE}", +              "name": "ruby:2.2" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "${NAME}: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": "${NAME}", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Recreate", +          "recreateParams": { +          "pre": { +              "failurePolicy": "Abort", +              "execNewPod": { +                "command": [ +                  "./migrate-database.sh" +                ], +                "containerName": "${NAME}" +              } +            } +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "rails-postgresql-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "${NAME}:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${NAME}" +        }, +        "template": { +          "metadata": { +            "name": "${NAME}", +            "labels": { +              "name": "${NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "rails-postgresql-example", +                "image": " ", +                "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": true, +              "containerNames": [ +                "postgresql" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "namespace": "${NAMESPACE}", +                "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": { +            "volumes": [ +              { +                "name": "data", +                "emptyDir": {} +              } +            ], +            "containers": [ +              { +                "name": "postgresql", +                "image": " ", +                "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 +                  } +                }, +                "volumeMounts": [ +                  { +                    "name": "data", +                    "mountPath": "/var/lib/pgsql/data" +                  } +                ], +                "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": "NAME", +      "displayName": "Name", +      "description": "The name assigned to all of the frontend objects defined in this template.", +      "required": true, +      "value": "rails-postgresql-example" +    }, +    { +      "name": "NAMESPACE", +      "displayName": "Namespace", +      "description": "The OpenShift Namespace where the ImageStream resides.", +      "value": "openshift" +    }, +    { +      "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 (PostgreSQL)", +      "description": "Maximum amount of memory the PostgreSQL container can use.", +      "value": "512Mi" +    }, +    { +      "name": "SOURCE_REPOSITORY_URL", +      "displayName": "Git 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": "Git Reference", +      "description": "Set this to a branch name, tag or other ref of your repository if you are not using the default branch." +    }, +    { +      "name": "CONTEXT_DIR", +      "displayName": "Context Directory", +      "description": "Set this to the relative path to your project if it is not in the root of your repository." +    }, +    { +      "name": "APPLICATION_DOMAIN", +      "displayName": "Application Hostname", +      "description": "The exposed hostname that will route to the 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 Username", +      "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", +      "value": "postgresql" +    }, +    { +      "name": "DATABASE_USER", +      "displayName": "Database Username", +      "generate": "expression", +      "from": "user[A-Z0-9]{3}" +    }, +    { +      "name": "DATABASE_PASSWORD", +      "displayName": "Database Password", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{8}" +    }, +    { +      "name": "DATABASE_NAME", +      "displayName": "Database Name", +      "value": "root" +    }, +    { +      "name": "POSTGRESQL_MAX_CONNECTIONS", +      "displayName": "Maximum Database Connections", +      "value": "100" +    }, +    { +      "name": "POSTGRESQL_SHARED_BUFFERS", +      "displayName": "Shared Buffer Amount", +      "value": "12MB" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/v1.3/xpaas-streams/fis-image-streams.json b/roles/openshift_examples/files/examples/v1.3/xpaas-streams/fis-image-streams.json new file mode 100644 index 000000000..ed0e94bed --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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.3/xpaas-streams/jboss-image-streams.json b/roles/openshift_examples/files/examples/v1.3/xpaas-streams/jboss-image-streams.json new file mode 100644 index 000000000..46f93823c --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/xpaas-streams/jboss-image-streams.json @@ -0,0 +1,277 @@ +{ +    "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" +                        } +                    }, +                    { +                        "name": "1.3", +                        "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.3", +                            "sampleRepo": "https://github.com/jboss-developer/jboss-eap-quickstarts.git", +                            "sampleContextDir": "kitchensink", +                            "sampleRef": "6.4.x", +                            "version": "1.3" +                        } +                    } +                ] +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "jboss-eap70-openshift" +            }, +            "spec": { +                "dockerImageRepository": "registry.access.redhat.com/jboss-eap-7/eap70-openshift", +                "tags": [ +                    { +                        "name": "1.3", +                        "annotations": { +                            "description": "JBoss EAP 7.0 S2I images.", +                            "iconClass": "icon-jboss", +                            "tags": "builder,eap,javaee,java,jboss,xpaas", +                            "supports":"eap:7.0,javaee:7,java:8,xpaas:1.3", +                            "sampleRepo": "https://github.com/jboss-developer/jboss-eap-quickstarts.git", +                            "sampleContextDir": "kitchensink", +                            "sampleRef": "7.0.0.GA", +                            "version": "1.3" +                        } +                    } +                ] +            } +        }, +        { +            "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" +                        } +                    } +                ] +            } +        }, +        { +            "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" +                        } +                    }, +                    { +                        "name": "1.3", +                        "annotations": { +                            "description": "JBoss A-MQ 6.2 broker image.", +                            "iconClass": "icon-jboss", +                            "tags": "messaging,amq,jboss,xpaas", +                            "supports":"amq:6.2,messaging,xpaas:1.3", +                            "version": "1.3" +                        } +                    } +                ] +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "redhat-sso70-openshift", +                 "annotations": { +                    "description": "Red Hat SSO 7.0" +                } +            }, +            "spec": { +                "tags": [ +                    { +                        "name": "1.3-TP", +                        "annotations": { +                            "description": "Red Hat SSO 7.0 Tech Preview", +                            "iconClass": "icon-jboss", +                            "tags": "sso,keycloak,redhat", +                            "supports":"sso:7.0,xpaas:1.3", +                            "version": "1.3" +                        }, +                        "from": { +                          "kind": "DockerImage", +                          "name": "registry.access.redhat.com/redhat-sso-7-tech-preview/sso70-openshift:1.3" +                        } +                    } +                ] +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.3/xpaas-templates/amq62-basic.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/amq62-basic.json new file mode 100644 index 000000000..ce953c05f --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/amq62-basic.json @@ -0,0 +1,311 @@ +{ +    "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.3.1" +        }, +        "name": "amq62-basic" +    }, +    "labels": { +        "template": "amq62-basic", +        "xpaas": "1.3.1" +    }, +    "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": "Rolling", +                    "rollingParams": { +                        "maxSurge": 0 +                    } +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-amq" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-amq-62:1.3" +                            } +                        } +                    }, +                    { +                        "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.3/xpaas-templates/amq62-persistent-ssl.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/amq62-persistent-ssl.json new file mode 100644 index 000000000..7d41a29ad --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/amq62-persistent-ssl.json @@ -0,0 +1,539 @@ +{ +    "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.3.1" +        }, +        "name": "amq62-persistent-ssl" +    }, +    "labels": { +        "template": "amq62-persistent-ssl", +        "xpaas": "1.3.1" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "broker", +            "required": true +        }, +        { +            "description": "Split the data directory for each node in a mesh.", +            "name": "AMQ_SPLIT", +            "value": "false", +            "required": false +        }, +        { +            "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 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": "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": "Rolling", +                    "rollingParams": { +                        "maxSurge": 0 +                    } +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-amq" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-amq-62:1.3" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-amq", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-amq", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccountName": "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", +                                        "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_SPLIT", +                                        "value": "${AMQ_SPLIT}" +                                    }, +                                    { +                                        "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}" +                                } +                            }, +                            { +                                "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": [ +                    "ReadWriteMany" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.3/xpaas-templates/amq62-persistent.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/amq62-persistent.json new file mode 100644 index 000000000..5d5dd9840 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/amq62-persistent.json @@ -0,0 +1,361 @@ +{ +    "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.3.1" +        }, +        "name": "amq62-persistent" +    }, +    "labels": { +        "template": "amq62-persistent", +        "xpaas": "1.3.1" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "broker", +            "required": true +        }, +        { +            "description": "Split the data directory for each node in a mesh.", +            "name": "AMQ_SPLIT", +            "value": "false", +            "required": false +        }, +        { +            "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 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": "Rolling", +                    "rollingParams": { +                        "maxSurge": 0 +                    } +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-amq" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-amq-62:1.3" +                            } +                        } +                    }, +                    { +                        "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", +                                        "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_SPLIT", +                                        "value": "${AMQ_SPLIT}" +                                    }, +                                    { +                                        "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}" +                                    } +                                ] +                            } +                        ], +                        "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": [ +                    "ReadWriteMany" +                ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.3/xpaas-templates/amq62-ssl.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/amq62-ssl.json new file mode 100644 index 000000000..4122a02a1 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/amq62-ssl.json @@ -0,0 +1,493 @@ +{ +    "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.3.1" +        }, +        "name": "amq62-ssl" +    }, +    "labels": { +        "template": "amq62-ssl", +        "xpaas": "1.3.1" +    }, +    "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": "Rolling", +                    "rollingParams": { +                        "maxSurge": 0 +                    } +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-amq" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-amq-62:1.3" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-amq", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-amq", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccountName": "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.3/xpaas-templates/datagrid65-basic.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/datagrid65-basic.json new file mode 100644 index 000000000..56e76016f --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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.3/xpaas-templates/datagrid65-https.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/datagrid65-https.json new file mode 100644 index 000000000..639ac2e11 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/datagrid65-mysql-persistent.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/datagrid65-mysql-persistent.json new file mode 100644 index 000000000..22ca3f0a0 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/datagrid65-mysql.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/datagrid65-mysql.json new file mode 100644 index 000000000..e1a585d24 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/datagrid65-postgresql-persistent.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/datagrid65-postgresql-persistent.json new file mode 100644 index 000000000..d0e272a8d --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/datagrid65-postgresql.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/datagrid65-postgresql.json new file mode 100644 index 000000000..55a68db40 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/decisionserver62-amq-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/decisionserver62-amq-s2i.json new file mode 100644 index 000000000..219b8ece7 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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.2.0" +        }, +        "name": "decisionserver62-amq-s2i" +    }, +    "labels": { +        "template": "decisionserver62-amq-s2i", +        "xpaas": "1.2.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.2.0.Final", +            "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": "1.2", +            "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.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": { +                        "serviceAccountName": "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.3" +                            } +                        } +                    }, +                    { +                        "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.3/xpaas-templates/decisionserver62-basic-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/decisionserver62-basic-s2i.json new file mode 100644 index 000000000..097720375 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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.2.0" +        }, +        "name": "decisionserver62-basic-s2i" +    }, +    "labels": { +        "template": "decisionserver62-basic-s2i", +        "xpaas": "1.2.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.2.0.Final", +            "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": "1.2", +            "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.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": "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.3/xpaas-templates/decisionserver62-https-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/decisionserver62-https-s2i.json new file mode 100644 index 000000000..e5e2dee63 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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.2.0" +        }, +        "name": "decisionserver62-https-s2i" +    }, +    "labels": { +        "template": "decisionserver62-https-s2i", +        "xpaas": "1.2.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.2.0.Final", +            "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": "1.2", +            "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.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": { +                        "serviceAccountName": "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.3/xpaas-templates/eap64-amq-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap64-amq-persistent-s2i.json new file mode 100644 index 000000000..c9ecee9cb --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap64-amq-persistent-s2i.json @@ -0,0 +1,783 @@ +{ +    "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.3.1" +        }, +        "name": "eap64-amq-persistent-s2i" +    }, +    "labels": { +        "template": "eap64-amq-persistent-s2i", +        "xpaas": "1.3.1" +    }, +    "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": "Split the data directory for each node in a mesh.", +            "name": "AMQ_SPLIT", +            "value": "false", +            "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": { +                        "serviceAccountName": "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": "Rolling", +                    "rollingParams": { +                        "maxSurge": 0 +                    } +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-amq" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-amq-62:1.3" +                            } +                        } +                    }, +                    { +                        "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": "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_SPLIT", +                                        "value": "${AMQ_SPLIT}" +                                    }, +                                    { +                                        "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}" +                                    }, +                                    { +                                        "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.3/xpaas-templates/eap64-amq-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap64-amq-s2i.json new file mode 100644 index 000000000..99724db94 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap64-amq-s2i.json @@ -0,0 +1,710 @@ +{ +    "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.3.1" +        }, +        "name": "eap64-amq-s2i" +    }, +    "labels": { +        "template": "eap64-amq-s2i", +        "xpaas": "1.3.1" +    }, +    "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": { +                        "serviceAccountName": "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.3" +                            } +                        } +                    }, +                    { +                        "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": "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.3/xpaas-templates/eap64-basic-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap64-basic-s2i.json new file mode 100644 index 000000000..2e3849e2a --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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.3/xpaas-templates/eap64-https-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap64-https-s2i.json new file mode 100644 index 000000000..2517be3ca --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/eap64-mongodb-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap64-mongodb-persistent-s2i.json new file mode 100644 index 000000000..97cc465d2 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/eap64-mongodb-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap64-mongodb-s2i.json new file mode 100644 index 000000000..8bdd85546 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/eap64-mysql-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap64-mysql-persistent-s2i.json new file mode 100644 index 000000000..dcc591836 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/eap64-mysql-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap64-mysql-s2i.json new file mode 100644 index 000000000..372802eea --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/eap64-postgresql-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap64-postgresql-persistent-s2i.json new file mode 100644 index 000000000..1ba00e3b5 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/eap64-postgresql-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap64-postgresql-s2i.json new file mode 100644 index 000000000..860374d3c --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/eap64-sso-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap64-sso-s2i.json new file mode 100644 index 000000000..6c644553e --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap64-sso-s2i.json @@ -0,0 +1,663 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass" : "icon-jboss", +            "description": "Application template for EAP 6 applications built using S2I, enabled for SSO.", +            "tags": "eap,javaee,java,jboss,xpaas,sso,keycloak", +            "version": "1.3.0" +        }, +        "name": "eap64-sso-s2i" +    }, +    "labels": { +        "template": "eap64-sso-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/keycloak/keycloak-examples", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "0.4-openshift", +            "required": false +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "CONTEXT_DIR", +            "value": "", +            "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": "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 +        }, +        { +            "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": "secret-key", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "password", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "SSO Location", +            "name": "SSO_URI", +            "value": "https://secure-sso:8443/auth", +            "required": false +        }, +        { +            "description": "SSO Realm", +            "name": "SSO_REALM", +            "value": "demo", +            "required": false +        }, +        { +            "description": "SSO Username", +            "name": "SSO_USERNAME", +            "value": "", +            "required": false +        }, +        { +            "description": "SSO Password", +            "name": "SSO_PASSWORD", +            "value": "", +            "required": false +        }, +        { +            "description": "SSO Public Key. Public key is recommended to be passed into the template to avoid man-in-the-middle security vulnerability", +            "name": "SSO_PUBLIC_KEY", +            "value": "", +            "required": false +        }, +        { +            "description": "SSO Client Access Type", +            "name": "SSO_BEARER_ONLY", +            "value": "", +            "required": false +        }, +        { +            "description": "Routes", +            "name": "APPLICATION_ROUTES", +            "value": "", +            "required": false +        }, +        { +            "description": "Artifacts", +            "name": "ARTIFACT_DIR", +            "value": "app-jee/target,service-jaxrs/target,app-profile-jee/target,app-profile-jee-saml/target", +            "required": false +        }, +        { +            "description": "maven", +            "name": "MAVEN_ARGS_APPEND", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "SSO_SAML_KEYSTORE_SECRET", +            "value": "eap-app-secret", +            "required": false +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "SSO_SAML_KEYSTORE", +            "value": "/etc/sso-saml-secret-volume/keystore.jks", +            "required": false +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "SSO_SAML_CERTIFICATE_NAME", +            "value": "jboss", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "SSO_SAML_KEYSTORE_PASSWORD", +            "value": "mykeystorepass", +            "required": false +        }, +        { +            "description": "The SSO Client Secret for Confidential Access", +            "name": "SSO_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "required": true +        }, +        { +            "description": "Enable CORS for SSO applications", +            "name": "SSO_ENABLE_CORS", +            "value": "false", +            "required": false +        } +   ], +    "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.3" +                        }, +                        "env": [ +                            { +                                "name": "ARTIFACT_DIR", +                                "value": "${ARTIFACT_DIR}" +                            }, +                            { +                                "name": "MAVEN_ARGS_APPEND", +                                "value": "${MAVEN_ARGS_APPEND}" +                            } +                        ] +                    } +                }, +                "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": { +                        "serviceAccountName": "eap-service-account", +                        "terminationGracePeriodSeconds": 60, +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "sso-saml-keystore-volume", +                                        "mountPath": "/etc/sso-saml-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "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}" +                                    }, +                                    { +                                        "name": "SSO_URI", +                                        "value": "${SSO_URI}" +                                    }, +                                    { +                                        "name": "SSO_REALM", +                                        "value": "${SSO_REALM}" +                                    }, +                                    { +                                        "name": "SSO_USERNAME", +                                        "value": "${SSO_USERNAME}" +                                    }, +                                    { +                                        "name": "SSO_PASSWORD", +                                        "value": "${SSO_PASSWORD}" +                                    }, +                                    { +                                        "name": "SSO_PUBLIC_KEY", +                                        "value": "${SSO_PUBLIC_KEY}" +                                    }, +                                    { +                                        "name": "SSO_BEARER_ONLY", +                                        "value": "${SSO_BEARER_ONLY}" +                                    }, +                                    { +                                        "name": "APPLICATION_ROUTES", +                                        "value": "${APPLICATION_ROUTES}" +                                    }, +                                    { +                                        "name": "SSO_SAML_KEYSTORE_SECRET", +                                        "value": "${SSO_SAML_KEYSTORE_SECRET}" +                                    }, +                                    { +                                        "name": "SSO_SAML_KEYSTORE", +                                        "value": "${SSO_SAML_KEYSTORE}" +                                    }, +                                    { +                                        "name": "SSO_SAML_CERTIFICATE_NAME", +                                        "value": "${SSO_SAML_CERTIFICATE_NAME}" +                                    }, +                                    { +                                        "name": "SSO_SAML_KEYSTORE_PASSWORD", +                                        "value": "${SSO_SAML_KEYSTORE_PASSWORD}" +                                    }, +                                    { +                                        "name": "SSO_SECRET", +                                        "value": "${SSO_SECRET}" +                                    }, +                                    { +                                        "name": "SSO_ENABLE_CORS", +                                        "value": "${SSO_ENABLE_CORS}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "sso-saml-keystore-volume", +                                "secret": { +                                    "secretName": "${SSO_SAML_KEYSTORE_SECRET}" +                                } +                            }, +                            { +                                "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.3/xpaas-templates/eap70-amq-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap70-amq-persistent-s2i.json new file mode 100644 index 000000000..d9607ddd7 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap70-amq-persistent-s2i.json @@ -0,0 +1,783 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 7 A-MQ applications with persistent storage built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "eap,amq,javaee,java,messaging,jboss,xpaas", +            "version": "1.3.1" +        }, +        "name": "eap70-amq-persistent-s2i" +    }, +    "labels": { +        "template": "eap70-amq-persistent-s2i", +        "xpaas": "1.3.1" +    }, +    "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.git", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.3", +            "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": "Split the data directory for each node in a mesh.", +            "name": "AMQ_SPLIT", +            "value": "false", +            "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-eap70-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": { +                        "serviceAccountName": "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": "Rolling", +                    "rollingParams": { +                        "maxSurge": 0 +                    } +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-amq" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "jboss-amq-62:1.3" +                            } +                        } +                    }, +                    { +                        "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": "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_SPLIT", +                                        "value": "${AMQ_SPLIT}" +                                    }, +                                    { +                                        "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}" +                                    }, +                                    { +                                        "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.3/xpaas-templates/eap70-amq-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap70-amq-s2i.json new file mode 100644 index 000000000..552b637b8 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap70-amq-s2i.json @@ -0,0 +1,710 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 7 A-MQ applications built using S2I.", +            "iconClass": "icon-jboss", +            "tags": "eap,amq,javaee,java,messaging,jboss,xpaas", +            "version": "1.3.1" +        }, +        "name": "eap70-amq-s2i" +    }, +    "labels": { +        "template": "eap70-amq-s2i", +        "xpaas": "1.3.1" +    }, +    "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.git", +            "required": true +        }, +        { +            "description": "Git branch/tag reference", +            "name": "SOURCE_REPOSITORY_REF", +            "value": "1.3", +            "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": "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": "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": "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": 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-eap70-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": { +                        "serviceAccountName": "eap7-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.3" +                            } +                        } +                    }, +                    { +                        "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": "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.3/xpaas-templates/eap70-basic-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap70-basic-s2i.json new file mode 100644 index 000000000..f03fc69fa --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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.1" +        }, +        "name": "eap70-basic-s2i" +    }, +    "labels": { +        "template": "eap70-basic-s2i", +        "xpaas": "1.3.1" +    }, +    "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.0.GA", +            "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": "A-MQ 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.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": "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.3/xpaas-templates/eap70-https-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap70-https-s2i.json new file mode 100644 index 000000000..27d9b656d --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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.1" +        }, +        "name": "eap70-https-s2i" +    }, +    "labels": { +        "template": "eap70-https-s2i", +        "xpaas": "1.3.1" +    }, +    "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.0.GA", +            "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": "A-MQ 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.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": { +                        "serviceAccountName": "eap7-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.3/xpaas-templates/eap70-mongodb-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap70-mongodb-persistent-s2i.json new file mode 100644 index 000000000..9cc786416 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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.1" +        }, +        "name": "eap70-mongodb-persistent-s2i" +    }, +    "labels": { +        "template": "eap70-mongodb-persistent-s2i", +        "xpaas": "1.3.1" +    }, +    "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.3", +            "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": "A-MQ 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.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": { +                        "serviceAccountName": "eap7-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.3/xpaas-templates/eap70-mongodb-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap70-mongodb-s2i.json new file mode 100644 index 000000000..4db6adcf8 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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.1" +        }, +        "name": "eap70-mongodb-s2i" +    }, +    "labels": { +        "template": "eap70-mongodb-s2i", +        "xpaas": "1.3.1" +    }, +    "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.3", +            "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": "A-MQ 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.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": { +                        "serviceAccountName": "eap7-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.3/xpaas-templates/eap70-mysql-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap70-mysql-persistent-s2i.json new file mode 100644 index 000000000..91a79d797 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap70-mysql-persistent-s2i.json @@ -0,0 +1,770 @@ +{ +    "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.1" +        }, +        "name": "eap70-mysql-persistent-s2i" +    }, +    "labels": { +        "template": "eap70-mysql-persistent-s2i", +        "xpaas": "1.3.1" +    }, +    "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.3", +            "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": "A-MQ 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.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": { +                        "serviceAccountName": "eap7-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}" +                                    }, +                                    { +                                        "name": "DEFAULT_JOB_REPOSITORY", +                                        "value": "${APPLICATION_NAME}-mysql" +                                    }, +                                    { +                                        "name": "TIMER_SERVICE_DATA_STORE", +                                        "value": "${APPLICATION_NAME}-mysql" +                                    } +                                ] +                            } +                        ], +                        "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.3/xpaas-templates/eap70-mysql-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap70-mysql-s2i.json new file mode 100644 index 000000000..63e4ecd2b --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap70-mysql-s2i.json @@ -0,0 +1,730 @@ +{ +    "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.1" +        }, +        "name": "eap70-mysql-s2i" +    }, +    "labels": { +        "template": "eap70-mysql-s2i", +        "xpaas": "1.3.1" +    }, +    "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.3", +            "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": "A-MQ 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.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": { +                        "serviceAccountName": "eap7-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}" +                                    }, +                                    { +                                        "name": "DEFAULT_JOB_REPOSITORY", +                                        "value": "${APPLICATION_NAME}-mysql" +                                    }, +                                    { +                                        "name": "TIMER_SERVICE_DATA_STORE", +                                        "value": "${APPLICATION_NAME}-mysql" +                                    } +                                ] +                            } +                        ], +                        "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.3/xpaas-templates/eap70-postgresql-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap70-postgresql-persistent-s2i.json new file mode 100644 index 000000000..ea681d847 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap70-postgresql-persistent-s2i.json @@ -0,0 +1,743 @@ +{ +    "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.1" +        }, +        "name": "eap70-postgresql-persistent-s2i" +    }, +    "labels": { +        "template": "eap70-postgresql-persistent-s2i", +        "xpaas": "1.3.1" +    }, +    "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.3", +            "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": "A-MQ 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.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": { +                        "serviceAccountName": "eap7-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}" +                                    }, +                                    { +                                        "name": "DEFAULT_JOB_REPOSITORY", +                                        "value": "${APPLICATION_NAME}-postgresql" +                                    }, +                                    { +                                        "name": "TIMER_SERVICE_DATA_STORE", +                                        "value": "${APPLICATION_NAME}-postgresql" +                                    } +                                ] +                            } +                        ], +                        "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.3/xpaas-templates/eap70-postgresql-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap70-postgresql-s2i.json new file mode 100644 index 000000000..df95d823e --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/eap70-postgresql-s2i.json @@ -0,0 +1,703 @@ +{ +    "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.1" +        }, +        "name": "eap70-postgresql-s2i" +    }, +    "labels": { +        "template": "eap70-postgresql-s2i", +        "xpaas": "1.3.1" +    }, +    "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.3", +            "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": "A-MQ 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.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": { +                        "serviceAccountName": "eap7-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}" +                                    }, +                                    { +                                        "name": "DEFAULT_JOB_REPOSITORY", +                                        "value": "${APPLICATION_NAME}-postgresql" +                                    }, +                                    { +                                        "name": "TIMER_SERVICE_DATA_STORE", +                                        "value": "${APPLICATION_NAME}-postgresql" +                                    } +                                ] +                            } +                        ], +                        "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.3/xpaas-templates/jws30-tomcat7-basic-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/jws30-tomcat7-basic-s2i.json new file mode 100644 index 000000000..376f2f61b --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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.3/xpaas-templates/jws30-tomcat7-https-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/jws30-tomcat7-https-s2i.json new file mode 100644 index 000000000..0090d4090 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/jws30-tomcat7-mongodb-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/jws30-tomcat7-mongodb-persistent-s2i.json new file mode 100644 index 000000000..f0abc9b24 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/jws30-tomcat7-mongodb-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/jws30-tomcat7-mongodb-s2i.json new file mode 100644 index 000000000..dc43fbea3 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/jws30-tomcat7-mysql-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/jws30-tomcat7-mysql-persistent-s2i.json new file mode 100644 index 000000000..6d02c7487 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/jws30-tomcat7-mysql-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/jws30-tomcat7-mysql-s2i.json new file mode 100644 index 000000000..cb23d32a7 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/jws30-tomcat7-postgresql-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/jws30-tomcat7-postgresql-persistent-s2i.json new file mode 100644 index 000000000..82096ab12 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/jws30-tomcat7-postgresql-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/jws30-tomcat7-postgresql-s2i.json new file mode 100644 index 000000000..6c2e42564 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/jws30-tomcat8-basic-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/jws30-tomcat8-basic-s2i.json new file mode 100644 index 000000000..b425891c6 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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.3/xpaas-templates/jws30-tomcat8-https-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/jws30-tomcat8-https-s2i.json new file mode 100644 index 000000000..7a5414fd7 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/jws30-tomcat8-mongodb-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/jws30-tomcat8-mongodb-persistent-s2i.json new file mode 100644 index 000000000..020c32d31 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/jws30-tomcat8-mongodb-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/jws30-tomcat8-mongodb-s2i.json new file mode 100644 index 000000000..48371db95 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/jws30-tomcat8-mysql-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/jws30-tomcat8-mysql-persistent-s2i.json new file mode 100644 index 000000000..b1e847c60 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/jws30-tomcat8-mysql-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/jws30-tomcat8-mysql-s2i.json new file mode 100644 index 000000000..ca501102f --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/jws30-tomcat8-postgresql-persistent-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/jws30-tomcat8-postgresql-persistent-s2i.json new file mode 100644 index 000000000..9050874ab --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/jws30-tomcat8-postgresql-s2i.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/jws30-tomcat8-postgresql-s2i.json new file mode 100644 index 000000000..dba4d8b26 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/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": { +                        "serviceAccountName": "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.3/xpaas-templates/sso70-basic.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/sso70-basic.json new file mode 100644 index 000000000..7f320bace --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/sso70-basic.json @@ -0,0 +1,446 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for SSO 7.0", +            "iconClass" : "icon-jboss", +            "tags" : "sso,keycloak,java,jboss,xpaas", +            "version" : "1.3" +        }, +        "name": "sso70-basic" +    }, +    "labels": { +        "template": "sso70-basic", +        "xpaas" : "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "sso", +            "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.: <application-name>.<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "value": "", +            "required": false +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "sso-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": "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": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression", +            "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": "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": "secret-key", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "password", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "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}-basic" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-basic", +                "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": "redhat-sso70-openshift:1.3-TP"  +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccountName": "sso-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" +                                    } +                                ], +                                "env": [ +                                    { +                                        "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": "EAP_HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "EAP_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.3/xpaas-templates/sso70-mysql-persistent.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/sso70-mysql-persistent.json new file mode 100644 index 000000000..dc8bd740e --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/sso70-mysql-persistent.json @@ -0,0 +1,658 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for SSO 7.0 MySQL applications with persistent storage", +            "iconClass" : "icon-jboss", +            "tags" : "sso,keycloak,mysql,java,database,jboss,xpaas", +            "version" : "1.3" +        }, +        "name": "sso70-mysql-persistent" +    }, +    "labels": { +        "template": "sso70-mysql-persistent", +        "xpaas" : "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "sso", +            "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.: <application-name>.<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "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/KeycloakDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "sso-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": "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": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "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 +        }, +        { +            "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": "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": "redhat-sso70-openshift:1.3-TP" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccountName": "sso-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" +                                    } +                                ], +                                "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": "EAP_HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "EAP_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.3/xpaas-templates/sso70-mysql.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/sso70-mysql.json new file mode 100644 index 000000000..029dcee54 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/sso70-mysql.json @@ -0,0 +1,627 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for SSO 7.0 MySQL applications", +            "iconClass" : "icon-jboss", +            "tags" : "sso,keycloak,mysql,java,database,jboss,xpaas", +            "version" : "1.3" +        }, +        "name": "sso70-mysql" +    }, +    "labels": { +        "template": "sso70-mysql", +        "xpaas" : "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "sso", +            "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.: <application-name>.<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "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/KeycloakDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "sso-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": "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": "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": "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 +        }, +        { +            "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}", +		    "component": "server" +                }, +                "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}", +                    "component": "server" +                }, +                "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}", +                    "component": "database" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}", +                    "component": "server" +                }, +                "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}", +                    "component": "server" +                }, +                "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}", +		    "component": "server" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                             "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "redhat-sso70-openshift:1.3-TP" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}", +                            "component": "server" +                        } +                    }, +                    "spec": { +                        "serviceAccountName": "sso-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" +                                    } +                                ], +                                "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": "EAP_HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "EAP_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}", +                    "component": "database" +                } +            }, +            "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}", +                            "component": "database" +                        } +                    }, +                    "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.3/xpaas-templates/sso70-postgresql-persistent.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/sso70-postgresql-persistent.json new file mode 100644 index 000000000..bad7e49b2 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/sso70-postgresql-persistent.json @@ -0,0 +1,631 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for SSO 7.0 PostgreSQL applications with persistent storage", +            "iconClass" : "icon-jboss", +            "tags" : "sso,keycloak,postrgresql,java,database,jboss,xpaas", +            "version" : "1.3" +        }, +        "name": "sso70-postgresql-persistent" +    }, +    "labels": { +        "template": "sso70-postgresql-persistent", +        "xpaas" : "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "sso", +            "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.: <application-name>.<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "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/KeycloakDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "sso-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": "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": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "", +            "required": false +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "", +            "required": false +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi", +            "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 +        }, +        { +            "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": "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": "redhat-sso70-openshift:1.3-TP" +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccountName": "sso-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" +                                    } +                                ], +                                "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": "EAP_HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "EAP_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.3/xpaas-templates/sso70-postgresql.json b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/sso70-postgresql.json new file mode 100644 index 000000000..08257d192 --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/xpaas-templates/sso70-postgresql.json @@ -0,0 +1,600 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for SSO 7.0 PostgreSQL applications", +            "iconClass" : "icon-jboss", +            "tags" : "sso,keycloak,postrgresql,java,database,jboss,xpaas", +            "version" : "1.3" +        }, +        "name": "sso70-postgresql" +    }, +    "labels": { +        "template": "sso70-postgresql", +        "xpaas" : "1.3.0" +    }, +    "parameters": [ +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "sso", +            "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.: <application-name>.<project>.<default-domain-suffix>", +            "name": "HOSTNAME_HTTPS", +            "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/KeycloakDS", +            "required": false +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root", +            "required": true +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "HTTPS_SECRET", +            "value": "sso-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": "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": "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": "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": "secret-key", +            "required": false +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "JGROUPS_ENCRYPT_PASSWORD", +            "value": "password", +            "required": false +        }, +        { +            "description": "JGroups cluster password", +            "name": "JGROUPS_CLUSTER_PASSWORD", +            "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}", +                    "component": "server" +                }, +                "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}", +                    "component": "server" +                }, +                "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}", +                    "component": "database" +                }, +                "annotations": { +                    "description": "The database server's port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http", +            "metadata": { +                "name": "${APPLICATION_NAME}", +                "labels": { +                    "application": "${APPLICATION_NAME}", +                    "component": "server" +                }, +                "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}", +                    "component": "server" +                }, +                "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}", +                    "component": "server" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}" +                            ], +                             "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "${IMAGE_STREAM_NAMESPACE}", +                                "name": "redhat-sso70-openshift:1.3-TP"  +                            } +                        } +                    }, +                    { +                        "type": "ConfigChange" +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}", +                            "component": "server" +                        } +                    }, +                    "spec": { +                        "serviceAccountName": "sso-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" +                                    } +                                ], +                                "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": "EAP_HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE", +                                        "value": "${HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_NAME", +                                        "value": "${HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "EAP_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}", +                    "component": "database" +                } +            }, +            "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}", +                            "component": "database" +                        } +                    }, +                    "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 a5ccfb152..364e54f58 100755 --- a/roles/openshift_facts/library/openshift_facts.py +++ b/roles/openshift_facts/library/openshift_facts.py @@ -832,19 +832,26 @@ def set_version_facts_if_unset(facts):                  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.2.0') +                version_gte_3_3_or_1_3 = LooseVersion(version) >= LooseVersion('1.3.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')                  version_gte_3_2_or_1_2 = LooseVersion(version) >= LooseVersion('3.1.1.901') +                version_gte_3_3_or_1_3 = LooseVersion(version) >= LooseVersion('3.3.0')          else:              version_gte_3_1_or_1_1 = True              version_gte_3_1_1_or_1_1_1 = True              version_gte_3_2_or_1_2 = True +            version_gte_3_3_or_1_3 = False          facts['common']['version_gte_3_1_or_1_1'] = version_gte_3_1_or_1_1          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 +        facts['common']['version_gte_3_3_or_1_3'] = version_gte_3_3_or_1_3 -        if version_gte_3_2_or_1_2: + +        if version_gte_3_3_or_1_3: +            examples_content_version = 'v1.3' +        elif 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'  | 
