diff options
Diffstat (limited to 'roles')
70 files changed, 19579 insertions, 8 deletions
diff --git a/roles/docker_storage/README.md b/roles/docker_storage/README.md index 0d8f31afc..bf0158623 100644 --- a/roles/docker_storage/README.md +++ b/roles/docker_storage/README.md @@ -36,4 +36,4 @@ ASL 2.0  Author Information  ------------------ -Openshift operations, Red Hat, Inc +OpenShift operations, Red Hat, Inc diff --git a/roles/docker_storage/meta/main.yml b/roles/docker_storage/meta/main.yml index a5d51cd3a..f5b2d53cb 100644 --- a/roles/docker_storage/meta/main.yml +++ b/roles/docker_storage/meta/main.yml @@ -1,6 +1,6 @@  ---  galaxy_info: -  author: Openshift +  author: OpenShift    description:  Setup docker_storage options    company: Red Hat, Inc    license: ASL 2.0 diff --git a/roles/openshift_ansible_inventory/README.md b/roles/openshift_ansible_inventory/README.md index 69a07effd..b62287c12 100644 --- a/roles/openshift_ansible_inventory/README.md +++ b/roles/openshift_ansible_inventory/README.md @@ -1,4 +1,4 @@ -Openshift Ansible Inventory +OpenShift Ansible Inventory  =========  Install and configure openshift-ansible-inventory. @@ -38,4 +38,4 @@ ASL 2.0  Author Information  ------------------ -Openshift operations, Red Hat, Inc +OpenShift operations, Red Hat, Inc diff --git a/roles/openshift_ansible_inventory/meta/main.yml b/roles/openshift_ansible_inventory/meta/main.yml index ff3df0a7d..7f7387e80 100644 --- a/roles/openshift_ansible_inventory/meta/main.yml +++ b/roles/openshift_ansible_inventory/meta/main.yml @@ -1,6 +1,6 @@  ---  galaxy_info: -  author: Openshift +  author: OpenShift    description:  Install and configure openshift-ansible-inventory    company: Red Hat, Inc    license: ASL 2.0 diff --git a/roles/openshift_examples/README.md b/roles/openshift_examples/README.md new file mode 100644 index 000000000..7d8735a0a --- /dev/null +++ b/roles/openshift_examples/README.md @@ -0,0 +1,49 @@ +OpenShift Examples +================ + +Installs example image streams, db-templates, and quickstart-templates by copying +examples from this module to your first master and importing them with oc create -n into the openshift namespace + +The examples-sync.sh script can be used to pull the latest content from github +and stage it for updating the ansible repo. This script is not used directly by +ansible. + +Requirements +------------ + +Role Variables +-------------- + +| Name                                | Default value                                       |                                          | +|-------------------------------------|-----------------------------------------------------|------------------------------------------| +| openshift_examples_load_centos      | true when openshift_deployment_typenot 'enterprise' | Load centos image streams                | +| openshift_examples_load_rhel        | true if openshift_deployment_type is 'enterprise'   | Load rhel image streams                  | +| openshift_examples_load_db_templates| true                                                | Loads databcase templates                | +| openshift_examples_load_quickstarts | true                                                | Loads quickstarts ie: nodejs, rails, etc | +| openshift_examples_load_xpaas       | false                                               | Loads xpass streams and templates        | + + +Dependencies +------------ + +Example Playbook +---------------- + +TODO +---- +Currently we use `oc create -f` against various files and we accept non zero return code as a success +if (and only iff) stderr also contains the string 'already exists'. This means that if one object in the file exists already +but others fail to create you won't be aware of the failure. This also means that we do not currently support +updating existing objects. + +We should add the ability to compare existing image streams against those we're being asked to load and update if necessary. + +License +------- + +Apache License, Version 2.0 + +Author Information +------------------ + +Scott Dodson (sdodson@redhat.com) diff --git a/roles/openshift_examples/defaults/main.yml b/roles/openshift_examples/defaults/main.yml new file mode 100644 index 000000000..3246790aa --- /dev/null +++ b/roles/openshift_examples/defaults/main.yml @@ -0,0 +1,16 @@ +--- +# By default install rhel and xpaas streams on enterprise installs +openshift_examples_load_centos: "{{ openshift_deployment_type != 'enterprise' }}" +openshift_examples_load_rhel: "{{ openshift_deployment_type == 'enterprise' }}" +openshift_examples_load_db_templates: true +openshift_examples_load_xpaas: "{{ openshift_deployment_type == 'enterprise' }}" +openshift_examples_load_quickstarts: true + +examples_base: /usr/share/openshift/examples +image_streams_base: "{{ examples_base }}/image-streams" +centos_image_streams: "{{ image_streams_base}}/image-streams-centos7.json" +rhel_image_streams: "{{ image_streams_base}}/image-streams-rhel7.json" +db_templates_base: "{{ examples_base }}/db-templates" +xpaas_image_streams: "{{ examples_base }}/xpaas-streams/jboss-image-streams.json" +xpaas_templates_base: "{{ examples_base }}/xpaas-templates" +quickstarts_base: "{{ examples_base }}/quickstart-templates" diff --git a/roles/openshift_examples/examples-sync.sh b/roles/openshift_examples/examples-sync.sh new file mode 100755 index 000000000..12d3bc263 --- /dev/null +++ b/roles/openshift_examples/examples-sync.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +# Utility script to update the ansible repo with the latest templates and image +# streams from several github repos +# +# This script should be run from openshift-ansible/roles/openshift_examples + +EXAMPLES_BASE=$(pwd)/files/examples +find files/examples -name '*.json' -delete +TEMP=`mktemp -d` +pushd $TEMP +wget https://github.com/openshift/origin/archive/master.zip -O origin-master.zip +wget https://github.com/openshift/django-ex/archive/master.zip -O django-ex-master.zip +wget https://github.com/openshift/rails-ex/archive/master.zip -O rails-ex-master.zip +wget https://github.com/openshift/nodejs-ex/archive/master.zip -O nodejs-ex-master.zip +wget https://github.com/openshift/dancer-ex/archive/master.zip -O dancer-ex-master.zip +wget https://github.com/openshift/cakephp-ex/archive/master.zip -O cakephp-ex-master.zip +wget https://github.com/jboss-openshift/application-templates/archive/master.zip -O application-templates-master.zip +unzip origin-master.zip +unzip django-ex-master.zip +unzip rails-ex-master.zip +unzip nodejs-ex-master.zip +unzip dancer-ex-master.zip +unzip cakephp-ex-master.zip +unzip application-templates-master.zip +cp origin-master/examples/db-templates/* ${EXAMPLES_BASE}/db-templates/ +cp origin-master/examples/image-streams/* ${EXAMPLES_BASE}/image-streams/ +cp django-ex-master/openshift/templates/* ${EXAMPLES_BASE}/quickstart-templates/ +cp rails-ex-master/openshift/templates/* ${EXAMPLES_BASE}/quickstart-templates/ +cp nodejs-ex-master/openshift/templates/* ${EXAMPLES_BASE}/quickstart-templates/ +cp dancer-ex-master/openshift/templates/* ${EXAMPLES_BASE}/quickstart-templates/ +cp cakephp-ex-master/openshift/templates/* ${EXAMPLES_BASE}/quickstart-templates/ +mv application-templates-master/jboss-image-streams.json ${EXAMPLES_BASE}/xpaas-streams/ +find application-templates-master/ -name '*.json' ! -wholename '*secret*' -exec mv {} ${EXAMPLES_BASE}/xpaas-templates/ \; +popd +git diff files/examples diff --git a/roles/openshift_examples/files/examples/db-templates/mongodb-ephemeral-template.json b/roles/openshift_examples/files/examples/db-templates/mongodb-ephemeral-template.json new file mode 100644 index 000000000..6252da2ec --- /dev/null +++ b/roles/openshift_examples/files/examples/db-templates/mongodb-ephemeral-template.json @@ -0,0 +1,179 @@ +{ +  "kind": "Template", +  "apiVersion": "v1beta3", +  "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": "v1beta3", +      "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": "v1beta3", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "strategy": { +          "type": "Recreate", +          "resources": {} +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "mongodb" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "mongodb:latest", +                "namespace": "openshift" +              }, +              "lastTriggeredImage": "" +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "creationTimestamp": null, +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "mongodb", +                "image": "mongodb", +                "ports": [ +                  { +                    "containerPort": 27017, +                    "protocol": "TCP" +                  } +                ], +                "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": {}, +                "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": "DATABASE_SERVICE_NAME", +      "description": "Database service name", +      "value": "mongodb" +    }, +    { +      "name": "MONGODB_USER", +      "description": "Username for MongoDB user that will be used for accessing the database", +      "generate": "expression", +      "from": "user[A-Z0-9]{3}" +    }, +    { +      "name": "MONGODB_PASSWORD", +      "description": "Password for the MongoDB user", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}" +    }, +    { +      "name": "MONGODB_DATABASE", +      "description": "Database name", +      "value": "sampledb" +    }, +    { +      "name": "MONGODB_ADMIN_PASSWORD", +      "description": "Password for the database admin user", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}" +    } +  ], +  "labels": { +    "template": "mongodb-ephemeral-template" +  } +} diff --git a/roles/openshift_examples/files/examples/db-templates/mongodb-persistent-template.json b/roles/openshift_examples/files/examples/db-templates/mongodb-persistent-template.json new file mode 100644 index 000000000..ff19a4834 --- /dev/null +++ b/roles/openshift_examples/files/examples/db-templates/mongodb-persistent-template.json @@ -0,0 +1,201 @@ +{ +  "kind": "Template", +  "apiVersion": "v1beta3", +  "metadata": { +    "name": "mongodb-persistent", +    "creationTimestamp": null, +    "annotations": { +      "description": "MongoDB database service, with persistent storage. Scaling to more than one replica is not supported", +      "iconClass": "icon-mongodb", +      "tags": "database,mongodb" +    } +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1beta3", +      "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": "v1beta3", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}" +      }, +      "spec": { +        "accessModes": [ +          "ReadWriteMany" +        ], +        "resources": { +          "requests": { +            "storage": "${VOLUME_CAPACITY}" +          } +        } +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "strategy": { +          "type": "Recreate", +          "resources": {} +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "mongodb" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "mongodb:latest", +                "namespace": "openshift" +              }, +              "lastTriggeredImage": "" +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "creationTimestamp": null, +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "mongodb", +                "image": "mongodb", +                "ports": [ +                  { +                    "containerPort": 27017, +                    "protocol": "TCP" +                  } +                ], +                "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": {}, +                "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": "mongodb" +                } +              } +            ], +            "restartPolicy": "Always", +            "dnsPolicy": "ClusterFirst" +          } +        } +      }, +      "status": {} +    } +  ], +  "parameters": [ +    { +      "name": "DATABASE_SERVICE_NAME", +      "description": "Database service name", +      "value": "mongodb" +    }, +    { +      "name": "MONGODB_USER", +      "description": "Username for MongoDB user that will be used for accessing the database", +      "generate": "expression", +      "from": "user[A-Z0-9]{3}" +    }, +    { +      "name": "MONGODB_PASSWORD", +      "description": "Password for the MongoDB user", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}" +    }, +    { +      "name": "MONGODB_DATABASE", +      "description": "Database name", +      "value": "sampledb" +    }, +    { +      "name": "MONGODB_ADMIN_PASSWORD", +      "description": "Password for the database admin user", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}" +    }, +    { +      "name": "VOLUME_CAPACITY", +      "description": "Volume space available for data, e.g. 512Mi, 2Gi", +      "value": "512Mi" +    } +  ], +  "labels": { +    "template": "mongodb-persistent-template" +  } +} diff --git a/roles/openshift_examples/files/examples/db-templates/mysql-ephemeral-template.json b/roles/openshift_examples/files/examples/db-templates/mysql-ephemeral-template.json new file mode 100644 index 000000000..697a4ad68 --- /dev/null +++ b/roles/openshift_examples/files/examples/db-templates/mysql-ephemeral-template.json @@ -0,0 +1,169 @@ +{ +  "kind": "Template", +  "apiVersion": "v1beta3", +  "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": "v1beta3", +      "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": "v1beta3", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "strategy": { +          "type": "Recreate", +          "resources": {} +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "mysql" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "mysql:latest", +                "namespace": "openshift" +              }, +              "lastTriggeredImage": "" +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "creationTimestamp": null, +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "mysql", +                "image": "mysql", +                "ports": [ +                  { +                    "containerPort": 3306, +                    "protocol": "TCP" +                  } +                ], +                "env": [ +                  { +                    "name": "MYSQL_USER", +                    "value": "${MYSQL_USER}" +                  }, +                  { +                    "name": "MYSQL_PASSWORD", +                    "value": "${MYSQL_PASSWORD}" +                  }, +                  { +                    "name": "MYSQL_DATABASE", +                    "value": "${MYSQL_DATABASE}" +                  } +                ], +                "resources": {}, +                "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": "DATABASE_SERVICE_NAME", +      "description": "Database service name", +      "value": "mysql" +    }, +    { +      "name": "MYSQL_USER", +      "description": "Username for MySQL user that will be used for accessing the database", +      "generate": "expression", +      "from": "user[A-Z0-9]{3}" +    }, +    { +      "name": "MYSQL_PASSWORD", +      "description": "Password for the MySQL user", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}" +    }, +    { +      "name": "MYSQL_DATABASE", +      "description": "Database name", +      "value": "sampledb" +    } +  ], +  "labels": { +    "template": "mysql-ephemeral-template" +  } +} diff --git a/roles/openshift_examples/files/examples/db-templates/mysql-persistent-template.json b/roles/openshift_examples/files/examples/db-templates/mysql-persistent-template.json new file mode 100644 index 000000000..90225e9c3 --- /dev/null +++ b/roles/openshift_examples/files/examples/db-templates/mysql-persistent-template.json @@ -0,0 +1,191 @@ +{ +  "kind": "Template", +  "apiVersion": "v1beta3", +  "metadata": { +    "name": "mysql-persistent", +    "creationTimestamp": null, +    "annotations": { +      "description": "MySQL database service, with persistent storage. Scaling to more than one replica is not supported", +      "iconClass": "icon-mysql-database", +      "tags": "database,mysql" +    } +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "ports": [ +          { +            "name": "mysql", +            "protocol": "TCP", +            "port": 3306, +            "targetPort": 3306, +            "nodePort": 0 +          } +        ], +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "portalIP": "", +        "type": "ClusterIP", +        "sessionAffinity": "None" +      }, +      "status": { +        "loadBalancer": {} +      } +    }, +    { +      "kind": "PersistentVolumeClaim", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}" +      }, +      "spec": { +        "accessModes": [ +          "ReadWriteMany" +        ], +        "resources": { +          "requests": { +            "storage": "${VOLUME_CAPACITY}" +          } +        } +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "strategy": { +          "type": "Recreate", +          "resources": {} +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "mysql" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "mysql:latest", +                "namespace": "openshift" +              }, +              "lastTriggeredImage": "" +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "creationTimestamp": null, +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "mysql", +                "image": "mysql", +                "ports": [ +                  { +                    "containerPort": 3306, +                    "protocol": "TCP" +                  } +                ], +                "env": [ +                  { +                    "name": "MYSQL_USER", +                    "value": "${MYSQL_USER}" +                  }, +                  { +                    "name": "MYSQL_PASSWORD", +                    "value": "${MYSQL_PASSWORD}" +                  }, +                  { +                    "name": "MYSQL_DATABASE", +                    "value": "${MYSQL_DATABASE}" +                  } +                ], +                "resources": {}, +                "volumeMounts": [ +                  { +                    "name": "${DATABASE_SERVICE_NAME}-data", +                    "mountPath": "/var/lib/mysql/data" +                  } +                ], +                "terminationMessagePath": "/dev/termination-log", +                "imagePullPolicy": "IfNotPresent", +                "capabilities": {}, +                "securityContext": { +                  "capabilities": {}, +                  "privileged": false +                } +              } +            ], +            "volumes": [ +              { +                "name": "${DATABASE_SERVICE_NAME}-data", +                "persistentVolumeClaim": { +                  "claimName": "mysql" +                } +              } +            ], +            "restartPolicy": "Always", +            "dnsPolicy": "ClusterFirst" +          } +        } +      }, +      "status": {} +    } +  ], +  "parameters": [ +    { +      "name": "DATABASE_SERVICE_NAME", +      "description": "Database service name", +      "value": "mysql" +    }, +    { +      "name": "MYSQL_USER", +      "description": "Username for MySQL user that will be used for accessing the database", +      "generate": "expression", +      "from": "user[A-Z0-9]{3}" +    }, +    { +      "name": "MYSQL_PASSWORD", +      "description": "Password for the MySQL user", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}" +    }, +    { +      "name": "MYSQL_DATABASE", +      "description": "Database name", +      "value": "sampledb" +    }, +    { +      "name": "VOLUME_CAPACITY", +      "description": "Volume space available for data, e.g. 512Mi, 2Gi", +      "value": "512Mi" +    } +  ], +  "labels": { +    "template": "mysql-persistent-template" +  } +} diff --git a/roles/openshift_examples/files/examples/db-templates/postgresql-ephemeral-template.json b/roles/openshift_examples/files/examples/db-templates/postgresql-ephemeral-template.json new file mode 100644 index 000000000..6922baa12 --- /dev/null +++ b/roles/openshift_examples/files/examples/db-templates/postgresql-ephemeral-template.json @@ -0,0 +1,169 @@ +{ +  "kind": "Template", +  "apiVersion": "v1beta3", +  "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": "v1beta3", +      "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": "v1beta3", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "strategy": { +          "type": "Recreate", +          "resources": {} +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "postgresql" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "postgresql:latest", +                "namespace": "openshift" +              }, +              "lastTriggeredImage": "" +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "creationTimestamp": null, +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "postgresql", +                "image": "postgresql", +                "ports": [ +                  { +                    "containerPort": 5432, +                    "protocol": "TCP" +                  } +                ], +                "env": [ +                  { +                    "name": "POSTGRESQL_USER", +                    "value": "${POSTGRESQL_USER}" +                  }, +                  { +                    "name": "POSTGRESQL_PASSWORD", +                    "value": "${POSTGRESQL_PASSWORD}" +                  }, +                  { +                    "name": "POSTGRESQL_DATABASE", +                    "value": "${POSTGRESQL_DATABASE}" +                  } +                ], +                "resources": {}, +                "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": "DATABASE_SERVICE_NAME", +      "description": "Database service name", +      "value": "mysql" +    }, +    { +      "name": "POSTGRESQL_USER", +      "description": "Username for PostgreSQL user that will be used for accessing the database", +      "generate": "expression", +      "from": "user[A-Z0-9]{3}" +    }, +    { +      "name": "POSTGRESQL_PASSWORD", +      "description": "Password for the PostgreSQL user", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}" +    }, +    { +      "name": "POSTGRESQL_DATABASE", +      "description": "Database name", +      "value": "sampledb" +    } +  ], +  "labels": { +    "template": "postgresql-ephemeral-template" +  } +} diff --git a/roles/openshift_examples/files/examples/db-templates/postgresql-persistent-template.json b/roles/openshift_examples/files/examples/db-templates/postgresql-persistent-template.json new file mode 100644 index 000000000..43162d8bb --- /dev/null +++ b/roles/openshift_examples/files/examples/db-templates/postgresql-persistent-template.json @@ -0,0 +1,191 @@ +{ +  "kind": "Template", +  "apiVersion": "v1beta3", +  "metadata": { +    "name": "postgresql-persistent", +    "creationTimestamp": null, +    "annotations": { +      "description": "PostgreSQL database service, with persistent storage. Scaling to more than one replica is not supported", +      "iconClass": "icon-postgresql", +      "tags": "database,postgresql" +    } +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1beta3", +      "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": "v1beta3", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}" +      }, +      "spec": { +        "accessModes": [ +          "ReadWriteMany" +        ], +        "resources": { +          "requests": { +            "storage": "${VOLUME_CAPACITY}" +          } +        } +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "${DATABASE_SERVICE_NAME}", +        "creationTimestamp": null +      }, +      "spec": { +        "strategy": { +          "type": "Recreate", +          "resources": {} +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "postgresql" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "postgresql:latest", +                "namespace": "openshift" +              }, +              "lastTriggeredImage": "" +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "creationTimestamp": null, +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "postgresql", +                "image": "postgresql", +                "ports": [ +                  { +                    "containerPort": 5432, +                    "protocol": "TCP" +                  } +                ], +                "env": [ +                  { +                    "name": "POSTGRESQL_USER", +                    "value": "${POSTGRESQL_USER}" +                  }, +                  { +                    "name": "POSTGRESQL_PASSWORD", +                    "value": "${POSTGRESQL_PASSWORD}" +                  }, +                  { +                    "name": "POSTGRESQL_DATABASE", +                    "value": "${POSTGRESQL_DATABASE}" +                  } +                ], +                "resources": {}, +                "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": "postgresql" +                } +              } +            ], +            "restartPolicy": "Always", +            "dnsPolicy": "ClusterFirst" +          } +        } +      }, +      "status": {} +    } +  ], +  "parameters": [ +    { +      "name": "DATABASE_SERVICE_NAME", +      "description": "Database service name", +      "value": "mysql" +    }, +    { +      "name": "POSTGRESQL_USER", +      "description": "Username for PostgreSQL user that will be used for accessing the database", +      "generate": "expression", +      "from": "user[A-Z0-9]{3}" +    }, +    { +      "name": "POSTGRESQL_PASSWORD", +      "description": "Password for the PostgreSQL user", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}" +    }, +    { +      "name": "POSTGRESQL_DATABASE", +      "description": "Database name", +      "value": "sampledb" +    }, +    { +      "name": "VOLUME_CAPACITY", +      "description": "Volume space available for data, e.g. 512Mi, 2Gi", +      "value": "512Mi" +    } +  ], +  "labels": { +    "template": "postgresql-persistent-template" +  } +} diff --git a/roles/openshift_examples/files/examples/image-streams/image-streams-centos7.json b/roles/openshift_examples/files/examples/image-streams/image-streams-centos7.json new file mode 100644 index 000000000..712a43a11 --- /dev/null +++ b/roles/openshift_examples/files/examples/image-streams/image-streams-centos7.json @@ -0,0 +1,256 @@ +{ +  "kind": "ImageStreamList", +  "apiVersion": "v1beta3", +  "metadata": {}, +  "items": [ +    { +      "kind": "ImageStream", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "ruby", +        "creationTimestamp": null +      }, +      "spec": { +        "dockerImageRepository": "openshift/ruby-20-centos7", +        "tags": [ +          { +            "name": "latest" +          }, +          { +            "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" +            }, +            "from": { +              "Kind": "ImageStreamTag", +              "Name": "latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "nodejs", +        "creationTimestamp": null +      }, +      "spec": { +        "dockerImageRepository": "openshift/nodejs-010-centos7", +        "tags": [ +          { +            "name": "latest" +          }, +          { +            "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" +            }, +            "from": { +              "Kind": "ImageStreamTag", +              "Name": "latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "perl", +        "creationTimestamp": null +      }, +      "spec": { +        "dockerImageRepository": "openshift/perl-516-centos7", +        "tags": [ +          { +            "name": "latest" +          }, +          { +            "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" +            }, +            "from": { +              "Kind": "ImageStreamTag", +              "Name": "latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "php", +        "creationTimestamp": null +      }, +      "spec": { +        "dockerImageRepository": "openshift/php-55-centos7", +        "tags": [ +          { +            "name": "latest" +          }, +          { +            "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" +            }, +            "from": { +              "Kind": "ImageStreamTag", +              "Name": "latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "python", +        "creationTimestamp": null +      }, +      "spec": { +        "dockerImageRepository": "openshift/python-33-centos7", +        "tags": [ +          { +            "name": "latest" +          }, +          { +            "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" +            }, +            "from": { +              "Kind": "ImageStreamTag", +              "Name": "latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "wildfly", +        "creationTimestamp": null +      }, +      "spec": { +        "dockerImageRepository": "openshift/wildfly-8-centos", +        "tags": [ +          { +            "name": "latest" +          }, +          { +            "name": "8", +            "annotations": { +              "description": "Build and run Java applications on Wildfly 8", +              "iconClass": "icon-wildfly", +              "tags": "builder,wildfly,java", +              "supports":"wildfly:8,jee,java", +              "version": "8" +            }, +            "from": { +              "Kind": "ImageStreamTag", +              "Name": "latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "mysql", +        "creationTimestamp": null +      }, +      "spec": { +        "dockerImageRepository": "openshift/mysql-55-centos7", +        "tags": [ +          { +            "name": "latest" +          }, +          { +            "name": "5.5", +            "from": { +              "Kind": "ImageStreamTag", +              "Name": "latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "postgresql", +        "creationTimestamp": null +      }, +      "spec": { +        "dockerImageRepository": "openshift/postgresql-92-centos7", +        "tags": [ +          { +            "name": "latest" +          }, +          { +            "name": "9.2", +            "from": { +              "Kind": "ImageStreamTag", +              "Name": "latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "mongodb", +        "creationTimestamp": null +      }, +      "spec": { +        "dockerImageRepository": "openshift/mongodb-24-centos7", +        "tags": [ +          { +            "name": "latest" +          }, +          { +            "name": "2.4", +            "from": { +              "Kind": "ImageStreamTag", +              "Name": "latest" +            } +          } +        ] +      } +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/image-streams/image-streams-rhel7.json b/roles/openshift_examples/files/examples/image-streams/image-streams-rhel7.json new file mode 100644 index 000000000..a5d2e9d9f --- /dev/null +++ b/roles/openshift_examples/files/examples/image-streams/image-streams-rhel7.json @@ -0,0 +1,226 @@ +{ +  "kind": "ImageStreamList", +  "apiVersion": "v1beta3", +  "metadata": {}, +  "items": [ +    { +      "kind": "ImageStream", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "ruby", +        "creationTimestamp": null +      }, +      "spec": { +        "dockerImageRepository": "registry.access.redhat.com/openshift3/ruby-20-rhel7", +        "tags": [ +          { +            "name": "latest" +          }, +          { +            "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" +            }, +            "from": { +              "Kind": "ImageStreamTag", +              "Name": "latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "nodejs", +        "creationTimestamp": null +      }, +      "spec": { +        "dockerImageRepository": "registry.access.redhat.com/openshift3/nodejs-010-rhel7", +        "tags": [ +          { +            "name": "latest" +          }, +          { +            "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" +            }, +            "from": { +              "Kind": "ImageStreamTag", +              "Name": "latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "perl", +        "creationTimestamp": null +      }, +      "spec": { +        "dockerImageRepository": "registry.access.redhat.com/openshift3/perl-516-rhel7", +        "tags": [ +          { +            "name": "latest" +          }, +          { +            "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" +            }, +            "from": { +              "Kind": "ImageStreamTag", +              "Name": "latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "php", +        "creationTimestamp": null +      }, +      "spec": { +        "dockerImageRepository": "registry.access.redhat.com/openshift3/php-55-rhel7", +        "tags": [ +          { +            "name": "latest" +          }, +          { +            "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" +            }, +            "from": { +              "Kind": "ImageStreamTag", +              "Name": "latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "python", +        "creationTimestamp": null +      }, +      "spec": { +        "dockerImageRepository": "registry.access.redhat.com/openshift3/python-33-rhel7", +        "tags": [ +          { +            "name": "latest" +          }, +          { +            "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" +            }, +            "from": { +              "Kind": "ImageStreamTag", +              "Name": "latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "mysql", +        "creationTimestamp": null +      }, +      "spec": { +        "dockerImageRepository": "registry.access.redhat.com/openshift3/mysql-55-rhel7", +        "tags": [ +          { +            "name": "latest" +          }, +          { +            "name": "5.5", +            "from": { +              "Kind": "ImageStreamTag", +              "Name": "latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "postgresql", +        "creationTimestamp": null +      }, +      "spec": { +        "dockerImageRepository": "registry.access.redhat.com/openshift3/postgresql-92-rhel7", +        "tags": [ +          { +            "name": "latest" +          }, +          { +            "name": "9.2", +            "from": { +              "Kind": "ImageStreamTag", +              "Name": "latest" +            } +          } +        ] +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1beta3", +      "metadata": { +        "name": "mongodb", +        "creationTimestamp": null +      }, +      "spec": { +        "dockerImageRepository": "registry.access.redhat.com/openshift3/mongodb-24-rhel7", +        "tags": [ +          { +            "name": "latest" +          }, +          { +            "name": "2.4", +            "from": { +              "Kind": "ImageStreamTag", +              "Name": "latest" +            } +          } +        ] +      } +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/quickstart-templates/cakephp-mysql.json b/roles/openshift_examples/files/examples/quickstart-templates/cakephp-mysql.json new file mode 100644 index 000000000..e5699bce7 --- /dev/null +++ b/roles/openshift_examples/files/examples/quickstart-templates/cakephp-mysql.json @@ -0,0 +1,364 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "cakephp-mysql-example", +    "annotations": { +      "description": "An example CakePHP application with a MySQL database", +      "tags": "instant-app,php,cakephp,mysql", +      "iconClass": "icon-php" +    } +  }, +  "labels": { +    "template": "cakephp-mysql-example" +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "cakephp-frontend", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "cakephp-frontend" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "cakephp-route" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "cakephp-frontend" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "cakephp-example", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "cakephp-example", +        "annotations": { +          "description": "Defines how to build the application" +        } +      }, +      "spec": { +        "source": { +          "type": "Git", +          "git": { +            "uri": "${SOURCE_REPOSITORY_URL}", +            "ref": "${SOURCE_REPOSITORY_REF}" +          }, +          "contextDir": "${CONTEXT_DIR}" +        }, +        "strategy": { +          "type": "Source", +          "sourceStrategy": { +            "from": { +              "kind": "ImageStreamTag", +              "namespace": "openshift", +              "name": "php:5.5" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "cakephp-example:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ] +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "cakephp-frontend", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Rolling", +          "recreateParams": { +          "pre": { +              "failurePolicy": "Abort", +              "execNewPod": { +                "command": [ +                  "./migrate-database.sh" +                ], +                "containerName": "cakephp-example" +              } +            } +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "cakephp-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "cakephp-example:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "cakephp-frontend" +        }, +        "template": { +          "metadata": { +            "name": "cakephp-frontend", +            "labels": { +              "name": "cakephp-frontend" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "cakephp-example", +                "image": "cakephp-example", +                "ports": [ +                  { +                    "containerPort": 8080 +                  } +                ], +                "env": [ +                  { +                    "name": "DATABASE_SERVICE_NAME", +                    "value": "${DATABASE_SERVICE_NAME}" +                  }, +                  { +                    "name": "DATABASE_ENGINE", +                    "value": "${DATABASE_ENGINE}" +                  }, +                  { +                    "name": "DATABASE_NAME", +                    "value": "${DATABASE_NAME}" +                  }, +                  { +                    "name": "DATABASE_USER", +                    "value": "${DATABASE_USER}" +                  }, +                  { +                    "name": "DATABASE_PASSWORD", +                    "value": "${DATABASE_PASSWORD}" +                  }, +                  { +                    "name": "CAKEPHP_SECRET_TOKEN", +                    "value": "${CAKEPHP_SECRET_TOKEN}" +                  }, +                  { +                    "name": "CAKEPHP_SECURITY_SALT", +                    "value": "${CAKEPHP_SECURITY_SALT}" +                  }, +                  { +                    "name": "CAKEPHP_SECURITY_CIPHER_SEED", +                    "value": "${CAKEPHP_SECURITY_CIPHER_SEED}" +                  } +                ] +              } +            ] +          } +        } +      } +    }, +    { +      "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": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "name": "${DATABASE_SERVICE_NAME}", +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "mysql", +                "image": "openshift/mysql-55-centos7", +                "ports": [ +                  { +                    "containerPort": 3306 +                  } +                ], +                "env": [ +                  { +                    "name": "MYSQL_USER", +                    "value": "${DATABASE_USER}" +                  }, +                  { +                    "name": "MYSQL_PASSWORD", +                    "value": "${DATABASE_PASSWORD}" +                  }, +                  { +                    "name": "MYSQL_DATABASE", +                    "value": "${DATABASE_NAME}" +                  } +                ] +              } +            ] +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "SOURCE_REPOSITORY_URL", +      "description": "The URL of the repository with your application source code", +      "value": "https://github.com/openshift/cakephp-ex.git" +    }, +    { +      "name": "SOURCE_REPOSITORY_REF", +      "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", +      "description": "Set this to the relative path to your project if it is not in the root of your repository" +    }, +    { +      "name": "APPLICATION_DOMAIN", +      "description": "The exposed hostname that will route to the CakePHP service", +      "value": "cakephp-example.openshiftapps.com" +    }, +    { +      "name": "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", +      "description": "Database service name", +      "value": "mysql" +    }, +    { +      "name": "DATABASE_ENGINE", +      "description": "Database engine: postgresql, mysql or sqlite (default)", +      "value": "mysql" +    }, +    { +      "name": "DATABASE_NAME", +      "description": "Database name", +      "value": "default" +    }, +    { +      "name": "DATABASE_USER", +      "description": "Database user name", +      "value": "cakephp" +    }, +    { +      "name": "DATABASE_PASSWORD", +      "description": "Database user password", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}" +    }, +    { +      "name": "CAKEPHP_SECRET_TOKEN", +      "description": "Set this to a long random string", +      "generate": "expression", +      "from": "[\\w]{50}" +    }, +    { +      "name": "CAKEPHP_SECURITY_SALT", +      "description": "Security salt for session hash", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{40}" +    }, +    { +      "name": "CAKEPHP_SECURITY_CIPHER_SEED", +      "description": "Security cipher seed for session hash", +      "generate": "expression", +      "from": "[0-9]{30}" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/quickstart-templates/cakephp.json b/roles/openshift_examples/files/examples/quickstart-templates/cakephp.json new file mode 100644 index 000000000..09521add4 --- /dev/null +++ b/roles/openshift_examples/files/examples/quickstart-templates/cakephp.json @@ -0,0 +1,266 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "cakephp-example", +    "annotations": { +      "description": "An example CakePHP application with no database", +      "tags": "instant-app,php,cakephp", +      "iconClass": "icon-php" +    } +  }, +  "labels": { +    "template": "cakephp-example" +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "cakephp-frontend", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "cakephp-frontend"  +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "cakephp-route" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "cakephp-frontend" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "cakephp-example", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "cakephp-example", +        "annotations": { +          "description": "Defines how to build the application" +        } +      }, +      "spec": { +        "source": { +          "type": "Git", +          "git": { +            "uri": "${SOURCE_REPOSITORY_URL}", +            "ref": "${SOURCE_REPOSITORY_REF}" +          }, +          "contextDir": "${CONTEXT_DIR}" +        }, +        "strategy": { +          "type": "Source", +          "sourceStrategy": { +            "from": { +              "kind": "ImageStreamTag", +              "namespace": "openshift", +              "name": "php:5.5" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "cakephp-example:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ] +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "cakephp-frontend", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Rolling" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "cakephp-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "cakephp-example:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "cakephp-frontend" +        }, +        "template": { +          "metadata": { +            "name": "cakephp-frontend", +            "labels": { +              "name": "cakephp-frontend" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "cakephp-example", +                "image": "cakephp-example", +                "ports": [ +                  { +                    "containerPort": 8080 +                  } +                ], +                "env": [ +                  { +                    "name": "DATABASE_SERVICE_NAME", +                    "value": "${DATABASE_SERVICE_NAME}" +                  }, +                  { +                    "name": "DATABASE_ENGINE", +                    "value": "${DATABASE_ENGINE}" +                  }, +                  { +                    "name": "DATABASE_NAME", +                    "value": "${DATABASE_NAME}" +                  }, +                  { +                    "name": "DATABASE_USER", +                    "value": "${DATABASE_USER}" +                  }, +                  { +                    "name": "DATABASE_PASSWORD", +                    "value": "${DATABASE_PASSWORD}" +                  }, +                  { +                    "name": "CAKEPHP_SECRET_TOKEN", +                    "value": "${CAKEPHP_SECRET_TOKEN}" +                  }, +                  { +                    "name": "CAKEPHP_SECURITY_SALT", +                    "value": "${CAKEPHP_SECURITY_SALT}" +                  }, +                  { +                    "name": "CAKEPHP_SECURITY_CIPHER_SEED", +                    "value": "${CAKEPHP_SECURITY_CIPHER_SEED}" +                  } +                ] +              } +            ] +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "SOURCE_REPOSITORY_URL", +      "description": "The URL of the repository with your application source code", +      "value": "https://github.com/openshift/cakephp-ex.git" +    }, +    { +      "name": "SOURCE_REPOSITORY_REF", +      "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", +      "description": "Set this to the relative path to your project if it is not in the root of your repository" +    }, +    { +      "name": "APPLICATION_DOMAIN", +      "description": "The exposed hostname that will route to the CakePHP service", +      "value": "cakephp-example.openshiftapps.com" +    }, +    { +      "name": "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", +      "description": "Database service name" +    }, +    { +      "name": "DATABASE_ENGINE", +      "description": "Database engine: postgresql, mysql or sqlite (default)" +    }, +    { +      "name": "DATABASE_NAME", +      "description": "Database name" +    }, +    { +      "name": "DATABASE_USER", +      "description": "Database user name" +    }, +    { +      "name": "DATABASE_PASSWORD", +      "description": "Database user password" +    }, +    { +      "name": "CAKEPHP_SECRET_TOKEN", +      "description": "Set this to a long random string", +      "generate": "expression", +      "from": "[\\w]{50}" +    }, +    { +      "name": "CAKEPHP_SECURITY_SALT", +      "description": "Security salt for session hash", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{40}" +    }, +    { +      "name": "CAKEPHP_SECURITY_CIPHER_SEED", +      "description": "Security cipher seed for session hash", +      "generate": "expression", +      "from": "[0-9]{30}" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/quickstart-templates/dancer-mysql.json b/roles/openshift_examples/files/examples/quickstart-templates/dancer-mysql.json new file mode 100644 index 000000000..fc92a1d6c --- /dev/null +++ b/roles/openshift_examples/files/examples/quickstart-templates/dancer-mysql.json @@ -0,0 +1,334 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "dancer-mysql-example", +    "annotations": { +      "description": "An example Dancer application with a MySQL database", +      "tags": "instant-app,perl,dancer,mysql", +      "iconClass": "icon-perl" +    } +  }, +  "labels": { +    "template": "dancer-mysql-example" +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "dancer-frontend", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "dancer-frontend" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "dancer-route" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "dancer-frontend" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "dancer-example", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "dancer-example", +        "annotations": { +          "description": "Defines how to build the application" +        } +      }, +      "spec": { +        "source": { +          "type": "Git", +          "git": { +            "uri": "${SOURCE_REPOSITORY_URL}", +            "ref": "${SOURCE_REPOSITORY_REF}" +          }, +          "contextDir": "${CONTEXT_DIR}" +        }, +        "strategy": { +          "type": "Source", +          "sourceStrategy": { +            "from": { +              "kind": "ImageStreamTag", +              "namespace": "openshift", +              "name": "perl:5.16" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "dancer-example:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ] +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "dancer-frontend", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "dancer-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "dancer-example:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "dancer-frontend" +        }, +        "template": { +          "metadata": { +            "name": "dancer-frontend", +            "labels": { +              "name": "dancer-frontend" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "dancer-example", +                "image": "dancer-example", +                "ports": [ +                  { +                    "containerPort": 8080 +                  } +                ], +                "env": [ +                  { +                    "name": "DATABASE_SERVICE_NAME", +                    "value": "${DATABASE_SERVICE_NAME}" +                  }, +                  { +                    "name": "MYSQL_USER", +                    "value": "${MYSQL_USER}" +                  }, +                  { +                    "name": "MYSQL_PASSWORD", +                    "value": "${MYSQL_PASSWORD}" +                  }, +                  { +                    "name": "MYSQL_DATABASE", +                    "value": "${MYSQL_DATABASE}" +                  }, +                  { +                    "name": "SECRET_KEY_BASE", +                    "value": "${SECRET_KEY_BASE}" +                  } +                ] +              } +            ] +          } +        } +      } +    }, +    { +      "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": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "name": "${DATABASE_SERVICE_NAME}", +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "mysql", +                "image": "openshift/mysql-55-centos7", +                "ports": [ +                  { +                    "containerPort": 3306 +                  } +                ], +                "env": [ +                  { +                    "name": "MYSQL_USER", +                    "value": "${MYSQL_USER}" +                  }, +                  { +                    "name": "MYSQL_PASSWORD", +                    "value": "${MYSQL_PASSWORD}" +                  }, +                  { +                    "name": "MYSQL_DATABASE", +                    "value": "${MYSQL_DATABASE}" +                  } +                ] +              } +            ] +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "SOURCE_REPOSITORY_URL", +      "description": "The URL of the repository with your application source code", +      "value": "https://github.com/openshift/dancer-ex.git" +    }, +    { +      "name": "SOURCE_REPOSITORY_REF", +      "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", +      "description": "Set this to the relative path to your project if it is not in the root of your repository" +    }, +    { +      "name": "APPLICATION_DOMAIN", +      "description": "The exposed hostname that will route to the Dancer service", +      "value": "dancer-example.openshiftapps.com" +    }, +    { +      "name": "GITHUB_WEBHOOK_SECRET", +      "description": "A secret string used to configure the GitHub webhook", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{40}" +    }, +    { +      "name": "ADMIN_USERNAME", +      "description": "administrator username", +      "generate": "expression", +      "from": "admin[A-Z0-9]{3}" +    }, +    { +      "name": "ADMIN_PASSWORD", +      "description": "administrator password", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{8}" +    }, +    { +      "name": "DATABASE_SERVICE_NAME", +      "description": "Database service name", +      "value": "database" +    }, +    { +      "name": "MYSQL_USER", +      "description": "database username", +      "generate": "expression", +      "from": "user[A-Z0-9]{3}" +    }, +    { +      "name": "MYSQL_PASSWORD", +      "description": "database password", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{8}" +    }, +    { +      "name": "MYSQL_DATABASE", +      "description": "database name", +      "value": "sampledb" +    }, +    { +      "name": "SECRET_KEY_BASE", +      "description": "Your secret key for verifying the integrity of signed cookies", +      "generate": "expression", +      "from": "[a-z0-9]{127}" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/quickstart-templates/dancer.json b/roles/openshift_examples/files/examples/quickstart-templates/dancer.json new file mode 100644 index 000000000..829f50bae --- /dev/null +++ b/roles/openshift_examples/files/examples/quickstart-templates/dancer.json @@ -0,0 +1,200 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "dancer-example", +    "annotations": { +      "description": "An example Dancer application with no database", +      "tags": "instant-app,perl,dancer", +      "iconClass": "icon-perl" +    } +  }, +  "labels": { +    "template": "dancer-example" +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "dancer-frontend", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "dancer-frontend" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "dancer-route" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "dancer-frontend" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "dancer-example", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "dancer-example", +        "annotations": { +          "description": "Defines how to build the application" +        } +      }, +      "spec": { +        "source": { +          "type": "Git", +          "git": { +            "uri": "${SOURCE_REPOSITORY_URL}", +            "ref": "${SOURCE_REPOSITORY_REF}" +          }, +          "contextDir": "${CONTEXT_DIR}" +        }, +        "strategy": { +          "type": "Source", +          "sourceStrategy": { +            "from": { +              "kind": "ImageStreamTag", +              "namespace": "openshift", +              "name": "perl:5.16" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "dancer-example:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ] +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "dancer-frontend", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Rolling" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "dancer-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "dancer-example:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "dancer-frontend" +        }, +        "template": { +          "metadata": { +            "name": "dancer-frontend", +            "labels": { +              "name": "dancer-frontend" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "dancer-example", +                "image": "dancer-example", +                "ports": [ +                  { +                    "containerPort": 8080 +                  } +                ] +              } +            ] +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "SOURCE_REPOSITORY_URL", +      "description": "The URL of the repository with your application source code", +      "value": "https://github.com/openshift/dancer-ex.git" +    }, +    { +      "name": "SOURCE_REPOSITORY_REF", +      "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", +      "description": "Set this to the relative path to your project if it is not in the root of your repository" +    }, +    { +      "name": "APPLICATION_DOMAIN", +      "description": "The exposed hostname that will route to the Dancer service", +      "value": "dancer-example.openshiftapps.com" +    }, +    { +      "name": "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", +      "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/quickstart-templates/django-postgresql.json b/roles/openshift_examples/files/examples/quickstart-templates/django-postgresql.json new file mode 100644 index 000000000..c46476e8a --- /dev/null +++ b/roles/openshift_examples/files/examples/quickstart-templates/django-postgresql.json @@ -0,0 +1,341 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "django-postgresql-example", +    "annotations": { +      "description": "An example Django application with a PostgreSQL database", +      "tags": "instant-app,python,django,postgresql", +      "iconClass": "icon-python" +    } +  }, +  "labels": { +    "template": "django-postgresql-example" +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "django-frontend", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "django-frontend" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "django-route" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "django-frontend" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "django-example", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "django-example", +        "annotations": { +          "description": "Defines how to build the application" +        } +      }, +      "spec": { +        "source": { +          "type": "Git", +          "git": { +            "uri": "${SOURCE_REPOSITORY_URL}", +            "ref": "${SOURCE_REPOSITORY_REF}" +          }, +          "contextDir": "${CONTEXT_DIR}" +        }, +        "strategy": { +          "type": "Source", +          "sourceStrategy": { +            "from": { +              "kind": "ImageStreamTag", +              "namespace": "openshift", +              "name": "python:3.3" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "django-example:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ] +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "django-frontend", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Rolling" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "django-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "django-example:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "django-frontend" +        }, +        "template": { +          "metadata": { +            "name": "django-frontend", +            "labels": { +              "name": "django-frontend" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "django-example", +                "image": "django-example", +                "ports": [ +                  { +                    "containerPort": 8080 +                  } +                ], +                "env": [ +                  { +                    "name": "DATABASE_SERVICE_NAME", +                    "value": "${DATABASE_SERVICE_NAME}" +                  }, +                  { +                    "name": "DATABASE_ENGINE", +                    "value": "${DATABASE_ENGINE}" +                  }, +                  { +                    "name": "DATABASE_NAME", +                    "value": "${DATABASE_NAME}" +                  }, +                  { +                    "name": "DATABASE_USER", +                    "value": "${DATABASE_USER}" +                  }, +                  { +                    "name": "DATABASE_PASSWORD", +                    "value": "${DATABASE_PASSWORD}" +                  }, +                  { +                    "name": "APP_CONFIG", +                    "value": "${APP_CONFIG}" +                  }, +                  { +                    "name": "DJANGO_SECRET_KEY", +                    "value": "${DJANGO_SECRET_KEY}" +                  } +                ] +              } +            ] +          } +        } +      } +    }, +    { +      "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": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "name": "${DATABASE_SERVICE_NAME}", +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "postgresql", +                "image": "openshift/postgresql-92-centos7", +                "ports": [ +                  { +                    "containerPort": 5432 +                  } +                ], +                "env": [ +                  { +                    "name": "POSTGRESQL_USER", +                    "value": "${DATABASE_USER}" +                  }, +                  { +                    "name": "POSTGRESQL_PASSWORD", +                    "value": "${DATABASE_PASSWORD}" +                  }, +                  { +                    "name": "POSTGRESQL_DATABASE", +                    "value": "${DATABASE_NAME}" +                  } +                ] +              } +            ] +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "SOURCE_REPOSITORY_URL", +      "description": "The URL of the repository with your application source code", +      "value": "https://github.com/openshift/django-ex.git" +    }, +    { +      "name": "SOURCE_REPOSITORY_REF", +      "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", +      "description": "Set this to the relative path to your project if it is not in the root of your repository" +    }, +    { +      "name": "APPLICATION_DOMAIN", +      "description": "The exposed hostname that will route to the Django service", +      "value": "django-example.openshiftapps.com" +    }, +    { +      "name": "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", +      "description": "Database service name", +      "value": "postgresql" +    }, +    { +      "name": "DATABASE_ENGINE", +      "description": "Database engine: postgresql, mysql or sqlite (default)", +      "value": "postgresql" +    }, +    { +      "name": "DATABASE_NAME", +      "description": "Database name", +      "value": "default" +    }, +    { +      "name": "DATABASE_USER", +      "description": "Database user name", +      "value": "django" +    }, +    { +      "name": "DATABASE_PASSWORD", +      "description": "Database user password", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}" +    }, +    { +      "name": "APP_CONFIG", +      "description": "Relative path to Gunicorn configuration file (optional)" +    }, +    { +      "name": "DJANGO_SECRET_KEY", +      "description": "Set this to a long random string", +      "generate": "expression", +      "from": "[\\w]{50}" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/quickstart-templates/django.json b/roles/openshift_examples/files/examples/quickstart-templates/django.json new file mode 100644 index 000000000..74bbea163 --- /dev/null +++ b/roles/openshift_examples/files/examples/quickstart-templates/django.json @@ -0,0 +1,254 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "django-example", +    "annotations": { +      "description": "An example Django application with no database", +      "tags": "instant-app,python,django", +      "iconClass": "icon-python" +    } +  }, +  "labels": { +    "template": "django-example" +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "django-frontend", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "django-frontend" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "django-route" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "django-frontend" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "django-example", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "django-example", +        "annotations": { +          "description": "Defines how to build the application" +        } +      }, +      "spec": { +        "source": { +          "type": "Git", +          "git": { +            "uri": "${SOURCE_REPOSITORY_URL}", +            "ref": "${SOURCE_REPOSITORY_REF}" +          }, +          "contextDir": "${CONTEXT_DIR}" +        }, +        "strategy": { +          "type": "Source", +          "sourceStrategy": { +            "from": { +              "kind": "ImageStreamTag", +              "namespace": "openshift", +              "name": "python:3.3" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "django-example:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ] +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "django-frontend", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Rolling" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "django-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "django-example:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "django-frontend" +        }, +        "template": { +          "metadata": { +            "name": "django-frontend", +            "labels": { +              "name": "django-frontend" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "django-example", +                "image": "django-example", +                "ports": [ +                  { +                    "containerPort": 8080 +                  } +                ], +                "env": [ +                  { +                    "name": "DATABASE_SERVICE_NAME", +                    "value": "${DATABASE_SERVICE_NAME}" +                  }, +                  { +                    "name": "DATABASE_ENGINE", +                    "value": "${DATABASE_ENGINE}" +                  }, +                  { +                    "name": "DATABASE_NAME", +                    "value": "${DATABASE_NAME}" +                  }, +                  { +                    "name": "DATABASE_USER", +                    "value": "${DATABASE_USER}" +                  }, +                  { +                    "name": "DATABASE_PASSWORD", +                    "value": "${DATABASE_PASSWORD}" +                  }, +                  { +                    "name": "APP_CONFIG", +                    "value": "${APP_CONFIG}" +                  }, +                  { +                    "name": "DJANGO_SECRET_KEY", +                    "value": "${DJANGO_SECRET_KEY}" +                  } +                ] +              } +            ] +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "SOURCE_REPOSITORY_URL", +      "description": "The URL of the repository with your application source code", +      "value": "https://github.com/openshift/django-ex.git" +    }, +    { +      "name": "SOURCE_REPOSITORY_REF", +      "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", +      "description": "Set this to the relative path to your project if it is not in the root of your repository" +    }, +    { +      "name": "APPLICATION_DOMAIN", +      "description": "The exposed hostname that will route to the Django service", +      "value": "django-example.openshiftapps.com" +    }, +    { +      "name": "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", +      "description": "Database service name" +    }, +    { +      "name": "DATABASE_ENGINE", +      "description": "Database engine: postgresql, mysql or sqlite (default)" +    }, +    { +      "name": "DATABASE_NAME", +      "description": "Database name" +    }, +    { +      "name": "DATABASE_USER", +      "description": "Database user name" +    }, +    { +      "name": "DATABASE_PASSWORD", +      "description": "Database user password" +    }, +    { +      "name": "APP_CONFIG", +      "description": "Relative path to Gunicorn configuration file (optional)" +    }, +    { +      "name": "DJANGO_SECRET_KEY", +      "description": "Set this to a long random string", +      "generate": "expression", +      "from": "[\\w]{50}" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/quickstart-templates/nodejs-mongodb.json b/roles/openshift_examples/files/examples/quickstart-templates/nodejs-mongodb.json new file mode 100644 index 000000000..cd9e5faf0 --- /dev/null +++ b/roles/openshift_examples/files/examples/quickstart-templates/nodejs-mongodb.json @@ -0,0 +1,329 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "nodejs-mongodb-example", +    "annotations": { +      "description": "An example Node.js application with a MongoDB database", +      "tags": "instant-app,nodejs,mongodb", +      "iconClass": "icon-nodejs" +    } +  }, +  "labels": { +    "template": "nodejs-mongodb-example" +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs-frontend", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "nodejs-frontend" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs-route" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "nodejs-frontend" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs-example", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs-example", +        "annotations": { +          "description": "Defines how to build the application" +        } +      }, +      "spec": { +        "source": { +          "type": "Git", +          "git": { +            "uri": "${SOURCE_REPOSITORY_URL}", +            "ref": "${SOURCE_REPOSITORY_REF}" +          }, +          "contextDir": "${CONTEXT_DIR}" +        }, +        "strategy": { +          "type": "Source", +          "sourceStrategy": { +            "from": { +              "kind": "ImageStreamTag", +              "namespace": "openshift", +              "name": "nodejs:0.10" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "nodejs-example:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ] +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs-frontend", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Rolling" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "nodejs-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "nodejs-example:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "nodejs-frontend" +        }, +        "template": { +          "metadata": { +            "name": "nodejs-frontend", +            "labels": { +              "name": "nodejs-frontend" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "nodejs-example", +                "image": "nodejs-example", +                "ports": [ +                  { +                    "containerPort": 8080 +                  } +                ], +                "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}" +                  } +                ] +              } +            ] +          } +        } +      } +    }, +    { +      "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": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "name": "${DATABASE_SERVICE_NAME}", +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "mongodb", +                "image": "openshift/mongodb-24-centos7", +                "ports": [ +                  { +                    "containerPort": 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}" +                  } +                ] +              } +            ] +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "SOURCE_REPOSITORY_URL", +      "description": "The URL of the repository with your application source code", +      "value": "https://github.com/openshift/nodejs-ex.git" +    }, +    { +      "name": "SOURCE_REPOSITORY_REF", +      "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", +      "description": "Set this to the relative path to your project if it is not in the root of your repository" +    }, +    { +      "name": "APPLICATION_DOMAIN", +      "description": "The exposed hostname that will route to the Node.js service", +      "value": "nodejs-example.openshiftapps.com" +    }, +    { +      "name": "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", +      "description": "Database service name", +      "value": "mongodb" +    }, +    { +      "name": "MONGODB_USER", +      "description": "Username for MongoDB user that will be used for accessing the database", +      "generate": "expression", +      "from": "user[A-Z0-9]{3}" +    }, +    { +      "name": "MONGODB_PASSWORD", +      "description": "Password for the MongoDB user", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}" +    }, +    { +      "name": "MONGODB_DATABASE", +      "description": "Database name", +      "value": "sampledb" +    }, +    { +      "name": "MONGODB_ADMIN_PASSWORD", +      "description": "Password for the database admin user", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{16}" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/quickstart-templates/nodejs.json b/roles/openshift_examples/files/examples/quickstart-templates/nodejs.json new file mode 100644 index 000000000..ff7dd574e --- /dev/null +++ b/roles/openshift_examples/files/examples/quickstart-templates/nodejs.json @@ -0,0 +1,236 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "nodejs-example", +    "annotations": { +      "description": "An example Node.js application with no database", +      "tags": "instant-app,nodejs", +      "iconClass": "icon-nodejs" +    } +  }, +  "labels": { +    "template": "nodejs-example" +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs-frontend", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "nodejs-frontend" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs-route" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "nodejs-frontend" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs-example", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs-example", +        "annotations": { +          "description": "Defines how to build the application" +        } +      }, +      "spec": { +        "source": { +          "type": "Git", +          "git": { +            "uri": "${SOURCE_REPOSITORY_URL}", +            "ref": "${SOURCE_REPOSITORY_REF}" +          }, +          "contextDir": "${CONTEXT_DIR}" +        }, +        "strategy": { +          "type": "Source", +          "sourceStrategy": { +            "from": { +              "kind": "ImageStreamTag", +              "namespace": "openshift", +              "name": "nodejs:0.10" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "nodejs-example:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ] +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "nodejs-frontend", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Rolling" +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "nodejs-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "nodejs-example:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "nodejs-frontend" +        }, +        "template": { +          "metadata": { +            "name": "nodejs-frontend", +            "labels": { +              "name": "nodejs-frontend" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "nodejs-example", +                "image": "nodejs-example", +                "ports": [ +                  { +                    "containerPort": 8080 +                  } +                ], +                "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}" +                  } +                ] +              } +            ] +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "SOURCE_REPOSITORY_URL", +      "description": "The URL of the repository with your application source code", +      "value": "https://github.com/openshift/nodejs-ex.git" +    }, +    { +      "name": "SOURCE_REPOSITORY_REF", +      "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", +      "description": "Set this to the relative path to your project if it is not in the root of your repository" +    }, +    { +      "name": "APPLICATION_DOMAIN", +      "description": "The exposed hostname that will route to the Node.js service", +      "value": "nodejs-example.openshiftapps.com" +    }, +    { +      "name": "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", +      "description": "Database service name" +    }, +    { +      "name": "MONGODB_USER", +      "description": "Username for MongoDB user that will be used for accessing the database" +    }, +    { +      "name": "MONGODB_PASSWORD", +      "description": "Password for the MongoDB user" +    }, +    { +      "name": "MONGODB_DATABASE", +      "description": "Database name" +    }, +    { +      "name": "MONGODB_ADMIN_PASSWORD", +      "description": "Password for the database admin user" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/quickstart-templates/rails-postgresql.json b/roles/openshift_examples/files/examples/quickstart-templates/rails-postgresql.json new file mode 100644 index 000000000..ec7da77e3 --- /dev/null +++ b/roles/openshift_examples/files/examples/quickstart-templates/rails-postgresql.json @@ -0,0 +1,388 @@ +{ +  "kind": "Template", +  "apiVersion": "v1", +  "metadata": { +    "name": "rails-postgresql-example", +    "annotations": { +      "description": "An example Rails application with a PostgreSQL database", +      "tags": "instant-app,ruby,rails,postgresql", +      "iconClass": "icon-ruby" +    } +  }, +  "labels": { +    "template": "rails-postgresql-example" +  }, +  "objects": [ +    { +      "kind": "Service", +      "apiVersion": "v1", +      "metadata": { +        "name": "rails-frontend", +        "annotations": { +          "description": "Exposes and load balances the application pods" +        } +      }, +      "spec": { +        "ports": [ +          { +            "name": "web", +            "port": 8080, +            "targetPort": 8080 +          } +        ], +        "selector": { +          "name": "rails-frontend" +        } +      } +    }, +    { +      "kind": "Route", +      "apiVersion": "v1", +      "metadata": { +        "name": "rails-route" +      }, +      "spec": { +        "host": "${APPLICATION_DOMAIN}", +        "to": { +          "kind": "Service", +          "name": "rails-frontend" +        } +      } +    }, +    { +      "kind": "ImageStream", +      "apiVersion": "v1", +      "metadata": { +        "name": "rails-example", +        "annotations": { +          "description": "Keeps track of changes in the application image" +        } +      } +    }, +    { +      "kind": "BuildConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "rails-example", +        "annotations": { +          "description": "Defines how to build the application" +        } +      }, +      "spec": { +        "source": { +          "type": "Git", +          "git": { +            "uri": "${SOURCE_REPOSITORY_URL}", +            "ref": "${SOURCE_REPOSITORY_REF}" +          }, +          "contextDir": "${CONTEXT_DIR}" +        }, +        "strategy": { +          "type": "Source", +          "sourceStrategy": { +            "from": { +              "kind": "ImageStreamTag", +              "namespace": "openshift", +              "name": "ruby:2.0" +            } +          } +        }, +        "output": { +          "to": { +            "kind": "ImageStreamTag", +            "name": "rails-example:latest" +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange" +          }, +          { +            "type": "GitHub", +            "github": { +              "secret": "${GITHUB_WEBHOOK_SECRET}" +            } +          } +        ] +      } +    }, +    { +      "kind": "DeploymentConfig", +      "apiVersion": "v1", +      "metadata": { +        "name": "rails-frontend", +        "annotations": { +          "description": "Defines how to deploy the application server" +        } +      }, +      "spec": { +        "strategy": { +          "type": "Recreate", +          "recreateParams": { +          "pre": { +              "failurePolicy": "Abort", +              "execNewPod": { +                "command": [ +                  "./migrate-database.sh" +                ], +                "containerName": "rails-example" +              } +            } +          } +        }, +        "triggers": [ +          { +            "type": "ImageChange", +            "imageChangeParams": { +              "automatic": true, +              "containerNames": [ +                "rails-example" +              ], +              "from": { +                "kind": "ImageStreamTag", +                "name": "rails-example:latest" +              } +            } +          }, +          { +            "type": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "rails-frontend" +        }, +        "template": { +          "metadata": { +            "name": "rails-frontend", +            "labels": { +              "name": "rails-frontend" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "rails-example", +                "image": "rails-example", +                "ports": [ +                  { +                    "containerPort": 8080 +                  } +                ], +                "env": [ +                  { +                    "name": "DATABASE_SERVICE_NAME", +                    "value": "${DATABASE_SERVICE_NAME}" +                  }, +                  { +                    "name": "POSTGRESQL_USER", +                    "value": "${POSTGRESQL_USER}" +                  }, +                  { +                    "name": "POSTGRESQL_PASSWORD", +                    "value": "${POSTGRESQL_PASSWORD}" +                  }, +                  { +                    "name": "POSTGRESQL_DATABASE", +                    "value": "${POSTGRESQL_DATABASE}" +                  }, +                  { +                    "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": "SECRET_KEY_BASE", +                    "value": "${SECRET_KEY_BASE}" +                  }, +                  { +                    "name": "APPLICATION_DOMAIN", +                    "value": "${APPLICATION_DOMAIN}" +                  }, +                  { +                    "name": "APPLICATION_USER", +                    "value": "${APPLICATION_USER}" +                  }, +                  { +                    "name": "APPLICATION_PASSWORD", +                    "value": "${APPLICATION_PASSWORD}" +                  } +                ] +              } +            ] +          } +        } +      } +    }, +    { +      "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": "ConfigChange" +          } +        ], +        "replicas": 1, +        "selector": { +          "name": "${DATABASE_SERVICE_NAME}" +        }, +        "template": { +          "metadata": { +            "name": "${DATABASE_SERVICE_NAME}", +            "labels": { +              "name": "${DATABASE_SERVICE_NAME}" +            } +          }, +          "spec": { +            "containers": [ +              { +                "name": "postgresql", +                "image": "openshift/postgresql-92-centos7", +                "ports": [ +                  { +                    "containerPort": 5432 +                  } +                ], +                "env": [ +                  { +                    "name": "POSTGRESQL_USER", +                    "value": "${POSTGRESQL_USER}" +                  }, +                  { +                    "name": "POSTGRESQL_PASSWORD", +                    "value": "${POSTGRESQL_PASSWORD}" +                  }, +                  { +                    "name": "POSTGRESQL_DATABASE", +                    "value": "${POSTGRESQL_DATABASE}" +                  }, +                  { +                    "name": "POSTGRESQL_MAX_CONNECTIONS", +                    "value": "${POSTGRESQL_MAX_CONNECTIONS}" +                  }, +                  { +                    "name": "POSTGRESQL_SHARED_BUFFERS", +                    "value": "${POSTGRESQL_SHARED_BUFFERS}" +                  } +                ] +              } +            ] +          } +        } +      } +    } +  ], +  "parameters": [ +    { +      "name": "SOURCE_REPOSITORY_URL", +      "description": "The URL of the repository with your application source code", +      "value": "https://github.com/openshift/rails-ex.git" +    }, +    { +      "name": "SOURCE_REPOSITORY_REF", +      "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", +      "description": "Set this to the relative path to your project if it is not in the root of your repository" +    }, +    { +      "name": "APPLICATION_DOMAIN", +      "description": "The exposed hostname that will route to the Rails service", +      "value": "rails-example.openshiftapps.com" +    }, +    { +      "name": "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", +      "description": "Your secret key for verifying the integrity of signed cookies", +      "generate": "expression", +      "from": "[a-z0-9]{127}" +    }, +    { +      "name": "APPLICATION_USER", +      "description": "The application user that is used within the sample application to authorize access on pages", +      "value": "openshift" +    }, +    { +      "name": "APPLICATION_PASSWORD", +      "description": "The application password that is used within the sample application to authorize access on pages", +      "value": "secret" +    }, +    { +      "name": "DATABASE_SERVICE_NAME", +      "description": "Database service name", +      "value": "postgresql" +    }, +    { +      "name": "POSTGRESQL_USER", +      "description": "database username", +      "generate": "expression", +      "from": "user[A-Z0-9]{3}" +    }, +    { +      "name": "POSTGRESQL_PASSWORD", +      "description": "database password", +      "generate": "expression", +      "from": "[a-zA-Z0-9]{8}" +    }, +    { +      "name": "POSTGRESQL_DATABASE", +      "description": "database name", +      "value": "root" +    }, +    { +      "name": "POSTGRESQL_MAX_CONNECTIONS", +      "description": "database max connections", +      "value": "10" +    }, +    { +      "name": "POSTGRESQL_SHARED_BUFFERS", +      "description": "database shared buffers", +      "value": "12MB" +    } +  ] +} diff --git a/roles/openshift_examples/files/examples/xpaas-streams/jboss-image-streams.json b/roles/openshift_examples/files/examples/xpaas-streams/jboss-image-streams.json new file mode 100644 index 000000000..37e6269fe --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-streams/jboss-image-streams.json @@ -0,0 +1,100 @@ +{ +    "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-webserver3-tomcat7-openshift" +            }, +            "spec": { +                "dockerImageRepository": "registry.access.redhat.com/jboss-webserver-3/tomcat7-openshift", +                "tags": [ +                    { +                        "name": "3.0", +                        "annotations": { +                            "description": "JBoss Web Server v3 Tomcat 7 STI images.", +                            "iconClass": "icon-jboss", +                            "tags": "java", +                            "supports":"tomcat7:3.0,java", +                            "version": "3.0" +                        } +                    } +                ] +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "jboss-webserver3-tomcat8-openshift" +            }, +            "spec": { +                "dockerImageRepository": "registry.access.redhat.com/jboss-webserver-3/tomcat8-openshift", +                "tags": [ +                    { +                        "name": "3.0", +                        "annotations": { +                            "description": "JBoss Web Server v3 Tomcat 8 STI images.", +                            "iconClass": "icon-jboss", +                            "tags": "java", +                            "supports":"tomcat8:3.0,java", +                            "version": "3.0" +                        } +                    } +                ] +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "jboss-eap6-openshift" +            }, +            "spec": { +                "dockerImageRepository": "registry.access.redhat.com/jboss-eap-6/eap-openshift", +                "tags": [ +                    { +                        "name": "6.4", +                        "annotations": { +                            "description": "JBoss EAP 6 STI images.", +                            "iconClass": "icon-jboss", +                            "tags": "javaee", +                            "supports":"eap:6.4,jee,java", +                            "version": "6.4" +                        } +                    } +                ] +            } +        }, +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "jboss-amq-6" +            }, +            "spec": { +                "dockerImageRepository": "registry.access.redhat.com/jboss-amq-6/amq-openshift", +                "tags": [ +                    { +                        "name": "6.2", +                        "annotations": { +                            "description": "JBoss ActiveMQ 6 broker image.", +                            "iconClass": "icon-jboss", +                            "tags": "javaee", +                            "supports":"amq:6.2,jee,java", +                            "version": "6.2" +                        } +                    } +                ] +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/xpaas-templates/amq6-persistent.json b/roles/openshift_examples/files/examples/xpaas-templates/amq6-persistent.json new file mode 100644 index 000000000..c0925b453 --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/amq6-persistent.json @@ -0,0 +1,439 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for ActiveMQ brokers using persistent storage." +        }, +        "name": "amq6-persistent" +    }, +    "labels": { +        "template": "amq6-persistent" +    }, +    "parameters": [ +        { +            "description": "ActiveMQ Release version, e.g. 6.2, etc.", +            "name": "AMQ_RELEASE", +            "value": "6.2" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "broker" +        }, +        { +            "description": "Protocol to configure.  Only openwire is supported by EAP.  amqp, amqp+ssl, mqtt, stomp, stomp+ssl, and ssl are not supported by EAP", +            "name": "MQ_PROTOCOL", +            "value": "openwire" +        }, +        { +            "description": "Queue names", +            "name": "MQ_QUEUES", +            "value": "" +        }, +        { +            "description": "Topic names", +            "name": "MQ_TOPICS", +            "value": "" +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi" +        }, +        { +            "description": "Broker user name", +            "name": "MQ_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Broker user password", +            "name": "MQ_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "ActiveMQ Admin User", +            "name": "AMQ_ADMIN_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "ActiveMQ Admin Password", +            "name": "AMQ_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Name of a secret containing SSL related files", +            "name": "AMQ_SECRET", +            "value": "amq-app-secret" +        }, +        { +            "description": "SSL trust store filename", +            "name": "AMQ_TRUSTSTORE", +            "value": "broker.ts" +        }, +        { +            "description": "SSL key store filename", +            "name": "AMQ_KEYSTORE", +            "value": "broker.ks" +        } +    ], +    "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": 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 tcp (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 tcp ssl (openwire) port." +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-amq", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-amq" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "openshift", +                                "name": "jboss-amq-6:${AMQ_RELEASE}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-amq", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-amq", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "amq-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-amq", +                                "image": "jboss-amq-6", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "broker-secret-volume", +                                        "mountPath": "/etc/amq-secret-volume", +                                        "readOnly": true +                                    }, +                                    { +                                        "mountPath": "/opt/amq/data/kahadb", +                                        "name": "${APPLICATION_NAME}-amq-pvol" +                                    } +                                ], +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -L -u ${AMQ_ADMIN_USERNAME}:${AMQ_ADMIN_PASSWORD} 'http://localhost:8161/hawtio/jolokia/read/org.apache.activemq:type=Broker,brokerName=*,service=Health/CurrentStatus' | grep -q '\"CurrentStatus\" *: *\"Good\"'" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-amq-amqp", +                                        "containerPort": 5672, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-amqp-ssl", +                                        "containerPort": 5671, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-mqtt", +                                        "containerPort": 1883, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-stomp", +                                        "containerPort": 61613, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-stomp-ssl", +                                        "containerPort": 61612, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-tcp", +                                        "containerPort": 61616, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-tcp-ssl", +                                        "containerPort": 61617, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "AMQ_USER", +                                        "value": "${MQ_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_PASSWORD", +                                        "value": "${MQ_PASSWORD}" +                                    }, +                                    { +                                        "name": "AMQ_PROTOCOLS", +                                        "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}" +                                    }, +                                    { +                                        "name": "AMQ_KEYSTORE_TRUSTSTORE_DIR", +                                        "value": "/etc/amq-secret-volume" +                                    }, +                                    { +                                        "name": "AMQ_TRUSTSTORE", +                                        "value": "${AMQ_TRUSTSTORE}" +                                    }, +                                    { +                                        "name": "AMQ_KEYSTORE", +                                        "value": "${AMQ_KEYSTORE}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "broker-secret-volume", +                                "secret": { +                                    "secretName": "${AMQ_SECRET}" +                                } +                            }, +                            { +                                "name": "${APPLICATION_NAME}-amq-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-amq-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ "ReadWriteOnce" ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/xpaas-templates/amq6.json b/roles/openshift_examples/files/examples/xpaas-templates/amq6.json new file mode 100644 index 000000000..63ec9a235 --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/amq6.json @@ -0,0 +1,410 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for ActiveMQ brokers." +        }, +        "name": "amq6" +    }, +    "labels": { +        "template": "amq6" +    }, +    "parameters": [ +        { +            "description": "ActiveMQ Release version, e.g. 6.2, etc.", +            "name": "AMQ_RELEASE", +            "value": "6.2" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "broker" +        }, +        { +            "description": "Protocol to configure.  Only openwire is supported by EAP.  amqp, amqp+ssl, mqtt, stomp, stomp+ssl, and ssl are not supported by EAP", +            "name": "MQ_PROTOCOL", +            "value": "openwire" +        }, +        { +            "description": "Queue names", +            "name": "MQ_QUEUES", +            "value": "" +        }, +        { +            "description": "Topic names", +            "name": "MQ_TOPICS", +            "value": "" +        }, +        { +            "description": "Broker user name", +            "name": "MQ_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Broker user password", +            "name": "MQ_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "ActiveMQ Admin User", +            "name": "AMQ_ADMIN_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "ActiveMQ Admin Password", +            "name": "AMQ_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Name of a secret containing SSL related files", +            "name": "AMQ_SECRET", +            "value": "amq-app-secret" +        }, +        { +            "description": "SSL trust store filename", +            "name": "AMQ_TRUSTSTORE", +            "value": "broker.ts" +        }, +        { +            "description": "SSL key store filename", +            "name": "AMQ_KEYSTORE", +            "value": "broker.ks" +        } +    ], +    "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": 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 tcp (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 tcp ssl (openwire) port." +                } +            } +        }, +        { +            "kind": "DeploymentConfig", +            "apiVersion": "v1", +            "metadata": { +                "name": "${APPLICATION_NAME}-amq", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "strategy": { +                    "type": "Recreate" +                }, +                "triggers": [ +                    { +                        "type": "ImageChange", +                        "imageChangeParams": { +                            "automatic": true, +                            "containerNames": [ +                                "${APPLICATION_NAME}-amq" +                            ], +                            "from": { +                                "kind": "ImageStreamTag", +                                "namespace": "openshift", +                                "name": "jboss-amq-6:${AMQ_RELEASE}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-amq", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-amq", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "amq-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-amq", +                                "image": "jboss-amq-6", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "broker-secret-volume", +                                        "mountPath": "/etc/amq-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -L -u ${AMQ_ADMIN_USERNAME}:${AMQ_ADMIN_PASSWORD} 'http://localhost:8161/hawtio/jolokia/read/org.apache.activemq:type=Broker,brokerName=*,service=Health/CurrentStatus' | grep -q '\"CurrentStatus\" *: *\"Good\"'" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-amq-amqp", +                                        "containerPort": 5672, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-amqp-ssl", +                                        "containerPort": 5671, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-mqtt", +                                        "containerPort": 1883, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-stomp", +                                        "containerPort": 61613, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-stomp-ssl", +                                        "containerPort": 61612, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-tcp", +                                        "containerPort": 61616, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-tcp-ssl", +                                        "containerPort": 61617, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "AMQ_USER", +                                        "value": "${MQ_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_PASSWORD", +                                        "value": "${MQ_PASSWORD}" +                                    }, +                                    { +                                        "name": "AMQ_PROTOCOLS", +                                        "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}" +                                    }, +                                    { +                                        "name": "AMQ_MESH_SERVICE_NAME", +                                        "value": "${APPLICATION_NAME}-amq-tcp" +                                    }, +                                    { +                                        "name": "AMQ_KEYSTORE_TRUSTSTORE_DIR", +                                        "value": "/etc/amq-secret-volume" +                                    }, +                                    { +                                        "name": "AMQ_TRUSTSTORE", +                                        "value": "${AMQ_TRUSTSTORE}" +                                    }, +                                    { +                                        "name": "AMQ_KEYSTORE", +                                        "value": "${AMQ_KEYSTORE}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "broker-secret-volume", +                                "secret": { +                                    "secretName": "${AMQ_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/xpaas-templates/eap6-amq-persistent-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/eap6-amq-persistent-sti.json new file mode 100644 index 000000000..0790d6546 --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/eap6-amq-persistent-sti.json @@ -0,0 +1,645 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 6 A-MQ applications with persistent storage built using STI.", +            "iconClass" : "icon-jboss" +        }, +        "name": "eap6-amq-persistent-sti" +    }, +    "labels": { +        "template": "eap6-amq-persistent-sti" +    }, +    "parameters": [ +        { +            "description": "EAP Release version, e.g. 6.4, etc.", +            "name": "EAP_RELEASE", +            "value": "6.4" +        }, +        { +            "description": "ActiveMQ Release version, e.g. 6.2, etc.", +            "name": "AMQ_RELEASE", +            "value": "6.2" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi" +        }, +        { +            "description": "JNDI name for connection factory used by applications to connect to the broker, e.g. java:/ConnectionFactory", +            "name": "MQ_JNDI", +            "value": "java:/ConnectionFactory" +        }, +        { +            "description": "Protocol to configure.  Only openwire is supported by EAP.  amqp, amqp+ssl, mqtt, stomp, stomp+ssl, and ssl are not supported by EAP", +            "name": "MQ_PROTOCOL", +            "value": "openwire" +        }, +        { +            "description": "Queue names", +            "name": "MQ_QUEUES", +            "value": "" +        }, +        { +            "description": "Topic names", +            "name": "MQ_TOPICS", +            "value": "" +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "EAP_HTTPS_SECRET", +            "value": "eap-app-secret" +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "EAP_HTTPS_KEYSTORE", +            "value": "keystore.jks" +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "EAP_HTTPS_NAME", +            "value": "" +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "EAP_HTTPS_PASSWORD", +            "value": "" +        }, +        { +            "description": "Broker user name", +            "name": "MQ_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Broker user password", +            "name": "MQ_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "ActiveMQ Admin User", +            "name": "AMQ_ADMIN_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "ActiveMQ Admin Password", +            "name": "AMQ_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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": 8888, +                        "targetPort": 8888 +                    } +                ], +                "portalIP": "None", +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-ping", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Ping service for clustered applications." +                } +            } +        }, +        { +            "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 tcp (openwire) port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http-route", +            "metadata": { +              "name": "${APPLICATION_NAME}-http-route", +              "labels": { +                  "application": "${APPLICATION_NAME}" +              }, +              "annotations": { +                  "description": "Route for application's http service." +              } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-eap6-openshift:${EAP_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-ping-8888", +                                        "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_DNS_PING_SERVICE_NAME", +                                        "value": "${APPLICATION_NAME}-ping" +                                    }, +                                    { +                                        "name": "OPENSHIFT_DNS_PING_SERVICE_PORT", +                                        "value": "8888" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE", +                                        "value": "${EAP_HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_NAME", +                                        "value": "${EAP_HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_PASSWORD", +                                        "value": "${EAP_HTTPS_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${EAP_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": "openshift", +                                "name": "jboss-amq-6:${AMQ_RELEASE}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-amq", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-amq", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-amq", +                                "image": "jboss-amq-6", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -L -u ${AMQ_ADMIN_USERNAME}:${AMQ_ADMIN_PASSWORD} 'http://localhost:8161/hawtio/jolokia/read/org.apache.activemq:type=Broker,brokerName=*,service=Health/CurrentStatus' | grep -q '\"CurrentStatus\" *: *\"Good\"'" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-amq-amqp", +                                        "containerPort": 5672, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-amqp-ssl", +                                        "containerPort": 5671, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-mqtt", +                                        "containerPort": 1883, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-stomp", +                                        "containerPort": 61613, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-stomp-ssl", +                                        "containerPort": 61612, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-tcp", +                                        "containerPort": 61616, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-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_PROTOCOLS", +                                        "value": "${MQ_PROTOCOL}" +                                    }, +                                    { +                                        "name": "AMQ_QUEUES", +                                        "value": "${MQ_QUEUES}" +                                    }, +                                    { +                                        "name": "AMQ_TOPICS", +                                        "value": "${MQ_TOPICS}" +                                    }, +                                    { +                                        "name": "AMQ_ADMIN_USERNAME", +                                        "value": "${AMQ_ADMIN_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_ADMIN_PASSWORD", +                                        "value": "${AMQ_ADMIN_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "${APPLICATION_NAME}-amq-pvol", +                                "persistentVolumeClaim": { +                                    "claimName": "${APPLICATION_NAME}-amq-claim" +                                } +                            } +                        ] +                    } +                } +            } +        }, +        { +            "apiVersion": "v1", +            "kind": "PersistentVolumeClaim", +            "metadata": { +                "name": "${APPLICATION_NAME}-amq-claim", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                } +            }, +            "spec": { +                "accessModes": [ "ReadWriteOnce" ], +                "resources": { +                    "requests": { +                        "storage": "${VOLUME_CAPACITY}" +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/xpaas-templates/eap6-amq-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/eap6-amq-sti.json new file mode 100644 index 000000000..a0505f81e --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/eap6-amq-sti.json @@ -0,0 +1,608 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 6 A-MQ applications built using STI.", +            "iconClass" : "icon-jboss" +        }, +        "name": "eap6-amq-sti" +    }, +    "labels": { +        "template": "eap6-amq-sti" +    }, +    "parameters": [ +        { +            "description": "EAP Release version, e.g. 6.4, etc.", +            "name": "EAP_RELEASE", +            "value": "6.4" +        }, +        { +            "description": "ActiveMQ Release version, e.g. 6.2, etc.", +            "name": "AMQ_RELEASE", +            "value": "6.2" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "JNDI name for connection factory used by applications to connect to the broker, e.g. java:/ConnectionFactory", +            "name": "MQ_JNDI", +            "value": "java:/ConnectionFactory" +        }, +        { +            "description": "Protocol to configure.  Only openwire is supported by EAP.  amqp, amqp+ssl, mqtt, stomp, stomp+ssl, and ssl are not supported by EAP", +            "name": "MQ_PROTOCOL", +            "value": "openwire" +        }, +        { +            "description": "Queue names", +            "name": "MQ_QUEUES", +            "value": "" +        }, +        { +            "description": "Topic names", +            "name": "MQ_TOPICS", +            "value": "" +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "EAP_HTTPS_SECRET", +            "value": "eap-app-secret" +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "EAP_HTTPS_KEYSTORE", +            "value": "keystore.jks" +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "EAP_HTTPS_NAME", +            "value": "" +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "EAP_HTTPS_PASSWORD", +            "value": "" +        }, +        { +            "description": "Broker user name", +            "name": "MQ_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Broker user password", +            "name": "MQ_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "ActiveMQ Admin User", +            "name": "AMQ_ADMIN_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "ActiveMQ Admin Password", +            "name": "AMQ_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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": 8888, +                        "targetPort": 8888 +                    } +                ], +                "portalIP": "None", +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-ping", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Ping service for clustered applications." +                } +            } +        }, +        { +            "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 tcp (openwire) port." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http-route", +            "metadata": { +              "name": "${APPLICATION_NAME}-http-route", +              "labels": { +                  "application": "${APPLICATION_NAME}" +              }, +              "annotations": { +                  "description": "Route for application's http service." +              } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-eap6-openshift:${EAP_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-ping-8888", +                                        "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_DNS_PING_SERVICE_NAME", +                                        "value": "${APPLICATION_NAME}-ping" +                                    }, +                                    { +                                        "name": "OPENSHIFT_DNS_PING_SERVICE_PORT", +                                        "value": "8888" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE", +                                        "value": "${EAP_HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_NAME", +                                        "value": "${EAP_HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_PASSWORD", +                                        "value": "${EAP_HTTPS_PASSWORD}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${EAP_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": "openshift", +                                "name": "jboss-amq-6:${AMQ_RELEASE}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-amq" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-amq", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-amq", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-amq", +                                "image": "jboss-amq-6", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -L -u ${AMQ_ADMIN_USERNAME}:${AMQ_ADMIN_PASSWORD} 'http://localhost:8161/hawtio/jolokia/read/org.apache.activemq:type=Broker,brokerName=*,service=Health/CurrentStatus' | grep -q '\"CurrentStatus\" *: *\"Good\"'" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-amq-amqp", +                                        "containerPort": 5672, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-amqp-ssl", +                                        "containerPort": 5671, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-mqtt", +                                        "containerPort": 1883, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-stomp", +                                        "containerPort": 61613, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-stomp-ssl", +                                        "containerPort": 61612, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-tcp", +                                        "containerPort": 61616, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-amq-tcp-ssl", +                                        "containerPort": 61617, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "AMQ_USER", +                                        "value": "${MQ_USERNAME}" +                                    }, +                                    { +                                        "name": "AMQ_PASSWORD", +                                        "value": "${MQ_PASSWORD}" +                                    }, +                                    { +                                        "name": "AMQ_PROTOCOLS", +                                        "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/xpaas-templates/eap6-basic-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/eap6-basic-sti.json new file mode 100644 index 000000000..d894deda0 --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/eap6-basic-sti.json @@ -0,0 +1,303 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass" : "icon-jboss", +            "description": "Application template for EAP 6 applications built using STI." +        }, +        "name": "eap6-basic-sti" +    }, +    "labels": { +        "template": "eap6-basic-sti" +    }, +    "parameters": [ +        { +            "description": "EAP Release version, e.g. 6.4, etc.", +            "name": "EAP_RELEASE", +            "value": "6.4" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI", +            "value": "https://github.com/jboss-developer/jboss-eap-quickstarts" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "6.4.x" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "kitchensink" +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "" +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "" +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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": 8888, +                        "targetPort": 8888 +                    } +                ], +                "portalIP": "None", +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-ping", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Ping service for clustered applications." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-eap6-openshift:${EAP_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-ping-8888", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "OPENSHIFT_DNS_PING_SERVICE_NAME", +                                        "value": "${APPLICATION_NAME}-ping" +                                    }, +                                    { +                                        "name": "OPENSHIFT_DNS_PING_SERVICE_PORT", +                                        "value": "8888" +                                    }, +                                    { +                                        "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/xpaas-templates/eap6-https-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/eap6-https-sti.json new file mode 100644 index 000000000..14585d60f --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/eap6-https-sti.json @@ -0,0 +1,407 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass" : "icon-jboss", +            "description": "Application template for EAP 6 applications built using STI." +        }, +        "name": "eap6-basic-sti" +    }, +    "labels": { +        "template": "eap6-basic-sti" +    }, +    "parameters": [ +        { +            "description": "EAP Release version, e.g. 6.4, etc.", +            "name": "EAP_RELEASE", +            "value": "6.4" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI", +            "value": "https://github.com/jboss-developer/jboss-eap-quickstarts" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "6.4.x" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "kitchensink" +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "" +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "" +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "EAP_HTTPS_SECRET", +            "value": "eap-app-secret" +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "EAP_HTTPS_KEYSTORE", +            "value": "keystore.jks" +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "EAP_HTTPS_NAME", +            "value": "" +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "EAP_HTTPS_PASSWORD", +            "value": "" +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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": 8888, +                        "targetPort": 8888 +                    } +                ], +                "portalIP": "None", +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-ping", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Ping service for clustered applications." +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-http-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-eap6-openshift:${EAP_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-ping-8888", +                                        "containerPort": 8888, +                                        "protocol": "TCP" +                                    } +                                ], +                                "env": [ +                                    { +                                        "name": "OPENSHIFT_DNS_PING_SERVICE_NAME", +                                        "value": "${APPLICATION_NAME}-ping" +                                    }, +                                    { +                                        "name": "OPENSHIFT_DNS_PING_SERVICE_PORT", +                                        "value": "8888" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE", +                                        "value": "${EAP_HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_NAME", +                                        "value": "${EAP_HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_PASSWORD", +                                        "value": "${EAP_HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${EAP_HTTPS_SECRET}" +                                } +                            } +                        ] +                    } +                } +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/xpaas-templates/eap6-mongodb-persistent-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/eap6-mongodb-persistent-sti.json new file mode 100644 index 000000000..13d4289ae --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/eap6-mongodb-persistent-sti.json @@ -0,0 +1,645 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 6 MongDB applications with persistent storage built using STI.", +            "iconClass" : "icon-jboss" +        }, +        "name": "eap6-mongodb-persistent-sti" +    }, +    "labels": { +        "template": "eap6-mongodb-persistent-sti" +    }, +    "parameters": [ +        { +            "description": "EAP Release version, e.g. 6.4, etc.", +            "name": "EAP_RELEASE", +            "value": "6.4" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "" +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root" +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi" +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "" +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "" +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "EAP_HTTPS_SECRET", +            "value": "eap-app-secret" +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "EAP_HTTPS_KEYSTORE", +            "value": "keystore.jks" +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "EAP_HTTPS_NAME", +            "value": "" +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "EAP_HTTPS_PASSWORD", +            "value": "" +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE" +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE" +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION" +        }, +        { +            "description": "Disable data file preallocation.", +            "name": "MONGODB_NOPREALLOC" +        }, +        { +            "description": "Set MongoDB to use a smaller default data file size.", +            "name": "MONGODB_SMALLFILES" +        }, +        { +            "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.", +            "name": "MONGODB_QUIET" +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Database admin password", +            "name": "DB_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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": 8888, +                        "targetPort": 8888 +                    } +                ], +                "portalIP": "None", +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-ping", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Ping service for clustered applications." +                } +            } +        }, +        { +            "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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-eap6-openshift:${EAP_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-ping-8888", +                                        "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_DNS_PING_SERVICE_NAME", +                                        "value": "${APPLICATION_NAME}-ping" +                                    }, +                                    { +                                        "name": "OPENSHIFT_DNS_PING_SERVICE_PORT", +                                        "value": "8888" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE", +                                        "value": "${EAP_HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_NAME", +                                        "value": "${EAP_HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_PASSWORD", +                                        "value": "${EAP_HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${EAP_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": "openshift", +                                "name": "mongodb:latest" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mongodb", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mongodb", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mongodb", +                                "image": "mongodb", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-mongodb-tcp-27017", +                                        "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/xpaas-templates/eap6-mongodb-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/eap6-mongodb-sti.json new file mode 100644 index 000000000..690b918a1 --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/eap6-mongodb-sti.json @@ -0,0 +1,608 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 6 MongDB applications built using STI.", +            "iconClass" : "icon-jboss" +        }, +        "name": "eap6-mongodb-sti" +    }, +    "labels": { +        "template": "eap6-mongodb-sti" +    }, +    "parameters": [ +        { +            "description": "EAP Release version, e.g. 6.4, etc.", +            "name": "EAP_RELEASE", +            "value": "6.4" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "" +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root" +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "" +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "" +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "EAP_HTTPS_SECRET", +            "value": "eap-app-secret" +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "EAP_HTTPS_KEYSTORE", +            "value": "keystore.jks" +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "EAP_HTTPS_NAME", +            "value": "" +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "EAP_HTTPS_PASSWORD", +            "value": "" +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE" +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE" +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION" +        }, +        { +            "description": "Disable data file preallocation.", +            "name": "MONGODB_NOPREALLOC" +        }, +        { +            "description": "Set MongoDB to use a smaller default data file size.", +            "name": "MONGODB_SMALLFILES" +        }, +        { +            "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.", +            "name": "MONGODB_QUIET" +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Database admin password", +            "name": "DB_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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": 8888, +                        "targetPort": 8888 +                    } +                ], +                "portalIP": "None", +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-ping", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Ping service for clustered applications." +                } +            } +        }, +        { +            "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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-eap6-openshift:${EAP_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-ping-8888", +                                        "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_DNS_PING_SERVICE_NAME", +                                        "value": "${APPLICATION_NAME}-ping" +                                    }, +                                    { +                                        "name": "OPENSHIFT_DNS_PING_SERVICE_PORT", +                                        "value": "8888" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE", +                                        "value": "${EAP_HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_NAME", +                                        "value": "${EAP_HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_PASSWORD", +                                        "value": "${EAP_HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${EAP_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": "openshift", +                                "name": "mongodb:latest" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mongodb", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mongodb", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mongodb", +                                "image": "mongodb", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-mongodb-tcp-27017", +                                        "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/xpaas-templates/eap6-mysql-persistent-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/eap6-mysql-persistent-sti.json new file mode 100644 index 000000000..27062596f --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/eap6-mysql-persistent-sti.json @@ -0,0 +1,651 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 6 MySQL applications with persistent storage built using STI.", +            "iconClass" : "icon-jboss" +        }, +        "name": "eap6-mysql-persistent-sti" +    }, +    "labels": { +        "template": "eap6-mysql-persistent-sti" +    }, +    "parameters": [ +        { +            "description": "EAP Release version, e.g. 6.4, etc.", +            "name": "EAP_RELEASE", +            "value": "6.4" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mysql", +            "name": "DB_JNDI", +            "value": "" +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root" +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi" +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "" +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "" +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "EAP_HTTPS_SECRET", +            "value": "eap-app-secret" +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "EAP_HTTPS_KEYSTORE", +            "value": "keystore.jks" +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "EAP_HTTPS_NAME", +            "value": "" +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "EAP_HTTPS_PASSWORD", +            "value": "" +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE" +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE" +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION" +        }, +        { +            "description": "Sets how the table names are stored and compared.", +            "name": "MYSQL_LOWER_CASE_TABLE_NAMES" +        }, +        { +            "description": "The maximum permitted number of simultaneous client connections.", +            "name": "MYSQL_MAX_CONNECTIONS" +        }, +        { +            "description": "The minimum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MIN_WORD_LEN" +        }, +        { +            "description": "The maximum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MAX_WORD_LEN" +        }, +        { +            "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", +            "name": "MYSQL_AIO" +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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": 8888, +                        "targetPort": 8888 +                    } +                ], +                "portalIP": "None", +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-ping", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Ping 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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-eap6-openshift:${EAP_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-ping-8888", +                                        "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_DNS_PING_SERVICE_NAME", +                                        "value": "${APPLICATION_NAME}-ping" +                                    }, +                                    { +                                        "name": "OPENSHIFT_DNS_PING_SERVICE_PORT", +                                        "value": "8888" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE", +                                        "value": "${EAP_HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_NAME", +                                        "value": "${EAP_HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_PASSWORD", +                                        "value": "${EAP_HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${EAP_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": "openshift", +                                "name": "mysql:latest" +                            } +                        } +                    } +                ], +                "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": [ +                                    { +                                        "name": "${APPLICATION_NAME}-mysql-tcp-3306", +                                        "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/xpaas-templates/eap6-mysql-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/eap6-mysql-sti.json new file mode 100644 index 000000000..69537e697 --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/eap6-mysql-sti.json @@ -0,0 +1,614 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 6 MySQL applications built using STI.", +            "iconClass" : "icon-jboss" +        }, +        "name": "eap6-mysql-sti" +    }, +    "labels": { +        "template": "eap6-mysql-sti" +    }, +    "parameters": [ +        { +            "description": "EAP Release version, e.g. 6.4, etc.", +            "name": "EAP_RELEASE", +            "value": "6.4" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mysql", +            "name": "DB_JNDI", +            "value": "" +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root" +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "" +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "" +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "EAP_HTTPS_SECRET", +            "value": "eap-app-secret" +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "EAP_HTTPS_KEYSTORE", +            "value": "keystore.jks" +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "EAP_HTTPS_NAME", +            "value": "" +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "EAP_HTTPS_PASSWORD", +            "value": "" +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE" +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE" +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION" +        }, +        { +            "description": "Sets how the table names are stored and compared.", +            "name": "MYSQL_LOWER_CASE_TABLE_NAMES" +        }, +        { +            "description": "The maximum permitted number of simultaneous client connections.", +            "name": "MYSQL_MAX_CONNECTIONS" +        }, +        { +            "description": "The minimum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MIN_WORD_LEN" +        }, +        { +            "description": "The maximum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MAX_WORD_LEN" +        }, +        { +            "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", +            "name": "MYSQL_AIO" +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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": 8888, +                        "targetPort": 8888 +                    } +                ], +                "portalIP": "None", +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-ping", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Ping 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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-eap6-openshift:${EAP_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-ping-8888", +                                        "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_DNS_PING_SERVICE_NAME", +                                        "value": "${APPLICATION_NAME}-ping" +                                    }, +                                    { +                                        "name": "OPENSHIFT_DNS_PING_SERVICE_PORT", +                                        "value": "8888" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE", +                                        "value": "${EAP_HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_NAME", +                                        "value": "${EAP_HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_PASSWORD", +                                        "value": "${EAP_HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${EAP_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": "openshift", +                                "name": "mysql:latest" +                            } +                        } +                    } +                ], +                "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": [ +                                    { +                                        "name": "${APPLICATION_NAME}-mysql-tcp-3306", +                                        "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/xpaas-templates/eap6-postgresql-persistent-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/eap6-postgresql-persistent-sti.json new file mode 100644 index 000000000..1325e26de --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/eap6-postgresql-persistent-sti.json @@ -0,0 +1,627 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 6 PostgreSQL applications with persistent storage built using STI.", +            "iconClass" : "icon-jboss" +        }, +        "name": "eap6-postgresql-persistent-sti" +    }, +    "labels": { +        "template": "eap6-postgresql-persistent-sti" +    }, +    "parameters": [ +        { +            "description": "EAP Release version, e.g. 6.4, etc.", +            "name": "EAP_RELEASE", +            "value": "6.4" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/postgresql", +            "name": "DB_JNDI", +            "value": "" +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root" +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi" +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "" +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "" +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "EAP_HTTPS_SECRET", +            "value": "eap-app-secret" +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "EAP_HTTPS_KEYSTORE", +            "value": "keystore.jks" +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "EAP_HTTPS_NAME", +            "value": "" +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "EAP_HTTPS_PASSWORD", +            "value": "" +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE" +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE" +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION" +        }, +        { +            "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", +            "name": "POSTGRESQL_MAX_CONNECTIONS" +        }, +        { +            "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", +            "name": "POSTGRESQL_SHARED_BUFFERS" +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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": 8888, +                        "targetPort": 8888 +                    } +                ], +                "portalIP": "None", +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-ping", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Ping 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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-eap6-openshift:${EAP_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-ping-8888", +                                        "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_DNS_PING_SERVICE_NAME", +                                        "value": "${APPLICATION_NAME}-ping" +                                    }, +                                    { +                                        "name": "OPENSHIFT_DNS_PING_SERVICE_PORT", +                                        "value": "8888" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE", +                                        "value": "${EAP_HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_NAME", +                                        "value": "${EAP_HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_PASSWORD", +                                        "value": "${EAP_HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${EAP_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": "openshift", +                                "name": "postgresql:latest" +                            } +                        } +                    } +                ], +                "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": [ +                                    { +                                        "name": "${APPLICATION_NAME}-postgresql-tcp-5432", +                                        "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/xpaas-templates/eap6-postgresql-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/eap6-postgresql-sti.json new file mode 100644 index 000000000..83921c57e --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/eap6-postgresql-sti.json @@ -0,0 +1,590 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "description": "Application template for EAP 6 PostgreSQL applications built using STI.", +            "iconClass" : "icon-jboss" +        }, +        "name": "eap6-postgresql-sti" +    }, +    "labels": { +        "template": "eap6-postgresql-sti" +    }, +    "parameters": [ +        { +            "description": "EAP Release version, e.g. 6.4, etc.", +            "name": "EAP_RELEASE", +            "value": "6.4" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "eap-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/postgresql", +            "name": "DB_JNDI", +            "value": "" +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root" +        }, +        { +            "description": "Queue names", +            "name": "HORNETQ_QUEUES", +            "value": "" +        }, +        { +            "description": "Topic names", +            "name": "HORNETQ_TOPICS", +            "value": "" +        }, +        { +            "description": "The name of the secret containing the keystore file", +            "name": "EAP_HTTPS_SECRET", +            "value": "eap-app-secret" +        }, +        { +            "description": "The name of the keystore file within the secret", +            "name": "EAP_HTTPS_KEYSTORE", +            "value": "keystore.jks" +        }, +        { +            "description": "The name associated with the server certificate", +            "name": "EAP_HTTPS_NAME", +            "value": "" +        }, +        { +            "description": "The password for the keystore and certificate", +            "name": "EAP_HTTPS_PASSWORD", +            "value": "" +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE" +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE" +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION" +        }, +        { +            "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", +            "name": "POSTGRESQL_MAX_CONNECTIONS" +        }, +        { +            "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", +            "name": "POSTGRESQL_SHARED_BUFFERS" +        }, +        { +            "description": "HornetQ cluster admin password", +            "name": "HORNETQ_CLUSTER_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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": 8888, +                        "targetPort": 8888 +                    } +                ], +                "portalIP": "None", +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                } +            }, +            "metadata": { +                "name": "${APPLICATION_NAME}-ping", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Ping 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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-eap6-openshift:${EAP_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "eap-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "volumeMounts": [ +                                    { +                                        "name": "eap-keystore-volume", +                                        "mountPath": "/etc/eap-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "/opt/eap/bin/readinessProbe.sh" +                                        ] +                                    } +                                }, +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "containerPort": 8443, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-ping-8888", +                                        "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_DNS_PING_SERVICE_NAME", +                                        "value": "${APPLICATION_NAME}-ping" +                                    }, +                                    { +                                        "name": "OPENSHIFT_DNS_PING_SERVICE_PORT", +                                        "value": "8888" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE_DIR", +                                        "value": "/etc/eap-secret-volume" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_KEYSTORE", +                                        "value": "${EAP_HTTPS_KEYSTORE}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_NAME", +                                        "value": "${EAP_HTTPS_NAME}" +                                    }, +                                    { +                                        "name": "EAP_HTTPS_PASSWORD", +                                        "value": "${EAP_HTTPS_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_CLUSTER_PASSWORD", +                                        "value": "${HORNETQ_CLUSTER_PASSWORD}" +                                    }, +                                    { +                                        "name": "HORNETQ_QUEUES", +                                        "value": "${HORNETQ_QUEUES}" +                                    }, +                                    { +                                        "name": "HORNETQ_TOPICS", +                                        "value": "${HORNETQ_TOPICS}" +                                    } +                                ] +                            } +                        ], +                        "volumes": [ +                            { +                                "name": "eap-keystore-volume", +                                "secret": { +                                    "secretName": "${EAP_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": "openshift", +                                "name": "postgresql:latest" +                            } +                        } +                    } +                ], +                "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": [ +                                    { +                                        "name": "${APPLICATION_NAME}-postgresql-tcp-5432", +                                        "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/xpaas-templates/jws-tomcat7-basic-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-basic-sti.json new file mode 100644 index 000000000..a3947593c --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-basic-sti.json @@ -0,0 +1,256 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass" : "icon-tomcat", +            "description": "Application template for JWS applications built using STI." +        }, +        "name": "jws-tomcat7-basic-sti" +    }, +    "labels": { +        "template": "jws-tomcat7-basic-sti" +    }, +    "parameters": [ +        { +            "description": "JWS Release version, e.g. 3.0, 2.1, etc.", +            "name": "JWS_RELEASE", +            "value": "3.0" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "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": "${APPLICATION_NAME}-tcp-8080", +                                        "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/xpaas-templates/jws-tomcat7-https-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-https-sti.json new file mode 100644 index 000000000..1f9c17cf2 --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-https-sti.json @@ -0,0 +1,360 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass" : "icon-tomcat", +            "description": "Application template for JWS applications built using STI." +        }, +        "name": "jws-tomcat7-basic-sti" +    }, +    "labels": { +        "template": "jws-tomcat7-basic-sti" +    }, +    "parameters": [ +        { +            "description": "JWS Release version, e.g. 3.0, 2.1, etc.", +            "name": "JWS_RELEASE", +            "value": "3.0" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret" +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt" +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key" +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "" +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "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/xpaas-templates/jws-tomcat7-mongodb-persistent-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mongodb-persistent-sti.json new file mode 100644 index 000000000..55746fc11 --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mongodb-persistent-sti.json @@ -0,0 +1,599 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass" : "icon-tomcat", +            "description": "Application template for JWS MongoDB applications with persistent storage built using STI." +        }, +        "name": "jws-tomcat7-mongodb-persistent-sti" +    }, +    "labels": { +        "template": "jws-tomcat7-mongodb-persistent-sti" +    }, +    "parameters": [ +        { +            "description": "JWS Release version, e.g. 3.0, 2.1, etc.", +            "name": "JWS_RELEASE", +            "value": "3.0" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "" +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root" +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi" +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret" +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt" +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key" +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "" +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE" +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE" +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION" +        }, +        { +            "description": "Disable data file preallocation.", +            "name": "MONGODB_NOPREALLOC" +        }, +        { +            "description": "Set MongoDB to use a smaller default data file size.", +            "name": "MONGODB_SMALLFILES" +        }, +        { +            "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.", +            "name": "MONGODB_QUIET" +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Database admin password", +            "name": "DB_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "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": "openshift", +                                "name": "mongodb:latest" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mongodb", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mongodb", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mongodb", +                                "image": "mongodb", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-mongodb-tcp-27017", +                                        "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/xpaas-templates/jws-tomcat7-mongodb-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mongodb-sti.json new file mode 100644 index 000000000..f540c885c --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mongodb-sti.json @@ -0,0 +1,562 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass" : "icon-tomcat", +            "description": "Application template for JWS MongoDB applications built using STI." +        }, +        "name": "jws-tomcat7-mongodb-sti" +    }, +    "labels": { +        "template": "jws-tomcat7-mongodb-sti" +    }, +    "parameters": [ +        { +            "description": "JWS Release version, e.g. 3.0, 2.1, etc.", +            "name": "JWS_RELEASE", +            "value": "3.0" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "" +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root" +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret" +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt" +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key" +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "" +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE" +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE" +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION" +        }, +        { +            "description": "Disable data file preallocation.", +            "name": "MONGODB_NOPREALLOC" +        }, +        { +            "description": "Set MongoDB to use a smaller default data file size.", +            "name": "MONGODB_SMALLFILES" +        }, +        { +            "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.", +            "name": "MONGODB_QUIET" +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Database admin password", +            "name": "DB_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "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": "openshift", +                                "name": "mongodb:latest" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mongodb", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mongodb", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mongodb", +                                "image": "mongodb", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-mongodb-tcp-27017", +                                        "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/xpaas-templates/jws-tomcat7-mysql-persistent-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mysql-persistent-sti.json new file mode 100644 index 000000000..984b075a2 --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mysql-persistent-sti.json @@ -0,0 +1,600 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass" : "icon-tomcat", +            "description": "Application template for JWS MySQL applications with persistent storage built using STI." +        }, +        "name": "jws-tomcat7-mysql-persistent-sti" +    }, +    "labels": { +        "template": "jws-tomcat7-mysql-persistent-sti" +    }, +    "parameters": [ +        { +            "description": "JWS Release version, e.g. 3.0, 2.1, etc.", +            "name": "JWS_RELEASE", +            "value": "3.0" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "" +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root" +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi" +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret" +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt" +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key" +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "" +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE" +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE" +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION" +        }, +        { +            "description": "Sets how the table names are stored and compared.", +            "name": "MYSQL_LOWER_CASE_TABLE_NAMES" +        }, +        { +            "description": "The maximum permitted number of simultaneous client connections.", +            "name": "MYSQL_MAX_CONNECTIONS" +        }, +        { +            "description": "The minimum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MIN_WORD_LEN" +        }, +        { +            "description": "The maximum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MAX_WORD_LEN" +        }, +        { +            "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", +            "name": "MYSQL_AIO" +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "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": "openshift", +                                "name": "mysql:latest" +                            } +                        } +                    } +                ], +                "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", +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-mysql-tcp-3306", +                                        "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/xpaas-templates/jws-tomcat7-mysql-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mysql-sti.json new file mode 100644 index 000000000..af9c7c17c --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mysql-sti.json @@ -0,0 +1,563 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass" : "icon-tomcat", +            "description": "Application template for JWS MySQL applications built using STI." +        }, +        "name": "jws-tomcat7-mysql-sti" +    }, +    "labels": { +        "template": "jws-tomcat7-mysql-sti" +    }, +    "parameters": [ +        { +            "description": "JWS Release version, e.g. 3.0, 2.1, etc.", +            "name": "JWS_RELEASE", +            "value": "3.0" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "" +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root" +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret" +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt" +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key" +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "" +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE" +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE" +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION" +        }, +        { +            "description": "Sets how the table names are stored and compared.", +            "name": "MYSQL_LOWER_CASE_TABLE_NAMES" +        }, +        { +            "description": "The maximum permitted number of simultaneous client connections.", +            "name": "MYSQL_MAX_CONNECTIONS" +        }, +        { +            "description": "The minimum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MIN_WORD_LEN" +        }, +        { +            "description": "The maximum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MAX_WORD_LEN" +        }, +        { +            "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", +            "name": "MYSQL_AIO" +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "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": "openshift", +                                "name": "mysql:latest" +                            } +                        } +                    } +                ], +                "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", +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-mysql-tcp-3306", +                                        "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/xpaas-templates/jws-tomcat7-postgresql-persistent-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-postgresql-persistent-sti.json new file mode 100644 index 000000000..ec59a6a5b --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-postgresql-persistent-sti.json @@ -0,0 +1,576 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass" : "icon-tomcat", +            "description": "Application template for JWS PostgreSQL applications with persistent storage built using STI." +        }, +        "name": "jws-tomcat7-postgresql-persistent-sti" +    }, +    "labels": { +        "template": "jws-tomcat7-postgresql-persistent-sti" +    }, +    "parameters": [ +        { +            "description": "JWS Release version, e.g. 3.0, 2.1, etc.", +            "name": "JWS_RELEASE", +            "value": "3.0" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "" +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root" +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi" +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret" +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt" +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key" +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "" +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE" +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE" +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION" +        }, +        { +            "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", +            "name": "POSTGRESQL_MAX_CONNECTIONS" +        }, +        { +            "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", +            "name": "POSTGRESQL_SHARED_BUFFERS" +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "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": "openshift", +                                "name": "postgresql:latest" +                            } +                        } +                    } +                ], +                "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": [ +                                    { +                                        "name": "${APPLICATION_NAME}-postgresql-tcp-5432", +                                        "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/xpaas-templates/jws-tomcat7-postgresql-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-postgresql-sti.json new file mode 100644 index 000000000..6040f7208 --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-postgresql-sti.json @@ -0,0 +1,539 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass" : "icon-tomcat", +            "description": "Application template for JWS PostgreSQL applications built using STI." +        }, +        "name": "jws-tomcat7-postgresql-sti" +    }, +    "labels": { +        "template": "jws-tomcat7-postgresql-sti" +    }, +    "parameters": [ +        { +            "description": "JWS Release version, e.g. 3.0, 2.1, etc.", +            "name": "JWS_RELEASE", +            "value": "3.0" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "" +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root" +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret" +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt" +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key" +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "" +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE" +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE" +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION" +        }, +        { +            "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", +            "name": "POSTGRESQL_MAX_CONNECTIONS" +        }, +        { +            "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", +            "name": "POSTGRESQL_SHARED_BUFFERS" +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "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": "openshift", +                                "name": "postgresql:latest" +                            } +                        } +                    } +                ], +                "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": [ +                                    { +                                        "name": "${APPLICATION_NAME}-postgresql-tcp-5432", +                                        "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/xpaas-templates/jws-tomcat8-basic-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-basic-sti.json new file mode 100644 index 000000000..25b6497b2 --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-basic-sti.json @@ -0,0 +1,256 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass" : "icon-tomcat", +            "description": "Application template for JWS applications built using STI." +        }, +        "name": "jws-tomcat8-basic-sti" +    }, +    "labels": { +        "template": "jws-tomcat8-basic-sti" +    }, +    "parameters": [ +        { +            "description": "JWS Release version, e.g. 3.0, 2.1, etc.", +            "name": "JWS_RELEASE", +            "value": "3.0" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "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": "${APPLICATION_NAME}-tcp-8080", +                                        "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/xpaas-templates/jws-tomcat8-https-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-https-sti.json new file mode 100644 index 000000000..af4c94ae0 --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-https-sti.json @@ -0,0 +1,360 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass" : "icon-tomcat", +            "description": "Application template for JWS applications built using STI." +        }, +        "name": "jws-tomcat8-basic-sti" +    }, +    "labels": { +        "template": "jws-tomcat8-basic-sti" +    }, +    "parameters": [ +        { +            "description": "JWS Release version, e.g. 3.0, 2.1, etc.", +            "name": "JWS_RELEASE", +            "value": "3.0" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret" +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt" +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key" +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "" +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "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/xpaas-templates/jws-tomcat8-mongodb-persistent-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mongodb-persistent-sti.json new file mode 100644 index 000000000..b5975b646 --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mongodb-persistent-sti.json @@ -0,0 +1,599 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass" : "icon-tomcat", +            "description": "Application template for JWS MongoDB applications with persistent storage built using STI." +        }, +        "name": "jws-tomcat8-mongodb-persistent-sti" +    }, +    "labels": { +        "template": "jws-tomcat8-mongodb-persistent-sti" +    }, +    "parameters": [ +        { +            "description": "JWS Release version, e.g. 3.0, 2.1, etc.", +            "name": "JWS_RELEASE", +            "value": "3.0" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "" +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root" +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi" +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret" +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt" +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key" +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "" +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE" +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE" +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION" +        }, +        { +            "description": "Disable data file preallocation.", +            "name": "MONGODB_NOPREALLOC" +        }, +        { +            "description": "Set MongoDB to use a smaller default data file size.", +            "name": "MONGODB_SMALLFILES" +        }, +        { +            "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.", +            "name": "MONGODB_QUIET" +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Database admin password", +            "name": "DB_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "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": "openshift", +                                "name": "mongodb:latest" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mongodb", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mongodb", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mongodb", +                                "image": "mongodb", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-mongodb-tcp-27017", +                                        "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/xpaas-templates/jws-tomcat8-mongodb-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mongodb-sti.json new file mode 100644 index 000000000..8145ee34e --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mongodb-sti.json @@ -0,0 +1,562 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass" : "icon-tomcat", +            "description": "Application template for JWS MongoDB applications built using STI." +        }, +        "name": "jws-tomcat8-mongodb-sti" +    }, +    "labels": { +        "template": "jws-tomcat8-mongodb-sti" +    }, +    "parameters": [ +        { +            "description": "JWS Release version, e.g. 3.0, 2.1, etc.", +            "name": "JWS_RELEASE", +            "value": "3.0" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "" +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root" +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret" +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt" +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key" +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "" +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE" +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE" +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION" +        }, +        { +            "description": "Disable data file preallocation.", +            "name": "MONGODB_NOPREALLOC" +        }, +        { +            "description": "Set MongoDB to use a smaller default data file size.", +            "name": "MONGODB_SMALLFILES" +        }, +        { +            "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.", +            "name": "MONGODB_QUIET" +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Database admin password", +            "name": "DB_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "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": "openshift", +                                "name": "mongodb:latest" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}-mongodb" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}-mongodb", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}-mongodb", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}-mongodb", +                                "image": "mongodb", +                                "imagePullPolicy": "Always", +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-mongodb-tcp-27017", +                                        "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/xpaas-templates/jws-tomcat8-mysql-persistent-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mysql-persistent-sti.json new file mode 100644 index 000000000..b0808949c --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mysql-persistent-sti.json @@ -0,0 +1,600 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass" : "icon-tomcat", +            "description": "Application template for JWS MySQL applications with persistent storage built using STI." +        }, +        "name": "jws-tomcat8-mysql-persistent-sti" +    }, +    "labels": { +        "template": "jws-tomcat8-mysql-persistent-sti" +    }, +    "parameters": [ +        { +            "description": "JWS Release version, e.g. 3.0, 2.1, etc.", +            "name": "JWS_RELEASE", +            "value": "3.0" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "" +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root" +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi" +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret" +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt" +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key" +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "" +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE" +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE" +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION" +        }, +        { +            "description": "Sets how the table names are stored and compared.", +            "name": "MYSQL_LOWER_CASE_TABLE_NAMES" +        }, +        { +            "description": "The maximum permitted number of simultaneous client connections.", +            "name": "MYSQL_MAX_CONNECTIONS" +        }, +        { +            "description": "The minimum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MIN_WORD_LEN" +        }, +        { +            "description": "The maximum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MAX_WORD_LEN" +        }, +        { +            "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", +            "name": "MYSQL_AIO" +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "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": "openshift", +                                "name": "mysql:latest" +                            } +                        } +                    } +                ], +                "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", +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-mysql-tcp-3306", +                                        "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/xpaas-templates/jws-tomcat8-mysql-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mysql-sti.json new file mode 100644 index 000000000..46ad18b91 --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mysql-sti.json @@ -0,0 +1,563 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass" : "icon-tomcat", +            "description": "Application template for JWS MySQL applications built using STI." +        }, +        "name": "jws-tomcat8-mysql-sti" +    }, +    "labels": { +        "template": "jws-tomcat8-mysql-sti" +    }, +    "parameters": [ +        { +            "description": "JWS Release version, e.g. 3.0, 2.1, etc.", +            "name": "JWS_RELEASE", +            "value": "3.0" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "" +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root" +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret" +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt" +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key" +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "" +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE" +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE" +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION" +        }, +        { +            "description": "Sets how the table names are stored and compared.", +            "name": "MYSQL_LOWER_CASE_TABLE_NAMES" +        }, +        { +            "description": "The maximum permitted number of simultaneous client connections.", +            "name": "MYSQL_MAX_CONNECTIONS" +        }, +        { +            "description": "The minimum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MIN_WORD_LEN" +        }, +        { +            "description": "The maximum length of the word to be included in a FULLTEXT index.", +            "name": "MYSQL_FT_MAX_WORD_LEN" +        }, +        { +            "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", +            "name": "MYSQL_AIO" +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "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": "openshift", +                                "name": "mysql:latest" +                            } +                        } +                    } +                ], +                "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", +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-mysql-tcp-3306", +                                        "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/xpaas-templates/jws-tomcat8-postgresql-persistent-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-postgresql-persistent-sti.json new file mode 100644 index 000000000..19cd2be30 --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-postgresql-persistent-sti.json @@ -0,0 +1,576 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass" : "icon-tomcat", +            "description": "Application template for JWS PostgreSQL applications with persistent storage built using STI." +        }, +        "name": "jws-tomcat8-postgresql-persistent-sti" +    }, +    "labels": { +        "template": "jws-tomcat8-postgresql-persistent-sti" +    }, +    "parameters": [ +        { +            "description": "JWS Release version, e.g. 3.0, 2.1, etc.", +            "name": "JWS_RELEASE", +            "value": "3.0" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "" +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root" +        }, +        { +            "description": "Size of persistent storage for database volume.", +            "name": "VOLUME_CAPACITY", +            "value": "512Mi" +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret" +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt" +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key" +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "" +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE" +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE" +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION" +        }, +        { +            "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", +            "name": "POSTGRESQL_MAX_CONNECTIONS" +        }, +        { +            "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", +            "name": "POSTGRESQL_SHARED_BUFFERS" +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "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": "openshift", +                                "name": "postgresql:latest" +                            } +                        } +                    } +                ], +                "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": [ +                                    { +                                        "name": "${APPLICATION_NAME}-postgresql-tcp-5432", +                                        "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/xpaas-templates/jws-tomcat8-postgresql-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-postgresql-sti.json new file mode 100644 index 000000000..185808baf --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-postgresql-sti.json @@ -0,0 +1,539 @@ +{ +    "kind": "Template", +    "apiVersion": "v1", +    "metadata": { +        "annotations": { +            "iconClass" : "icon-tomcat", +            "description": "Application template for JWS PostgreSQL applications built using STI." +        }, +        "name": "jws-tomcat8-postgresql-sti" +    }, +    "labels": { +        "template": "jws-tomcat8-postgresql-sti" +    }, +    "parameters": [ +        { +            "description": "JWS Release version, e.g. 3.0, 2.1, etc.", +            "name": "JWS_RELEASE", +            "value": "3.0" +        }, +        { +            "description": "The name for the application.", +            "name": "APPLICATION_NAME", +            "value": "jws-app" +        }, +        { +            "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", +            "name": "APPLICATION_HOSTNAME", +            "value": "" +        }, +        { +            "description": "Git source URI for application", +            "name": "GIT_URI" +        }, +        { +            "description": "Git branch/tag reference", +            "name": "GIT_REF", +            "value": "master" +        }, +        { +            "description": "Path within Git project to build; empty for root project directory.", +            "name": "GIT_CONTEXT_DIR", +            "value": "" +        }, +        { +            "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", +            "name": "DB_JNDI", +            "value": "" +        }, +        { +            "description": "Database name", +            "name": "DB_DATABASE", +            "value": "root" +        }, +        { +            "description": "The name of the secret containing the certificate files", +            "name": "JWS_HTTPS_SECRET", +            "value": "jws-app-secret" +        }, +        { +            "description": "The name of the certificate file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE", +            "value": "server.crt" +        }, +        { +            "description": "The name of the certificate key file within the secret", +            "name": "JWS_HTTPS_CERTIFICATE_KEY", +            "value": "server.key" +        }, +        { +            "description": "The certificate password", +            "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", +            "value": "" +        }, +        { +            "description": "Sets xa-pool/min-pool-size for the configured datasource.", +            "name": "DB_MIN_POOL_SIZE" +        }, +        { +            "description": "Sets xa-pool/max-pool-size for the configured datasource.", +            "name": "DB_MAX_POOL_SIZE" +        }, +        { +            "description": "Sets transaction-isolation for the configured datasource.", +            "name": "DB_TX_ISOLATION" +        }, +        { +            "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", +            "name": "POSTGRESQL_MAX_CONNECTIONS" +        }, +        { +            "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", +            "name": "POSTGRESQL_SHARED_BUFFERS" +        }, +        { +            "description": "Database user name", +            "name": "DB_USERNAME", +            "from": "user[a-zA-Z0-9]{3}", +            "generate": "expression" +        }, +        { +            "description": "Database user password", +            "name": "DB_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin User", +            "name": "JWS_ADMIN_USERNAME", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "JWS Admin Password", +            "name": "JWS_ADMIN_PASSWORD", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Github trigger secret", +            "name": "GITHUB_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        }, +        { +            "description": "Generic build trigger secret", +            "name": "GENERIC_TRIGGER_SECRET", +            "from": "[a-zA-Z0-9]{8}", +            "generate": "expression" +        } +    ], +    "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-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-http-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's http service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "to": { +                    "name": "${APPLICATION_NAME}" +                } +            } +        }, +        { +            "kind": "Route", +            "apiVersion": "v1", +            "id": "${APPLICATION_NAME}-https-route", +            "metadata": { +                "name": "${APPLICATION_NAME}-https-route", +                "labels": { +                    "application": "${APPLICATION_NAME}" +                }, +                "annotations": { +                    "description": "Route for application's https service." +                } +            }, +            "spec": { +                "host": "${APPLICATION_HOSTNAME}", +                "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": "${GIT_URI}", +                        "ref": "${GIT_REF}" +                    }, +                    "contextDir":"${GIT_CONTEXT_DIR}" +                }, +                "strategy": { +                    "type": "Source", +                    "sourceStrategy": { +                        "from": { +                            "kind": "ImageStreamTag", +                            "namespace": "openshift", +                            "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}" +                        } +                    } +                }, +                "output": { +                    "to": { +                        "name": "${APPLICATION_NAME}" +                    } +                }, +                "triggers": [ +                    { +                        "type": "github", +                        "github": { +                            "secret": "${GITHUB_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "generic", +                        "generic": { +                            "secret": "${GENERIC_TRIGGER_SECRET}" +                        } +                    }, +                    { +                        "type": "imageChange", +                        "imageChange": {} +                    } +                ] +            } +        }, +        { +            "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}" +                            } +                        } +                    } +                ], +                "replicas": 1, +                "selector": { +                    "deploymentConfig": "${APPLICATION_NAME}" +                }, +                "template": { +                    "metadata": { +                        "name": "${APPLICATION_NAME}", +                        "labels": { +                            "deploymentConfig": "${APPLICATION_NAME}", +                            "application": "${APPLICATION_NAME}" +                        } +                    }, +                    "spec": { +                        "serviceAccount": "jws-service-account", +                        "containers": [ +                            { +                                "name": "${APPLICATION_NAME}", +                                "image": "${APPLICATION_NAME}", +                                "imagePullPolicy": "Always", +                                "readinessProbe": { +                                    "exec": { +                                        "command": [ +                                            "/bin/bash", +                                            "-c", +                                            "curl -s -u ${JWS_ADMIN_USERNAME}:${JWS_ADMIN_PASSWORD} 'http://localhost:8080/manager/jmxproxy/?get=Catalina%3Atype%3DServer&att=stateName' |grep -iq 'stateName *= *STARTED'" +                                        ] +                                    } +                                }, +                                "volumeMounts": [ +                                    { +                                        "name": "jws-certificate-volume", +                                        "mountPath": "/etc/jws-secret-volume", +                                        "readOnly": true +                                    } +                                ], +                                "ports": [ +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8080", +                                        "containerPort": 8080, +                                        "protocol": "TCP" +                                    }, +                                    { +                                        "name": "${APPLICATION_NAME}-tcp-8443", +                                        "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": "openshift", +                                "name": "postgresql:latest" +                            } +                        } +                    } +                ], +                "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": [ +                                    { +                                        "name": "${APPLICATION_NAME}-postgresql-tcp-5432", +                                        "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/meta/main.yml b/roles/openshift_examples/meta/main.yml new file mode 100644 index 000000000..5cfda1c89 --- /dev/null +++ b/roles/openshift_examples/meta/main.yml @@ -0,0 +1,15 @@ +--- +galaxy_info: +  author: Scott Dodson +  description: OpenShift Examples +  company: Red Hat, Inc. +  license: Apache License, Version 2.0 +  min_ansible_version: 1.7 +  platforms: +  - name: EL +    versions: +    - 7 +  categories: +  - cloud +dependencies: +- role: openshift_common diff --git a/roles/openshift_examples/tasks/main.yml b/roles/openshift_examples/tasks/main.yml new file mode 100644 index 000000000..bfc6dfb0a --- /dev/null +++ b/roles/openshift_examples/tasks/main.yml @@ -0,0 +1,55 @@ +--- +- name: Copy openshift examples +  copy: +    src: examples +    dest: /usr/share/openshift + +# RHEL and Centos image streams are mutually exclusive +- name: Import RHEL streams +  command: > +    {{ openshift.common.client_binary }} create -n openshift -f {{ rhel_image_streams }} +  when: openshift_examples_load_rhel +  register: oex_import_rhel_streams +  failed_when: "'already exists' not in oex_import_rhel_streams.stderr and oex_import_rhel_streams.rc != 0" +  changed_when: false + +- name: Import Centos Image streams +  command: > +    {{ openshift.common.client_binary }} create -n openshift -f {{ centos_image_streams }} +  when: openshift_examples_load_centos | bool +  register: oex_import_centos_streams +  failed_when: "'already exists' not in oex_import_centos_streams.stderr and oex_import_centos_streams.rc != 0" +  changed_when: false + +- name: Import db templates +  command: > +    {{ openshift.common.client_binary }} create -n openshift -f {{ db_templates_base }} +  when: openshift_examples_load_db_templates | bool +  register: oex_import_db_templates +  failed_when: "'already exists' not in oex_import_db_templates.stderr and oex_import_db_templates.rc != 0" +  changed_when: false + +- name: Import quickstart-templates +  command: > +    {{ openshift.common.client_binary }} create -n openshift -f {{ quickstarts_base }} +  when: openshift_examples_load_quickstarts +  register: oex_import_quickstarts +  failed_when: "'already exists' not in oex_import_quickstarts.stderr and oex_import_quickstarts.rc != 0" +  changed_when: false + + +- name: Import xPaas image streams +  command: > +    {{ openshift.common.client_binary }} create -n openshift -f {{ xpaas_image_streams }} +  when: openshift_examples_load_xpaas | bool +  register: oex_import_xpaas_streams +  failed_when: "'already exists' not in oex_import_xpaas_streams.stderr and oex_import_xpaas_streams.rc != 0" +  changed_when: false + +- name: Import xPaas templates +  command: > +    {{ openshift.common.client_binary }} create -n openshift -f {{ xpaas_templates_base }} +  when: openshift_examples_load_xpaas | bool +  register: oex_import_xpaas_templates +  failed_when: "'already exists' not in oex_import_xpaas_templates.stderr and oex_import_xpaas_templates.rc != 0" +  changed_when: false diff --git a/roles/openshift_expand_partition/README.md b/roles/openshift_expand_partition/README.md new file mode 100644 index 000000000..cd394e1ba --- /dev/null +++ b/roles/openshift_expand_partition/README.md @@ -0,0 +1,87 @@ +# openshift_expand_partition + +This role is useful to expand a partition, and it's file system to +fully utilize the disk it is on.  It does this by first expanding the +partition, and then expanding the file system on the partition. + +## Requirements + +* A machine with a disk that is not fully utilized + +* cloud-utils-growpart rpm (either installed or avialable via yum) + +* The partition you are expanding needs to be at the end of the partition list + +## Role Variables + +``` +# The following variables are if you want to expand +#   /dev/xvda3 that has a filesystem xfs + +# oep_drive +# Drive that has the partition we wish to expand. +oep_drive: "/dev/xvda" + +# oep_partition +# Partition that we wish to expand. +oep_partition: 3 + +# oep_file_system +# What file system is on the partition +#   Currently only xfs, and ext(2,3,4) are supported +#   For ext2, ext3, or ext4 just use ext +oep_file_system: "xfs" + +``` + +## Dependencies + +growpart + +## Example Playbook + +With this playbook, the partition /dev/xvda3 will expand to fill the free +space on /dev/xvda, and the file system will be expanded to fill the new +partition space. + +    - hosts: mynodes +      sudo: no +      remote_user: root +      gather_facts: no +      roles: +        - role: openshift_expand_partition +          oep_drive: "/dev/xvda" +          oep_partition: 3 +          oep_file_system: "xfs" + + +## Full example + + +* Create an `inventory` file: +    ``` +    [mynodes] +    10.0.0.1 +    10.0.0.2 +    ``` + +* Create an ansible playbook, say `expandvar.yaml`: +    ``` +    - hosts: mynodes +      sudo: no +      remote_user: root +      gather_facts: no +      roles: +        - role: openshift_expand_partition +          oep_drive: "/dev/xvda" +          oep_partition: 3 +          oep_file_system: "xfs" + +* Run the playbook: +    ``` +    ansible-playbook -i inventory expandvar.yml +    ``` + +## License + +Apache 2.0 diff --git a/roles/openshift_expand_partition/defaults/main.yml b/roles/openshift_expand_partition/defaults/main.yml new file mode 100644 index 000000000..cce9bd951 --- /dev/null +++ b/roles/openshift_expand_partition/defaults/main.yml @@ -0,0 +1,18 @@ +--- +# oep_drive +# Drive that has the partition we wish to expand. +oep_drive: "/dev/xvda" + +# oep_partition +# Partition that we wish to expand. +oep_partition: 3 + +# oep_partition_mount_point +# Where the partition is mounted +oep_partition_mount_point: /var + +# oep_file_system +# What file system is on the partition +#   Currently only xfs, and ext(2,3,4) are supported +#   For ext2, ext3, or ext4 just use ext +oep_file_system: "xfs" diff --git a/roles/openshift_expand_partition/meta/main.yml b/roles/openshift_expand_partition/meta/main.yml new file mode 100644 index 000000000..c2a38be17 --- /dev/null +++ b/roles/openshift_expand_partition/meta/main.yml @@ -0,0 +1,17 @@ +--- +galaxy_info: +  author: Troy Dawson +  description: Expand partition and filesystem to fill free space on disks. +  company: Red Hat, Inc. +  license: license (Apache) +  min_ansible_version: 1.4 +  platforms: +  - name: EL +    versions: +    - 7 +  - name: Fedora +    versions: +    - all +  categories: +    - openshift +    - cloud diff --git a/roles/openshift_expand_partition/tasks/main.yml b/roles/openshift_expand_partition/tasks/main.yml new file mode 100644 index 000000000..8bc399070 --- /dev/null +++ b/roles/openshift_expand_partition/tasks/main.yml @@ -0,0 +1,14 @@ +--- +- name: Ensure growpart is installed +  yum: pkg=cloud-utils-growpart state=present + +- name: Grow the partitions +  command: "growpart {{oep_drive}} {{oep_partition}}" + +- name: Expand the filesystem - xfs +  command: "xfs_growfs {{oep_drive}}{{oep_partition}}" +  when: oep_file_system == "xfs" + +- name: Expand the filesystem - ext(2,3,4) +  command: "resize2fs {{oep_drive}}{{oep_partition}}" +  when: oep_file_system == "ext" diff --git a/roles/openshift_facts/library/openshift_facts.py b/roles/openshift_facts/library/openshift_facts.py index 1b789ca89..ca5ea1da0 100755 --- a/roles/openshift_facts/library/openshift_facts.py +++ b/roles/openshift_facts/library/openshift_facts.py @@ -487,7 +487,7 @@ def get_current_config(facts):                  current_config['kubeconfig'] = config              # override pylint broad-except warning, since we do not want -            # to bubble up any exceptions if openshift ex config view +            # to bubble up any exceptions if oc config view              # fails              # pylint: disable=broad-except              except Exception: diff --git a/roles/openshift_manage_node/tasks/main.yml b/roles/openshift_manage_node/tasks/main.yml new file mode 100644 index 000000000..d4c623f10 --- /dev/null +++ b/roles/openshift_manage_node/tasks/main.yml @@ -0,0 +1,11 @@ +- name: Handle unscheduleable node +  delegate_to: "{{ openshift_first_master }}" +  command: > +    {{ openshift.common.admin_binary }} manage-node {{ item }} --schedulable=false +  with_items: openshift_unscheduleable_nodes + +- name: Handle scheduleable node +  delegate_to: "{{ openshift_first_master }}" +  command: > +    {{ openshift.common.admin_binary }} manage-node {{ item }} --schedulable=true +  with_items: openshift_scheduleable_nodes diff --git a/roles/openshift_master/templates/master.yaml.v1.j2 b/roles/openshift_master/templates/master.yaml.v1.j2 index 9df07e925..3b8b18c39 100644 --- a/roles/openshift_master/templates/master.yaml.v1.j2 +++ b/roles/openshift_master/templates/master.yaml.v1.j2 @@ -100,6 +100,8 @@ projectConfig:      mcsAllocatorRange: s0:/2      mcsLabelsPerProject: 5      uidAllocatorRange: 1000000000-1999999999/10000 +routingConfig: +  subdomain: router.default.local  serviceAccountConfig:    managedNames:    - default @@ -113,5 +115,5 @@ servingInfo:    certFile: master.server.crt    clientCA: ca.crt    keyFile: master.server.key -  maxRequestsInFlight: 0 -  requestTimeoutSeconds: 0 +  maxRequestsInFlight: 500 +  requestTimeoutSeconds: 3600 diff --git a/roles/openshift_registry/README.md b/roles/openshift_registry/README.md index 202c818b8..ec3b4a10b 100644 --- a/roles/openshift_registry/README.md +++ b/roles/openshift_registry/README.md @@ -12,11 +12,13 @@ Role Variables  --------------  From this role: +  | Name               | Default value                                         |                     |  |--------------------|-------------------------------------------------------|---------------------|  |                    |                                                       |                     |  From openshift_common: +  | Name                  | Default value |                                      |  |-----------------------|---------------|--------------------------------------|  | openshift_debug_level | 0             | Global openshift debug log verbosity | diff --git a/roles/openshift_storage_nfs_lvm/README.md b/roles/openshift_storage_nfs_lvm/README.md new file mode 100644 index 000000000..1ee02e18a --- /dev/null +++ b/roles/openshift_storage_nfs_lvm/README.md @@ -0,0 +1,108 @@ +# openshift_storage_nfs_lvm + +This role is useful to create and export nfs disks for openshift persistent volumes. +It does so by creating lvm partitions on an already setup pv/vg, creating xfs  +filesystem on each partition, mounting the partitions, exporting the mounts via NFS +and creating a json file for each mount that an openshift master can use to +create persistent volumes. + +## Requirements + +* NFS server with NFS, iptables, and everything setup. + +* A lvm volume group created on the nfs server (default: openshiftvg) + +* The lvm volume needs to have as much free space as you are allocating + +## Role Variables + +``` +# Options of NFS exports. +osnl_nfs_export_options: "*(rw,sync,all_squash)" + +# Directory, where the created partitions should be mounted. They will be +# mounted as <osnl_mount_dir>/<lvm volume name>  +osnl_mount_dir: /exports/openshift + +# Volume Group to use. +# This role always assumes that there is enough free space on the volume +#   group for all the partitions you will be making +osnl_volume_group: openshiftvg + +# volume names +# volume names are {{osnl_volume_prefix}}{{osnl_volume_size}}g{{volume number}} +#   example: stg5g0004 + +# osnl_volume_prefix +# Useful if you are using the nfs server for more than one cluster +osnl_volume_prefix: "stg" + +# osnl_volume_size +# Size of the volumes/partitions in Gigabytes. +osnl_volume_size: 5 + +# osnl_volume_num_start +# Where to start the volume number numbering. +osnl_volume_num_start: 3 + +# osnl_number_of_volumes +# How many volumes/partitions to build, with the size we stated. +osnl_number_of_volumes: 2 + +``` + +## Dependencies + +None + +## Example Playbook + +With this playbook, 2 5Gig lvm partitions are created, named stg5g0003 and stg5g0004 +Both of them are mounted into `/exports/openshift` directory.  Both directories are  +exported via NFS.  json files are created in /root. + +    - hosts: nfsservers +      sudo: no +      remote_user: root +      gather_facts: no +      roles: +        - role: openshift_storage_nfs_lvm +          osnl_mount_dir: /exports/openshift +          osnl_volume_prefix: "stg" +          osnl_volume_size: 5 +          osnl_volume_num_start: 3 +          osnl_number_of_volumes: 2 + + +## Full example + + +* Create an `inventory` file: +    ``` +    [nfsservers] +    10.0.0.1 +    10.0.0.2 +    ``` + +* Create an ansible playbook, say `setupnfs.yaml`: +    ``` +    - hosts: nfsservers +      sudo: no +      remote_user: root +      gather_facts: no +      roles: +        - role: openshift_storage_nfs_lvm +          osnl_mount_dir: /exports/stg +          osnl_volume_prefix: "stg" +          osnl_volume_size: 5 +          osnl_volume_num_start: 3 +          osnl_number_of_volumes: 2 + +* Run the playbook: +    ``` +    ansible-playbook -i inventory setupnfs.yml +    ``` + +## License + +Apache 2.0 diff --git a/roles/openshift_storage_nfs_lvm/defaults/main.yml b/roles/openshift_storage_nfs_lvm/defaults/main.yml new file mode 100644 index 000000000..f81cdc724 --- /dev/null +++ b/roles/openshift_storage_nfs_lvm/defaults/main.yml @@ -0,0 +1,10 @@ +--- +# Options of NFS exports. +osnl_nfs_export_options: "*(rw,sync,all_squash)" + +# Directory, where the created partitions should be mounted. They will be +# mounted as <osnl_mount_dir>/test1g0001 etc. +osnl_mount_dir: /exports/openshift + +# Volume Group to use. +osnl_volume_group: openshiftvg diff --git a/roles/openshift_storage_nfs_lvm/handlers/main.yml b/roles/openshift_storage_nfs_lvm/handlers/main.yml new file mode 100644 index 000000000..52f3ceffe --- /dev/null +++ b/roles/openshift_storage_nfs_lvm/handlers/main.yml @@ -0,0 +1,3 @@ +--- +- name: restart nfs +  service: name=nfs-server state=restarted diff --git a/roles/openshift_storage_nfs_lvm/meta/main.yml b/roles/openshift_storage_nfs_lvm/meta/main.yml new file mode 100644 index 000000000..44fee47ff --- /dev/null +++ b/roles/openshift_storage_nfs_lvm/meta/main.yml @@ -0,0 +1,16 @@ +--- +galaxy_info: +  author: Jan Safranek, Troy Dawson +  description: Create LVM volumes and use them as openshift persistent volumes. +  company: Red Hat, Inc. +  license: license (Apache) +  min_ansible_version: 1.4 +  platforms: +  - name: EL +    versions: +    - 7 +  - name: Fedora +    versions: +    - all +  categories: +    - openshift diff --git a/roles/openshift_storage_nfs_lvm/tasks/main.yml b/roles/openshift_storage_nfs_lvm/tasks/main.yml new file mode 100644 index 000000000..e9f5814bb --- /dev/null +++ b/roles/openshift_storage_nfs_lvm/tasks/main.yml @@ -0,0 +1,24 @@ +--- +- name: Create lvm volumes +  lvol: vg={{osnl_volume_group}} lv={{ item }} size={{osnl_volume_size}}G +  with_sequence: start={{osnl_volume_num_start}} count={{osnl_number_of_volumes}} format={{osnl_volume_prefix}}{{osnl_volume_size}}g%04d + +- name: create filesystem +  filesystem: fstype=xfs dev=/dev/{{osnl_volume_group}}/{{ item }} +  with_sequence: start={{osnl_volume_num_start}} count={{osnl_number_of_volumes}} format={{osnl_volume_prefix}}{{osnl_volume_size}}g%04d + +- name: mount volumes +  mount: name={{osnl_mount_dir}}/{{ item }} src=/dev/{{osnl_volume_group}}/{{ item }} state=mounted fstype=xfs passno=0 +  with_sequence: start={{osnl_volume_num_start}} count={{osnl_number_of_volumes}} format={{osnl_volume_prefix}}{{osnl_volume_size}}g%04d + +- name: Make mounts owned by nfsnobody +  file: path={{osnl_mount_dir}}/{{ item }} owner=nfsnobody group=nfsnobody mode=0700 +  with_sequence: start={{osnl_volume_num_start}} count={{osnl_number_of_volumes}} format={{osnl_volume_prefix}}{{osnl_volume_size}}g%04d + +- include: nfs.yml + +- name: Create volume json file +  template: src=../templates/nfs.json.j2 dest=/root/persistent-volume.{{ item }}.json +  with_sequence: start={{osnl_volume_num_start}} count={{osnl_number_of_volumes}} format={{osnl_volume_prefix}}{{osnl_volume_size}}g%04d + +# TODO - Get the json files to an openshift-master, and load them.
\ No newline at end of file diff --git a/roles/openshift_storage_nfs_lvm/tasks/nfs.yml b/roles/openshift_storage_nfs_lvm/tasks/nfs.yml new file mode 100644 index 000000000..65ae069df --- /dev/null +++ b/roles/openshift_storage_nfs_lvm/tasks/nfs.yml @@ -0,0 +1,16 @@ +--- +- name: Install NFS server +  yum: name=nfs-utils state=present + +- name: Start rpcbind +  service: name=rpcbind state=started enabled=yes + +- name: Start nfs +  service: name=nfs-server state=started enabled=yes + +- name: Export the directories +  lineinfile: dest=/etc/exports +              regexp="^{{ osnl_mount_dir }}/{{ item }} " +              line="{{ osnl_mount_dir }}/{{ item }} {{osnl_nfs_export_options}}" +  with_sequence: start={{osnl_volume_num_start}} count={{osnl_number_of_volumes}} format={{osnl_volume_prefix}}{{osnl_volume_size}}g%04d +  notify: restart nfs diff --git a/roles/openshift_storage_nfs_lvm/templates/nfs.json.j2 b/roles/openshift_storage_nfs_lvm/templates/nfs.json.j2 new file mode 100644 index 000000000..0f3d84e75 --- /dev/null +++ b/roles/openshift_storage_nfs_lvm/templates/nfs.json.j2 @@ -0,0 +1,21 @@ +{ +  "apiVersion": "v1", +  "kind": "PersistentVolume", +  "metadata": { +    "name": "pv-{{ inventory_hostname | regex_replace("\.", "-")  }}-{{ item }}", +    "labels": { +      "type": "nfs" +    } +  }, +  "spec": { +    "capacity": { +      "storage": "{{ osnl_volume_size }}Gi" +    }, +    "accessModes": [ "ReadWriteMany" ], +    "persistentVolumeReclaimPolicy": "Recycle", +    "nfs": { +      "Server": "{{ inventory_hostname }}", +      "Path": "{{ osnl_mount_dir }}/{{ item }}" +    } +  } +}  | 
