diff options
Diffstat (limited to 'roles')
132 files changed, 6341 insertions, 2260 deletions
diff --git a/roles/cockpit/defaults/main.yml b/roles/cockpit/defaults/main.yml new file mode 100644 index 000000000..ffd55f1dd --- /dev/null +++ b/roles/cockpit/defaults/main.yml @@ -0,0 +1,5 @@ +--- +os_firewall_use_firewalld: false +os_firewall_allow: +- service: cockpit-ws + port: 9090/tcp diff --git a/roles/cockpit/meta/main.yml b/roles/cockpit/meta/main.yml new file mode 100644 index 000000000..1e3948b19 --- /dev/null +++ b/roles/cockpit/meta/main.yml @@ -0,0 +1,15 @@ +--- +galaxy_info: + author: Scott Dodson + description: Deploy and Enable cockpit-ws plus optional plugins + company: Red Hat, Inc. + license: Apache License, Version 2.0 + min_ansible_version: 1.7 + platforms: + - name: EL + versions: + - 7 + categories: + - cloud +dependencies: + - { role: os_firewall } diff --git a/roles/cockpit/tasks/main.yml b/roles/cockpit/tasks/main.yml new file mode 100644 index 000000000..875cbad21 --- /dev/null +++ b/roles/cockpit/tasks/main.yml @@ -0,0 +1,16 @@ +--- +- name: Install cockpit-ws + yum: + name: "{{ item }}" + state: present + with_items: + - cockpit-ws + - cockpit-shell + - cockpit-bridge + - "{{ cockpit_plugins }}" + +- name: Enable cockpit-ws + service: + name: cockpit.socket + enabled: true + state: started diff --git a/roles/etcd/README.md b/roles/etcd/README.md index 49207c428..88e4ff874 100644 --- a/roles/etcd/README.md +++ b/roles/etcd/README.md @@ -17,7 +17,7 @@ TODO Dependencies ------------ -None +etcd-common Example Playbook ---------------- diff --git a/roles/etcd/defaults/main.yaml b/roles/etcd/defaults/main.yaml index 0f216b84e..0fd3de585 100644 --- a/roles/etcd/defaults/main.yaml +++ b/roles/etcd/defaults/main.yaml @@ -2,16 +2,8 @@ etcd_interface: "{{ ansible_default_ipv4.interface }}" etcd_client_port: 2379 etcd_peer_port: 2380 -etcd_peers_group: etcd etcd_url_scheme: http etcd_peer_url_scheme: http -etcd_conf_dir: /etc/etcd -etcd_ca_file: "{{ etcd_conf_dir }}/ca.crt" -etcd_cert_file: "{{ etcd_conf_dir }}/server.crt" -etcd_key_file: "{{ etcd_conf_dir }}/server.key" -etcd_peer_ca_file: "{{ etcd_conf_dir }}/ca.crt" -etcd_peer_cert_file: "{{ etcd_conf_dir }}/peer.crt" -etcd_peer_key_file: "{{ etcd_conf_dir }}/peer.key" etcd_initial_cluster_state: new etcd_initial_cluster_token: etcd-cluster-1 diff --git a/roles/etcd/handlers/main.yml b/roles/etcd/handlers/main.yml index b897913f9..4c0efb97b 100644 --- a/roles/etcd/handlers/main.yml +++ b/roles/etcd/handlers/main.yml @@ -1,3 +1,4 @@ --- - name: restart etcd service: name=etcd state=restarted + when: not etcd_service_status_changed | default(false) diff --git a/roles/etcd/meta/main.yml b/roles/etcd/meta/main.yml index 92d44ef4d..a71b36237 100644 --- a/roles/etcd/meta/main.yml +++ b/roles/etcd/meta/main.yml @@ -17,4 +17,4 @@ galaxy_info: - system dependencies: - { role: os_firewall } -- { role: openshift_repos } +- { role: etcd_common } diff --git a/roles/etcd/tasks/main.yml b/roles/etcd/tasks/main.yml index 656901409..fcbdecd37 100644 --- a/roles/etcd/tasks/main.yml +++ b/roles/etcd/tasks/main.yml @@ -1,4 +1,12 @@ --- +- fail: + msg: Interface {{ etcd_interface }} not found + when: "'ansible_' ~ etcd_interface not in hostvars[inventory_hostname]" + +- fail: + msg: IPv4 address not found for {{ etcd_interface }} + when: "'ipv4' not in hostvars[inventory_hostname]['ansible_' ~ etcd_interface] or 'address' not in hostvars[inventory_hostname]['ansible_' ~ etcd_interface].ipv4" + - name: Install etcd yum: pkg=etcd-2.* state=present @@ -49,5 +57,5 @@ enabled: yes register: start_result -- pause: seconds=30 - when: start_result | changed +- set_fact: + etcd_service_status_changed = start_result | changed diff --git a/roles/etcd/templates/etcd.conf.j2 b/roles/etcd/templates/etcd.conf.j2 index 9ac23b1dd..32577c96c 100644 --- a/roles/etcd/templates/etcd.conf.j2 +++ b/roles/etcd/templates/etcd.conf.j2 @@ -1,9 +1,9 @@ {% macro initial_cluster() -%} {% for host in groups[etcd_peers_group] -%} {% if loop.last -%} -{{ host }}={{ etcd_peer_url_scheme }}://{{ hostvars[host]['ansible_' + etcd_interface]['ipv4']['address'] }}:{{ etcd_peer_port }} +{{ host }}={{ etcd_peer_url_scheme }}://{{ etcd_host_int_map[host].interface.ipv4.address }}:{{ etcd_peer_port }} {%- else -%} -{{ host }}={{ etcd_peer_url_scheme }}://{{ hostvars[host]['ansible_' + etcd_interface]['ipv4']['address'] }}:{{ etcd_peer_port }}, +{{ host }}={{ etcd_peer_url_scheme }}://{{ etcd_host_int_map[host].interface.ipv4.address }}:{{ etcd_peer_port }}, {%- endif -%} {% endfor -%} {% endmacro -%} diff --git a/roles/etcd_ca/meta/main.yml b/roles/etcd_ca/meta/main.yml index fb9280c9e..d02456ca3 100644 --- a/roles/etcd_ca/meta/main.yml +++ b/roles/etcd_ca/meta/main.yml @@ -13,4 +13,4 @@ galaxy_info: - cloud - system dependencies: -- { role: openshift_repos } +- { role: etcd_common } diff --git a/roles/etcd_ca/tasks/main.yml b/roles/etcd_ca/tasks/main.yml index 625756867..d32f5e48c 100644 --- a/roles/etcd_ca/tasks/main.yml +++ b/roles/etcd_ca/tasks/main.yml @@ -1,14 +1,14 @@ --- - file: - path: "{{ etcd_ca_dir }}/{{ item }}" + path: "{{ item }}" state: directory mode: 0700 owner: root group: root with_items: - - certs - - crl - - fragments + - "{{ etcd_ca_new_certs_dir }}" + - "{{ etcd_ca_crl_dir }}" + - "{{ etcd_ca_dir }}/fragments" - command: cp /etc/pki/tls/openssl.cnf ./ args: @@ -22,25 +22,25 @@ - assemble: src: "{{ etcd_ca_dir }}/fragments" - dest: "{{ etcd_ca_dir }}/openssl.cnf" + dest: "{{ etcd_openssl_conf }}" -- command: touch index.txt +- command: touch {{ etcd_ca_db }} args: - chdir: "{{ etcd_ca_dir }}" - creates: "{{ etcd_ca_dir }}/index.txt" + creates: "{{ etcd_ca_db }}" - copy: - dest: "{{ etcd_ca_dir }}/serial" + dest: "{{ etcd_ca_serial }}" content: "01" force: no - command: > - openssl req -config openssl.cnf -newkey rsa:4096 - -keyout ca.key -new -out ca.crt -x509 -extensions etcd_v3_ca_self - -batch -nodes -subj /CN=etcd-signer@{{ ansible_date_time.epoch }} - -days 365 + openssl req -config {{ etcd_openssl_conf }} -newkey rsa:4096 + -keyout {{ etcd_ca_key }} -new -out {{ etcd_ca_cert }} + -x509 -extensions {{ etcd_ca_exts_self }} -batch -nodes + -days {{ etcd_ca_default_days }} + -subj /CN=etcd-signer@{{ ansible_date_time.epoch }} args: chdir: "{{ etcd_ca_dir }}" - creates: "{{ etcd_ca_dir }}/ca.crt" + creates: "{{ etcd_ca_cert }}" environment: - SAN: '' + SAN: 'etcd-signer' diff --git a/roles/etcd_ca/templates/openssl_append.j2 b/roles/etcd_ca/templates/openssl_append.j2 index de2adaead..f28316fc2 100644 --- a/roles/etcd_ca/templates/openssl_append.j2 +++ b/roles/etcd_ca/templates/openssl_append.j2 @@ -1,20 +1,20 @@ -[ etcd_v3_req ] +[ {{ etcd_req_ext }} ] basicConstraints = critical,CA:FALSE keyUsage = digitalSignature,keyEncipherment subjectAltName = ${ENV::SAN} -[ etcd_ca ] +[ {{ etcd_ca_name }} ] dir = {{ etcd_ca_dir }} -crl_dir = $dir/crl -database = $dir/index.txt -new_certs_dir = $dir/certs -certificate = $dir/ca.crt -serial = $dir/serial -private_key = $dir/ca.key -crl_number = $dir/crlnumber -x509_extensions = etcd_v3_ca_client -default_days = 365 +crl_dir = {{ etcd_ca_crl_dir }} +database = {{ etcd_ca_db }} +new_certs_dir = {{ etcd_ca_new_certs_dir }} +certificate = {{ etcd_ca_cert }} +serial = {{ etcd_ca_serial }} +private_key = {{ etcd_ca_key }} +crl_number = {{ etcd_ca_crl_number }} +x509_extensions = {{ etcd_ca_exts_client }} +default_days = {{ etcd_ca_default_days }} default_md = sha256 preserve = no name_opt = ca_default @@ -23,27 +23,27 @@ policy = policy_anything unique_subject = no copy_extensions = copy -[ etcd_v3_ca_self ] +[ {{ etcd_ca_exts_self }} ] authorityKeyIdentifier = keyid,issuer basicConstraints = critical,CA:TRUE,pathlen:0 keyUsage = critical,digitalSignature,keyEncipherment,keyCertSign subjectKeyIdentifier = hash -[ etcd_v3_ca_peer ] +[ {{ etcd_ca_exts_peer }} ] authorityKeyIdentifier = keyid,issuer:always basicConstraints = critical,CA:FALSE extendedKeyUsage = clientAuth,serverAuth keyUsage = digitalSignature,keyEncipherment subjectKeyIdentifier = hash -[ etcd_v3_ca_server ] +[ {{ etcd_ca_exts_server }} ] authorityKeyIdentifier = keyid,issuer:always basicConstraints = critical,CA:FALSE extendedKeyUsage = serverAuth keyUsage = digitalSignature,keyEncipherment subjectKeyIdentifier = hash -[ etcd_v3_ca_client ] +[ {{ etcd_ca_exts_client }} ] authorityKeyIdentifier = keyid,issuer:always basicConstraints = critical,CA:FALSE extendedKeyUsage = clientAuth diff --git a/roles/etcd_ca/vars/main.yml b/roles/etcd_ca/vars/main.yml deleted file mode 100644 index 901e95027..000000000 --- a/roles/etcd_ca/vars/main.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -etcd_conf_dir: /etc/etcd -etcd_ca_dir: /etc/etcd/ca diff --git a/roles/etcd_certificates/tasks/client.yml b/roles/etcd_certificates/tasks/client.yml index 28f33f442..6aa4883e0 100644 --- a/roles/etcd_certificates/tasks/client.yml +++ b/roles/etcd_certificates/tasks/client.yml @@ -32,7 +32,7 @@ creates: "{{ etcd_generated_certs_dir ~ '/' ~ item.etcd_cert_subdir ~ '/' ~ item.etcd_cert_prefix ~ 'client.crt' }}" environment: - SAN: '' + SAN: "IP:{{ item.openshift.common.ip }}" with_items: etcd_needing_client_certs - file: diff --git a/roles/etcd_certificates/tasks/main.yml b/roles/etcd_certificates/tasks/main.yml index da875e8ea..3bb715943 100644 --- a/roles/etcd_certificates/tasks/main.yml +++ b/roles/etcd_certificates/tasks/main.yml @@ -4,6 +4,3 @@ - include: server.yml when: etcd_needing_server_certs is defined and etcd_needing_server_certs - - - diff --git a/roles/etcd_certificates/tasks/server.yml b/roles/etcd_certificates/tasks/server.yml index 727b7fa2c..3499dcbef 100644 --- a/roles/etcd_certificates/tasks/server.yml +++ b/roles/etcd_certificates/tasks/server.yml @@ -18,7 +18,7 @@ creates: "{{ etcd_generated_certs_dir ~ '/' ~ item.etcd_cert_subdir ~ '/' ~ item.etcd_cert_prefix ~ 'server.csr' }}" environment: - SAN: "IP:{{ item.openshift.common.ip }}" + SAN: "IP:{{ etcd_host_int_map[item.inventory_hostname].interface.ipv4.address }}" with_items: etcd_needing_server_certs - name: Sign and create the server crt @@ -32,7 +32,7 @@ creates: "{{ etcd_generated_certs_dir ~ '/' ~ item.etcd_cert_subdir ~ '/' ~ item.etcd_cert_prefix ~ 'server.crt' }}" environment: - SAN: '' + SAN: "IP:{{ etcd_host_int_map[item.inventory_hostname].interface.ipv4.address }}" with_items: etcd_needing_server_certs - name: Create the peer csr @@ -47,7 +47,7 @@ creates: "{{ etcd_generated_certs_dir ~ '/' ~ item.etcd_cert_subdir ~ '/' ~ item.etcd_cert_prefix ~ 'peer.csr' }}" environment: - SAN: "IP:{{ item.openshift.common.ip }}" + SAN: "IP:{{ etcd_host_int_map[item.inventory_hostname].interface.ipv4.address }}" with_items: etcd_needing_server_certs - name: Sign and create the peer crt @@ -61,7 +61,7 @@ creates: "{{ etcd_generated_certs_dir ~ '/' ~ item.etcd_cert_subdir ~ '/' ~ item.etcd_cert_prefix ~ 'peer.crt' }}" environment: - SAN: '' + SAN: "IP:{{ etcd_host_int_map[item.inventory_hostname].interface.ipv4.address }}" with_items: etcd_needing_server_certs - file: @@ -69,5 +69,3 @@ dest: "{{ etcd_generated_certs_dir}}/{{ item.etcd_cert_subdir }}/{{ item.etcd_cert_prefix }}ca.crt" state: hard with_items: etcd_needing_server_certs - - diff --git a/roles/etcd_certificates/vars/main.yml b/roles/etcd_certificates/vars/main.yml deleted file mode 100644 index 0eaeeb82b..000000000 --- a/roles/etcd_certificates/vars/main.yml +++ /dev/null @@ -1,11 +0,0 @@ ---- -etcd_conf_dir: /etc/etcd -etcd_ca_dir: /etc/etcd/ca -etcd_generated_certs_dir: /etc/etcd/generated_certs -etcd_ca_cert: "{{ etcd_ca_dir }}/ca.crt" -etcd_ca_key: "{{ etcd_ca_dir }}/ca.key" -etcd_openssl_conf: "{{ etcd_ca_dir }}/openssl.cnf" -etcd_ca_name: etcd_ca -etcd_req_ext: etcd_v3_req -etcd_ca_exts_peer: etcd_v3_ca_peer -etcd_ca_exts_server: etcd_v3_ca_server diff --git a/roles/etcd_common/README.md b/roles/etcd_common/README.md new file mode 100644 index 000000000..131a01490 --- /dev/null +++ b/roles/etcd_common/README.md @@ -0,0 +1,34 @@ +etcd_common +======================== + +TODO + +Requirements +------------ + +TODO + +Role Variables +-------------- + +TODO + +Dependencies +------------ + +openshift-repos + +Example Playbook +---------------- + +TODO + +License +------- + +Apache License Version 2.0 + +Author Information +------------------ + +Jason DeTiberus (jdetiber@redhat.com) diff --git a/roles/etcd_common/defaults/main.yml b/roles/etcd_common/defaults/main.yml new file mode 100644 index 000000000..96f4b63af --- /dev/null +++ b/roles/etcd_common/defaults/main.yml @@ -0,0 +1,30 @@ +--- +etcd_peers_group: etcd + +# etcd server vars +etcd_conf_dir: /etc/etcd +etcd_ca_file: "{{ etcd_conf_dir }}/ca.crt" +etcd_cert_file: "{{ etcd_conf_dir }}/server.crt" +etcd_key_file: "{{ etcd_conf_dir }}/server.key" +etcd_peer_ca_file: "{{ etcd_conf_dir }}/ca.crt" +etcd_peer_cert_file: "{{ etcd_conf_dir }}/peer.crt" +etcd_peer_key_file: "{{ etcd_conf_dir }}/peer.key" + +# etcd ca vars +etcd_ca_dir: "{{ etcd_conf_dir}}/ca" +etcd_generated_certs_dir: "{{ etcd_conf_dir }}/generated_certs" +etcd_ca_cert: "{{ etcd_ca_dir }}/ca.crt" +etcd_ca_key: "{{ etcd_ca_dir }}/ca.key" +etcd_openssl_conf: "{{ etcd_ca_dir }}/openssl.cnf" +etcd_ca_name: etcd_ca +etcd_req_ext: etcd_v3_req +etcd_ca_exts_peer: etcd_v3_ca_peer +etcd_ca_exts_server: etcd_v3_ca_server +etcd_ca_exts_self: etcd_v3_ca_self +etcd_ca_exts_client: etcd_v3_ca_client +etcd_ca_crl_dir: "{{ etcd_ca_dir }}/crl" +etcd_ca_new_certs_dir: "{{ etcd_ca_dir }}/certs" +etcd_ca_db: "{{ etcd_ca_dir }}/index.txt" +etcd_ca_serial: "{{ etcd_ca_dir }}/serial" +etcd_ca_crl_number: "{{ etcd_ca_dir }}/crlnumber" +etcd_ca_default_days: 365 diff --git a/roles/etcd_common/meta/main.yml b/roles/etcd_common/meta/main.yml new file mode 100644 index 000000000..fb9280c9e --- /dev/null +++ b/roles/etcd_common/meta/main.yml @@ -0,0 +1,16 @@ +--- +galaxy_info: + author: Jason DeTiberus + description: + company: Red Hat, Inc. + license: Apache License, Version 2.0 + min_ansible_version: 1.9 + platforms: + - name: EL + versions: + - 7 + categories: + - cloud + - system +dependencies: +- { role: openshift_repos } diff --git a/roles/etcd_common/tasks/main.yml b/roles/etcd_common/tasks/main.yml new file mode 100644 index 000000000..cd108495d --- /dev/null +++ b/roles/etcd_common/tasks/main.yml @@ -0,0 +1,13 @@ +--- +- set_fact: + etcd_host_int_map: "{{ lookup('template', '../templates/host_int_map.j2') | from_yaml }}" + +- fail: + msg: "Interface {{ item.value.etcd_interface }} not found on host {{ item.key }}" + when: "'etcd_interface' in item.value and 'interface' not in item.value" + with_dict: etcd_host_int_map + +- fail: + msg: IPv4 address not found for {{ item.value.interface.device }} on host {{ item.key }} + when: "'ipv4' not in item.value.interface or 'address' not in item.value.interface.ipv4" + with_dict: etcd_host_int_map diff --git a/roles/etcd_common/templates/host_int_map.j2 b/roles/etcd_common/templates/host_int_map.j2 new file mode 100644 index 000000000..9c9c76413 --- /dev/null +++ b/roles/etcd_common/templates/host_int_map.j2 @@ -0,0 +1,13 @@ +--- +{% for host in groups[etcd_peers_group] %} +{% set entry=hostvars[host] %} +{{ entry.inventory_hostname }}: +{% if 'etcd_interface' in entry %} + etcd_interface: {{ entry.etcd_interface }} +{% if entry.etcd_interface in entry.ansible_interfaces %} + interface: {{ entry['ansible_' ~ entry.etcd_interface] | to_json }} +{% endif %} +{% else %} + interface: {{ entry['ansible_' ~ entry.ansible_default_ipv4.interface] | to_json }} +{% endif %} +{% endfor %} diff --git a/roles/flannel/README.md b/roles/flannel/README.md new file mode 100644 index 000000000..b8aa830ac --- /dev/null +++ b/roles/flannel/README.md @@ -0,0 +1,45 @@ +Role Name +========= + +Configure flannel on openshift nodes + +Requirements +------------ + +This role assumes it's being deployed on a RHEL/Fedora based host with package +named 'flannel' available via yum, in version superior to 0.3. + +Role Variables +-------------- + +| Name | Default value | Description | +|---------------------|-----------------------------------------|-----------------------------------------------| +| flannel_interface | ansible_default_ipv4.interface | interface to use for inter-host communication | +| flannel_etcd_key | /openshift.com/network | etcd prefix | +| etcd_hosts | etcd_urls | a list of etcd endpoints | +| etcd_conf_dir | {{ openshift.common.config_base }}/node | SSL certificates directory | +| etcd_peer_ca_file | {{ etcd_conf_dir }}/ca.crt | SSL CA to use for etcd | +| etcd_peer_cert_file | Openshift SSL cert | SSL cert to use for etcd | +| etcd_peer_key_file | Openshift SSL key | SSL key to use for etcd | + +Dependencies +------------ + +openshift_facts + +Example Playbook +---------------- + + - hosts: openshift_node + roles: + - { role: flannel, etcd_urls: ['https://127.0.0.1:2379'] } + +License +------- + +Apache License, Version 2.0 + +Author Information +------------------ + +Sylvain Baubeau <sbaubeau@redhat.com> diff --git a/roles/flannel/defaults/main.yaml b/roles/flannel/defaults/main.yaml new file mode 100644 index 000000000..34cebda9c --- /dev/null +++ b/roles/flannel/defaults/main.yaml @@ -0,0 +1,8 @@ +--- +flannel_interface: "{{ ansible_default_ipv4.interface }}" +flannel_etcd_key: /openshift.com/network +etcd_hosts: "{{ etcd_urls }}" +etcd_conf_dir: "{{ openshift.common.config_base }}/node" +etcd_peer_ca_file: "{{ etcd_conf_dir }}/{{ 'ca' if (embedded_etcd | bool) else 'node.etcd-ca' }}.crt" +etcd_peer_cert_file: "{{ etcd_conf_dir }}/{{ 'system:node:' + openshift.common.hostname if (embedded_etcd | bool) else 'node.etcd-client' }}.crt" +etcd_peer_key_file: "{{ etcd_conf_dir }}/{{ 'system:node:' + openshift.common.hostname if (embedded_etcd | bool) else 'node.etcd-client' }}.key" diff --git a/roles/flannel/handlers/main.yml b/roles/flannel/handlers/main.yml new file mode 100644 index 000000000..f9b9ae7f1 --- /dev/null +++ b/roles/flannel/handlers/main.yml @@ -0,0 +1,8 @@ +--- +- name: restart flanneld + sudo: true + service: name=flanneld state=restarted + +- name: restart docker + sudo: true + service: name=docker state=restarted diff --git a/roles/flannel/meta/main.yml b/roles/flannel/meta/main.yml new file mode 100644 index 000000000..909bdbfa4 --- /dev/null +++ b/roles/flannel/meta/main.yml @@ -0,0 +1,16 @@ +--- +galaxy_info: + author: Sylvain + description: flannel management + company: Red Hat, Inc. + license: Apache License, Version 2.0 + min_ansible_version: 1.2 + platforms: + - name: EL + versions: + - 7 + categories: + - cloud + - system +dependencies: +- { role: openshift_facts } diff --git a/roles/flannel/tasks/main.yml b/roles/flannel/tasks/main.yml new file mode 100644 index 000000000..acfb009ec --- /dev/null +++ b/roles/flannel/tasks/main.yml @@ -0,0 +1,43 @@ +--- +- name: Install flannel + sudo: true + yum: pkg=flannel state=present + +- name: Set flannel etcd url + sudo: true + lineinfile: + dest: /etc/sysconfig/flanneld + backrefs: yes + regexp: "^(FLANNEL_ETCD=)" + line: '\1{{ etcd_hosts|join(",") }}' + +- name: Set flannel etcd key + sudo: true + lineinfile: + dest: /etc/sysconfig/flanneld + backrefs: yes + regexp: "^(FLANNEL_ETCD_KEY=)" + line: '\1{{ flannel_etcd_key }}' + +- name: Set flannel options + sudo: true + lineinfile: + dest: /etc/sysconfig/flanneld + backrefs: yes + regexp: "^#?(FLANNEL_OPTIONS=)" + line: '\1--iface {{ flannel_interface }} --etcd-cafile={{ etcd_peer_ca_file }} --etcd-keyfile={{ etcd_peer_key_file }} --etcd-certfile={{ etcd_peer_cert_file }}' + +- name: Enable flanneld + sudo: true + service: + name: flanneld + state: started + enabled: yes + register: start_result + +- name: Remove docker bridge ip + sudo: true + shell: ip a del `ip a show docker0 | grep "inet[[:space:]]" | awk '{print $2}'` dev docker0 + notify: + - restart docker + - restart node diff --git a/roles/flannel_register/README.md b/roles/flannel_register/README.md new file mode 100644 index 000000000..ba7541ab1 --- /dev/null +++ b/roles/flannel_register/README.md @@ -0,0 +1,47 @@ +Role Name +========= + +Register flannel configuration into etcd + +Requirements +------------ + +This role assumes it's being deployed on a RHEL/Fedora based host with package +named 'flannel' available via yum, in version superior to 0.3. + +Role Variables +-------------- + +| Name | Default value | Description | +|---------------------|----------------------------------------------------|-------------------------------------------------| +| flannel_network | {{ openshift.master.portal_net }} or 172.16.1.1/16 | interface to use for inter-host communication | +| flannel_min_network | {{ min_network }} or 172.16.5.0 | beginning of IP range for the subnet allocation | +| flannel_subnet_len | /openshift.com/network | size of the subnet allocated to each host | +| flannel_etcd_key | /openshift.com/network | etcd prefix | +| etcd_hosts | etcd_urls | a list of etcd endpoints | +| etcd_conf_dir | {{ openshift.common.config_base }}/master | SSL certificates directory | +| etcd_peer_ca_file | {{ etcd_conf_dir }}/ca.crt | SSL CA to use for etcd | +| etcd_peer_cert_file | {{ etcd_conf_dir }}/master.etcd-client.crt | SSL cert to use for etcd | +| etcd_peer_key_file | {{ etcd_conf_dir }}/master.etcd-client.key | SSL key to use for etcd | + +Dependencies +------------ + +openshift_facts + +Example Playbook +---------------- + + - hosts: openshift_master + roles: + - { flannel_register } + +License +------- + +Apache License, Version 2.0 + +Author Information +------------------ + +Sylvain Baubeau <sbaubeau@redhat.com> diff --git a/roles/flannel_register/defaults/main.yaml b/roles/flannel_register/defaults/main.yaml new file mode 100644 index 000000000..269d1a17c --- /dev/null +++ b/roles/flannel_register/defaults/main.yaml @@ -0,0 +1,11 @@ +--- +flannel_network: "{{ openshift.master.portal_net | default('172.30.0.0/16', true) }}" +flannel_min_network: 172.30.5.0 +flannel_subnet_len: 24 +flannel_etcd_key: /openshift.com/network +etcd_hosts: "{{ etcd_urls }}" +etcd_conf_dir: "{{ openshift.common.config_base }}/master" +etcd_peer_ca_file: "{{ etcd_conf_dir + '/ca.crt' if (openshift.master.embedded_etcd | bool) else etcd_conf_dir + '/master.etcd-ca.crt' }}" +etcd_peer_cert_file: "{{ etcd_conf_dir }}/master.etcd-client.crt" +etcd_peer_key_file: "{{ etcd_conf_dir }}/master.etcd-client.key" + diff --git a/roles/flannel_register/meta/main.yml b/roles/flannel_register/meta/main.yml new file mode 100644 index 000000000..73bddcca4 --- /dev/null +++ b/roles/flannel_register/meta/main.yml @@ -0,0 +1,16 @@ +--- +galaxy_info: + author: Sylvain + description: register flannel configuration into etcd + company: Red Hat, Inc. + license: Apache License, Version 2.0 + min_ansible_version: 1.2 + platforms: + - name: EL + versions: + - 7 + categories: + - cloud + - system +dependencies: +- { role: openshift_facts } diff --git a/roles/flannel_register/tasks/main.yml b/roles/flannel_register/tasks/main.yml new file mode 100644 index 000000000..1629157c8 --- /dev/null +++ b/roles/flannel_register/tasks/main.yml @@ -0,0 +1,14 @@ +--- +- name: Assures /etc/flannel dir exists + sudo: true + file: path=/etc/flannel state=directory + +- name: Generate etcd configuration for etcd + sudo: true + template: + src: "flannel-config.json" + dest: "/etc/flannel/config.json" + +- name: Insert flannel configuration into etcd + sudo: true + command: 'curl -L --cacert "{{ etcd_peer_ca_file }}" --cert "{{ etcd_peer_cert_file }}" --key "{{ etcd_peer_key_file }}" "{{ etcd_hosts[0] }}/v2/keys{{ flannel_etcd_key }}/config" -XPUT --data-urlencode value@/etc/flannel/config.json' diff --git a/roles/flannel_register/templates/flannel-config.json b/roles/flannel_register/templates/flannel-config.json new file mode 100644 index 000000000..89ce4c30b --- /dev/null +++ b/roles/flannel_register/templates/flannel-config.json @@ -0,0 +1,8 @@ +{ + "Network": "{{ flannel_network }}", + "SubnetLen": {{ flannel_subnet_len }}, + "SubnetMin": "{{ flannel_min_network }}", + "Backend": { + "Type": "host-gw" + } +} diff --git a/roles/haproxy/README.md b/roles/haproxy/README.md new file mode 100644 index 000000000..5bc415066 --- /dev/null +++ b/roles/haproxy/README.md @@ -0,0 +1,34 @@ +HAProxy +======= + +TODO + +Requirements +------------ + +TODO + +Role Variables +-------------- + +TODO + +Dependencies +------------ + +TODO + +Example Playbook +---------------- + +TODO + +License +------- + +Apache License, Version 2.0 + +Author Information +------------------ + +Jason DeTiberus (jdetiber@redhat.com) diff --git a/roles/haproxy/defaults/main.yml b/roles/haproxy/defaults/main.yml new file mode 100644 index 000000000..7ba5bd485 --- /dev/null +++ b/roles/haproxy/defaults/main.yml @@ -0,0 +1,21 @@ +--- +haproxy_frontends: +- name: main + binds: + - "*:80" + default_backend: default + +haproxy_backends: +- name: default + balance: roundrobin + servers: + - name: web01 + address: 127.0.0.1:9000 + opts: check + +os_firewall_use_firewalld: False +os_firewall_allow: +- service: haproxy stats + port: "9000/tcp" +- service: haproxy balance + port: "8443/tcp" diff --git a/roles/haproxy/handlers/main.yml b/roles/haproxy/handlers/main.yml new file mode 100644 index 000000000..ee60adcab --- /dev/null +++ b/roles/haproxy/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: restart haproxy + service: + name: haproxy + state: restarted diff --git a/roles/haproxy/meta/main.yml b/roles/haproxy/meta/main.yml new file mode 100644 index 000000000..0fad106a9 --- /dev/null +++ b/roles/haproxy/meta/main.yml @@ -0,0 +1,14 @@ +--- +galaxy_info: + author: Jason DeTiberus + description: HAProxy + company: Red Hat, Inc. + license: Apache License, Version 2.0 + min_ansible_version: 1.9 + platforms: + - name: EL + versions: + - 7 +dependencies: +- { role: os_firewall } +- { role: openshift_repos } diff --git a/roles/haproxy/tasks/main.yml b/roles/haproxy/tasks/main.yml new file mode 100644 index 000000000..5638b7313 --- /dev/null +++ b/roles/haproxy/tasks/main.yml @@ -0,0 +1,25 @@ +--- +- name: Install haproxy + yum: + pkg: haproxy + state: present + +- name: Configure haproxy + template: + src: haproxy.cfg.j2 + dest: /etc/haproxy/haproxy.cfg + owner: root + group: root + mode: 0644 + notify: restart haproxy + +- name: Enable and start haproxy + service: + name: haproxy + state: started + enabled: yes + register: start_result + +- name: Pause 30 seconds if haproxy was just started + pause: seconds=30 + when: start_result | changed diff --git a/roles/haproxy/templates/haproxy.cfg.j2 b/roles/haproxy/templates/haproxy.cfg.j2 new file mode 100644 index 000000000..c932af72f --- /dev/null +++ b/roles/haproxy/templates/haproxy.cfg.j2 @@ -0,0 +1,76 @@ +# Global settings +#--------------------------------------------------------------------- +global + chroot /var/lib/haproxy + pidfile /var/run/haproxy.pid + maxconn 4000 + user haproxy + group haproxy + daemon + + # turn on stats unix socket + stats socket /var/lib/haproxy/stats + +#--------------------------------------------------------------------- +# common defaults that all the 'listen' and 'backend' sections will +# use if not designated in their block +#--------------------------------------------------------------------- +defaults + mode http + log global + option httplog + option dontlognull + option http-server-close + option forwardfor except 127.0.0.0/8 + option redispatch + retries 3 + timeout http-request 10s + timeout queue 1m + timeout connect 10s + timeout client 300s + timeout server 300s + timeout http-keep-alive 10s + timeout check 10s + maxconn 3000 + +listen stats :9000 + mode http + stats enable + stats uri / + +{% for frontend in haproxy_frontends %} +frontend {{ frontend.name }} +{% for bind in frontend.binds %} + bind {{ bind }} +{% endfor %} + default_backend {{ frontend.default_backend }} +{% if 'mode' in frontend %} + mode {{ frontend.mode }} +{% endif %} +{% if 'options' in frontend %} +{% for option in frontend.options %} + option {{ option }} +{% endfor %} +{% endif %} +{% if 'redirects' in frontend %} +{% for redirect in frontend.redirects %} + redirect {{ redirect }} +{% endfor %} +{% endif %} +{% endfor %} + +{% for backend in haproxy_backends %} +backend {{ backend.name }} + balance {{ backend.balance }} +{% if 'mode' in backend %} + mode {{ backend.mode }} +{% endif %} +{% if 'options' in backend %} +{% for option in backend.options %} + option {{ option }} +{% endfor %} +{% endif %} +{% for server in backend.servers %} + server {{ server.name }} {{ server.address }} {{ server.opts }} +{% endfor %} +{% endfor %} diff --git a/roles/kube_nfs_volumes/README.md b/roles/kube_nfs_volumes/README.md index 56c69c286..1520f79b2 100644 --- a/roles/kube_nfs_volumes/README.md +++ b/roles/kube_nfs_volumes/README.md @@ -44,6 +44,9 @@ kubernetes_url: https://10.245.1.2:6443 # Token to use for authentication to the API server kubernetes_token: tJdce6Fn3cL1112YoIJ5m2exzAbzcPZX + +# API Version to use for kubernetes +kube_api_version: v1 ``` ## Dependencies diff --git a/roles/kube_nfs_volumes/defaults/main.yml b/roles/kube_nfs_volumes/defaults/main.yml index e296492f9..bdd994d07 100644 --- a/roles/kube_nfs_volumes/defaults/main.yml +++ b/roles/kube_nfs_volumes/defaults/main.yml @@ -1,4 +1,10 @@ --- +kubernetes_url: https://172.30.0.1:443 + +kube_api_version: v1 + +kube_req_template: "../templates/{{ kube_api_version }}/nfs.json.j2" + # Options of NFS exports. nfs_export_options: "*(rw,no_root_squash,insecure,no_subtree_check)" diff --git a/roles/kube_nfs_volumes/tasks/main.yml b/roles/kube_nfs_volumes/tasks/main.yml index f4a506234..d1dcf261a 100644 --- a/roles/kube_nfs_volumes/tasks/main.yml +++ b/roles/kube_nfs_volumes/tasks/main.yml @@ -16,10 +16,11 @@ - include: nfs.yml - name: export physical volumes - uri: url={{ kubernetes_url }}/api/v1beta3/persistentvolumes - method=POST - body='{{ lookup("template", "../templates/nfs.json.j2") }}' - body_format=json - status_code=201 - HEADER_Authorization="Bearer {{ kubernetes_token }}" + uri: + url: "{{ kubernetes_url }}/api/{{ kube_api_version }}/persistentvolumes" + method: POST + body: "{{ lookup('template', kube_req_template) }}" + body_format: json + status_code: 201 + HEADER_Authorization: "Bearer {{ kubernetes_token }}" with_items: partition_pool diff --git a/roles/kube_nfs_volumes/templates/v1/nfs.json.j2 b/roles/kube_nfs_volumes/templates/v1/nfs.json.j2 new file mode 120000 index 000000000..49c1191bc --- /dev/null +++ b/roles/kube_nfs_volumes/templates/v1/nfs.json.j2 @@ -0,0 +1 @@ +../v1beta3/nfs.json.j2
\ No newline at end of file diff --git a/roles/kube_nfs_volumes/templates/nfs.json.j2 b/roles/kube_nfs_volumes/templates/v1beta3/nfs.json.j2 index b42886ef1..b42886ef1 100644 --- a/roles/kube_nfs_volumes/templates/nfs.json.j2 +++ b/roles/kube_nfs_volumes/templates/v1beta3/nfs.json.j2 diff --git a/roles/lib_zabbix/library/zbx_item.py b/roles/lib_zabbix/library/zbx_item.py index 6faa82dfc..5dc3cff9b 100644 --- a/roles/lib_zabbix/library/zbx_item.py +++ b/roles/lib_zabbix/library/zbx_item.py @@ -107,6 +107,39 @@ def get_multiplier(inval): return rval, 0 +def get_zabbix_type(ztype): + ''' + Determine which type of discoverrule this is + ''' + _types = {'agent': 0, + 'SNMPv1': 1, + 'trapper': 2, + 'simple': 3, + 'SNMPv2': 4, + 'internal': 5, + 'SNMPv3': 6, + 'active': 7, + 'aggregate': 8, + 'web': 9, + 'external': 10, + 'database monitor': 11, + 'ipmi': 12, + 'ssh': 13, + 'telnet': 14, + 'calculated': 15, + 'JMX': 16, + 'SNMP trap': 17, + } + + for typ in _types.keys(): + if ztype in typ or ztype == typ: + _vtype = _types[typ] + break + else: + _vtype = 2 + + return _vtype + # The branches are needed for CRUD and error handling # pylint: disable=too-many-branches def main(): @@ -123,8 +156,10 @@ def main(): name=dict(default=None, type='str'), key=dict(default=None, type='str'), template_name=dict(default=None, type='str'), - zabbix_type=dict(default=2, type='int'), + zabbix_type=dict(default='trapper', type='str'), value_type=dict(default='int', type='str'), + interval=dict(default=60, type='int'), + delta=dict(default=0, type='int'), multiplier=dict(default=None, type='str'), description=dict(default=None, type='str'), units=dict(default=None, type='str'), @@ -182,13 +217,15 @@ def main(): params = {'name': module.params.get('name', module.params['key']), 'key_': module.params['key'], 'hostid': templateid[0], - 'type': module.params['zabbix_type'], + 'type': get_zabbix_type(module.params['zabbix_type']), 'value_type': get_value_type(module.params['value_type']), 'applications': get_app_ids(module.params['applications'], app_name_ids), 'formula': formula, 'multiplier': use_multiplier, 'description': module.params['description'], 'units': module.params['units'], + 'delay': module.params['interval'], + 'delta': module.params['delta'], } # Remove any None valued params diff --git a/roles/lib_zabbix/library/zbx_itemprototype.py b/roles/lib_zabbix/library/zbx_itemprototype.py index e7fd6fa21..43498c015 100644 --- a/roles/lib_zabbix/library/zbx_itemprototype.py +++ b/roles/lib_zabbix/library/zbx_itemprototype.py @@ -67,7 +67,24 @@ def get_template(zapi, template_name): return None return content['result'][0] -def get_type(ztype): +def get_multiplier(inval): + ''' Determine the multiplier + ''' + if inval == None or inval == '': + return None, 0 + + rval = None + try: + rval = int(inval) + except ValueError: + pass + + if rval: + return rval, 1 + + return rval, 0 + +def get_zabbix_type(ztype): ''' Determine which type of discoverrule this is ''' @@ -87,6 +104,7 @@ def get_type(ztype): 'telnet': 14, 'calculated': 15, 'JMX': 16, + 'SNMP trap': 17, } for typ in _types.keys(): @@ -153,16 +171,21 @@ def main(): name=dict(default=None, type='str'), key=dict(default=None, type='str'), description=dict(default=None, type='str'), + template_name=dict(default=None, type='str'), interfaceid=dict(default=None, type='int'), - ztype=dict(default='trapper', type='str'), + zabbix_type=dict(default='trapper', type='str'), value_type=dict(default='float', type='str'), delay=dict(default=60, type='int'), lifetime=dict(default=30, type='int'), state=dict(default='present', type='str'), status=dict(default='enabled', type='str'), applications=dict(default=[], type='list'), - template_name=dict(default=None, type='str'), discoveryrule_key=dict(default=None, type='str'), + interval=dict(default=60, type='int'), + delta=dict(default=0, type='int'), + multiplier=dict(default=None, type='str'), + units=dict(default=None, type='str'), + ), #supports_check_mode=True ) @@ -205,15 +228,23 @@ def main(): # Create and Update if state == 'present': + + formula, use_multiplier = get_multiplier(module.params['multiplier']) + params = {'name': module.params['name'], 'key_': module.params['key'], 'hostid': template['templateid'], 'interfaceid': module.params['interfaceid'], 'ruleid': get_rule_id(zapi, module.params['discoveryrule_key'], template['templateid']), - 'type': get_type(module.params['ztype']), + 'type': get_zabbix_type(module.params['zabbix_type']), 'value_type': get_value_type(module.params['value_type']), 'applications': get_app_ids(zapi, module.params['applications'], template['templateid']), + 'formula': formula, + 'multiplier': use_multiplier, 'description': module.params['description'], + 'units': module.params['units'], + 'delay': module.params['interval'], + 'delta': module.params['delta'], } if params['type'] in [2, 5, 7, 8, 11, 15]: diff --git a/roles/lib_zabbix/library/zbx_itservice.py b/roles/lib_zabbix/library/zbx_itservice.py new file mode 100644 index 000000000..a5ee97e15 --- /dev/null +++ b/roles/lib_zabbix/library/zbx_itservice.py @@ -0,0 +1,263 @@ +#!/usr/bin/env python +''' + Ansible module for zabbix itservices +''' +# vim: expandtab:tabstop=4:shiftwidth=4 +# +# Zabbix itservice ansible module +# +# +# Copyright 2015 Red Hat Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# This is in place because each module looks similar to each other. +# These need duplicate code as their behavior is very similar +# but different for each zabbix class. +# pylint: disable=duplicate-code + +# pylint: disable=import-error +from openshift_tools.monitoring.zbxapi import ZabbixAPI, ZabbixConnection + +def exists(content, key='result'): + ''' Check if key exists in content or the size of content[key] > 0 + ''' + if not content.has_key(key): + return False + + if not content[key]: + return False + + return True + +def get_parent(dependencies): + '''Put dependencies into the proper update format''' + rval = None + for dep in dependencies: + if dep['relationship'] == 'parent': + return dep + return rval + +def format_dependencies(dependencies): + '''Put dependencies into the proper update format''' + rval = [] + for dep in dependencies: + rval.append({'dependsOnServiceid': dep['serviceid'], + 'soft': get_dependency_type(dep['dep_type']), + }) + + return rval + +def get_dependency_type(dep_type): + '''Determine the dependency type''' + rval = 0 + if 'soft' == dep_type: + rval = 1 + + return rval + +def get_service_id_by_name(zapi, dependencies): + '''Fetch the service id for an itservice''' + deps = [] + for dep in dependencies: + if dep['name'] == 'root': + deps.append(dep) + continue + + content = zapi.get_content('service', + 'get', + {'filter': {'name': dep['name']}, + 'selectDependencies': 'extend', + }) + if content.has_key('result') and content['result']: + dep['serviceid'] = content['result'][0]['serviceid'] + deps.append(dep) + + return deps + +def add_dependencies(zapi, service_name, dependencies): + '''Fetch the service id for an itservice + + Add a dependency on the parent for this current service item. + ''' + + results = get_service_id_by_name(zapi, [{'name': service_name}]) + + content = {} + for dep in dependencies: + content = zapi.get_content('service', + 'adddependencies', + {'serviceid': results[0]['serviceid'], + 'dependsOnServiceid': dep['serviceid'], + 'soft': get_dependency_type(dep['dep_type']), + }) + if content.has_key('result') and content['result']: + continue + else: + break + + return content + +def get_show_sla(inc_sla): + ''' Determine the showsla paramter + ''' + rval = 1 + if 'do not cacluate' in inc_sla: + rval = 0 + return rval + +def get_algorithm(inc_algorithm_str): + ''' + Determine which type algorithm + ''' + rval = 0 + if 'at least one' in inc_algorithm_str: + rval = 1 + elif 'all' in inc_algorithm_str: + rval = 2 + + return rval + +# The branches are needed for CRUD and error handling +# pylint: disable=too-many-branches +def main(): + ''' + ansible zabbix module for zbx_itservice + ''' + + module = AnsibleModule( + argument_spec=dict( + zbx_server=dict(default='https://localhost/zabbix/api_jsonrpc.php', type='str'), + zbx_user=dict(default=os.environ.get('ZABBIX_USER', None), type='str'), + zbx_password=dict(default=os.environ.get('ZABBIX_PASSWORD', None), type='str'), + zbx_debug=dict(default=False, type='bool'), + name=dict(default=None, type='str'), + algorithm=dict(default='do not calculate', choices=['do not calculate', 'at least one', 'all'], type='str'), + show_sla=dict(default='calculate', choices=['do not calculate', 'calculate'], type='str'), + good_sla=dict(default='99.9', type='float'), + sort_order=dict(default=1, type='int'), + state=dict(default='present', type='str'), + trigger_id=dict(default=None, type='int'), + dependencies=dict(default=[], type='list'), + dep_type=dict(default='hard', choices=['hard', 'soft'], type='str'), + ), + #supports_check_mode=True + ) + + zapi = ZabbixAPI(ZabbixConnection(module.params['zbx_server'], + module.params['zbx_user'], + module.params['zbx_password'], + module.params['zbx_debug'])) + + #Set the instance and the template for the rest of the calls + zbx_class_name = 'service' + state = module.params['state'] + + content = zapi.get_content(zbx_class_name, + 'get', + {'filter': {'name': module.params['name']}, + 'selectDependencies': 'extend', + }) + + #******# + # GET + #******# + if state == 'list': + module.exit_json(changed=False, results=content['result'], state="list") + + #******# + # DELETE + #******# + if state == 'absent': + if not exists(content): + module.exit_json(changed=False, state="absent") + + content = zapi.get_content(zbx_class_name, 'delete', [content['result'][0]['serviceid']]) + module.exit_json(changed=True, results=content['result'], state="absent") + + # Create and Update + if state == 'present': + + dependencies = get_service_id_by_name(zapi, module.params['dependencies']) + params = {'name': module.params['name'], + 'algorithm': get_algorithm(module.params['algorithm']), + 'showsla': get_show_sla(module.params['show_sla']), + 'goodsla': module.params['good_sla'], + 'sortorder': module.params['sort_order'], + 'triggerid': module.params['trigger_id'] + } + + # Remove any None valued params + _ = [params.pop(key, None) for key in params.keys() if params[key] is None] + + #******# + # CREATE + #******# + if not exists(content): + content = zapi.get_content(zbx_class_name, 'create', params) + + if content.has_key('error'): + module.exit_json(failed=True, changed=True, results=content['error'], state="present") + + if dependencies: + content = add_dependencies(zapi, module.params['name'], dependencies) + + if content.has_key('error'): + module.exit_json(failed=True, changed=True, results=content['error'], state="present") + + module.exit_json(changed=True, results=content['result'], state='present') + + + ######## + # UPDATE + ######## + params['dependencies'] = dependencies + differences = {} + zab_results = content['result'][0] + for key, value in params.items(): + + if key == 'goodsla': + if float(value) != float(zab_results[key]): + differences[key] = value + + elif key == 'dependencies': + zab_dep_ids = [item['serviceid'] for item in zab_results[key]] + user_dep_ids = [item['serviceid'] for item in dependencies] + if set(zab_dep_ids) != set(user_dep_ids): + differences[key] = format_dependencies(dependencies) + + elif zab_results[key] != value and zab_results[key] != str(value): + differences[key] = value + + if not differences: + module.exit_json(changed=False, results=zab_results, state="present") + + differences['serviceid'] = zab_results['serviceid'] + content = zapi.get_content(zbx_class_name, 'update', differences) + + if content.has_key('error'): + module.exit_json(failed=True, changed=False, results=content['error'], state="present") + + module.exit_json(changed=True, results=content['result'], state="present") + + module.exit_json(failed=True, + changed=False, + results='Unknown state passed. %s' % state, + state="unknown") + +# pylint: disable=redefined-builtin, unused-wildcard-import, wildcard-import, locally-disabled +# import module snippets. This are required +from ansible.module_utils.basic import * + +main() diff --git a/roles/lib_zabbix/library/zbx_trigger.py b/roles/lib_zabbix/library/zbx_trigger.py index ab7731faa..b5faefa70 100644 --- a/roles/lib_zabbix/library/zbx_trigger.py +++ b/roles/lib_zabbix/library/zbx_trigger.py @@ -136,6 +136,8 @@ def main(): status=dict(default=None, type='str'), state=dict(default='present', type='str'), template_name=dict(default=None, type='str'), + hostgroup_name=dict(default=None, type='str'), + query_type=dict(default='filter', choices=['filter', 'search'], type='str'), ), #supports_check_mode=True ) @@ -157,10 +159,11 @@ def main(): content = zapi.get_content(zbx_class_name, 'get', - {'filter': {'description': tname}, + {module.params['query_type']: {'description': tname}, 'expandExpression': True, 'selectDependencies': 'triggerid', 'templateids': templateid, + 'group': module.params['hostgroup_name'], }) # Get diff --git a/roles/lib_zabbix/tasks/create_template.yml b/roles/lib_zabbix/tasks/create_template.yml index 41381e76c..44c4e6766 100644 --- a/roles/lib_zabbix/tasks/create_template.yml +++ b/roles/lib_zabbix/tasks/create_template.yml @@ -38,6 +38,9 @@ units: "{{ item.units | default('', True) }}" template_name: "{{ template.name }}" applications: "{{ item.applications }}" + zabbix_type: "{{ item.zabbix_type | default('trapper') }}" + interval: "{{ item.interval | default(60, True) }}" + delta: "{{ item.delta | default(0, True) }}" with_items: template.zitems register: created_items when: template.zitems is defined @@ -81,6 +84,10 @@ template_name: "{{ template.name }}" applications: "{{ item.applications }}" description: "{{ item.description | default('', True) }}" + multiplier: "{{ item.multiplier | default('', True) }}" + units: "{{ item.units | default('', True) }}" + interval: "{{ item.interval | default(60, True) }}" + delta: "{{ item.delta | default(0, True) }}" with_items: template.zitemprototypes when: template.zitemprototypes is defined diff --git a/roles/openshift_ansible_inventory/tasks/main.yml b/roles/openshift_ansible_inventory/tasks/main.yml index 5fe77e38b..f6919dada 100644 --- a/roles/openshift_ansible_inventory/tasks/main.yml +++ b/roles/openshift_ansible_inventory/tasks/main.yml @@ -1,11 +1,16 @@ --- - yum: - name: openshift-ansible-inventory + name: "{{ item }}" state: present + with_items: + - openshift-ansible-inventory + - openshift-ansible-inventory-aws + - openshift-ansible-inventory-gce -- template: - src: multi_ec2.yaml.j2 - dest: /etc/ansible/multi_ec2.yaml +- name: + copy: + content: "{{ oo_inventory_accounts | to_nice_yaml }}" + dest: /etc/ansible/multi_inventory.yaml group: "{{ oo_inventory_group }}" owner: "{{ oo_inventory_owner }}" mode: "0640" @@ -19,17 +24,17 @@ - file: state: link - src: /usr/share/ansible/inventory/multi_ec2.py - dest: /etc/ansible/inventory/multi_ec2.py + src: /usr/share/ansible/inventory/multi_inventory.py + dest: /etc/ansible/inventory/multi_inventory.py owner: root group: libra_ops # This cron uses the above location to call its job - name: Cron to keep cache fresh cron: - name: 'multi_ec2_inventory' + name: 'multi_inventory' minute: '*/10' - job: '/usr/share/ansible/inventory/multi_ec2.py --refresh-cache &> /dev/null' + job: '/usr/share/ansible/inventory/multi_inventory.py --refresh-cache &> /dev/null' when: oo_cron_refresh_cache is defined and oo_cron_refresh_cache - name: Set cache location @@ -39,5 +44,5 @@ owner: root group: libra_ops recurse: yes - mode: '2750' + mode: '2770' when: oo_inventory_cache_location is defined diff --git a/roles/openshift_ansible_inventory/templates/multi_ec2.yaml.j2 b/roles/openshift_ansible_inventory/templates/multi_ec2.yaml.j2 deleted file mode 100644 index 8228ab915..000000000 --- a/roles/openshift_ansible_inventory/templates/multi_ec2.yaml.j2 +++ /dev/null @@ -1,26 +0,0 @@ -# multi ec2 inventory configs -cache_max_age: {{ oo_inventory_cache_max_age }} -cache_location: {{ oo_inventory_cache_location | default('~/.ansible/tmp/multi_ec2_inventory.cache') }} -accounts: -{% for account in oo_inventory_accounts %} - - name: {{ account.name }} - provider: {{ account.provider }} - provider_config: -{% for section, items in account.provider_config.items() %} - {{ section }}: -{% for property, value in items.items() %} - {{ property }}: {{ value }} -{% endfor %} -{% endfor %} - env_vars: - AWS_ACCESS_KEY_ID: {{ account.env_vars.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: {{ account.env_vars.AWS_SECRET_ACCESS_KEY }} -{% if account.all_group is defined and account.hostvars is defined%} - all_group: {{ account.all_group }} - hostvars: -{% for property, value in account.hostvars.items() %} - {{ property }}: {{ value }} -{% endfor %} -{% endif %} - -{% endfor %} diff --git a/roles/openshift_common/tasks/main.yml b/roles/openshift_common/tasks/main.yml index 73bd28630..38d5a08e4 100644 --- a/roles/openshift_common/tasks/main.yml +++ b/roles/openshift_common/tasks/main.yml @@ -1,4 +1,8 @@ --- +- fail: + msg: Flannel can not be used with openshift sdn + when: openshift_use_openshift_sdn | default(false) | bool and openshift_use_flannel | default(false) | bool + - name: Set common Cluster facts openshift_facts: role: common @@ -13,6 +17,7 @@ sdn_network_plugin_name: "{{ os_sdn_network_plugin_name | default(None) }}" deployment_type: "{{ openshift_deployment_type }}" use_fluentd: "{{ openshift_use_fluentd | default(None) }}" + use_flannel: "{{ openshift_use_flannel | default(None) }}" - name: Set hostname hostname: name={{ openshift.common.hostname }} diff --git a/roles/openshift_examples/defaults/main.yml b/roles/openshift_examples/defaults/main.yml index 7d4f100e3..8e8bc6868 100644 --- a/roles/openshift_examples/defaults/main.yml +++ b/roles/openshift_examples/defaults/main.yml @@ -1,9 +1,9 @@ --- # 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_centos: "{{ openshift_deployment_type not in ['enterprise','openshift-enterprise','atomic-enterprise','online'] }}" +openshift_examples_load_rhel: "{{ openshift_deployment_type in ['enterprise','openshift-enterprise','atomic-enterprise','online'] }}" openshift_examples_load_db_templates: true -openshift_examples_load_xpaas: "{{ openshift_deployment_type == 'enterprise' }}" +openshift_examples_load_xpaas: "{{ openshift_deployment_type in ['enterprise','openshift-enterprise','atomic-enterprise','online'] }}" openshift_examples_load_quickstarts: true examples_base: /usr/share/openshift/examples @@ -14,5 +14,7 @@ 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" +infrastructure_origin_base: "{{ examples_base }}/infrastructure-templates/origin" +infrastructure_enterprise_base: "{{ examples_base }}/infrastructure-templates/enterprise" openshift_examples_import_command: "create" diff --git a/roles/openshift_examples/examples-sync.sh b/roles/openshift_examples/examples-sync.sh index 3047a3add..a261a6ddd 100755 --- a/roles/openshift_examples/examples-sync.sh +++ b/roles/openshift_examples/examples-sync.sh @@ -5,17 +5,20 @@ # # This script should be run from openshift-ansible/roles/openshift_examples +XPAAS_VERSION=ose-v1.1.0 EXAMPLES_BASE=$(pwd)/files/examples find files/examples -name '*.json' -delete +find files/examples -name '*.yaml' -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 +wget https://github.com/jboss-openshift/application-templates/archive/${XPAAS_VERSION}.zip -O application-templates-master.zip unzip origin-master.zip unzip django-ex-master.zip unzip rails-ex-master.zip @@ -31,7 +34,13 @@ 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/ \; +mv application-templates-${XPAAS_VERSION}/jboss-image-streams.json ${EXAMPLES_BASE}/xpaas-streams/ +find application-templates-${XPAAS_VERSION}/ -name '*.json' ! -wholename '*secret*' -exec mv {} ${EXAMPLES_BASE}/xpaas-templates/ \; + +wget https://raw.githubusercontent.com/openshift/origin-metrics/master/metrics.yaml -O ${EXAMPLES_BASE}/infrastructure-templates/origin/metrics-deployer.yaml +cp ${EXAMPLES_BASE}/infrastructure-templates/origin/metrics-*.yaml ${EXAMPLES_BASE}/infrastructure-templates/enterprise/ +wget https://raw.githubusercontent.com/openshift/origin-aggregated-logging/master/deployment/deployer.yaml -O ${EXAMPLES_BASE}/infrastructure-templates/origin/logging-deployer.yaml +wget https://raw.githubusercontent.com/openshift/origin-aggregated-logging/enterprise/deployment/deployer.yaml -O ${EXAMPLES_BASE}/infrastructure-templates/enterprise/logging-deployer.yaml + popd git diff files/examples 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 index f213d99ca..1a78b1279 100644 --- a/roles/openshift_examples/files/examples/image-streams/image-streams-centos7.json +++ b/roles/openshift_examples/files/examples/image-streams/image-streams-centos7.json @@ -11,10 +11,13 @@ "creationTimestamp": null }, "spec": { - "dockerImageRepository": "openshift/ruby-20-centos7", "tags": [ { - "name": "latest" + "name": "latest", + "from": { + "Kind": "ImageStreamTag", + "Name": "2.0" + } }, { "name": "2.0", @@ -23,11 +26,27 @@ "iconClass": "icon-ruby", "tags": "builder,ruby", "supports": "ruby:2.0,ruby", - "version": "2.0" + "version": "2.0", + "sampleRepo": "https://github.com/openshift/ruby-ex.git" }, "from": { - "Kind": "ImageStreamTag", - "Name": "latest" + "Kind": "DockerImage", + "Name": "openshift/ruby-20-centos7:latest" + } + }, + { + "name": "2.2", + "annotations": { + "description": "Build and run Ruby 2.2 applications", + "iconClass": "icon-ruby", + "tags": "builder,ruby", + "supports": "ruby:2.2,ruby", + "version": "2.2", + "sampleRepo": "https://github.com/openshift/ruby-ex.git" + }, + "from": { + "Kind": "DockerImage", + "Name": "centos/ruby-22-centos7:latest" } } ] @@ -41,10 +60,13 @@ "creationTimestamp": null }, "spec": { - "dockerImageRepository": "openshift/nodejs-010-centos7", "tags": [ { - "name": "latest" + "name": "latest", + "from": { + "Kind": "ImageStreamTag", + "Name": "0.10" + } }, { "name": "0.10", @@ -53,11 +75,12 @@ "iconClass": "icon-nodejs", "tags": "builder,nodejs", "supports":"nodejs:0.10,nodejs:0.1,nodejs", - "version": "0.10" + "version": "0.10", + "sampleRepo": "https://github.com/openshift/nodejs-ex.git" }, "from": { - "Kind": "ImageStreamTag", - "Name": "latest" + "Kind": "DockerImage", + "Name": "openshift/nodejs-010-centos7:latest" } } ] @@ -71,10 +94,13 @@ "creationTimestamp": null }, "spec": { - "dockerImageRepository": "openshift/perl-516-centos7", "tags": [ { - "name": "latest" + "name": "latest", + "from": { + "Kind": "ImageStreamTag", + "Name": "5.16" + } }, { "name": "5.16", @@ -83,12 +109,29 @@ "iconClass": "icon-perl", "tags": "builder,perl", "supports":"perl:5.16,perl", - "version": "5.16" + "version": "5.16", + "sampleRepo": "https://github.com/openshift/dancer-ex.git" }, "from": { - "Kind": "ImageStreamTag", - "Name": "latest" + "Kind": "DockerImage", + "Name": "openshift/perl-516-centos7:latest" + } + }, + { + "name": "5.20", + "annotations": { + "description": "Build and run Perl 5.20 applications", + "iconClass": "icon-perl", + "tags": "builder,perl", + "supports":"perl:5.20,perl", + "version": "5.20", + "sampleRepo": "https://github.com/openshift/dancer-ex.git" + }, + "from": { + "Kind": "DockerImage", + "Name": "centos/perl-520-centos7:latest" } + } ] } @@ -101,10 +144,13 @@ "creationTimestamp": null }, "spec": { - "dockerImageRepository": "openshift/php-55-centos7", "tags": [ { - "name": "latest" + "name": "latest", + "from": { + "Kind": "ImageStreamTag", + "Name": "5.5" + } }, { "name": "5.5", @@ -113,11 +159,27 @@ "iconClass": "icon-php", "tags": "builder,php", "supports":"php:5.5,php", - "version": "5.5" + "version": "5.5", + "sampleRepo": "https://github.com/openshift/cakephp-ex.git" }, "from": { - "Kind": "ImageStreamTag", - "Name": "latest" + "Kind": "DockerImage", + "Name": "openshift/php-55-centos7:latest" + } + }, + { + "name": "5.6", + "annotations": { + "description": "Build and run PHP 5.6 applications", + "iconClass": "icon-php", + "tags": "builder,php", + "supports":"php:5.6,php", + "version": "5.6", + "sampleRepo": "https://github.com/openshift/cakephp-ex.git" + }, + "from": { + "Kind": "DockerImage", + "Name": "centos/php-56-centos7:latest" } } ] @@ -131,10 +193,13 @@ "creationTimestamp": null }, "spec": { - "dockerImageRepository": "openshift/python-33-centos7", "tags": [ { - "name": "latest" + "name": "latest", + "from": { + "Kind": "ImageStreamTag", + "Name": "3.3" + } }, { "name": "3.3", @@ -143,11 +208,42 @@ "iconClass": "icon-python", "tags": "builder,python", "supports":"python:3.3,python", - "version": "3.3" + "version": "3.3", + "sampleRepo": "https://github.com/openshift/django-ex.git" }, "from": { - "Kind": "ImageStreamTag", - "Name": "latest" + "Kind": "DockerImage", + "Name": "openshift/python-33-centos7:latest" + } + }, + { + "name": "2.7", + "annotations": { + "description": "Build and run Python 2.7 applications", + "iconClass": "icon-python", + "tags": "builder,python", + "supports":"python:2.7,python", + "version": "2.7", + "sampleRepo": "https://github.com/openshift/django-ex.git" + }, + "from": { + "Kind": "DockerImage", + "Name": "centos/python-27-centos7:latest" + } + }, + { + "name": "3.4", + "annotations": { + "description": "Build and run Python 3.4 applications", + "iconClass": "icon-python", + "tags": "builder,python", + "supports":"python:3.4,python", + "version": "3.4", + "sampleRepo": "https://github.com/openshift/django-ex.git" + }, + "from": { + "Kind": "DockerImage", + "Name": "centos/python-34-centos7:latest" } } ] @@ -161,10 +257,13 @@ "creationTimestamp": null }, "spec": { - "dockerImageRepository": "openshift/wildfly-81-centos7", "tags": [ { - "name": "latest" + "name": "latest", + "from": { + "Kind": "ImageStreamTag", + "Name": "8.1" + } }, { "name": "8.1", @@ -173,11 +272,12 @@ "iconClass": "icon-wildfly", "tags": "builder,wildfly,java", "supports":"wildfly:8.1,jee,java", - "version": "8.1" + "version": "8.1", + "sampleRepo": "https://github.com/bparees/openshift-jee-sample.git" }, "from": { - "Kind": "ImageStreamTag", - "Name": "latest" + "Kind": "DockerImage", + "Name": "openshift/wildfly-81-centos7:latest" } } ] @@ -191,16 +291,26 @@ "creationTimestamp": null }, "spec": { - "dockerImageRepository": "openshift/mysql-55-centos7", "tags": [ { - "name": "latest" + "name": "latest", + "from": { + "Kind": "ImageStreamTag", + "Name": "5.5" + } }, { "name": "5.5", "from": { - "Kind": "ImageStreamTag", - "Name": "latest" + "Kind": "DockerImage", + "Name": "openshift/mysql-55-centos7:latest" + } + }, + { + "name": "5.6", + "from": { + "Kind": "DockerImage", + "Name": "centos/mysql-56-centos7:latest" } } ] @@ -214,16 +324,26 @@ "creationTimestamp": null }, "spec": { - "dockerImageRepository": "openshift/postgresql-92-centos7", "tags": [ { - "name": "latest" + "name": "latest", + "from": { + "Kind": "ImageStreamTag", + "Name": "9.2" + } }, { "name": "9.2", "from": { - "Kind": "ImageStreamTag", - "Name": "latest" + "Kind": "DockerImage", + "Name": "openshift/postgresql-92-centos7:latest" + } + }, + { + "name": "9.4", + "from": { + "Kind": "DockerImage", + "Name": "centos/postgresql-94-centos7:latest" } } ] @@ -237,16 +357,26 @@ "creationTimestamp": null }, "spec": { - "dockerImageRepository": "openshift/mongodb-24-centos7", "tags": [ { - "name": "latest" + "name": "latest", + "from": { + "Kind": "ImageStreamTag", + "Name": "2.4" + } }, { "name": "2.4", "from": { - "Kind": "ImageStreamTag", - "Name": "latest" + "Kind": "DockerImage", + "Name": "openshift/mongodb-24-centos7:latest" + } + }, + { + "name": "2.6", + "from": { + "Kind": "DockerImage", + "Name": "centos/mongodb-26-centos7:latest" } } ] @@ -260,16 +390,19 @@ "creationTimestamp": null }, "spec": { - "dockerImageRepository": "openshift/jenkins-1-centos7", "tags": [ { - "name": "latest" + "name": "latest", + "from": { + "Kind": "ImageStreamTag", + "Name": "1" + } }, { "name": "1", "from": { - "Kind": "ImageStreamTag", - "Name": "latest" + "Kind": "DockerImage", + "Name": "openshift/jenkins-1-centos7: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 index 8c125f76a..d2a8cfb1d 100644 --- a/roles/openshift_examples/files/examples/image-streams/image-streams-rhel7.json +++ b/roles/openshift_examples/files/examples/image-streams/image-streams-rhel7.json @@ -11,10 +11,13 @@ "creationTimestamp": null }, "spec": { - "dockerImageRepository": "registry.access.redhat.com/openshift3/ruby-20-rhel7", "tags": [ { - "name": "latest" + "name": "latest", + "from": { + "Kind": "ImageStreamTag", + "Name": "2.0" + } }, { "name": "2.0", @@ -23,11 +26,27 @@ "iconClass": "icon-ruby", "tags": "builder,ruby", "supports": "ruby:2.0,ruby", - "version": "2.0" + "version": "2.0", + "sampleRepo": "https://github.com/openshift/ruby-ex.git" }, "from": { - "Kind": "ImageStreamTag", - "Name": "latest" + "Kind": "DockerImage", + "Name": "registry.access.redhat.com/openshift3/ruby-20-rhel7:latest" + } + }, + { + "name": "2.2", + "annotations": { + "description": "Build and run Ruby 2.2 applications", + "iconClass": "icon-ruby", + "tags": "builder,ruby", + "supports": "ruby:2.2,ruby", + "version": "2.2", + "sampleRepo": "https://github.com/openshift/ruby-ex.git" + }, + "from": { + "Kind": "DockerImage", + "Name": "registry.access.redhat.com/rhscl/ruby-22-rhel7:latest" } } ] @@ -41,10 +60,13 @@ "creationTimestamp": null }, "spec": { - "dockerImageRepository": "registry.access.redhat.com/openshift3/nodejs-010-rhel7", "tags": [ { - "name": "latest" + "name": "latest", + "from": { + "Kind": "ImageStreamTag", + "Name": "0.10" + } }, { "name": "0.10", @@ -53,11 +75,12 @@ "iconClass": "icon-nodejs", "tags": "builder,nodejs", "supports":"nodejs:0.10,nodejs:0.1,nodejs", - "version": "0.10" + "version": "0.10", + "sampleRepo": "https://github.com/openshift/nodejs-ex.git" }, "from": { - "Kind": "ImageStreamTag", - "Name": "latest" + "Kind": "DockerImage", + "Name": "registry.access.redhat.com/openshift3/nodejs-010-rhel7:latest" } } ] @@ -71,10 +94,13 @@ "creationTimestamp": null }, "spec": { - "dockerImageRepository": "registry.access.redhat.com/openshift3/perl-516-rhel7", "tags": [ { - "name": "latest" + "name": "latest", + "from": { + "Kind": "ImageStreamTag", + "Name": "5.16" + } }, { "name": "5.16", @@ -83,12 +109,29 @@ "iconClass": "icon-perl", "tags": "builder,perl", "supports":"perl:5.16,perl", - "version": "5.16" + "version": "5.16", + "sampleRepo": "https://github.com/openshift/dancer-ex.git" }, "from": { - "Kind": "ImageStreamTag", - "Name": "latest" + "Kind": "DockerImage", + "Name": "registry.access.redhat.com/openshift3/perl-516-rhel7:latest" + } + }, + { + "name": "5.20", + "annotations": { + "description": "Build and run Perl 5.20 applications", + "iconClass": "icon-perl", + "tags": "builder,perl", + "supports":"perl:5.20,perl", + "version": "5.20", + "sampleRepo": "https://github.com/openshift/dancer-ex.git" + }, + "from": { + "Kind": "DockerImage", + "Name": "registry.access.redhat.com/rhscl/perl-520-rhel7:latest" } + } ] } @@ -101,10 +144,13 @@ "creationTimestamp": null }, "spec": { - "dockerImageRepository": "registry.access.redhat.com/openshift3/php-55-rhel7", "tags": [ { - "name": "latest" + "name": "latest", + "from": { + "Kind": "ImageStreamTag", + "Name": "5.5" + } }, { "name": "5.5", @@ -113,11 +159,27 @@ "iconClass": "icon-php", "tags": "builder,php", "supports":"php:5.5,php", - "version": "5.5" + "version": "5.5", + "sampleRepo": "https://github.com/openshift/cakephp-ex.git" }, "from": { - "Kind": "ImageStreamTag", - "Name": "latest" + "Kind": "DockerImage", + "Name": "registry.access.redhat.com/openshift3/php-55-rhel7:latest" + } + }, + { + "name": "5.6", + "annotations": { + "description": "Build and run PHP 5.6 applications", + "iconClass": "icon-php", + "tags": "builder,php", + "supports":"php:5.6,php", + "version": "5.6", + "sampleRepo": "https://github.com/openshift/cakephp-ex.git" + }, + "from": { + "Kind": "DockerImage", + "Name": "registry.access.redhat.com/rhscl/php-56-rhel7:latest" } } ] @@ -131,10 +193,13 @@ "creationTimestamp": null }, "spec": { - "dockerImageRepository": "registry.access.redhat.com/openshift3/python-33-rhel7", "tags": [ { - "name": "latest" + "name": "latest", + "from": { + "Kind": "ImageStreamTag", + "Name": "3.3" + } }, { "name": "3.3", @@ -143,11 +208,42 @@ "iconClass": "icon-python", "tags": "builder,python", "supports":"python:3.3,python", - "version": "3.3" + "version": "3.3", + "sampleRepo": "https://github.com/openshift/django-ex.git" }, "from": { - "Kind": "ImageStreamTag", - "Name": "latest" + "Kind": "DockerImage", + "Name": "registry.access.redhat.com/openshift3/python-33-rhel7:latest" + } + }, + { + "name": "2.7", + "annotations": { + "description": "Build and run Python 2.7 applications", + "iconClass": "icon-python", + "tags": "builder,python", + "supports":"python:2.7,python", + "version": "2.7", + "sampleRepo": "https://github.com/openshift/django-ex.git" + }, + "from": { + "Kind": "DockerImage", + "Name": "registry.access.redhat.com/rhscl/python-27-rhel7:latest" + } + }, + { + "name": "3.4", + "annotations": { + "description": "Build and run Python 3.4 applications", + "iconClass": "icon-python", + "tags": "builder,python", + "supports":"python:3.4,python", + "version": "3.4", + "sampleRepo": "https://github.com/openshift/django-ex.git" + }, + "from": { + "Kind": "DockerImage", + "Name": "registry.access.redhat.com/rhscl/python-34-rhel7:latest" } } ] @@ -161,16 +257,26 @@ "creationTimestamp": null }, "spec": { - "dockerImageRepository": "registry.access.redhat.com/openshift3/mysql-55-rhel7", "tags": [ { - "name": "latest" + "name": "latest", + "from": { + "Kind": "ImageStreamTag", + "Name": "5.5" + } }, { "name": "5.5", "from": { - "Kind": "ImageStreamTag", - "Name": "latest" + "Kind": "DockerImage", + "Name": "registry.access.redhat.com/openshift3/mysql-55-rhel7:latest" + } + }, + { + "name": "5.6", + "from": { + "Kind": "DockerImage", + "Name": "registry.access.redhat.com/rhscl/mysql-56-rhel7:latest" } } ] @@ -184,16 +290,26 @@ "creationTimestamp": null }, "spec": { - "dockerImageRepository": "registry.access.redhat.com/openshift3/postgresql-92-rhel7", "tags": [ { - "name": "latest" + "name": "latest", + "from": { + "Kind": "ImageStreamTag", + "Name": "9.2" + } }, { "name": "9.2", "from": { - "Kind": "ImageStreamTag", - "Name": "latest" + "Kind": "DockerImage", + "Name": "registry.access.redhat.com/openshift3/postgresql-92-rhel7:latest" + } + }, + { + "name": "9.4", + "from": { + "Kind": "DockerImage", + "Name": "registry.access.redhat.com/rhscl/postgresql-94-rhel7:latest" } } ] @@ -207,16 +323,26 @@ "creationTimestamp": null }, "spec": { - "dockerImageRepository": "registry.access.redhat.com/openshift3/mongodb-24-rhel7", "tags": [ { - "name": "latest" + "name": "latest", + "from": { + "Kind": "ImageStreamTag", + "Name": "2.4" + } }, { "name": "2.4", "from": { - "Kind": "ImageStreamTag", - "Name": "latest" + "Kind": "DockerImage", + "Name": "registry.access.redhat.com/openshift3/mongodb-24-rhel7:latest" + } + }, + { + "name": "2.6", + "from": { + "Kind": "DockerImage", + "Name": "registry.access.redhat.com/rhscl/mongodb-26-rhel7:latest" } } ] @@ -230,16 +356,19 @@ "creationTimestamp": null }, "spec": { - "dockerImageRepository": "registry.access.redhat.com/openshift3/jenkins-1-rhel7", "tags": [ { - "name": "latest" + "name": "latest", + "from": { + "Kind": "ImageStreamTag", + "Name": "1" + } }, { "name": "1", "from": { - "Kind": "ImageStreamTag", - "Name": "latest" + "Kind": "DockerImage", + "Name": "registry.access.redhat.com/openshift3/jenkins-1-rhel7:latest" } } ] diff --git a/roles/openshift_examples/files/examples/infrastructure-templates/enterprise/logging-deployer.yaml b/roles/openshift_examples/files/examples/infrastructure-templates/enterprise/logging-deployer.yaml new file mode 100644 index 000000000..b3b60bf9b --- /dev/null +++ b/roles/openshift_examples/files/examples/infrastructure-templates/enterprise/logging-deployer.yaml @@ -0,0 +1,151 @@ +apiVersion: "v1" +kind: "Template" +metadata: + name: logging-deployer-template + annotations: + description: "Template for deploying everything needed for aggregated logging. Requires cluster-admin 'logging-deployer' service account and 'logging-deployer' secret." + tags: "infrastructure" +labels: + logging-infra: deployer + provider: openshift + component: deployer +objects: +- + apiVersion: v1 + kind: Pod + metadata: + generateName: logging-deployer- + spec: + containers: + - image: ${IMAGE_PREFIX}logging-deployment:${IMAGE_VERSION} + imagePullPolicy: Always + name: deployer + volumeMounts: + - name: secret + mountPath: /secret + readOnly: true + - name: empty + mountPath: /etc/deploy + env: + - name: PROJECT + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: IMAGE_PREFIX + value: ${IMAGE_PREFIX} + - name: IMAGE_VERSION + value: ${IMAGE_VERSION} + - name: ENABLE_OPS_CLUSTER + value: ${ENABLE_OPS_CLUSTER} + - name: KIBANA_HOSTNAME + value: ${KIBANA_HOSTNAME} + - name: KIBANA_OPS_HOSTNAME + value: ${KIBANA_OPS_HOSTNAME} + - name: PUBLIC_MASTER_URL + value: ${PUBLIC_MASTER_URL} + - name: MASTER_URL + value: ${MASTER_URL} + - name: ES_INSTANCE_RAM + value: ${ES_INSTANCE_RAM} + - name: ES_CLUSTER_SIZE + value: ${ES_CLUSTER_SIZE} + - name: ES_NODE_QUORUM + value: ${ES_NODE_QUORUM} + - name: ES_RECOVER_AFTER_NODES + value: ${ES_RECOVER_AFTER_NODES} + - name: ES_RECOVER_EXPECTED_NODES + value: ${ES_RECOVER_EXPECTED_NODES} + - name: ES_RECOVER_AFTER_TIME + value: ${ES_RECOVER_AFTER_TIME} + - name: ES_OPS_INSTANCE_RAM + value: ${ES_OPS_INSTANCE_RAM} + - name: ES_OPS_CLUSTER_SIZE + value: ${ES_OPS_CLUSTER_SIZE} + - name: ES_OPS_NODE_QUORUM + value: ${ES_OPS_NODE_QUORUM} + - name: ES_OPS_RECOVER_AFTER_NODES + value: ${ES_OPS_RECOVER_AFTER_NODES} + - name: ES_OPS_RECOVER_EXPECTED_NODES + value: ${ES_OPS_RECOVER_EXPECTED_NODES} + - name: ES_OPS_RECOVER_AFTER_TIME + value: ${ES_OPS_RECOVER_AFTER_TIME} + dnsPolicy: ClusterFirst + restartPolicy: Never + serviceAccount: logging-deployer + volumes: + - name: empty + emptyDir: {} + - name: secret + secret: + secretName: logging-deployer +parameters: +- + description: 'Specify prefix for logging components; e.g. for "openshift/origin-logging-deployer:v1.1", set prefix "openshift/origin-"' + name: IMAGE_PREFIX + value: "registry.access.redhat.com/openshift3/" +- + description: 'Specify version for logging components; e.g. for "openshift/origin-logging-deployer:v1.1", set version "v1.1"' + name: IMAGE_VERSION + value: "3.1.0" +- + description: "If true, set up to use a second ES cluster for ops logs." + name: ENABLE_OPS_CLUSTER + value: "false" +- + description: "External hostname where clients will reach kibana" + name: KIBANA_HOSTNAME + required: true +- + description: "External hostname at which admins will visit the ops Kibana." + name: KIBANA_OPS_HOSTNAME + value: kibana-ops.example.com +- + description: "External URL for the master, for OAuth purposes" + name: PUBLIC_MASTER_URL + required: true +- + description: "Internal URL for the master, for authentication retrieval" + name: MASTER_URL + value: "https://kubernetes.default.svc.cluster.local" +- + description: "Amount of RAM to reserve per ElasticSearch instance." + name: ES_INSTANCE_RAM + value: "8G" +- + description: "How many instances of ElasticSearch to deploy." + name: ES_CLUSTER_SIZE + required: true +- + description: "Number of nodes required to elect a master (ES minimum_master_nodes). By default, derived from ES_CLUSTER_SIZE / 2 + 1." + name: ES_NODE_QUORUM +- + description: "Number of nodes required to be present before the cluster will recover from a full restart. By default, one fewer than ES_CLUSTER_SIZE." + name: ES_RECOVER_AFTER_NODES +- + description: "Number of nodes desired to be present before the cluster will recover from a full restart. By default, ES_CLUSTER_SIZE." + name: ES_RECOVER_EXPECTED_NODES +- + description: "Timeout for *expected* nodes to be present when cluster is recovering from a full restart." + name: ES_RECOVER_AFTER_TIME + value: "5m" +- + description: "Amount of RAM to reserve per ops ElasticSearch instance." + name: ES_OPS_INSTANCE_RAM + value: "8G" +- + description: "How many ops instances of ElasticSearch to deploy. By default, ES_CLUSTER_SIZE." + name: ES_OPS_CLUSTER_SIZE +- + description: "Number of ops nodes required to elect a master (ES minimum_master_nodes). By default, derived from ES_CLUSTER_SIZE / 2 + 1." + name: ES_OPS_NODE_QUORUM +- + description: "Number of ops nodes required to be present before the cluster will recover from a full restart. By default, one fewer than ES_OPS_CLUSTER_SIZE." + name: ES_OPS_RECOVER_AFTER_NODES +- + description: "Number of ops nodes desired to be present before the cluster will recover from a full restart. By default, ES_OPS_CLUSTER_SIZE." + name: ES_OPS_RECOVER_EXPECTED_NODES +- + description: "Timeout for *expected* ops nodes to be present when cluster is recovering from a full restart." + name: ES_OPS_RECOVER_AFTER_TIME + value: "5m" + diff --git a/roles/openshift_examples/files/examples/infrastructure-templates/enterprise/metrics-deployer.yaml b/roles/openshift_examples/files/examples/infrastructure-templates/enterprise/metrics-deployer.yaml new file mode 100644 index 000000000..d823b2587 --- /dev/null +++ b/roles/openshift_examples/files/examples/infrastructure-templates/enterprise/metrics-deployer.yaml @@ -0,0 +1,116 @@ +#!/bin/bash +# +# Copyright 2014-2015 Red Hat, Inc. and/or its affiliates +# and other contributors as indicated by the @author tags. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +apiVersion: "v1" +kind: "Template" +metadata: + name: metrics-deployer-template + annotations: + description: "Template for deploying the required Metrics integration. Requires cluster-admin 'metrics-deployer' service account and 'metrics-deployer' secret." + tags: "infrastructure" +labels: + metrics-infra: deployer + provider: openshift + component: deployer +objects: +- + apiVersion: v1 + kind: Pod + metadata: + generateName: metrics-deployer- + spec: + containers: + - image: ${IMAGE_PREFIX}metrics-deployer:${IMAGE_VERSION} + name: deployer + volumeMounts: + - name: secret + mountPath: /secret + readOnly: true + - name: empty + mountPath: /etc/deploy + env: + - name: PROJECT + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: IMAGE_PREFIX + value: ${IMAGE_PREFIX} + - name: IMAGE_VERSION + value: ${IMAGE_VERSION} + - name: PUBLIC_MASTER_URL + value: ${PUBLIC_MASTER_URL} + - name: MASTER_URL + value: ${MASTER_URL} + - name: REDEPLOY + value: ${REDEPLOY} + - name: USE_PERSISTENT_STORAGE + value: ${USE_PERSISTENT_STORAGE} + - name: HAWKULAR_METRICS_HOSTNAME + value: ${HAWKULAR_METRICS_HOSTNAME} + - name: CASSANDRA_NODES + value: ${CASSANDRA_NODES} + - name: CASSANDRA_PV_SIZE + value: ${CASSANDRA_PV_SIZE} + - name: METRIC_DURATION + value: ${METRIC_DURATION} + dnsPolicy: ClusterFirst + restartPolicy: Never + serviceAccount: metrics-deployer + volumes: + - name: empty + emptyDir: {} + - name: secret + secret: + secretName: metrics-deployer +parameters: +- + description: 'Specify prefix for metrics components; e.g. for "openshift/origin-metrics-deployer:v1.1", set prefix "openshift/origin-"' + name: IMAGE_PREFIX + value: "hawkular/" +- + description: 'Specify version for metrics components; e.g. for "openshift/origin-metrics-deployer:v1.1", set version "v1.1"' + name: IMAGE_VERSION + value: "0.7.0-SNAPSHOT" +- + description: "Internal URL for the master, for authentication retrieval" + name: MASTER_URL + value: "https://kubernetes.default.svc:443" +- + description: "External hostname where clients will reach Hawkular Metrics" + name: HAWKULAR_METRICS_HOSTNAME + required: true +- + description: "If set to true the deployer will try and delete all the existing components before trying to redeploy." + name: REDEPLOY + value: "false" +- + description: "Set to true for persistent storage, set to false to use non persistent storage" + name: USE_PERSISTENT_STORAGE + value: "true" +- + description: "The number of Cassandra Nodes to deploy for the initial cluster" + name: CASSANDRA_NODES + value: "1" +- + description: "The persistent volume size for each of the Cassandra nodes" + name: CASSANDRA_PV_SIZE + value: "1Gi" +- + description: "How many days metrics should be stored for." + name: METRIC_DURATION + value: "7" diff --git a/roles/openshift_examples/files/examples/infrastructure-templates/origin/logging-deployer.yaml b/roles/openshift_examples/files/examples/infrastructure-templates/origin/logging-deployer.yaml new file mode 100644 index 000000000..4c798e148 --- /dev/null +++ b/roles/openshift_examples/files/examples/infrastructure-templates/origin/logging-deployer.yaml @@ -0,0 +1,151 @@ +apiVersion: "v1" +kind: "Template" +metadata: + name: logging-deployer-template + annotations: + description: "Template for deploying everything needed for aggregated logging. Requires cluster-admin 'logging-deployer' service account and 'logging-deployer' secret." + tags: "infrastructure" +labels: + logging-infra: deployer + provider: openshift + component: deployer +objects: +- + apiVersion: v1 + kind: Pod + metadata: + generateName: logging-deployer- + spec: + containers: + - image: ${IMAGE_PREFIX}logging-deployment:${IMAGE_VERSION} + imagePullPolicy: Always + name: deployer + volumeMounts: + - name: secret + mountPath: /secret + readOnly: true + - name: empty + mountPath: /etc/deploy + env: + - name: PROJECT + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: IMAGE_PREFIX + value: ${IMAGE_PREFIX} + - name: IMAGE_VERSION + value: ${IMAGE_VERSION} + - name: ENABLE_OPS_CLUSTER + value: ${ENABLE_OPS_CLUSTER} + - name: KIBANA_HOSTNAME + value: ${KIBANA_HOSTNAME} + - name: KIBANA_OPS_HOSTNAME + value: ${KIBANA_OPS_HOSTNAME} + - name: PUBLIC_MASTER_URL + value: ${PUBLIC_MASTER_URL} + - name: MASTER_URL + value: ${MASTER_URL} + - name: ES_INSTANCE_RAM + value: ${ES_INSTANCE_RAM} + - name: ES_CLUSTER_SIZE + value: ${ES_CLUSTER_SIZE} + - name: ES_NODE_QUORUM + value: ${ES_NODE_QUORUM} + - name: ES_RECOVER_AFTER_NODES + value: ${ES_RECOVER_AFTER_NODES} + - name: ES_RECOVER_EXPECTED_NODES + value: ${ES_RECOVER_EXPECTED_NODES} + - name: ES_RECOVER_AFTER_TIME + value: ${ES_RECOVER_AFTER_TIME} + - name: ES_OPS_INSTANCE_RAM + value: ${ES_OPS_INSTANCE_RAM} + - name: ES_OPS_CLUSTER_SIZE + value: ${ES_OPS_CLUSTER_SIZE} + - name: ES_OPS_NODE_QUORUM + value: ${ES_OPS_NODE_QUORUM} + - name: ES_OPS_RECOVER_AFTER_NODES + value: ${ES_OPS_RECOVER_AFTER_NODES} + - name: ES_OPS_RECOVER_EXPECTED_NODES + value: ${ES_OPS_RECOVER_EXPECTED_NODES} + - name: ES_OPS_RECOVER_AFTER_TIME + value: ${ES_OPS_RECOVER_AFTER_TIME} + dnsPolicy: ClusterFirst + restartPolicy: Never + serviceAccount: logging-deployer + volumes: + - name: empty + emptyDir: {} + - name: secret + secret: + secretName: logging-deployer +parameters: +- + description: 'Specify prefix for logging components; e.g. for "openshift/origin-logging-deployer:v1.1", set prefix "openshift/origin-"' + name: IMAGE_PREFIX + value: "docker.io/openshift/origin-" +- + description: 'Specify version for logging components; e.g. for "openshift/origin-logging-deployer:v1.1", set version "v1.1"' + name: IMAGE_VERSION + value: "latest" +- + description: "If true, set up to use a second ES cluster for ops logs." + name: ENABLE_OPS_CLUSTER + value: "false" +- + description: "External hostname where clients will reach kibana" + name: KIBANA_HOSTNAME + required: true +- + description: "External hostname at which admins will visit the ops Kibana." + name: KIBANA_OPS_HOSTNAME + value: kibana-ops.example.com +- + description: "External URL for the master, for OAuth purposes" + name: PUBLIC_MASTER_URL + required: true +- + description: "Internal URL for the master, for authentication retrieval" + name: MASTER_URL + value: "https://kubernetes.default.svc.cluster.local" +- + description: "Amount of RAM to reserve per ElasticSearch instance." + name: ES_INSTANCE_RAM + value: "8G" +- + description: "How many instances of ElasticSearch to deploy." + name: ES_CLUSTER_SIZE + required: true +- + description: "Number of nodes required to elect a master (ES minimum_master_nodes). By default, derived from ES_CLUSTER_SIZE / 2 + 1." + name: ES_NODE_QUORUM +- + description: "Number of nodes required to be present before the cluster will recover from a full restart. By default, one fewer than ES_CLUSTER_SIZE." + name: ES_RECOVER_AFTER_NODES +- + description: "Number of nodes desired to be present before the cluster will recover from a full restart. By default, ES_CLUSTER_SIZE." + name: ES_RECOVER_EXPECTED_NODES +- + description: "Timeout for *expected* nodes to be present when cluster is recovering from a full restart." + name: ES_RECOVER_AFTER_TIME + value: "5m" +- + description: "Amount of RAM to reserve per ops ElasticSearch instance." + name: ES_OPS_INSTANCE_RAM + value: "8G" +- + description: "How many ops instances of ElasticSearch to deploy. By default, ES_CLUSTER_SIZE." + name: ES_OPS_CLUSTER_SIZE +- + description: "Number of ops nodes required to elect a master (ES minimum_master_nodes). By default, derived from ES_CLUSTER_SIZE / 2 + 1." + name: ES_OPS_NODE_QUORUM +- + description: "Number of ops nodes required to be present before the cluster will recover from a full restart. By default, one fewer than ES_OPS_CLUSTER_SIZE." + name: ES_OPS_RECOVER_AFTER_NODES +- + description: "Number of ops nodes desired to be present before the cluster will recover from a full restart. By default, ES_OPS_CLUSTER_SIZE." + name: ES_OPS_RECOVER_EXPECTED_NODES +- + description: "Timeout for *expected* ops nodes to be present when cluster is recovering from a full restart." + name: ES_OPS_RECOVER_AFTER_TIME + value: "5m" + diff --git a/roles/openshift_examples/files/examples/infrastructure-templates/origin/metrics-deployer.yaml b/roles/openshift_examples/files/examples/infrastructure-templates/origin/metrics-deployer.yaml new file mode 100644 index 000000000..d823b2587 --- /dev/null +++ b/roles/openshift_examples/files/examples/infrastructure-templates/origin/metrics-deployer.yaml @@ -0,0 +1,116 @@ +#!/bin/bash +# +# Copyright 2014-2015 Red Hat, Inc. and/or its affiliates +# and other contributors as indicated by the @author tags. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +apiVersion: "v1" +kind: "Template" +metadata: + name: metrics-deployer-template + annotations: + description: "Template for deploying the required Metrics integration. Requires cluster-admin 'metrics-deployer' service account and 'metrics-deployer' secret." + tags: "infrastructure" +labels: + metrics-infra: deployer + provider: openshift + component: deployer +objects: +- + apiVersion: v1 + kind: Pod + metadata: + generateName: metrics-deployer- + spec: + containers: + - image: ${IMAGE_PREFIX}metrics-deployer:${IMAGE_VERSION} + name: deployer + volumeMounts: + - name: secret + mountPath: /secret + readOnly: true + - name: empty + mountPath: /etc/deploy + env: + - name: PROJECT + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: IMAGE_PREFIX + value: ${IMAGE_PREFIX} + - name: IMAGE_VERSION + value: ${IMAGE_VERSION} + - name: PUBLIC_MASTER_URL + value: ${PUBLIC_MASTER_URL} + - name: MASTER_URL + value: ${MASTER_URL} + - name: REDEPLOY + value: ${REDEPLOY} + - name: USE_PERSISTENT_STORAGE + value: ${USE_PERSISTENT_STORAGE} + - name: HAWKULAR_METRICS_HOSTNAME + value: ${HAWKULAR_METRICS_HOSTNAME} + - name: CASSANDRA_NODES + value: ${CASSANDRA_NODES} + - name: CASSANDRA_PV_SIZE + value: ${CASSANDRA_PV_SIZE} + - name: METRIC_DURATION + value: ${METRIC_DURATION} + dnsPolicy: ClusterFirst + restartPolicy: Never + serviceAccount: metrics-deployer + volumes: + - name: empty + emptyDir: {} + - name: secret + secret: + secretName: metrics-deployer +parameters: +- + description: 'Specify prefix for metrics components; e.g. for "openshift/origin-metrics-deployer:v1.1", set prefix "openshift/origin-"' + name: IMAGE_PREFIX + value: "hawkular/" +- + description: 'Specify version for metrics components; e.g. for "openshift/origin-metrics-deployer:v1.1", set version "v1.1"' + name: IMAGE_VERSION + value: "0.7.0-SNAPSHOT" +- + description: "Internal URL for the master, for authentication retrieval" + name: MASTER_URL + value: "https://kubernetes.default.svc:443" +- + description: "External hostname where clients will reach Hawkular Metrics" + name: HAWKULAR_METRICS_HOSTNAME + required: true +- + description: "If set to true the deployer will try and delete all the existing components before trying to redeploy." + name: REDEPLOY + value: "false" +- + description: "Set to true for persistent storage, set to false to use non persistent storage" + name: USE_PERSISTENT_STORAGE + value: "true" +- + description: "The number of Cassandra Nodes to deploy for the initial cluster" + name: CASSANDRA_NODES + value: "1" +- + description: "The persistent volume size for each of the Cassandra nodes" + name: CASSANDRA_PV_SIZE + value: "1Gi" +- + description: "How many days metrics should be stored for." + name: METRIC_DURATION + value: "7" diff --git a/roles/openshift_examples/files/examples/quickstart-templates/cakephp-mysql.json b/roles/openshift_examples/files/examples/quickstart-templates/cakephp-mysql.json index deac2010f..da5679444 100644 --- a/roles/openshift_examples/files/examples/quickstart-templates/cakephp-mysql.json +++ b/roles/openshift_examples/files/examples/quickstart-templates/cakephp-mysql.json @@ -201,6 +201,10 @@ { "name": "CAKEPHP_SECURITY_CIPHER_SEED", "value": "${CAKEPHP_SECURITY_CIPHER_SEED}" + }, + { + "name": "OPCACHE_REVALIDATE_FREQ", + "value": "${OPCACHE_REVALIDATE_FREQ}" } ] } @@ -364,6 +368,11 @@ "description": "Security cipher seed for session hash", "generate": "expression", "from": "[0-9]{30}" + }, + { + "name": "OPCACHE_REVALIDATE_FREQ", + "description": "The How often to check script timestamps for updates, in seconds. 0 will result in OPcache checking for updates on every request.", + "value": "2" } ] } diff --git a/roles/openshift_examples/files/examples/quickstart-templates/cakephp.json b/roles/openshift_examples/files/examples/quickstart-templates/cakephp.json index ec556ea13..f426e1dd6 100644 --- a/roles/openshift_examples/files/examples/quickstart-templates/cakephp.json +++ b/roles/openshift_examples/files/examples/quickstart-templates/cakephp.json @@ -190,6 +190,10 @@ { "name": "CAKEPHP_SECURITY_CIPHER_SEED", "value": "${CAKEPHP_SECURITY_CIPHER_SEED}" + }, + { + "name": "OPCACHE_REVALIDATE_FREQ", + "value": "${OPCACHE_REVALIDATE_FREQ}" } ] } @@ -261,6 +265,11 @@ "description": "Security cipher seed for session hash", "generate": "expression", "from": "[0-9]{30}" + }, + { + "name": "OPCACHE_REVALIDATE_FREQ", + "description": "The How often to check script timestamps for updates, in seconds. 0 will result in OPcache checking for updates on every request.", + "value": "2" } ] } diff --git a/roles/openshift_examples/files/examples/quickstart-templates/dancer-mysql.json b/roles/openshift_examples/files/examples/quickstart-templates/dancer-mysql.json index 2cbcc0889..55f655102 100644 --- a/roles/openshift_examples/files/examples/quickstart-templates/dancer-mysql.json +++ b/roles/openshift_examples/files/examples/quickstart-templates/dancer-mysql.json @@ -175,6 +175,10 @@ { "name": "SECRET_KEY_BASE", "value": "${SECRET_KEY_BASE}" + }, + { + "name": "PERL_APACHE2_RELOAD", + "value": "${PERL_APACHE2_RELOAD}" } ] } @@ -330,6 +334,11 @@ "value": "openshift/mysql-55-centos7" }, { + "name": "PERL_APACHE2_RELOAD", + "description": "Set this to \"true\" to enable automatic reloading of modified Perl modules", + "value": "" + }, + { "name": "SECRET_KEY_BASE", "description": "Your secret key for verifying the integrity of signed cookies", "generate": "expression", diff --git a/roles/openshift_examples/files/examples/quickstart-templates/dancer.json b/roles/openshift_examples/files/examples/quickstart-templates/dancer.json index 43271dfc5..3ee19be83 100644 --- a/roles/openshift_examples/files/examples/quickstart-templates/dancer.json +++ b/roles/openshift_examples/files/examples/quickstart-templates/dancer.json @@ -157,6 +157,12 @@ { "containerPort": 8080 } + ], + "env": [ + { + "name": "PERL_APACHE2_RELOAD", + "value": "${PERL_APACHE2_RELOAD}" + } ] } ] @@ -195,6 +201,11 @@ "description": "Your secret key for verifying the integrity of signed cookies", "generate": "expression", "from": "[a-z0-9]{127}" + }, + { + "name": "PERL_APACHE2_RELOAD", + "description": "Set this to \"true\" to enable automatic reloading of modified Perl modules", + "value": "" } ] } diff --git a/roles/openshift_examples/files/examples/quickstart-templates/nodejs-mongodb.json b/roles/openshift_examples/files/examples/quickstart-templates/nodejs-mongodb.json index 017b5be19..8760b074c 100644 --- a/roles/openshift_examples/files/examples/quickstart-templates/nodejs-mongodb.json +++ b/roles/openshift_examples/files/examples/quickstart-templates/nodejs-mongodb.json @@ -102,6 +102,12 @@ "github": { "secret": "${GITHUB_WEBHOOK_SECRET}" } + }, + { + "type": "Generic", + "generic": { + "secret": "${GENERIC_WEBHOOK_SECRET}" + } } ] } @@ -298,6 +304,12 @@ "from": "[a-zA-Z0-9]{40}" }, { + "name": "GENERIC_WEBHOOK_SECRET", + "description": "A secret string used to configure the Generic webhook", + "generate": "expression", + "from": "[a-zA-Z0-9]{40}" + }, + { "name": "DATABASE_SERVICE_NAME", "description": "Database service name", "value": "mongodb" @@ -328,7 +340,7 @@ { "name": "MONGODB_IMAGE", "description": "Image to use for mongodb", - "value": "openshift/mongodb-24-centos7" + "value": "openshift/mongodb-24-centos7" } ] } diff --git a/roles/openshift_examples/files/examples/quickstart-templates/nodejs.json b/roles/openshift_examples/files/examples/quickstart-templates/nodejs.json index 55488ab41..e047266e3 100644 --- a/roles/openshift_examples/files/examples/quickstart-templates/nodejs.json +++ b/roles/openshift_examples/files/examples/quickstart-templates/nodejs.json @@ -102,6 +102,12 @@ "github": { "secret": "${GITHUB_WEBHOOK_SECRET}" } + }, + { + "type": "Generic", + "generic": { + "secret": "${GENERIC_WEBHOOK_SECRET}" + } } ] } @@ -213,6 +219,12 @@ "from": "[a-zA-Z0-9]{40}" }, { + "name": "GENERIC_WEBHOOK_SECRET", + "description": "A secret string used to configure the Generic webhook", + "generate": "expression", + "from": "[a-zA-Z0-9]{40}" + }, + { "name": "DATABASE_SERVICE_NAME", "description": "Database service name" }, 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 index 37e6269fe..aaf5569ae 100644 --- a/roles/openshift_examples/files/examples/xpaas-streams/jboss-image-streams.json +++ b/roles/openshift_examples/files/examples/xpaas-streams/jboss-image-streams.json @@ -12,19 +12,21 @@ "kind": "ImageStream", "apiVersion": "v1", "metadata": { - "name": "jboss-webserver3-tomcat7-openshift" + "name": "jboss-webserver30-tomcat7-openshift" }, "spec": { - "dockerImageRepository": "registry.access.redhat.com/jboss-webserver-3/tomcat7-openshift", + "dockerImageRepository": "registry.access.redhat.com/jboss-webserver-3/webserver30-tomcat7-openshift", "tags": [ { - "name": "3.0", + "name": "1.1", "annotations": { - "description": "JBoss Web Server v3 Tomcat 7 STI images.", + "description": "JBoss Web Server 3.0 Tomcat 7 S2I images.", "iconClass": "icon-jboss", - "tags": "java", - "supports":"tomcat7:3.0,java", - "version": "3.0" + "tags": "builder,tomcat,tomcat7,java,jboss,xpaas", + "supports":"tomcat7:3.0,tomcat:7,java:8,xpaas:1.1", + "sampleRepo": "https://github.com/jboss-openshift/openshift-quickstarts.git", + "sampleContextDir": "tomcat-websocket-chat", + "version": "1.1" } } ] @@ -34,19 +36,21 @@ "kind": "ImageStream", "apiVersion": "v1", "metadata": { - "name": "jboss-webserver3-tomcat8-openshift" + "name": "jboss-webserver30-tomcat8-openshift" }, "spec": { - "dockerImageRepository": "registry.access.redhat.com/jboss-webserver-3/tomcat8-openshift", + "dockerImageRepository": "registry.access.redhat.com/jboss-webserver-3/webserver30-tomcat8-openshift", "tags": [ { - "name": "3.0", + "name": "1.1", "annotations": { - "description": "JBoss Web Server v3 Tomcat 8 STI images.", + "description": "JBoss Web Server 3.0 Tomcat 8 S2I images.", "iconClass": "icon-jboss", - "tags": "java", - "supports":"tomcat8:3.0,java", - "version": "3.0" + "tags": "builder,tomcat,tomcat8,java,jboss,xpaas", + "supports":"tomcat8:3.0,tomcat:8,java:8,xpaas:1.1", + "sampleRepo": "https://github.com/jboss-openshift/openshift-quickstarts.git", + "sampleContextDir": "tomcat-websocket-chat", + "version": "1.1" } } ] @@ -56,19 +60,22 @@ "kind": "ImageStream", "apiVersion": "v1", "metadata": { - "name": "jboss-eap6-openshift" + "name": "jboss-eap64-openshift" }, "spec": { - "dockerImageRepository": "registry.access.redhat.com/jboss-eap-6/eap-openshift", + "dockerImageRepository": "registry.access.redhat.com/jboss-eap-6/eap64-openshift", "tags": [ { - "name": "6.4", + "name": "1.1", "annotations": { - "description": "JBoss EAP 6 STI images.", + "description": "JBoss EAP 6.4 S2I images.", "iconClass": "icon-jboss", - "tags": "javaee", - "supports":"eap:6.4,jee,java", - "version": "6.4" + "tags": "builder,eap,javaee,java,jboss,xpaas", + "supports":"eap:6.4,javaee:6,java:8,xpaas:1.1", + "sampleRepo": "https://github.com/jboss-developer/jboss-eap-quickstarts.git", + "sampleContextDir": "kitchensink", + "sampleRef": "6.4.x", + "version": "1.1" } } ] @@ -78,19 +85,19 @@ "kind": "ImageStream", "apiVersion": "v1", "metadata": { - "name": "jboss-amq-6" + "name": "jboss-amq-62" }, "spec": { - "dockerImageRepository": "registry.access.redhat.com/jboss-amq-6/amq-openshift", + "dockerImageRepository": "registry.access.redhat.com/jboss-amq-6/amq62-openshift", "tags": [ { - "name": "6.2", + "name": "1.1", "annotations": { - "description": "JBoss ActiveMQ 6 broker image.", + "description": "JBoss A-MQ 6.2 broker image.", "iconClass": "icon-jboss", - "tags": "javaee", - "supports":"amq:6.2,jee,java", - "version": "6.2" + "tags": "messaging,amq,jboss,xpaas", + "supports":"amq:6.2,messaging,xpaas:1.1", + "version": "1.1" } } ] diff --git a/roles/openshift_examples/files/examples/xpaas-templates/amq62-basic.json b/roles/openshift_examples/files/examples/xpaas-templates/amq62-basic.json new file mode 100644 index 000000000..3fd04c28c --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/amq62-basic.json @@ -0,0 +1,325 @@ +{ + "kind": "Template", + "apiVersion": "v1", + "metadata": { + "annotations": { + "description": "Application template for JBoss A-MQ brokers. These can be deployed as standalone or in a mesh. This template doesn't feature SSL support.", + "iconClass": "icon-jboss", + "tags": "messaging,amq,jboss,xpaas", + "version": "1.1.0" + }, + "name": "amq62-basic" + }, + "labels": { + "template": "amq62-basic", + "xpaas": "1.1.0" + }, + "parameters": [ + { + "description": "The name for the application.", + "name": "APPLICATION_NAME", + "value": "broker", + "required": true + }, + { + "description": "Protocols to configure, separated by commas. Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`.", + "name": "MQ_PROTOCOL", + "value": "openwire", + "required": false + }, + { + "description": "Queue names, separated by commas. These queues will be automatically created when the broker starts. If left empty, queues will be still created dynamically.", + "name": "MQ_QUEUES", + "value": "", + "required": false + }, + { + "description": "Topic names, separated by commas. These topics will be automatically created when the broker starts. If left empty, topics will be still created dynamically.", + "name": "MQ_TOPICS", + "value": "", + "required": false + }, + { + "description": "User name for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", + "name": "MQ_USERNAME", + "from": "user[a-zA-Z0-9]{3}", + "generate": "expression", + "required": false + }, + { + "description": "Password for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", + "name": "MQ_PASSWORD", + "from": "[a-zA-Z0-9]{8}", + "generate": "expression", + "required": false + }, + { + "description": "User name for admin user. If left empty, it will be generated.", + "name": "AMQ_ADMIN_USERNAME", + "from": "user[a-zA-Z0-9]{3}", + "generate": "expression", + "required": true + }, + { + "description": "Password for admin user. If left empty, it will be generated.", + "name": "AMQ_ADMIN_PASSWORD", + "from": "[a-zA-Z0-9]{8}", + "generate": "expression", + "required": true + }, + { + "description": "The discovery agent type to use for discovering mesh endpoints. 'dns' will use OpenShift's DNS service to resolve endpoints. 'kube' will use Kubernetes REST API to resolve service endpoints. If using 'kube' the service account for the pod must have the 'view' role, which can be added via 'oc policy add-role-to-user view system:serviceaccount:<namespace>:default' where <namespace> is the project namespace.", + "name": "AMQ_MESH_DISCOVERY_TYPE", + "value": "kube", + "required": false + }, + { + "description": "The A-MQ storage usage limit", + "name": "AMQ_STORAGE_USAGE_LIMIT", + "value": "100 gb", + "required": false + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true + } + ], + "objects": [ + { + "kind": "Service", + "apiVersion": "v1", + "spec": { + "ports": [ + { + "port": 5672, + "targetPort": 5672 + } + ], + "selector": { + "deploymentConfig": "${APPLICATION_NAME}-amq" + } + }, + "metadata": { + "name": "${APPLICATION_NAME}-amq-amqp", + "labels": { + "application": "${APPLICATION_NAME}" + }, + "annotations": { + "description": "The broker's AMQP port." + } + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "spec": { + "ports": [ + { + "port": 1883, + "targetPort": 1883 + } + ], + "selector": { + "deploymentConfig": "${APPLICATION_NAME}-amq" + } + }, + "metadata": { + "name": "${APPLICATION_NAME}-amq-mqtt", + "labels": { + "application": "${APPLICATION_NAME}" + }, + "annotations": { + "description": "The broker's MQTT port." + } + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "spec": { + "ports": [ + { + "port": 61613, + "targetPort": 61613 + } + ], + "selector": { + "deploymentConfig": "${APPLICATION_NAME}-amq" + } + }, + "metadata": { + "name": "${APPLICATION_NAME}-amq-stomp", + "labels": { + "application": "${APPLICATION_NAME}" + }, + "annotations": { + "description": "The broker's STOMP port." + } + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "spec": { + "ports": [ + { + "port": 61616, + "targetPort": 61616 + } + ], + "selector": { + "deploymentConfig": "${APPLICATION_NAME}-amq" + } + }, + "metadata": { + "name": "${APPLICATION_NAME}-amq-tcp", + "labels": { + "application": "${APPLICATION_NAME}" + }, + "annotations": { + "description": "The broker's OpenWire port." + } + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "${APPLICATION_NAME}-amq", + "labels": { + "application": "${APPLICATION_NAME}" + } + }, + "spec": { + "strategy": { + "type": "Recreate" + }, + "triggers": [ + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "${APPLICATION_NAME}-amq" + ], + "from": { + "kind": "ImageStreamTag", + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-amq-62:1.1" + } + } + }, + { + "type": "ConfigChange" + } + ], + "replicas": 1, + "selector": { + "deploymentConfig": "${APPLICATION_NAME}-amq" + }, + "template": { + "metadata": { + "name": "${APPLICATION_NAME}-amq", + "labels": { + "deploymentConfig": "${APPLICATION_NAME}-amq", + "application": "${APPLICATION_NAME}" + } + }, + "spec": { + "terminationGracePeriodSeconds": 60, + "containers": [ + { + "name": "${APPLICATION_NAME}-amq", + "image": "jboss-amq-62", + "imagePullPolicy": "Always", + "readinessProbe": { + "exec": { + "command": [ + "/bin/bash", + "-c", + "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": "amqp", + "containerPort": 5672, + "protocol": "TCP" + }, + { + "name": "mqtt", + "containerPort": 1883, + "protocol": "TCP" + }, + { + "name": "stomp", + "containerPort": 61613, + "protocol": "TCP" + }, + { + "name": "tcp", + "containerPort": 61616, + "protocol": "TCP" + } + ], + "env": [ + { + "name": "AMQ_USER", + "value": "${MQ_USERNAME}" + }, + { + "name": "AMQ_PASSWORD", + "value": "${MQ_PASSWORD}" + }, + { + "name": "AMQ_TRANSPORTS", + "value": "${MQ_PROTOCOL}" + }, + { + "name": "AMQ_QUEUES", + "value": "${MQ_QUEUES}" + }, + { + "name": "AMQ_TOPICS", + "value": "${MQ_TOPICS}" + }, + { + "name": "AMQ_ADMIN_USERNAME", + "value": "${AMQ_ADMIN_USERNAME}" + }, + { + "name": "AMQ_ADMIN_PASSWORD", + "value": "${AMQ_ADMIN_PASSWORD}" + }, + { + "name": "AMQ_MESH_DISCOVERY_TYPE", + "value": "${AMQ_MESH_DISCOVERY_TYPE}" + }, + { + "name": "AMQ_MESH_SERVICE_NAME", + "value": "${APPLICATION_NAME}-amq-tcp" + }, + { + "name": "AMQ_MESH_SERVICE_NAMESPACE", + "valueFrom": { + "fieldRef": { + "fieldPath": "metadata.namespace" + } + } + }, + { + "name": "AMQ_STORAGE_USAGE_LIMIT", + "value": "${AMQ_STORAGE_USAGE_LIMIT}" + } + ] + } + ] + } + } + } + } + ] +} diff --git a/roles/openshift_examples/files/examples/xpaas-templates/amq6-persistent.json b/roles/openshift_examples/files/examples/xpaas-templates/amq62-persistent-ssl.json index 5cbc7ee7e..aa9e716cf 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/amq6-persistent.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/amq62-persistent-ssl.json @@ -3,82 +3,117 @@ "apiVersion": "v1", "metadata": { "annotations": { - "description": "Application template for ActiveMQ brokers using persistent storage." + "description": "Application template for JBoss A-MQ brokers. These are deployed as standalone and use persistent storage for saving messages. This template supports SSL and requires usage of OpenShift secrets.", + "iconClass": "icon-jboss", + "tags": "messaging,amq,jboss,xpaas", + "version": "1.1.0" }, - "name": "amq6-persistent" + "name": "amq62-persistent-ssl" }, "labels": { - "template": "amq6-persistent" + "template": "amq62-persistent-ssl", + "xpaas": "1.1.0" }, "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" + "value": "broker", + "required": true }, { - "description": "Protocol to configure. Only openwire is supported by EAP. amqp, amqp+ssl, mqtt, stomp, stomp+ssl, and ssl are not supported by EAP", + "description": "Protocols to configure, separated by commas. Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`. SSL variants of these protocols will be configured automaticaly.", "name": "MQ_PROTOCOL", - "value": "openwire" + "value": "openwire", + "required": false }, { - "description": "Queue names", + "description": "Queue names, separated by commas. These queues will be automatically created when the broker starts. If left empty, queues will be still created dynamically.", "name": "MQ_QUEUES", - "value": "" + "value": "", + "required": false }, { - "description": "Topic names", + "description": "Topic names, separated by commas. These topics will be automatically created when the broker starts. If left empty, topics will be still created dynamically.", "name": "MQ_TOPICS", - "value": "" + "value": "", + "required": false }, { "description": "Size of persistent storage for database volume.", "name": "VOLUME_CAPACITY", - "value": "512Mi" + "value": "512Mi", + "required": true }, { - "description": "Broker user name", + "description": "User name for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", "name": "MQ_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": false }, { - "description": "Broker user password", + "description": "Password for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", "name": "MQ_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": false }, { - "description": "ActiveMQ Admin User", + "description": "User name for admin user. If left empty, it will be generated.", "name": "AMQ_ADMIN_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "ActiveMQ Admin Password", + "description": "Password for admin user. If left empty, it will be generated.", "name": "AMQ_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Name of a secret containing SSL related files", "name": "AMQ_SECRET", - "value": "amq-app-secret" + "value": "amq-app-secret", + "required": true }, { "description": "SSL trust store filename", "name": "AMQ_TRUSTSTORE", - "value": "broker.ts" + "value": "broker.ts", + "required": true + }, + { + "description": "SSL trust store password", + "name": "AMQ_TRUSTSTORE_PASSWORD", + "value": "", + "required": true }, { "description": "SSL key store filename", "name": "AMQ_KEYSTORE", - "value": "broker.ks" + "value": "broker.ks", + "required": true + }, + { + "description": "Password for accessing SSL keystore", + "name": "AMQ_KEYSTORE_PASSWORD", + "value": "", + "required": true + }, + { + "description": "The A-MQ storage usage limit", + "name": "AMQ_STORAGE_USAGE_LIMIT", + "value": "100 gb", + "required": false + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -102,7 +137,7 @@ "application": "${APPLICATION_NAME}" }, "annotations": { - "description": "The broker's amqp port." + "description": "The broker's AMQP port." } } }, @@ -126,7 +161,7 @@ "application": "${APPLICATION_NAME}" }, "annotations": { - "description": "The broker's amqp ssl port." + "description": "The broker's AMQP SSL port." } } }, @@ -150,7 +185,31 @@ "application": "${APPLICATION_NAME}" }, "annotations": { - "description": "The broker's mqtt port." + "description": "The broker's MQTT port." + } + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "spec": { + "ports": [ + { + "port": 8883, + "targetPort": 8883 + } + ], + "selector": { + "deploymentConfig": "${APPLICATION_NAME}-amq" + } + }, + "metadata": { + "name": "${APPLICATION_NAME}-amq-mqtt-ssl", + "labels": { + "application": "${APPLICATION_NAME}" + }, + "annotations": { + "description": "The broker's MQTT SSL port." } } }, @@ -174,7 +233,7 @@ "application": "${APPLICATION_NAME}" }, "annotations": { - "description": "The broker's stomp port." + "description": "The broker's STOMP port." } } }, @@ -198,7 +257,7 @@ "application": "${APPLICATION_NAME}" }, "annotations": { - "description": "The broker's stomp ssl port." + "description": "The broker's STOMP SSL port." } } }, @@ -222,7 +281,7 @@ "application": "${APPLICATION_NAME}" }, "annotations": { - "description": "The broker's tcp (openwire) port." + "description": "The broker's OpenWire port." } } }, @@ -246,7 +305,7 @@ "application": "${APPLICATION_NAME}" }, "annotations": { - "description": "The broker's tcp ssl (openwire) port." + "description": "The broker's OpenWire (SSL) port." } } }, @@ -273,10 +332,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-amq-6:${AMQ_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-amq-62:1.1" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -293,10 +355,11 @@ }, "spec": { "serviceAccount": "amq-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}-amq", - "image": "jboss-amq-6", + "image": "jboss-amq-62", "imagePullPolicy": "Always", "volumeMounts": [ { @@ -335,6 +398,11 @@ "protocol": "TCP" }, { + "name": "mqtt-ssl", + "containerPort": 8883, + "protocol": "TCP" + }, + { "name": "stomp", "containerPort": 61613, "protocol": "TCP" @@ -365,7 +433,7 @@ "value": "${MQ_PASSWORD}" }, { - "name": "AMQ_PROTOCOLS", + "name": "AMQ_TRANSPORTS", "value": "${MQ_PROTOCOL}" }, { @@ -393,8 +461,20 @@ "value": "${AMQ_TRUSTSTORE}" }, { + "name": "AMQ_TRUSTSTORE_PASSWORD", + "value": "${AMQ_TRUSTSTORE_PASSWORD}" + }, + { "name": "AMQ_KEYSTORE", "value": "${AMQ_KEYSTORE}" + }, + { + "name": "AMQ_KEYSTORE_PASSWORD", + "value": "${AMQ_KEYSTORE_PASSWORD}" + }, + { + "name": "AMQ_STORAGE_USAGE_LIMIT", + "value": "${AMQ_STORAGE_USAGE_LIMIT}" } ] } @@ -427,7 +507,9 @@ } }, "spec": { - "accessModes": [ "ReadWriteOnce" ], + "accessModes": [ + "ReadWriteOnce" + ], "resources": { "requests": { "storage": "${VOLUME_CAPACITY}" diff --git a/roles/openshift_examples/files/examples/xpaas-templates/amq62-persistent.json b/roles/openshift_examples/files/examples/xpaas-templates/amq62-persistent.json new file mode 100644 index 000000000..3a2db3ce9 --- /dev/null +++ b/roles/openshift_examples/files/examples/xpaas-templates/amq62-persistent.json @@ -0,0 +1,343 @@ +{ + "kind": "Template", + "apiVersion": "v1", + "metadata": { + "annotations": { + "description": "Application template for JBoss A-MQ brokers. These can be deployed as standalone and use persistent storage for saving messages. This template doesn't feature SSL support.", + "iconClass": "icon-jboss", + "tags": "messaging,amq,jboss,xpaas", + "version": "1.1.0" + }, + "name": "amq62-persistent" + }, + "labels": { + "template": "amq62-persistent", + "xpaas": "1.1.0" + }, + "parameters": [ + { + "description": "The name for the application.", + "name": "APPLICATION_NAME", + "value": "broker", + "required": true + }, + { + "description": "Protocols to configure, separated by commas. Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`.", + "name": "MQ_PROTOCOL", + "value": "openwire", + "required": false + }, + { + "description": "Queue names, separated by commas. These queues will be automatically created when the broker starts. If left empty, queues will be still created dynamically.", + "name": "MQ_QUEUES", + "value": "", + "required": false + }, + { + "description": "Topic names, separated by commas. These topics will be automatically created when the broker starts. If left empty, topics will be still created dynamically.", + "name": "MQ_TOPICS", + "value": "", + "required": false + }, + { + "description": "Size of persistent storage for database volume.", + "name": "VOLUME_CAPACITY", + "value": "512Mi", + "required": true + }, + { + "description": "User name for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", + "name": "MQ_USERNAME", + "from": "user[a-zA-Z0-9]{3}", + "generate": "expression", + "required": false + }, + { + "description": "Password for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", + "name": "MQ_PASSWORD", + "from": "[a-zA-Z0-9]{8}", + "generate": "expression", + "required": false + }, + { + "description": "User name for admin user. If left empty, it will be generated.", + "name": "AMQ_ADMIN_USERNAME", + "from": "user[a-zA-Z0-9]{3}", + "generate": "expression", + "required": true + }, + { + "description": "Password for admin user. If left empty, it will be generated.", + "name": "AMQ_ADMIN_PASSWORD", + "from": "[a-zA-Z0-9]{8}", + "generate": "expression", + "required": true + }, + { + "description": "The A-MQ storage usage limit", + "name": "AMQ_STORAGE_USAGE_LIMIT", + "value": "100 gb", + "required": false + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true + } + ], + "objects": [ + { + "kind": "Service", + "apiVersion": "v1", + "spec": { + "ports": [ + { + "port": 5672, + "targetPort": 5672 + } + ], + "selector": { + "deploymentConfig": "${APPLICATION_NAME}-amq" + } + }, + "metadata": { + "name": "${APPLICATION_NAME}-amq-amqp", + "labels": { + "application": "${APPLICATION_NAME}" + }, + "annotations": { + "description": "The broker's AMQP port." + } + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "spec": { + "ports": [ + { + "port": 1883, + "targetPort": 1883 + } + ], + "selector": { + "deploymentConfig": "${APPLICATION_NAME}-amq" + } + }, + "metadata": { + "name": "${APPLICATION_NAME}-amq-mqtt", + "labels": { + "application": "${APPLICATION_NAME}" + }, + "annotations": { + "description": "The broker's MQTT port." + } + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "spec": { + "ports": [ + { + "port": 61613, + "targetPort": 61613 + } + ], + "selector": { + "deploymentConfig": "${APPLICATION_NAME}-amq" + } + }, + "metadata": { + "name": "${APPLICATION_NAME}-amq-stomp", + "labels": { + "application": "${APPLICATION_NAME}" + }, + "annotations": { + "description": "The broker's STOMP port." + } + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "spec": { + "ports": [ + { + "port": 61616, + "targetPort": 61616 + } + ], + "selector": { + "deploymentConfig": "${APPLICATION_NAME}-amq" + } + }, + "metadata": { + "name": "${APPLICATION_NAME}-amq-tcp", + "labels": { + "application": "${APPLICATION_NAME}" + }, + "annotations": { + "description": "The broker's OpenWire port." + } + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "${APPLICATION_NAME}-amq", + "labels": { + "application": "${APPLICATION_NAME}" + } + }, + "spec": { + "strategy": { + "type": "Recreate" + }, + "triggers": [ + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "${APPLICATION_NAME}-amq" + ], + "from": { + "kind": "ImageStreamTag", + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-amq-62:1.1" + } + } + }, + { + "type": "ConfigChange" + } + ], + "replicas": 1, + "selector": { + "deploymentConfig": "${APPLICATION_NAME}-amq" + }, + "template": { + "metadata": { + "name": "${APPLICATION_NAME}-amq", + "labels": { + "deploymentConfig": "${APPLICATION_NAME}-amq", + "application": "${APPLICATION_NAME}" + } + }, + "spec": { + "terminationGracePeriodSeconds": 60, + "containers": [ + { + "name": "${APPLICATION_NAME}-amq", + "image": "jboss-amq-62", + "imagePullPolicy": "Always", + "volumeMounts": [ + { + "mountPath": "/opt/amq/data/kahadb", + "name": "${APPLICATION_NAME}-amq-pvol" + } + ], + "readinessProbe": { + "exec": { + "command": [ + "/bin/bash", + "-c", + "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": "amqp", + "containerPort": 5672, + "protocol": "TCP" + }, + { + "name": "mqtt", + "containerPort": 1883, + "protocol": "TCP" + }, + { + "name": "stomp", + "containerPort": 61613, + "protocol": "TCP" + }, + { + "name": "tcp", + "containerPort": 61616, + "protocol": "TCP" + } + ], + "env": [ + { + "name": "AMQ_USER", + "value": "${MQ_USERNAME}" + }, + { + "name": "AMQ_PASSWORD", + "value": "${MQ_PASSWORD}" + }, + { + "name": "AMQ_TRANSPORTS", + "value": "${MQ_PROTOCOL}" + }, + { + "name": "AMQ_QUEUES", + "value": "${MQ_QUEUES}" + }, + { + "name": "AMQ_TOPICS", + "value": "${MQ_TOPICS}" + }, + { + "name": "AMQ_ADMIN_USERNAME", + "value": "${AMQ_ADMIN_USERNAME}" + }, + { + "name": "AMQ_ADMIN_PASSWORD", + "value": "${AMQ_ADMIN_PASSWORD}" + }, + { + "name": "AMQ_STORAGE_USAGE_LIMIT", + "value": "${AMQ_STORAGE_USAGE_LIMIT}" + } + ] + } + ], + "volumes": [ + { + "name": "${APPLICATION_NAME}-amq-pvol", + "persistentVolumeClaim": { + "claimName": "${APPLICATION_NAME}-amq-claim" + } + } + ] + } + } + } + }, + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "name": "${APPLICATION_NAME}-amq-claim", + "labels": { + "application": "${APPLICATION_NAME}" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "${VOLUME_CAPACITY}" + } + } + } + } + ] +} diff --git a/roles/openshift_examples/files/examples/xpaas-templates/amq6.json b/roles/openshift_examples/files/examples/xpaas-templates/amq62-ssl.json index 7decdfe52..f61fb24c2 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/amq6.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/amq62-ssl.json @@ -3,77 +3,117 @@ "apiVersion": "v1", "metadata": { "annotations": { - "description": "Application template for ActiveMQ brokers." + "description": "Application template for JBoss A-MQ brokers. These can be deployed as standalone or in a mesh. This template supports SSL and requires usage of OpenShift secrets.", + "iconClass": "icon-jboss", + "tags": "messaging,amq,jboss,xpaas", + "version": "1.1.0" }, - "name": "amq6" + "name": "amq62-ssl" }, "labels": { - "template": "amq6" + "template": "amq62-ssl", + "xpaas": "1.1.0" }, "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" + "value": "broker", + "required": true }, { - "description": "Protocol to configure. Only openwire is supported by EAP. amqp, amqp+ssl, mqtt, stomp, stomp+ssl, and ssl are not supported by EAP", + "description": "Protocols to configure, separated by commas. Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`. SSL variants of these protocols will be configured automaticaly.", "name": "MQ_PROTOCOL", - "value": "openwire" + "value": "openwire", + "required": false }, { - "description": "Queue names", + "description": "Queue names, separated by commas. These queues will be automatically created when the broker starts. If left empty, queues will be still created dynamically.", "name": "MQ_QUEUES", - "value": "" + "value": "", + "required": false }, { - "description": "Topic names", + "description": "Topic names, separated by commas. These topics will be automatically created when the broker starts. If left empty, topics will be still created dynamically.", "name": "MQ_TOPICS", - "value": "" + "value": "", + "required": false }, { - "description": "Broker user name", + "description": "User name for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", "name": "MQ_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": false }, { - "description": "Broker user password", + "description": "Password for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", "name": "MQ_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": false }, { - "description": "ActiveMQ Admin User", + "description": "User name for admin user. If left empty, it will be generated.", "name": "AMQ_ADMIN_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "ActiveMQ Admin Password", + "description": "Password for admin user. If left empty, it will be generated.", "name": "AMQ_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Name of a secret containing SSL related files", "name": "AMQ_SECRET", - "value": "amq-app-secret" + "value": "amq-app-secret", + "required": true }, { "description": "SSL trust store filename", "name": "AMQ_TRUSTSTORE", - "value": "broker.ts" + "value": "broker.ts", + "required": true + }, + { + "description": "SSL trust store password", + "name": "AMQ_TRUSTSTORE_PASSWORD", + "value": "", + "required": true }, { "description": "SSL key store filename", "name": "AMQ_KEYSTORE", - "value": "broker.ks" + "value": "broker.ks", + "required": true + }, + { + "description": "Password for accessing SSL keystore", + "name": "AMQ_KEYSTORE_PASSWORD", + "value": "", + "required": true + }, + { + "description": "The discovery agent type to use for discovering mesh endpoints. 'dns' will use OpenShift's DNS service to resolve endpoints. 'kube' will use Kubernetes REST API to resolve service endpoints. If using 'kube' the service account for the pod must have the 'view' role, which can be added via 'oc policy add-role-to-user view system:serviceaccount:<namespace>:default' where <namespace> is the project namespace.", + "name": "AMQ_MESH_DISCOVERY_TYPE", + "value": "kube", + "required": false + }, + { + "description": "The A-MQ storage usage limit", + "name": "AMQ_STORAGE_USAGE_LIMIT", + "value": "100 gb", + "required": false + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -97,7 +137,7 @@ "application": "${APPLICATION_NAME}" }, "annotations": { - "description": "The broker's amqp port." + "description": "The broker's AMQP port." } } }, @@ -121,7 +161,7 @@ "application": "${APPLICATION_NAME}" }, "annotations": { - "description": "The broker's amqp ssl port." + "description": "The broker's AMQP SSL port." } } }, @@ -145,7 +185,31 @@ "application": "${APPLICATION_NAME}" }, "annotations": { - "description": "The broker's mqtt port." + "description": "The broker's MQTT port." + } + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "spec": { + "ports": [ + { + "port": 8883, + "targetPort": 8883 + } + ], + "selector": { + "deploymentConfig": "${APPLICATION_NAME}-amq" + } + }, + "metadata": { + "name": "${APPLICATION_NAME}-amq-mqtt-ssl", + "labels": { + "application": "${APPLICATION_NAME}" + }, + "annotations": { + "description": "The broker's MQTT SSL port." } } }, @@ -169,7 +233,7 @@ "application": "${APPLICATION_NAME}" }, "annotations": { - "description": "The broker's stomp port." + "description": "The broker's STOMP port." } } }, @@ -193,7 +257,7 @@ "application": "${APPLICATION_NAME}" }, "annotations": { - "description": "The broker's stomp ssl port." + "description": "The broker's STOMP SSL port." } } }, @@ -217,7 +281,7 @@ "application": "${APPLICATION_NAME}" }, "annotations": { - "description": "The broker's tcp (openwire) port." + "description": "The broker's OpenWire port." } } }, @@ -241,7 +305,7 @@ "application": "${APPLICATION_NAME}" }, "annotations": { - "description": "The broker's tcp ssl (openwire) port." + "description": "The broker's OpenWire (SSL) port." } } }, @@ -268,10 +332,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-amq-6:${AMQ_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-amq-62:1.1" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -288,10 +355,11 @@ }, "spec": { "serviceAccount": "amq-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}-amq", - "image": "jboss-amq-6", + "image": "jboss-amq-62", "imagePullPolicy": "Always", "volumeMounts": [ { @@ -326,6 +394,11 @@ "protocol": "TCP" }, { + "name": "mqtt-ssl", + "containerPort": 8883, + "protocol": "TCP" + }, + { "name": "stomp", "containerPort": 61613, "protocol": "TCP" @@ -356,7 +429,7 @@ "value": "${MQ_PASSWORD}" }, { - "name": "AMQ_PROTOCOLS", + "name": "AMQ_TRANSPORTS", "value": "${MQ_PROTOCOL}" }, { @@ -376,10 +449,22 @@ "value": "${AMQ_ADMIN_PASSWORD}" }, { + "name": "AMQ_MESH_DISCOVERY_TYPE", + "value": "${AMQ_MESH_DISCOVERY_TYPE}" + }, + { "name": "AMQ_MESH_SERVICE_NAME", "value": "${APPLICATION_NAME}-amq-tcp" }, { + "name": "AMQ_MESH_SERVICE_NAMESPACE", + "valueFrom": { + "fieldRef": { + "fieldPath": "metadata.namespace" + } + } + }, + { "name": "AMQ_KEYSTORE_TRUSTSTORE_DIR", "value": "/etc/amq-secret-volume" }, @@ -388,8 +473,20 @@ "value": "${AMQ_TRUSTSTORE}" }, { + "name": "AMQ_TRUSTSTORE_PASSWORD", + "value": "${AMQ_TRUSTSTORE_PASSWORD}" + }, + { "name": "AMQ_KEYSTORE", "value": "${AMQ_KEYSTORE}" + }, + { + "name": "AMQ_KEYSTORE_PASSWORD", + "value": "${AMQ_KEYSTORE_PASSWORD}" + }, + { + "name": "AMQ_STORAGE_USAGE_LIMIT", + "value": "${AMQ_STORAGE_USAGE_LIMIT}" } ] } diff --git a/roles/openshift_examples/files/examples/xpaas-templates/eap6-amq-persistent-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/eap64-amq-persistent-s2i.json index b64acae8b..2fc3b5b25 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/eap6-amq-persistent-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/eap64-amq-persistent-s2i.json @@ -3,129 +3,149 @@ "apiVersion": "v1", "metadata": { "annotations": { - "description": "Application template for EAP 6 A-MQ applications with persistent storage built using STI.", - "iconClass" : "icon-jboss" + "description": "Application template for EAP 6 A-MQ applications with persistent storage built using S2I.", + "iconClass": "icon-jboss", + "tags": "eap,amq,javaee,java,messaging,jboss,xpaas", + "version": "1.1.0" }, - "name": "eap6-amq-persistent-sti" + "name": "eap64-amq-persistent-s2i" }, "labels": { - "template": "eap6-amq-persistent-sti" + "template": "eap64-amq-persistent-s2i", + "xpaas": "1.1.0" }, "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" + "value": "eap-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts.git", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "helloworld-mdb", + "required": false }, { "description": "Size of persistent storage for database volume.", "name": "VOLUME_CAPACITY", - "value": "512Mi" + "value": "512Mi", + "required": true }, { "description": "JNDI name for connection factory used by applications to connect to the broker, e.g. java:/ConnectionFactory", "name": "MQ_JNDI", - "value": "java:/ConnectionFactory" + "value": "java:/ConnectionFactory", + "required": false }, { - "description": "Protocol to configure. Only openwire is supported by EAP. amqp, amqp+ssl, mqtt, stomp, stomp+ssl, and ssl are not supported by EAP", + "description": "Broker protocols to configure, separated by commas. Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`. Only `openwire` is supported by EAP.", "name": "MQ_PROTOCOL", - "value": "openwire" + "value": "openwire", + "required": false }, { - "description": "Queue names", + "description": "Queue names, separated by commas. These queues will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.", "name": "MQ_QUEUES", - "value": "" + "value": "HELLOWORLDMDBQueue", + "required": false }, { - "description": "Topic names", + "description": "Topic names, separated by commas. These topics will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.", "name": "MQ_TOPICS", - "value": "" + "value": "HELLOWORLDMDBTopic", + "required": false }, { "description": "The name of the secret containing the keystore file", "name": "EAP_HTTPS_SECRET", - "value": "eap-app-secret" + "value": "eap-app-secret", + "required": false }, { "description": "The name of the keystore file within the secret", "name": "EAP_HTTPS_KEYSTORE", - "value": "keystore.jks" + "value": "keystore.jks", + "required": false }, { "description": "The name associated with the server certificate", "name": "EAP_HTTPS_NAME", - "value": "" + "value": "", + "required": false }, { "description": "The password for the keystore and certificate", "name": "EAP_HTTPS_PASSWORD", - "value": "" + "value": "", + "required": false }, { - "description": "Broker user name", + "description": "User name for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", "name": "MQ_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": false }, { - "description": "Broker user password", + "description": "Password for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", "name": "MQ_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": false }, { - "description": "ActiveMQ Admin User", + "description": "User name for broker admin. If left empty, it will be generated.", "name": "AMQ_ADMIN_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "ActiveMQ Admin Password", + "description": "Password for broker admin. If left empty, it will be generated.", "name": "AMQ_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -149,7 +169,7 @@ "application": "${APPLICATION_NAME}" }, "annotations": { - "description": "The web server's http port." + "description": "The web server's HTTP port." } } }, @@ -173,32 +193,7 @@ "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." + "description": "The web server's HTTPS port." } } }, @@ -222,25 +217,25 @@ "application": "${APPLICATION_NAME}" }, "annotations": { - "description": "The broker's tcp (openwire) port." + "description": "The broker's OpenWire port." } } }, { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", - "labels": { - "application": "${APPLICATION_NAME}" - }, - "annotations": { - "description": "Route for application's http service." - } + "name": "${APPLICATION_NAME}", + "labels": { + "application": "${APPLICATION_NAME}" + }, + "annotations": { + "description": "Route for application's HTTP service." + } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -249,23 +244,23 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, "annotations": { - "description": "Route for application's https service." + "description": "Route for application's HTTPS service." } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -292,18 +287,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-eap6-openshift:${EAP_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-eap64-openshift:1.1" } } }, @@ -317,18 +313,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -359,6 +358,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -375,6 +377,7 @@ }, "spec": { "serviceAccount": "eap-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", @@ -443,12 +446,16 @@ "value": "${MQ_TOPICS}" }, { - "name": "OPENSHIFT_DNS_PING_SERVICE_NAME", - "value": "${APPLICATION_NAME}-ping" + "name": "OPENSHIFT_KUBE_PING_LABELS", + "value": "application=${APPLICATION_NAME}" }, { - "name": "OPENSHIFT_DNS_PING_SERVICE_PORT", - "value": "8888" + "name": "OPENSHIFT_KUBE_PING_NAMESPACE", + "valueFrom": { + "fieldRef": { + "fieldPath": "metadata.namespace" + } + } }, { "name": "EAP_HTTPS_KEYSTORE_DIR", @@ -504,10 +511,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-amq-6:${AMQ_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-amq-62:1.1" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -523,10 +533,11 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}-amq", - "image": "jboss-amq-6", + "image": "jboss-amq-62", "imagePullPolicy": "Always", "readinessProbe": { "exec": { @@ -590,7 +601,7 @@ "value": "${MQ_PASSWORD}" }, { - "name": "AMQ_PROTOCOLS", + "name": "AMQ_TRANSPORTS", "value": "${MQ_PROTOCOL}" }, { @@ -634,7 +645,9 @@ } }, "spec": { - "accessModes": [ "ReadWriteOnce" ], + "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/eap64-amq-s2i.json index 20b234bd0..a420bb1ea 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/eap6-amq-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/eap64-amq-s2i.json @@ -3,124 +3,143 @@ "apiVersion": "v1", "metadata": { "annotations": { - "description": "Application template for EAP 6 A-MQ applications built using STI.", - "iconClass" : "icon-jboss" + "description": "Application template for EAP 6 A-MQ applications built using S2I.", + "iconClass": "icon-jboss", + "tags": "eap,amq,javaee,java,messaging,jboss,xpaas", + "version": "1.1.0" }, - "name": "eap6-amq-sti" + "name": "eap64-amq-s2i" }, "labels": { - "template": "eap6-amq-sti" + "template": "eap64-amq-s2i", + "xpaas": "1.1.0" }, "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" + "value": "eap-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts.git", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "helloworld-mdb", + "required": false }, { "description": "JNDI name for connection factory used by applications to connect to the broker, e.g. java:/ConnectionFactory", "name": "MQ_JNDI", - "value": "java:/ConnectionFactory" + "value": "java:/ConnectionFactory", + "required": false }, { - "description": "Protocol to configure. Only openwire is supported by EAP. amqp, amqp+ssl, mqtt, stomp, stomp+ssl, and ssl are not supported by EAP", + "description": "Broker protocols to configure, separated by commas. Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`. Only `openwire` is supported by EAP.", "name": "MQ_PROTOCOL", - "value": "openwire" + "value": "openwire", + "required": false }, { - "description": "Queue names", + "description": "Queue names, separated by commas. These queues will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.", "name": "MQ_QUEUES", - "value": "" + "value": "HELLOWORLDMDBQueue", + "required": false }, { - "description": "Topic names", + "description": "Topic names, separated by commas. These topics will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.", "name": "MQ_TOPICS", - "value": "" + "value": "HELLOWORLDMDBTopic", + "required": false }, { "description": "The name of the secret containing the keystore file", "name": "EAP_HTTPS_SECRET", - "value": "eap-app-secret" + "value": "eap-app-secret", + "required": false }, { "description": "The name of the keystore file within the secret", "name": "EAP_HTTPS_KEYSTORE", - "value": "keystore.jks" + "value": "keystore.jks", + "required": false }, { "description": "The name associated with the server certificate", "name": "EAP_HTTPS_NAME", - "value": "" + "value": "", + "required": false }, { "description": "The password for the keystore and certificate", "name": "EAP_HTTPS_PASSWORD", - "value": "" + "value": "", + "required": false }, { - "description": "Broker user name", + "description": "User name for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", "name": "MQ_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": false }, { - "description": "Broker user password", + "description": "Password for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.", "name": "MQ_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": false }, { - "description": "ActiveMQ Admin User", + "description": "User name for broker admin. If left empty, it will be generated.", "name": "AMQ_ADMIN_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "ActiveMQ Admin Password", + "description": "Password for broker admin. If left empty, it will be generated.", "name": "AMQ_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -144,7 +163,7 @@ "application": "${APPLICATION_NAME}" }, "annotations": { - "description": "The web server's http port." + "description": "The web server's HTTP port." } } }, @@ -168,32 +187,7 @@ "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." + "description": "The web server's HTTPS port." } } }, @@ -217,25 +211,25 @@ "application": "${APPLICATION_NAME}" }, "annotations": { - "description": "The broker's tcp (openwire) port." + "description": "The broker's OpenWire port." } } }, { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", - "labels": { - "application": "${APPLICATION_NAME}" - }, - "annotations": { - "description": "Route for application's http service." - } + "name": "${APPLICATION_NAME}", + "labels": { + "application": "${APPLICATION_NAME}" + }, + "annotations": { + "description": "Route for application's HTTP service." + } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -244,23 +238,23 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, "annotations": { - "description": "Route for application's https service." + "description": "Route for application's HTTPS service." } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -287,18 +281,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-eap6-openshift:${EAP_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-eap64-openshift:1.1" } } }, @@ -312,18 +307,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -354,6 +352,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -370,6 +371,7 @@ }, "spec": { "serviceAccount": "eap-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", @@ -438,12 +440,16 @@ "value": "${MQ_TOPICS}" }, { - "name": "OPENSHIFT_DNS_PING_SERVICE_NAME", - "value": "${APPLICATION_NAME}-ping" + "name": "OPENSHIFT_KUBE_PING_LABELS", + "value": "application=${APPLICATION_NAME}" }, { - "name": "OPENSHIFT_DNS_PING_SERVICE_PORT", - "value": "8888" + "name": "OPENSHIFT_KUBE_PING_NAMESPACE", + "valueFrom": { + "fieldRef": { + "fieldPath": "metadata.namespace" + } + } }, { "name": "EAP_HTTPS_KEYSTORE_DIR", @@ -499,10 +505,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-amq-6:${AMQ_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-amq-62:1.1" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -518,10 +527,11 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}-amq", - "image": "jboss-amq-6", + "image": "jboss-amq-62", "imagePullPolicy": "Always", "readinessProbe": { "exec": { @@ -579,7 +589,7 @@ "value": "${MQ_PASSWORD}" }, { - "name": "AMQ_PROTOCOLS", + "name": "AMQ_TRANSPORTS", "value": "${MQ_PROTOCOL}" }, { diff --git a/roles/openshift_examples/files/examples/xpaas-templates/eap6-basic-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/eap64-basic-s2i.json index 146bfb1ee..3f90eb8be 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/eap6-basic-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/eap64-basic-s2i.json @@ -3,72 +3,86 @@ "apiVersion": "v1", "metadata": { "annotations": { - "iconClass" : "icon-jboss", - "description": "Application template for EAP 6 applications built using STI." + "iconClass": "icon-jboss", + "description": "Application template for EAP 6 applications built using S2I.", + "tags": "eap,javaee,java,jboss,xpaas", + "version": "1.1.0" }, - "name": "eap6-basic-sti" + "name": "eap64-basic-s2i" }, "labels": { - "template": "eap6-basic-sti" + "template": "eap64-basic-s2i", + "xpaas": "1.1.0" }, "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" + "value": "eap-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI", - "value": "https://github.com/jboss-developer/jboss-eap-quickstarts" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-developer/jboss-eap-quickstarts", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "6.4.x" + "name": "SOURCE_REPOSITORY_REF", + "value": "6.4.x", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "kitchensink" + "name": "CONTEXT_DIR", + "value": "kitchensink", + "required": false }, { "description": "Queue names", "name": "HORNETQ_QUEUES", - "value": "" + "value": "", + "required": false }, { "description": "Topic names", "name": "HORNETQ_TOPICS", - "value": "" + "value": "", + "required": false }, { "description": "HornetQ cluster admin password", "name": "HORNETQ_CLUSTER_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -97,36 +111,11 @@ } }, { - "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", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -135,7 +124,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -164,18 +153,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-eap6-openshift:${EAP_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-eap64-openshift:1.1" } } }, @@ -189,18 +179,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -231,6 +224,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -246,6 +242,7 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", @@ -274,12 +271,16 @@ ], "env": [ { - "name": "OPENSHIFT_DNS_PING_SERVICE_NAME", - "value": "${APPLICATION_NAME}-ping" + "name": "OPENSHIFT_KUBE_PING_LABELS", + "value": "application=${APPLICATION_NAME}" }, { - "name": "OPENSHIFT_DNS_PING_SERVICE_PORT", - "value": "8888" + "name": "OPENSHIFT_KUBE_PING_NAMESPACE", + "valueFrom": { + "fieldRef": { + "fieldPath": "metadata.namespace" + } + } }, { "name": "HORNETQ_CLUSTER_PASSWORD", @@ -301,4 +302,4 @@ } } ] -} +}
\ No newline at end of file diff --git a/roles/openshift_examples/files/examples/xpaas-templates/eap6-https-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/eap64-https-s2i.json index 5df36ccc2..220d2f5b9 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/eap6-https-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/eap64-https-s2i.json @@ -3,92 +3,110 @@ "apiVersion": "v1", "metadata": { "annotations": { - "iconClass" : "icon-jboss", - "description": "Application template for EAP 6 applications built using STI." + "iconClass": "icon-jboss", + "description": "Application template for EAP 6 applications built using S2I.", + "tags": "eap,javaee,java,jboss,xpaas", + "version": "1.1.0" }, - "name": "eap6-https-sti" + "name": "eap64-https-s2i" }, "labels": { - "template": "eap6-https-sti" + "template": "eap64-https-s2i", + "xpaas": "1.1.0" }, "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" + "value": "eap-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI", - "value": "https://github.com/jboss-developer/jboss-eap-quickstarts" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-developer/jboss-eap-quickstarts", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "6.4.x" + "name": "SOURCE_REPOSITORY_REF", + "value": "6.4.x", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "kitchensink" + "name": "CONTEXT_DIR", + "value": "kitchensink", + "required": false }, { "description": "Queue names", "name": "HORNETQ_QUEUES", - "value": "" + "value": "", + "required": false }, { "description": "Topic names", "name": "HORNETQ_TOPICS", - "value": "" + "value": "", + "required": false }, { "description": "The name of the secret containing the keystore file", "name": "EAP_HTTPS_SECRET", - "value": "eap-app-secret" + "value": "eap-app-secret", + "required": true }, { "description": "The name of the keystore file within the secret", "name": "EAP_HTTPS_KEYSTORE", - "value": "keystore.jks" + "value": "keystore.jks", + "required": false }, { "description": "The name associated with the server certificate", "name": "EAP_HTTPS_NAME", - "value": "" + "value": "", + "required": false }, { "description": "The password for the keystore and certificate", "name": "EAP_HTTPS_PASSWORD", - "value": "" + "value": "", + "required": false }, { "description": "HornetQ cluster admin password", "name": "HORNETQ_CLUSTER_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -141,36 +159,11 @@ } }, { - "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", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -179,7 +172,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -188,9 +181,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -199,12 +192,12 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -231,18 +224,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-eap6-openshift:${EAP_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-eap64-openshift:1.1" } } }, @@ -256,18 +250,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -298,6 +295,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -314,6 +314,7 @@ }, "spec": { "serviceAccount": "eap-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", @@ -354,12 +355,16 @@ ], "env": [ { - "name": "OPENSHIFT_DNS_PING_SERVICE_NAME", - "value": "${APPLICATION_NAME}-ping" + "name": "OPENSHIFT_KUBE_PING_LABELS", + "value": "application=${APPLICATION_NAME}" }, { - "name": "OPENSHIFT_DNS_PING_SERVICE_PORT", - "value": "8888" + "name": "OPENSHIFT_KUBE_PING_NAMESPACE", + "valueFrom": { + "fieldRef": { + "fieldPath": "metadata.namespace" + } + } }, { "name": "EAP_HTTPS_KEYSTORE_DIR", @@ -405,4 +410,4 @@ } } ] -} +}
\ No newline at end of file diff --git a/roles/openshift_examples/files/examples/xpaas-templates/eap6-mongodb-persistent-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/eap64-mongodb-persistent-s2i.json index 289ab284f..a1a3a9f2c 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/eap6-mongodb-persistent-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/eap64-mongodb-persistent-s2i.json @@ -3,148 +3,179 @@ "apiVersion": "v1", "metadata": { "annotations": { - "description": "Application template for EAP 6 MongDB applications with persistent storage built using STI.", - "iconClass" : "icon-jboss" + "description": "Application template for EAP 6 MongDB applications with persistent storage built using S2I.", + "iconClass": "icon-jboss", + "tags": "eap,mongodb,javaee,java,database,jboss,xpaas", + "version": "1.1.0" }, - "name": "eap6-mongodb-persistent-sti" + "name": "eap64-mongodb-persistent-s2i" }, "labels": { - "template": "eap6-mongodb-persistent-sti" + "template": "eap64-mongodb-persistent-s2i", + "xpaas": "1.1.0" }, "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" + "value": "eap-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "todolist/todolist-mongodb", + "required": false }, { "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", "name": "DB_JNDI", - "value": "" + "value": "", + "required": false }, { "description": "Database name", "name": "DB_DATABASE", - "value": "root" + "value": "root", + "required": true }, { "description": "Size of persistent storage for database volume.", "name": "VOLUME_CAPACITY", - "value": "512Mi" + "value": "512Mi", + "required": true }, { "description": "Queue names", "name": "HORNETQ_QUEUES", - "value": "" + "value": "", + "required": false }, { "description": "Topic names", "name": "HORNETQ_TOPICS", - "value": "" + "value": "", + "required": false }, { "description": "The name of the secret containing the keystore file", "name": "EAP_HTTPS_SECRET", - "value": "eap-app-secret" + "value": "eap-app-secret", + "required": false }, { "description": "The name of the keystore file within the secret", "name": "EAP_HTTPS_KEYSTORE", - "value": "keystore.jks" + "value": "keystore.jks", + "required": false }, { "description": "The name associated with the server certificate", "name": "EAP_HTTPS_NAME", - "value": "" + "value": "", + "required": false }, { "description": "The password for the keystore and certificate", "name": "EAP_HTTPS_PASSWORD", - "value": "" + "value": "", + "required": false }, { "description": "Sets xa-pool/min-pool-size for the configured datasource.", - "name": "DB_MIN_POOL_SIZE" + "name": "DB_MIN_POOL_SIZE", + "required": false }, { "description": "Sets xa-pool/max-pool-size for the configured datasource.", - "name": "DB_MAX_POOL_SIZE" + "name": "DB_MAX_POOL_SIZE", + "required": false }, { "description": "Sets transaction-isolation for the configured datasource.", - "name": "DB_TX_ISOLATION" + "name": "DB_TX_ISOLATION", + "required": false }, { "description": "Disable data file preallocation.", - "name": "MONGODB_NOPREALLOC" + "name": "MONGODB_NOPREALLOC", + "required": false }, { "description": "Set MongoDB to use a smaller default data file size.", - "name": "MONGODB_SMALLFILES" + "name": "MONGODB_SMALLFILES", + "required": false }, { "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.", - "name": "MONGODB_QUIET" + "name": "MONGODB_QUIET", + "required": false }, { "description": "HornetQ cluster admin password", "name": "HORNETQ_CLUSTER_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user name", "name": "DB_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user password", "name": "DB_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database admin password", "name": "DB_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -202,31 +233,6 @@ "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 } @@ -248,9 +254,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -259,7 +265,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -268,9 +274,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -279,12 +285,12 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -311,18 +317,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-eap6-openshift:${EAP_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-eap64-openshift:1.1" } } }, @@ -336,18 +343,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -378,6 +388,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -394,6 +407,7 @@ }, "spec": { "serviceAccount": "eap-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", @@ -470,12 +484,16 @@ "value": "${DB_TX_ISOLATION}" }, { - "name": "OPENSHIFT_DNS_PING_SERVICE_NAME", - "value": "${APPLICATION_NAME}-ping" + "name": "OPENSHIFT_KUBE_PING_LABELS", + "value": "application=${APPLICATION_NAME}" }, { - "name": "OPENSHIFT_DNS_PING_SERVICE_PORT", - "value": "8888" + "name": "OPENSHIFT_KUBE_PING_NAMESPACE", + "valueFrom": { + "fieldRef": { + "fieldPath": "metadata.namespace" + } + } }, { "name": "EAP_HTTPS_KEYSTORE_DIR", @@ -543,10 +561,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", + "namespace": "${IMAGE_STREAM_NAMESPACE}", "name": "mongodb:latest" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -562,6 +583,7 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}-mongodb", @@ -574,11 +596,11 @@ } ], "volumeMounts": [ - { - "mountPath": "/var/lib/mongodb/data", - "name": "${APPLICATION_NAME}-mongodb-pvol" - } - ], + { + "mountPath": "/var/lib/mongodb/data", + "name": "${APPLICATION_NAME}-mongodb-pvol" + } + ], "env": [ { "name": "MONGODB_USER", @@ -633,7 +655,9 @@ } }, "spec": { - "accessModes": [ "ReadWriteOnce" ], + "accessModes": [ + "ReadWriteOnce" + ], "resources": { "requests": { "storage": "${VOLUME_CAPACITY}" @@ -642,4 +666,4 @@ } } ] -} +}
\ No newline at end of file diff --git a/roles/openshift_examples/files/examples/xpaas-templates/eap6-mongodb-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/eap64-mongodb-s2i.json index 22b301aa9..dfd1443ed 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/eap6-mongodb-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/eap64-mongodb-s2i.json @@ -3,143 +3,173 @@ "apiVersion": "v1", "metadata": { "annotations": { - "description": "Application template for EAP 6 MongDB applications built using STI.", - "iconClass" : "icon-jboss" + "description": "Application template for EAP 6 MongDB applications built using S2I.", + "iconClass": "icon-jboss", + "tags": "eap,mongodb,javaee,java,database,jboss,xpaas", + "version": "1.1.0" }, - "name": "eap6-mongodb-sti" + "name": "eap64-mongodb-s2i" }, "labels": { - "template": "eap6-mongodb-sti" + "template": "eap64-mongodb-s2i", + "xpaas": "1.1.0" }, "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" + "value": "eap-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "todolist/todolist-mongodb", + "required": false }, { "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", "name": "DB_JNDI", - "value": "" + "value": "", + "required": false }, { "description": "Database name", "name": "DB_DATABASE", - "value": "root" + "value": "root", + "required": true }, { "description": "Queue names", "name": "HORNETQ_QUEUES", - "value": "" + "value": "", + "required": false }, { "description": "Topic names", "name": "HORNETQ_TOPICS", - "value": "" + "value": "", + "required": false }, { "description": "The name of the secret containing the keystore file", "name": "EAP_HTTPS_SECRET", - "value": "eap-app-secret" + "value": "eap-app-secret", + "required": false }, { "description": "The name of the keystore file within the secret", "name": "EAP_HTTPS_KEYSTORE", - "value": "keystore.jks" + "value": "keystore.jks", + "required": false }, { "description": "The name associated with the server certificate", "name": "EAP_HTTPS_NAME", - "value": "" + "value": "", + "required": false }, { "description": "The password for the keystore and certificate", "name": "EAP_HTTPS_PASSWORD", - "value": "" + "value": "", + "required": false }, { "description": "Sets xa-pool/min-pool-size for the configured datasource.", - "name": "DB_MIN_POOL_SIZE" + "name": "DB_MIN_POOL_SIZE", + "required": false }, { "description": "Sets xa-pool/max-pool-size for the configured datasource.", - "name": "DB_MAX_POOL_SIZE" + "name": "DB_MAX_POOL_SIZE", + "required": false }, { "description": "Sets transaction-isolation for the configured datasource.", - "name": "DB_TX_ISOLATION" + "name": "DB_TX_ISOLATION", + "required": false }, { "description": "Disable data file preallocation.", - "name": "MONGODB_NOPREALLOC" + "name": "MONGODB_NOPREALLOC", + "required": false }, { "description": "Set MongoDB to use a smaller default data file size.", - "name": "MONGODB_SMALLFILES" + "name": "MONGODB_SMALLFILES", + "required": false }, { "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.", - "name": "MONGODB_QUIET" + "name": "MONGODB_QUIET", + "required": false }, { "description": "HornetQ cluster admin password", "name": "HORNETQ_CLUSTER_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user name", "name": "DB_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user password", "name": "DB_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database admin password", "name": "DB_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -197,31 +227,6 @@ "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 } @@ -243,9 +248,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -254,7 +259,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -263,9 +268,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -274,12 +279,12 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -306,18 +311,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-eap6-openshift:${EAP_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-eap64-openshift:1.1" } } }, @@ -331,18 +337,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -373,6 +382,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -389,6 +401,7 @@ }, "spec": { "serviceAccount": "eap-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", @@ -465,12 +478,16 @@ "value": "${DB_TX_ISOLATION}" }, { - "name": "OPENSHIFT_DNS_PING_SERVICE_NAME", - "value": "${APPLICATION_NAME}-ping" + "name": "OPENSHIFT_KUBE_PING_LABELS", + "value": "application=${APPLICATION_NAME}" }, { - "name": "OPENSHIFT_DNS_PING_SERVICE_PORT", - "value": "8888" + "name": "OPENSHIFT_KUBE_PING_NAMESPACE", + "valueFrom": { + "fieldRef": { + "fieldPath": "metadata.namespace" + } + } }, { "name": "EAP_HTTPS_KEYSTORE_DIR", @@ -538,10 +555,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", + "namespace": "${IMAGE_STREAM_NAMESPACE}", "name": "mongodb:latest" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -557,6 +577,7 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}-mongodb", @@ -605,4 +626,4 @@ } } ] -} +}
\ No newline at end of file diff --git a/roles/openshift_examples/files/examples/xpaas-templates/eap6-mysql-persistent-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/eap64-mysql-persistent-s2i.json index 648a53199..fdd368a5f 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/eap6-mysql-persistent-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/eap64-mysql-persistent-s2i.json @@ -3,150 +3,182 @@ "apiVersion": "v1", "metadata": { "annotations": { - "description": "Application template for EAP 6 MySQL applications with persistent storage built using STI.", - "iconClass" : "icon-jboss" + "description": "Application template for EAP 6 MySQL applications with persistent storage built using S2I.", + "iconClass": "icon-jboss", + "tags": "eap,mysql,javaee,java,database,jboss,xpaas", + "version": "1.1.0" }, - "name": "eap6-mysql-persistent-sti" + "name": "eap64-mysql-persistent-s2i" }, "labels": { - "template": "eap6-mysql-persistent-sti" + "template": "eap64-mysql-persistent-s2i", + "xpaas": "1.1.0" }, "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" + "value": "eap-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "todolist/todolist-jdbc", + "required": false }, { "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mysql", "name": "DB_JNDI", - "value": "" + "value": "java:jboss/datasources/TodoListDS", + "required": false }, { "description": "Database name", "name": "DB_DATABASE", - "value": "root" + "value": "root", + "required": true }, { "description": "Size of persistent storage for database volume.", "name": "VOLUME_CAPACITY", - "value": "512Mi" + "value": "512Mi", + "required": true }, { "description": "Queue names", "name": "HORNETQ_QUEUES", - "value": "" + "value": "", + "required": false }, { "description": "Topic names", "name": "HORNETQ_TOPICS", - "value": "" + "value": "", + "required": false }, { "description": "The name of the secret containing the keystore file", "name": "EAP_HTTPS_SECRET", - "value": "eap-app-secret" + "value": "eap-app-secret", + "required": false }, { "description": "The name of the keystore file within the secret", "name": "EAP_HTTPS_KEYSTORE", - "value": "keystore.jks" + "value": "keystore.jks", + "required": false }, { "description": "The name associated with the server certificate", "name": "EAP_HTTPS_NAME", - "value": "" + "value": "", + "required": false }, { "description": "The password for the keystore and certificate", "name": "EAP_HTTPS_PASSWORD", - "value": "" + "value": "", + "required": false }, { "description": "Sets xa-pool/min-pool-size for the configured datasource.", - "name": "DB_MIN_POOL_SIZE" + "name": "DB_MIN_POOL_SIZE", + "required": false }, { "description": "Sets xa-pool/max-pool-size for the configured datasource.", - "name": "DB_MAX_POOL_SIZE" + "name": "DB_MAX_POOL_SIZE", + "required": false }, { "description": "Sets transaction-isolation for the configured datasource.", - "name": "DB_TX_ISOLATION" + "name": "DB_TX_ISOLATION", + "required": false }, { "description": "Sets how the table names are stored and compared.", - "name": "MYSQL_LOWER_CASE_TABLE_NAMES" + "name": "MYSQL_LOWER_CASE_TABLE_NAMES", + "required": false }, { "description": "The maximum permitted number of simultaneous client connections.", - "name": "MYSQL_MAX_CONNECTIONS" + "name": "MYSQL_MAX_CONNECTIONS", + "required": false }, { "description": "The minimum length of the word to be included in a FULLTEXT index.", - "name": "MYSQL_FT_MIN_WORD_LEN" + "name": "MYSQL_FT_MIN_WORD_LEN", + "required": false }, { "description": "The maximum length of the word to be included in a FULLTEXT index.", - "name": "MYSQL_FT_MAX_WORD_LEN" + "name": "MYSQL_FT_MAX_WORD_LEN", + "required": false }, { "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", - "name": "MYSQL_AIO" + "name": "MYSQL_AIO", + "required": false }, { "description": "HornetQ cluster admin password", "name": "HORNETQ_CLUSTER_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user name", "name": "DB_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user password", "name": "DB_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -204,31 +236,6 @@ "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 } @@ -250,9 +257,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -261,7 +268,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -270,9 +277,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -281,12 +288,12 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -313,18 +320,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-eap6-openshift:${EAP_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-eap64-openshift:1.1" } } }, @@ -338,18 +346,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -380,6 +391,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -396,6 +410,7 @@ }, "spec": { "serviceAccount": "eap-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", @@ -472,12 +487,16 @@ "value": "${DB_TX_ISOLATION}" }, { - "name": "OPENSHIFT_DNS_PING_SERVICE_NAME", - "value": "${APPLICATION_NAME}-ping" + "name": "OPENSHIFT_KUBE_PING_LABELS", + "value": "application=${APPLICATION_NAME}" }, { - "name": "OPENSHIFT_DNS_PING_SERVICE_PORT", - "value": "8888" + "name": "OPENSHIFT_KUBE_PING_NAMESPACE", + "valueFrom": { + "fieldRef": { + "fieldPath": "metadata.namespace" + } + } }, { "name": "EAP_HTTPS_KEYSTORE_DIR", @@ -545,10 +564,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", + "namespace": "${IMAGE_STREAM_NAMESPACE}", "name": "mysql:latest" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -564,6 +586,7 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}-mysql", @@ -639,7 +662,9 @@ } }, "spec": { - "accessModes": [ "ReadWriteOnce" ], + "accessModes": [ + "ReadWriteOnce" + ], "resources": { "requests": { "storage": "${VOLUME_CAPACITY}" @@ -648,4 +673,4 @@ } } ] -} +}
\ No newline at end of file diff --git a/roles/openshift_examples/files/examples/xpaas-templates/eap6-mysql-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/eap64-mysql-s2i.json index 83d5c8b18..ff6bdc112 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/eap6-mysql-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/eap64-mysql-s2i.json @@ -3,145 +3,176 @@ "apiVersion": "v1", "metadata": { "annotations": { - "description": "Application template for EAP 6 MySQL applications built using STI.", - "iconClass" : "icon-jboss" + "description": "Application template for EAP 6 MySQL applications built using S2I.", + "iconClass": "icon-jboss", + "tags": "eap,mysql,javaee,java,database,jboss,xpaas", + "version": "1.1.0" }, - "name": "eap6-mysql-sti" + "name": "eap64-mysql-s2i" }, "labels": { - "template": "eap6-mysql-sti" + "template": "eap64-mysql-s2i", + "xpaas": "1.1.0" }, "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" + "value": "eap-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "todolist/todolist-jdbc", + "required": false }, { "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mysql", "name": "DB_JNDI", - "value": "" + "value": "java:jboss/datasources/TodoListDS", + "required": false }, { "description": "Database name", "name": "DB_DATABASE", - "value": "root" + "value": "root", + "required": true }, { "description": "Queue names", "name": "HORNETQ_QUEUES", - "value": "" + "value": "", + "required": false }, { "description": "Topic names", "name": "HORNETQ_TOPICS", - "value": "" + "value": "", + "required": false }, { "description": "The name of the secret containing the keystore file", "name": "EAP_HTTPS_SECRET", - "value": "eap-app-secret" + "value": "eap-app-secret", + "required": false }, { "description": "The name of the keystore file within the secret", "name": "EAP_HTTPS_KEYSTORE", - "value": "keystore.jks" + "value": "keystore.jks", + "required": false }, { "description": "The name associated with the server certificate", "name": "EAP_HTTPS_NAME", - "value": "" + "value": "", + "required": false }, { "description": "The password for the keystore and certificate", "name": "EAP_HTTPS_PASSWORD", - "value": "" + "value": "", + "required": false }, { "description": "Sets xa-pool/min-pool-size for the configured datasource.", - "name": "DB_MIN_POOL_SIZE" + "name": "DB_MIN_POOL_SIZE", + "required": false }, { "description": "Sets xa-pool/max-pool-size for the configured datasource.", - "name": "DB_MAX_POOL_SIZE" + "name": "DB_MAX_POOL_SIZE", + "required": false }, { "description": "Sets transaction-isolation for the configured datasource.", - "name": "DB_TX_ISOLATION" + "name": "DB_TX_ISOLATION", + "required": false }, { "description": "Sets how the table names are stored and compared.", - "name": "MYSQL_LOWER_CASE_TABLE_NAMES" + "name": "MYSQL_LOWER_CASE_TABLE_NAMES", + "required": false }, { "description": "The maximum permitted number of simultaneous client connections.", - "name": "MYSQL_MAX_CONNECTIONS" + "name": "MYSQL_MAX_CONNECTIONS", + "required": false }, { "description": "The minimum length of the word to be included in a FULLTEXT index.", - "name": "MYSQL_FT_MIN_WORD_LEN" + "name": "MYSQL_FT_MIN_WORD_LEN", + "required": false }, { "description": "The maximum length of the word to be included in a FULLTEXT index.", - "name": "MYSQL_FT_MAX_WORD_LEN" + "name": "MYSQL_FT_MAX_WORD_LEN", + "required": false }, { "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", - "name": "MYSQL_AIO" + "name": "MYSQL_AIO", + "required": false }, { "description": "HornetQ cluster admin password", "name": "HORNETQ_CLUSTER_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user name", "name": "DB_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user password", "name": "DB_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -199,31 +230,6 @@ "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 } @@ -245,9 +251,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -256,7 +262,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -265,9 +271,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -276,12 +282,12 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -308,18 +314,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-eap6-openshift:${EAP_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-eap64-openshift:1.1" } } }, @@ -333,18 +340,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -375,6 +385,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -391,6 +404,7 @@ }, "spec": { "serviceAccount": "eap-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", @@ -467,12 +481,16 @@ "value": "${DB_TX_ISOLATION}" }, { - "name": "OPENSHIFT_DNS_PING_SERVICE_NAME", - "value": "${APPLICATION_NAME}-ping" + "name": "OPENSHIFT_KUBE_PING_LABELS", + "value": "application=${APPLICATION_NAME}" }, { - "name": "OPENSHIFT_DNS_PING_SERVICE_PORT", - "value": "8888" + "name": "OPENSHIFT_KUBE_PING_NAMESPACE", + "valueFrom": { + "fieldRef": { + "fieldPath": "metadata.namespace" + } + } }, { "name": "EAP_HTTPS_KEYSTORE_DIR", @@ -540,10 +558,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", + "namespace": "${IMAGE_STREAM_NAMESPACE}", "name": "mysql:latest" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -559,6 +580,7 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}-mysql", @@ -611,4 +633,4 @@ } } ] -} +}
\ No newline at end of file diff --git a/roles/openshift_examples/files/examples/xpaas-templates/eap6-postgresql-persistent-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/eap64-postgresql-persistent-s2i.json index 53b953b7e..6443afdb0 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/eap6-postgresql-persistent-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/eap64-postgresql-persistent-s2i.json @@ -3,138 +3,167 @@ "apiVersion": "v1", "metadata": { "annotations": { - "description": "Application template for EAP 6 PostgreSQL applications with persistent storage built using STI.", - "iconClass" : "icon-jboss" + "description": "Application template for EAP 6 PostgreSQL applications with persistent storage built using S2I.", + "iconClass": "icon-jboss", + "tags": "eap,postgresql,javaee,java,database,jboss,xpaas", + "version": "1.1.0" }, - "name": "eap6-postgresql-persistent-sti" + "name": "eap64-postgresql-persistent-s2i" }, "labels": { - "template": "eap6-postgresql-persistent-sti" + "template": "eap64-postgresql-persistent-s2i", + "xpaas": "1.1.0" }, "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" + "value": "eap-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "todolist/todolist-jdbc", + "required": false }, { "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/postgresql", "name": "DB_JNDI", - "value": "" + "value": "java:jboss/datasources/TodoListDS", + "required": false }, { "description": "Database name", "name": "DB_DATABASE", - "value": "root" + "value": "root", + "required": true }, { "description": "Size of persistent storage for database volume.", "name": "VOLUME_CAPACITY", - "value": "512Mi" + "value": "512Mi", + "required": true }, { "description": "Queue names", "name": "HORNETQ_QUEUES", - "value": "" + "value": "", + "required": false }, { "description": "Topic names", "name": "HORNETQ_TOPICS", - "value": "" + "value": "", + "required": false }, { "description": "The name of the secret containing the keystore file", "name": "EAP_HTTPS_SECRET", - "value": "eap-app-secret" + "value": "eap-app-secret", + "required": false }, { "description": "The name of the keystore file within the secret", "name": "EAP_HTTPS_KEYSTORE", - "value": "keystore.jks" + "value": "keystore.jks", + "required": false }, { "description": "The name associated with the server certificate", "name": "EAP_HTTPS_NAME", - "value": "" + "value": "", + "required": false }, { "description": "The password for the keystore and certificate", "name": "EAP_HTTPS_PASSWORD", - "value": "" + "value": "", + "required": false }, { "description": "Sets xa-pool/min-pool-size for the configured datasource.", - "name": "DB_MIN_POOL_SIZE" + "name": "DB_MIN_POOL_SIZE", + "required": false }, { "description": "Sets xa-pool/max-pool-size for the configured datasource.", - "name": "DB_MAX_POOL_SIZE" + "name": "DB_MAX_POOL_SIZE", + "required": false }, { "description": "Sets transaction-isolation for the configured datasource.", - "name": "DB_TX_ISOLATION" + "name": "DB_TX_ISOLATION", + "required": false }, { "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", - "name": "POSTGRESQL_MAX_CONNECTIONS" + "name": "POSTGRESQL_MAX_CONNECTIONS", + "required": false }, { "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", - "name": "POSTGRESQL_SHARED_BUFFERS" + "name": "POSTGRESQL_SHARED_BUFFERS", + "required": false }, { "description": "HornetQ cluster admin password", "name": "HORNETQ_CLUSTER_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user name", "name": "DB_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user password", "name": "DB_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -192,31 +221,6 @@ "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 } @@ -238,9 +242,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -249,7 +253,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -258,9 +262,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -269,12 +273,12 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -301,18 +305,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-eap6-openshift:${EAP_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-eap64-openshift:1.1" } } }, @@ -326,18 +331,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -368,6 +376,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -384,6 +395,7 @@ }, "spec": { "serviceAccount": "eap-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", @@ -460,12 +472,16 @@ "value": "${DB_TX_ISOLATION}" }, { - "name": "OPENSHIFT_DNS_PING_SERVICE_NAME", - "value": "${APPLICATION_NAME}-ping" + "name": "OPENSHIFT_KUBE_PING_LABELS", + "value": "application=${APPLICATION_NAME}" }, { - "name": "OPENSHIFT_DNS_PING_SERVICE_PORT", - "value": "8888" + "name": "OPENSHIFT_KUBE_PING_NAMESPACE", + "valueFrom": { + "fieldRef": { + "fieldPath": "metadata.namespace" + } + } }, { "name": "EAP_HTTPS_KEYSTORE_DIR", @@ -533,10 +549,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", + "namespace": "${IMAGE_STREAM_NAMESPACE}", "name": "postgresql:latest" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -552,6 +571,7 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}-postgresql", @@ -564,10 +584,10 @@ } ], "volumeMounts": [ - { - "mountPath": "/var/lib/pgsql/data", - "name": "${APPLICATION_NAME}-postgresql-pvol" - } + { + "mountPath": "/var/lib/pgsql/data", + "name": "${APPLICATION_NAME}-postgresql-pvol" + } ], "env": [ { @@ -615,7 +635,9 @@ } }, "spec": { - "accessModes": [ "ReadWriteOnce" ], + "accessModes": [ + "ReadWriteOnce" + ], "resources": { "requests": { "storage": "${VOLUME_CAPACITY}" @@ -624,4 +646,4 @@ } } ] -} +}
\ No newline at end of file diff --git a/roles/openshift_examples/files/examples/xpaas-templates/eap6-postgresql-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/eap64-postgresql-s2i.json index 9d660cb42..e879e51cf 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/eap6-postgresql-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/eap64-postgresql-s2i.json @@ -3,133 +3,161 @@ "apiVersion": "v1", "metadata": { "annotations": { - "description": "Application template for EAP 6 PostgreSQL applications built using STI.", - "iconClass" : "icon-jboss" + "description": "Application template for EAP 6 PostgreSQL applications built using S2I.", + "iconClass": "icon-jboss", + "tags": "eap,postgresql,javaee,java,database,jboss,xpaas", + "version": "1.1.0" }, - "name": "eap6-postgresql-sti" + "name": "eap64-postgresql-s2i" }, "labels": { - "template": "eap6-postgresql-sti" + "template": "eap64-postgresql-s2i", + "xpaas": "1.1.0" }, "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" + "value": "eap-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "todolist/todolist-jdbc", + "required": false }, { "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/postgresql", "name": "DB_JNDI", - "value": "" + "value": "java:jboss/datasources/TodoListDS", + "required": false }, { "description": "Database name", "name": "DB_DATABASE", - "value": "root" + "value": "root", + "required": true }, { "description": "Queue names", "name": "HORNETQ_QUEUES", - "value": "" + "value": "", + "required": false }, { "description": "Topic names", "name": "HORNETQ_TOPICS", - "value": "" + "value": "", + "required": false }, { "description": "The name of the secret containing the keystore file", "name": "EAP_HTTPS_SECRET", - "value": "eap-app-secret" + "value": "eap-app-secret", + "required": false }, { "description": "The name of the keystore file within the secret", "name": "EAP_HTTPS_KEYSTORE", - "value": "keystore.jks" + "value": "keystore.jks", + "required": false }, { "description": "The name associated with the server certificate", "name": "EAP_HTTPS_NAME", - "value": "" + "value": "", + "required": false }, { "description": "The password for the keystore and certificate", "name": "EAP_HTTPS_PASSWORD", - "value": "" + "value": "", + "required": false }, { "description": "Sets xa-pool/min-pool-size for the configured datasource.", - "name": "DB_MIN_POOL_SIZE" + "name": "DB_MIN_POOL_SIZE", + "required": false }, { "description": "Sets xa-pool/max-pool-size for the configured datasource.", - "name": "DB_MAX_POOL_SIZE" + "name": "DB_MAX_POOL_SIZE", + "required": false }, { "description": "Sets transaction-isolation for the configured datasource.", - "name": "DB_TX_ISOLATION" + "name": "DB_TX_ISOLATION", + "required": false }, { "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", - "name": "POSTGRESQL_MAX_CONNECTIONS" + "name": "POSTGRESQL_MAX_CONNECTIONS", + "required": false }, { "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", - "name": "POSTGRESQL_SHARED_BUFFERS" + "name": "POSTGRESQL_SHARED_BUFFERS", + "required": false }, { "description": "HornetQ cluster admin password", "name": "HORNETQ_CLUSTER_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user name", "name": "DB_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user password", "name": "DB_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -187,31 +215,6 @@ "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 } @@ -233,9 +236,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -244,7 +247,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -253,9 +256,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -264,12 +267,12 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -296,18 +299,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-eap6-openshift:${EAP_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-eap64-openshift:1.1" } } }, @@ -321,18 +325,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -363,6 +370,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -379,6 +389,7 @@ }, "spec": { "serviceAccount": "eap-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", @@ -455,12 +466,16 @@ "value": "${DB_TX_ISOLATION}" }, { - "name": "OPENSHIFT_DNS_PING_SERVICE_NAME", - "value": "${APPLICATION_NAME}-ping" + "name": "OPENSHIFT_KUBE_PING_LABELS", + "value": "application=${APPLICATION_NAME}" }, { - "name": "OPENSHIFT_DNS_PING_SERVICE_PORT", - "value": "8888" + "name": "OPENSHIFT_KUBE_PING_NAMESPACE", + "valueFrom": { + "fieldRef": { + "fieldPath": "metadata.namespace" + } + } }, { "name": "EAP_HTTPS_KEYSTORE_DIR", @@ -528,10 +543,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", + "namespace": "${IMAGE_STREAM_NAMESPACE}", "name": "postgresql:latest" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -547,6 +565,7 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}-postgresql", @@ -587,4 +606,4 @@ } } ] -} +}
\ No newline at end of file diff --git a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-basic-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat7-basic-s2i.json index d74c2dfe3..729079130 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-basic-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat7-basic-s2i.json @@ -3,67 +3,81 @@ "apiVersion": "v1", "metadata": { "annotations": { - "iconClass" : "icon-tomcat", - "description": "Application template for JWS applications built using STI." + "iconClass": "icon-tomcat", + "description": "Application template for JWS applications built using S2I.", + "tags": "tomcat,tomcat7,java,jboss,xpaas", + "version": "1.1.0" }, - "name": "jws-tomcat7-basic-sti" + "name": "jws30-tomcat7-basic-s2i" }, "labels": { - "template": "jws-tomcat7-basic-sti" + "template": "jws30-tomcat7-basic-s2i", + "xpaas": "1.1.0" }, "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" + "value": "jws-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts.git", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "tomcat-websocket-chat", + "required": false }, { "description": "JWS Admin User", "name": "JWS_ADMIN_USERNAME", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin Password", "name": "JWS_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -94,9 +108,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -105,7 +119,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -134,18 +148,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-webserver30-tomcat7-openshift:1.1" } } }, @@ -159,18 +174,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -201,6 +219,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -216,6 +237,7 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", diff --git a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-https-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat7-https-s2i.json index d725e0606..7ce7e7fe2 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-https-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat7-https-s2i.json @@ -3,87 +3,105 @@ "apiVersion": "v1", "metadata": { "annotations": { - "iconClass" : "icon-tomcat", - "description": "Application template for JWS applications built using STI." + "iconClass": "icon-tomcat", + "description": "Application template for JWS applications built using S2I.", + "tags": "tomcat,tomcat7,java,jboss,xpaas", + "version": "1.1.0" }, - "name": "jws-tomcat8-basic-sti" + "name": "jws30-tomcat7-https-s2i" }, "labels": { - "template": "jws-tomcat8-basic-sti" + "template": "jws30-tomcat7-https-s2i", + "xpaas": "1.1.0" }, "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" + "value": "jws-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts.git", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "tomcat-websocket-chat", + "required": false }, { "description": "The name of the secret containing the certificate files", "name": "JWS_HTTPS_SECRET", - "value": "jws-app-secret" + "value": "jws-app-secret", + "required": true }, { "description": "The name of the certificate file within the secret", "name": "JWS_HTTPS_CERTIFICATE", - "value": "server.crt" + "value": "server.crt", + "required": false }, { "description": "The name of the certificate key file within the secret", "name": "JWS_HTTPS_CERTIFICATE_KEY", - "value": "server.key" + "value": "server.key", + "required": false }, { "description": "The certificate password", "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", - "value": "" + "value": "", + "required": false }, { "description": "JWS Admin User", "name": "JWS_ADMIN_USERNAME", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin Password", "name": "JWS_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -138,9 +156,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -149,7 +167,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -158,9 +176,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -169,12 +187,12 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -201,18 +219,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-webserver30-tomcat7-openshift:1.1" } } }, @@ -226,18 +245,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -268,6 +290,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -284,6 +309,7 @@ }, "spec": { "serviceAccount": "jws-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", diff --git a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mongodb-persistent-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat7-mongodb-persistent-s2i.json index 0c7b7d8e3..9a08ec0b0 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mongodb-persistent-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat7-mongodb-persistent-s2i.json @@ -3,144 +3,174 @@ "apiVersion": "v1", "metadata": { "annotations": { - "iconClass" : "icon-tomcat", - "description": "Application template for JWS MongoDB applications with persistent storage built using STI." + "iconClass": "icon-tomcat", + "description": "Application template for JWS MongoDB applications with persistent storage built using S2I.", + "tags": "tomcat,tomcat7,mongodb,java,database,jboss,xpaas", + "version": "1.1.0" }, - "name": "jws-tomcat7-mongodb-persistent-sti" + "name": "jws30-tomcat7-mongodb-persistent-s2i" }, "labels": { - "template": "jws-tomcat7-mongodb-persistent-sti" + "template": "jws30-tomcat7-mongodb-persistent-s2i", + "xpaas": "1.1.0" }, "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" + "value": "jws-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "todolist/todolist-mongodb", + "required": false }, { "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", "name": "DB_JNDI", - "value": "" + "value": "", + "required": false }, { "description": "Database name", "name": "DB_DATABASE", - "value": "root" + "value": "root", + "required": true }, { "description": "Size of persistent storage for database volume.", "name": "VOLUME_CAPACITY", - "value": "512Mi" + "value": "512Mi", + "required": true }, { "description": "The name of the secret containing the certificate files", "name": "JWS_HTTPS_SECRET", - "value": "jws-app-secret" + "value": "jws-app-secret", + "required": true }, { "description": "The name of the certificate file within the secret", "name": "JWS_HTTPS_CERTIFICATE", - "value": "server.crt" + "value": "server.crt", + "required": false }, { "description": "The name of the certificate key file within the secret", "name": "JWS_HTTPS_CERTIFICATE_KEY", - "value": "server.key" + "value": "server.key", + "required": false }, { "description": "The certificate password", "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", - "value": "" + "value": "", + "required": false }, { "description": "Sets xa-pool/min-pool-size for the configured datasource.", - "name": "DB_MIN_POOL_SIZE" + "name": "DB_MIN_POOL_SIZE", + "required": false }, { "description": "Sets xa-pool/max-pool-size for the configured datasource.", - "name": "DB_MAX_POOL_SIZE" + "name": "DB_MAX_POOL_SIZE", + "required": false }, { "description": "Sets transaction-isolation for the configured datasource.", - "name": "DB_TX_ISOLATION" + "name": "DB_TX_ISOLATION", + "required": false }, { "description": "Disable data file preallocation.", - "name": "MONGODB_NOPREALLOC" + "name": "MONGODB_NOPREALLOC", + "required": false }, { "description": "Set MongoDB to use a smaller default data file size.", - "name": "MONGODB_SMALLFILES" + "name": "MONGODB_SMALLFILES", + "required": false }, { "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.", - "name": "MONGODB_QUIET" + "name": "MONGODB_QUIET", + "required": false }, { "description": "Database user name", "name": "DB_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user password", "name": "DB_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database admin password", "name": "DB_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin User", "name": "JWS_ADMIN_USERNAME", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin Password", "name": "JWS_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -219,9 +249,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -230,7 +260,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -239,9 +269,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -250,12 +280,12 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -282,18 +312,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-webserver30-tomcat7-openshift:1.1" } } }, @@ -307,18 +338,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -349,6 +383,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -365,6 +402,7 @@ }, "spec": { "serviceAccount": "jws-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", @@ -497,10 +535,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", + "namespace": "${IMAGE_STREAM_NAMESPACE}", "name": "mongodb:latest" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -516,6 +557,7 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}-mongodb", @@ -528,11 +570,11 @@ } ], "volumeMounts": [ - { - "mountPath": "/var/lib/mongodb/data", - "name": "${APPLICATION_NAME}-mongodb-pvol" - } - ], + { + "mountPath": "/var/lib/mongodb/data", + "name": "${APPLICATION_NAME}-mongodb-pvol" + } + ], "env": [ { "name": "MONGODB_USER", @@ -587,7 +629,9 @@ } }, "spec": { - "accessModes": [ "ReadWriteOnce" ], + "accessModes": [ + "ReadWriteOnce" + ], "resources": { "requests": { "storage": "${VOLUME_CAPACITY}" @@ -596,4 +640,4 @@ } } ] -} +}
\ No newline at end of file diff --git a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mongodb-persistent-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat7-mongodb-s2i.json index cf35d0024..b8dfb3ad3 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mongodb-persistent-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat7-mongodb-s2i.json @@ -3,144 +3,168 @@ "apiVersion": "v1", "metadata": { "annotations": { - "iconClass" : "icon-tomcat", - "description": "Application template for JWS MongoDB applications with persistent storage built using STI." + "iconClass": "icon-tomcat", + "description": "Application template for JWS MongoDB applications built using S2I.", + "tags": "tomcat,tomcat7,mongodb,java,database,jboss,xpaas", + "version": "1.1.0" }, - "name": "jws-tomcat8-mongodb-persistent-sti" + "name": "jws30-tomcat7-mongodb-s2i" }, "labels": { - "template": "jws-tomcat8-mongodb-persistent-sti" + "template": "jws30-tomcat7-mongodb-s2i", + "xpaas": "1.1.0" }, "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" + "value": "jws-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "todolist/todolist-mongodb", + "required": false }, { "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", "name": "DB_JNDI", - "value": "" + "value": "", + "required": false }, { "description": "Database name", "name": "DB_DATABASE", - "value": "root" - }, - { - "description": "Size of persistent storage for database volume.", - "name": "VOLUME_CAPACITY", - "value": "512Mi" + "value": "root", + "required": true }, { "description": "The name of the secret containing the certificate files", "name": "JWS_HTTPS_SECRET", - "value": "jws-app-secret" + "value": "jws-app-secret", + "required": true }, { "description": "The name of the certificate file within the secret", "name": "JWS_HTTPS_CERTIFICATE", - "value": "server.crt" + "value": "server.crt", + "required": false }, { "description": "The name of the certificate key file within the secret", "name": "JWS_HTTPS_CERTIFICATE_KEY", - "value": "server.key" + "value": "server.key", + "required": false }, { "description": "The certificate password", "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", - "value": "" + "value": "", + "required": false }, { "description": "Sets xa-pool/min-pool-size for the configured datasource.", - "name": "DB_MIN_POOL_SIZE" + "name": "DB_MIN_POOL_SIZE", + "required": false }, { "description": "Sets xa-pool/max-pool-size for the configured datasource.", - "name": "DB_MAX_POOL_SIZE" + "name": "DB_MAX_POOL_SIZE", + "required": false }, { "description": "Sets transaction-isolation for the configured datasource.", - "name": "DB_TX_ISOLATION" + "name": "DB_TX_ISOLATION", + "required": false }, { "description": "Disable data file preallocation.", - "name": "MONGODB_NOPREALLOC" + "name": "MONGODB_NOPREALLOC", + "required": false }, { "description": "Set MongoDB to use a smaller default data file size.", - "name": "MONGODB_SMALLFILES" + "name": "MONGODB_SMALLFILES", + "required": false }, { "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.", - "name": "MONGODB_QUIET" + "name": "MONGODB_QUIET", + "required": false }, { "description": "Database user name", "name": "DB_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user password", "name": "DB_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database admin password", "name": "DB_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin User", "name": "JWS_ADMIN_USERNAME", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin Password", "name": "JWS_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -219,9 +243,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -230,7 +254,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -239,9 +263,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -250,12 +274,12 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -282,18 +306,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-webserver30-tomcat7-openshift:1.1" } } }, @@ -307,18 +332,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -349,6 +377,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -365,6 +396,7 @@ }, "spec": { "serviceAccount": "jws-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", @@ -497,10 +529,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", + "namespace": "${IMAGE_STREAM_NAMESPACE}", "name": "mongodb:latest" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -516,6 +551,7 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}-mongodb", @@ -527,12 +563,6 @@ "protocol": "TCP" } ], - "volumeMounts": [ - { - "mountPath": "/var/lib/mongodb/data", - "name": "${APPLICATION_NAME}-mongodb-pvol" - } - ], "env": [ { "name": "MONGODB_USER", @@ -564,36 +594,10 @@ } ] } - ], - "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}" - } - } - } } ] -} +}
\ No newline at end of file diff --git a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mysql-persistent-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat7-mysql-persistent-s2i.json index 547449010..d36e330d3 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mysql-persistent-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat7-mysql-persistent-s2i.json @@ -3,146 +3,177 @@ "apiVersion": "v1", "metadata": { "annotations": { - "iconClass" : "icon-tomcat", - "description": "Application template for JWS MySQL applications with persistent storage built using STI." + "iconClass": "icon-tomcat", + "description": "Application template for JWS MySQL applications with persistent storage built using S2I.", + "tags": "tomcat,tomcat7,mysql,java,database,jboss,xpaas", + "version": "1.1.0" }, - "name": "jws-tomcat7-mysql-persistent-sti" + "name": "jws30-tomcat7-mysql-persistent-s2i" }, "labels": { - "template": "jws-tomcat7-mysql-persistent-sti" + "template": "jws30-tomcat7-mysql-persistent-s2i", + "xpaas": "1.1.0" }, "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" + "value": "jws-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "todolist/todolist-jdbc", + "required": false }, { "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", "name": "DB_JNDI", - "value": "" + "value": "java:jboss/datasources/TodoListDS", + "required": false }, { "description": "Database name", "name": "DB_DATABASE", - "value": "root" + "value": "root", + "required": true }, { "description": "Size of persistent storage for database volume.", "name": "VOLUME_CAPACITY", - "value": "512Mi" + "value": "512Mi", + "required": true }, { "description": "The name of the secret containing the certificate files", "name": "JWS_HTTPS_SECRET", - "value": "jws-app-secret" + "value": "jws-app-secret", + "required": true }, { "description": "The name of the certificate file within the secret", "name": "JWS_HTTPS_CERTIFICATE", - "value": "server.crt" + "value": "server.crt", + "required": false }, { "description": "The name of the certificate key file within the secret", "name": "JWS_HTTPS_CERTIFICATE_KEY", - "value": "server.key" + "value": "server.key", + "required": false }, { "description": "The certificate password", "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", - "value": "" + "value": "", + "required": false }, { "description": "Sets xa-pool/min-pool-size for the configured datasource.", - "name": "DB_MIN_POOL_SIZE" + "name": "DB_MIN_POOL_SIZE", + "required": false }, { "description": "Sets xa-pool/max-pool-size for the configured datasource.", - "name": "DB_MAX_POOL_SIZE" + "name": "DB_MAX_POOL_SIZE", + "required": false }, { "description": "Sets transaction-isolation for the configured datasource.", - "name": "DB_TX_ISOLATION" + "name": "DB_TX_ISOLATION", + "required": false }, { "description": "Sets how the table names are stored and compared.", - "name": "MYSQL_LOWER_CASE_TABLE_NAMES" + "name": "MYSQL_LOWER_CASE_TABLE_NAMES", + "required": false }, { "description": "The maximum permitted number of simultaneous client connections.", - "name": "MYSQL_MAX_CONNECTIONS" + "name": "MYSQL_MAX_CONNECTIONS", + "required": false }, { "description": "The minimum length of the word to be included in a FULLTEXT index.", - "name": "MYSQL_FT_MIN_WORD_LEN" + "name": "MYSQL_FT_MIN_WORD_LEN", + "required": false }, { "description": "The maximum length of the word to be included in a FULLTEXT index.", - "name": "MYSQL_FT_MAX_WORD_LEN" + "name": "MYSQL_FT_MAX_WORD_LEN", + "required": false }, { "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", - "name": "MYSQL_AIO" + "name": "MYSQL_AIO", + "required": false }, { "description": "Database user name", "name": "DB_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user password", "name": "DB_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin User", "name": "JWS_ADMIN_USERNAME", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin Password", "name": "JWS_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -221,9 +252,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -232,7 +263,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -241,9 +272,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -252,12 +283,12 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -284,18 +315,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-webserver30-tomcat7-openshift:1.1" } } }, @@ -309,18 +341,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -351,6 +386,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -367,6 +405,7 @@ }, "spec": { "serviceAccount": "jws-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", @@ -495,10 +534,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", + "namespace": "${IMAGE_STREAM_NAMESPACE}", "name": "mysql:latest" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -514,6 +556,7 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}-mysql", @@ -525,11 +568,11 @@ } ], "volumeMounts": [ - { - "mountPath": "/var/lib/mysql/data", - "name": "${APPLICATION_NAME}-mysql-pvol" - } - ], + { + "mountPath": "/var/lib/mysql/data", + "name": "${APPLICATION_NAME}-mysql-pvol" + } + ], "env": [ { "name": "MYSQL_USER", @@ -588,7 +631,9 @@ } }, "spec": { - "accessModes": [ "ReadWriteOnce" ], + "accessModes": [ + "ReadWriteOnce" + ], "resources": { "requests": { "storage": "${VOLUME_CAPACITY}" @@ -597,4 +642,4 @@ } } ] -} +}
\ No newline at end of file diff --git a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mysql-persistent-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat7-mysql-s2i.json index 0692817bf..f5309db60 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mysql-persistent-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat7-mysql-s2i.json @@ -3,146 +3,171 @@ "apiVersion": "v1", "metadata": { "annotations": { - "iconClass" : "icon-tomcat", - "description": "Application template for JWS MySQL applications with persistent storage built using STI." + "iconClass": "icon-tomcat", + "description": "Application template for JWS MySQL applications built using S2I.", + "tags": "tomcat,tomcat7,mysql,java,database,jboss,xpaas", + "version": "1.1.0" }, - "name": "jws-tomcat8-mysql-persistent-sti" + "name": "jws30-tomcat7-mysql-s2i" }, "labels": { - "template": "jws-tomcat8-mysql-persistent-sti" + "template": "jws30-tomcat7-mysql-s2i", + "xpaas": "1.1.0" }, "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" + "value": "jws-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "todolist/todolist-jdbc", + "required": false }, { "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", "name": "DB_JNDI", - "value": "" + "value": "java:jboss/datasources/TodoListDS", + "required": false }, { "description": "Database name", "name": "DB_DATABASE", - "value": "root" - }, - { - "description": "Size of persistent storage for database volume.", - "name": "VOLUME_CAPACITY", - "value": "512Mi" + "value": "root", + "required": true }, { "description": "The name of the secret containing the certificate files", "name": "JWS_HTTPS_SECRET", - "value": "jws-app-secret" + "value": "jws-app-secret", + "required": true }, { "description": "The name of the certificate file within the secret", "name": "JWS_HTTPS_CERTIFICATE", - "value": "server.crt" + "value": "server.crt", + "required": false }, { "description": "The name of the certificate key file within the secret", "name": "JWS_HTTPS_CERTIFICATE_KEY", - "value": "server.key" + "value": "server.key", + "required": false }, { "description": "The certificate password", "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", - "value": "" + "value": "", + "required": false }, { "description": "Sets xa-pool/min-pool-size for the configured datasource.", - "name": "DB_MIN_POOL_SIZE" + "name": "DB_MIN_POOL_SIZE", + "required": false }, { "description": "Sets xa-pool/max-pool-size for the configured datasource.", - "name": "DB_MAX_POOL_SIZE" + "name": "DB_MAX_POOL_SIZE", + "required": false }, { "description": "Sets transaction-isolation for the configured datasource.", - "name": "DB_TX_ISOLATION" + "name": "DB_TX_ISOLATION", + "required": false }, { "description": "Sets how the table names are stored and compared.", - "name": "MYSQL_LOWER_CASE_TABLE_NAMES" + "name": "MYSQL_LOWER_CASE_TABLE_NAMES", + "required": false }, { "description": "The maximum permitted number of simultaneous client connections.", - "name": "MYSQL_MAX_CONNECTIONS" + "name": "MYSQL_MAX_CONNECTIONS", + "required": false }, { "description": "The minimum length of the word to be included in a FULLTEXT index.", - "name": "MYSQL_FT_MIN_WORD_LEN" + "name": "MYSQL_FT_MIN_WORD_LEN", + "required": false }, { "description": "The maximum length of the word to be included in a FULLTEXT index.", - "name": "MYSQL_FT_MAX_WORD_LEN" + "name": "MYSQL_FT_MAX_WORD_LEN", + "required": false }, { "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", - "name": "MYSQL_AIO" + "name": "MYSQL_AIO", + "required": false }, { "description": "Database user name", "name": "DB_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user password", "name": "DB_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin User", "name": "JWS_ADMIN_USERNAME", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin Password", "name": "JWS_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -221,9 +246,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -232,7 +257,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -241,9 +266,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -252,12 +277,12 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -284,18 +309,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-webserver30-tomcat7-openshift:1.1" } } }, @@ -309,18 +335,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -351,6 +380,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -367,6 +399,7 @@ }, "spec": { "serviceAccount": "jws-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", @@ -495,10 +528,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", + "namespace": "${IMAGE_STREAM_NAMESPACE}", "name": "mysql:latest" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -514,6 +550,7 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}-mysql", @@ -524,12 +561,6 @@ "protocol": "TCP" } ], - "volumeMounts": [ - { - "mountPath": "/var/lib/mysql/data", - "name": "${APPLICATION_NAME}-mysql-pvol" - } - ], "env": [ { "name": "MYSQL_USER", @@ -565,36 +596,10 @@ } ] } - ], - "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}" - } - } - } } ] -} +}
\ No newline at end of file diff --git a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-postgresql-persistent-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat7-postgresql-persistent-s2i.json index b871b48d0..ee88a4c69 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-postgresql-persistent-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat7-postgresql-persistent-s2i.json @@ -3,134 +3,162 @@ "apiVersion": "v1", "metadata": { "annotations": { - "iconClass" : "icon-tomcat", - "description": "Application template for JWS PostgreSQL applications with persistent storage built using STI." + "iconClass": "icon-tomcat", + "description": "Application template for JWS PostgreSQL applications with persistent storage built using S2I.", + "tags": "tomcat,tomcat7,postgresql,java,database,jboss,xpaas", + "version": "1.1.0" }, - "name": "jws-tomcat7-postgresql-persistent-sti" + "name": "jws30-tomcat7-postgresql-persistent-s2i" }, "labels": { - "template": "jws-tomcat7-postgresql-persistent-sti" + "template": "jws30-tomcat7-postgresql-persistent-s2i", + "xpaas": "1.1.0" }, "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" + "value": "jws-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "todolist/todolist-jdbc", + "required": false }, { "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", "name": "DB_JNDI", - "value": "" + "value": "java:jboss/datasources/TodoListDS", + "required": false }, { "description": "Database name", "name": "DB_DATABASE", - "value": "root" + "value": "root", + "required": true }, { "description": "Size of persistent storage for database volume.", "name": "VOLUME_CAPACITY", - "value": "512Mi" + "value": "512Mi", + "required": true }, { "description": "The name of the secret containing the certificate files", "name": "JWS_HTTPS_SECRET", - "value": "jws-app-secret" + "value": "jws-app-secret", + "required": true }, { "description": "The name of the certificate file within the secret", "name": "JWS_HTTPS_CERTIFICATE", - "value": "server.crt" + "value": "server.crt", + "required": false }, { "description": "The name of the certificate key file within the secret", "name": "JWS_HTTPS_CERTIFICATE_KEY", - "value": "server.key" + "value": "server.key", + "required": false }, { "description": "The certificate password", "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", - "value": "" + "value": "", + "required": false }, { "description": "Sets xa-pool/min-pool-size for the configured datasource.", - "name": "DB_MIN_POOL_SIZE" + "name": "DB_MIN_POOL_SIZE", + "required": false }, { "description": "Sets xa-pool/max-pool-size for the configured datasource.", - "name": "DB_MAX_POOL_SIZE" + "name": "DB_MAX_POOL_SIZE", + "required": false }, { "description": "Sets transaction-isolation for the configured datasource.", - "name": "DB_TX_ISOLATION" + "name": "DB_TX_ISOLATION", + "required": false }, { "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", - "name": "POSTGRESQL_MAX_CONNECTIONS" + "name": "POSTGRESQL_MAX_CONNECTIONS", + "required": false }, { "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", - "name": "POSTGRESQL_SHARED_BUFFERS" + "name": "POSTGRESQL_SHARED_BUFFERS", + "required": false }, { "description": "Database user name", "name": "DB_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user password", "name": "DB_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin User", "name": "JWS_ADMIN_USERNAME", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin Password", "name": "JWS_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -209,9 +237,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -220,7 +248,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -229,9 +257,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -240,12 +268,12 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -272,18 +300,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-webserver30-tomcat7-openshift:1.1" } } }, @@ -297,18 +326,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -339,6 +371,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -355,6 +390,7 @@ }, "spec": { "serviceAccount": "jws-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", @@ -483,10 +519,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", + "namespace": "${IMAGE_STREAM_NAMESPACE}", "name": "postgresql:latest" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -502,6 +541,7 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}-postgresql", @@ -513,11 +553,11 @@ } ], "volumeMounts": [ - { - "mountPath": "/var/lib/pgsql/data", - "name": "${APPLICATION_NAME}-postgresql-pvol" - } - ], + { + "mountPath": "/var/lib/pgsql/data", + "name": "${APPLICATION_NAME}-postgresql-pvol" + } + ], "env": [ { "name": "POSTGRESQL_USER", @@ -564,7 +604,9 @@ } }, "spec": { - "accessModes": [ "ReadWriteOnce" ], + "accessModes": [ + "ReadWriteOnce" + ], "resources": { "requests": { "storage": "${VOLUME_CAPACITY}" @@ -573,4 +615,4 @@ } } ] -} +}
\ No newline at end of file diff --git a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-postgresql-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat7-postgresql-s2i.json index b46f23225..f5940a7a1 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-postgresql-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat7-postgresql-s2i.json @@ -3,129 +3,156 @@ "apiVersion": "v1", "metadata": { "annotations": { - "iconClass" : "icon-tomcat", - "description": "Application template for JWS PostgreSQL applications built using STI." + "iconClass": "icon-tomcat", + "description": "Application template for JWS PostgreSQL applications built using S2I.", + "tags": "tomcat,tomcat7,postgresql,java,database,jboss,xpaas", + "version": "1.1.0" }, - "name": "jws-tomcat8-postgresql-sti" + "name": "jws30-tomcat7-postgresql-s2i" }, "labels": { - "template": "jws-tomcat8-postgresql-sti" + "template": "jws30-tomcat7-postgresql-s2i", + "xpaas": "1.1.0" }, "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" + "value": "jws-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "todolist/todolist-jdbc", + "required": false }, { "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", "name": "DB_JNDI", - "value": "" + "value": "java:jboss/datasources/TodoListDS", + "required": false }, { "description": "Database name", "name": "DB_DATABASE", - "value": "root" + "value": "root", + "required": true }, { "description": "The name of the secret containing the certificate files", "name": "JWS_HTTPS_SECRET", - "value": "jws-app-secret" + "value": "jws-app-secret", + "required": true }, { "description": "The name of the certificate file within the secret", "name": "JWS_HTTPS_CERTIFICATE", - "value": "server.crt" + "value": "server.crt", + "required": false }, { "description": "The name of the certificate key file within the secret", "name": "JWS_HTTPS_CERTIFICATE_KEY", - "value": "server.key" + "value": "server.key", + "required": false }, { "description": "The certificate password", "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", - "value": "" + "value": "", + "required": false }, { "description": "Sets xa-pool/min-pool-size for the configured datasource.", - "name": "DB_MIN_POOL_SIZE" + "name": "DB_MIN_POOL_SIZE", + "required": false }, { "description": "Sets xa-pool/max-pool-size for the configured datasource.", - "name": "DB_MAX_POOL_SIZE" + "name": "DB_MAX_POOL_SIZE", + "required": false }, { "description": "Sets transaction-isolation for the configured datasource.", - "name": "DB_TX_ISOLATION" + "name": "DB_TX_ISOLATION", + "required": false }, { "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", - "name": "POSTGRESQL_MAX_CONNECTIONS" + "name": "POSTGRESQL_MAX_CONNECTIONS", + "required": false }, { "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", - "name": "POSTGRESQL_SHARED_BUFFERS" + "name": "POSTGRESQL_SHARED_BUFFERS", + "required": false }, { "description": "Database user name", "name": "DB_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user password", "name": "DB_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin User", "name": "JWS_ADMIN_USERNAME", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin Password", "name": "JWS_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -204,9 +231,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -215,7 +242,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -224,9 +251,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -235,12 +262,12 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -267,18 +294,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-webserver30-tomcat7-openshift:1.1" } } }, @@ -292,18 +320,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -334,6 +365,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -350,6 +384,7 @@ }, "spec": { "serviceAccount": "jws-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", @@ -478,10 +513,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", + "namespace": "${IMAGE_STREAM_NAMESPACE}", "name": "postgresql:latest" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -497,6 +535,7 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}-postgresql", @@ -536,4 +575,4 @@ } } ] -} +}
\ No newline at end of file diff --git a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-basic-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat8-basic-s2i.json index 3c7812b69..b24ce40ae 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-basic-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat8-basic-s2i.json @@ -3,67 +3,81 @@ "apiVersion": "v1", "metadata": { "annotations": { - "iconClass" : "icon-tomcat", - "description": "Application template for JWS applications built using STI." + "iconClass": "icon-tomcat", + "description": "Application template for JWS applications built using S2I.", + "tags": "tomcat,tomcat8,java,jboss,xpaas", + "version": "1.1.0" }, - "name": "jws-tomcat8-basic-sti" + "name": "jws30-tomcat8-basic-s2i" }, "labels": { - "template": "jws-tomcat8-basic-sti" + "template": "jws30-tomcat8-basic-s2i", + "xpaas": "1.1.0" }, "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" + "value": "jws-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts.git", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "tomcat-websocket-chat", + "required": false }, { "description": "JWS Admin User", "name": "JWS_ADMIN_USERNAME", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin Password", "name": "JWS_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -94,9 +108,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -105,7 +119,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -134,18 +148,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-webserver30-tomcat8-openshift:1.1" } } }, @@ -159,18 +174,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -201,6 +219,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -216,6 +237,7 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", diff --git a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-https-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat8-https-s2i.json index b94142135..7e788d0db 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-https-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat8-https-s2i.json @@ -3,87 +3,105 @@ "apiVersion": "v1", "metadata": { "annotations": { - "iconClass" : "icon-tomcat", - "description": "Application template for JWS applications built using STI." + "iconClass": "icon-tomcat", + "description": "Application template for JWS applications built using S2I.", + "tags": "tomcat,tomcat8,java,jboss,xpaas", + "version": "1.1.0" }, - "name": "jws-tomcat7-basic-sti" + "name": "jws30-tomcat8-https-s2i" }, "labels": { - "template": "jws-tomcat7-basic-sti" + "template": "jws30-tomcat8-https-s2i", + "xpaas": "1.1.0" }, "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" + "value": "jws-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts.git", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "tomcat-websocket-chat", + "required": false }, { "description": "The name of the secret containing the certificate files", "name": "JWS_HTTPS_SECRET", - "value": "jws-app-secret" + "value": "jws-app-secret", + "required": true }, { "description": "The name of the certificate file within the secret", "name": "JWS_HTTPS_CERTIFICATE", - "value": "server.crt" + "value": "server.crt", + "required": false }, { "description": "The name of the certificate key file within the secret", "name": "JWS_HTTPS_CERTIFICATE_KEY", - "value": "server.key" + "value": "server.key", + "required": false }, { "description": "The certificate password", "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", - "value": "" + "value": "", + "required": false }, { "description": "JWS Admin User", "name": "JWS_ADMIN_USERNAME", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin Password", "name": "JWS_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -138,9 +156,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -149,7 +167,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -158,9 +176,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -169,12 +187,12 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -201,18 +219,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-webserver30-tomcat8-openshift:1.1" } } }, @@ -226,18 +245,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -268,6 +290,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -284,6 +309,7 @@ }, "spec": { "serviceAccount": "jws-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", diff --git a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mongodb-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat8-mongodb-persistent-s2i.json index 892f27fe3..2f1d69c75 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mongodb-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat8-mongodb-persistent-s2i.json @@ -3,139 +3,174 @@ "apiVersion": "v1", "metadata": { "annotations": { - "iconClass" : "icon-tomcat", - "description": "Application template for JWS MongoDB applications built using STI." + "iconClass": "icon-tomcat", + "description": "Application template for JWS MongoDB applications with persistent storage built using S2I.", + "tags": "tomcat,tomcat8,mongodb,java,database,jboss,xpaas", + "version": "1.1.0" }, - "name": "jws-tomcat7-mongodb-sti" + "name": "jws30-tomcat8-mongodb-persistent-s2i" }, "labels": { - "template": "jws-tomcat7-mongodb-sti" + "template": "jws30-tomcat8-mongodb-persistent-s2i", + "xpaas": "1.1.0" }, "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" + "value": "jws-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "todolist/todolist-mongodb", + "required": false }, { "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", "name": "DB_JNDI", - "value": "" + "value": "", + "required": false }, { "description": "Database name", "name": "DB_DATABASE", - "value": "root" + "value": "root", + "required": true + }, + { + "description": "Size of persistent storage for database volume.", + "name": "VOLUME_CAPACITY", + "value": "512Mi", + "required": true }, { "description": "The name of the secret containing the certificate files", "name": "JWS_HTTPS_SECRET", - "value": "jws-app-secret" + "value": "jws-app-secret", + "required": true }, { "description": "The name of the certificate file within the secret", "name": "JWS_HTTPS_CERTIFICATE", - "value": "server.crt" + "value": "server.crt", + "required": false }, { "description": "The name of the certificate key file within the secret", "name": "JWS_HTTPS_CERTIFICATE_KEY", - "value": "server.key" + "value": "server.key", + "required": false }, { "description": "The certificate password", "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", - "value": "" + "value": "", + "required": false }, { "description": "Sets xa-pool/min-pool-size for the configured datasource.", - "name": "DB_MIN_POOL_SIZE" + "name": "DB_MIN_POOL_SIZE", + "required": false }, { "description": "Sets xa-pool/max-pool-size for the configured datasource.", - "name": "DB_MAX_POOL_SIZE" + "name": "DB_MAX_POOL_SIZE", + "required": false }, { "description": "Sets transaction-isolation for the configured datasource.", - "name": "DB_TX_ISOLATION" + "name": "DB_TX_ISOLATION", + "required": false }, { "description": "Disable data file preallocation.", - "name": "MONGODB_NOPREALLOC" + "name": "MONGODB_NOPREALLOC", + "required": false }, { "description": "Set MongoDB to use a smaller default data file size.", - "name": "MONGODB_SMALLFILES" + "name": "MONGODB_SMALLFILES", + "required": false }, { "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.", - "name": "MONGODB_QUIET" + "name": "MONGODB_QUIET", + "required": false }, { "description": "Database user name", "name": "DB_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user password", "name": "DB_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database admin password", "name": "DB_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin User", "name": "JWS_ADMIN_USERNAME", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin Password", "name": "JWS_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -214,9 +249,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -225,7 +260,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -234,9 +269,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -245,12 +280,12 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -277,18 +312,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-webserver30-tomcat8-openshift:1.1" } } }, @@ -302,18 +338,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -344,6 +383,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -360,6 +402,7 @@ }, "spec": { "serviceAccount": "jws-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", @@ -492,10 +535,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", + "namespace": "${IMAGE_STREAM_NAMESPACE}", "name": "mongodb:latest" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -511,6 +557,7 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}-mongodb", @@ -522,6 +569,12 @@ "protocol": "TCP" } ], + "volumeMounts": [ + { + "mountPath": "/var/lib/mongodb/data", + "name": "${APPLICATION_NAME}-mongodb-pvol" + } + ], "env": [ { "name": "MONGODB_USER", @@ -553,10 +606,38 @@ } ] } + ], + "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}" + } + } + } } ] -} +}
\ No newline at end of file diff --git a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mongodb-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat8-mongodb-s2i.json index a993024f4..bad676f2e 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mongodb-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat8-mongodb-s2i.json @@ -3,139 +3,168 @@ "apiVersion": "v1", "metadata": { "annotations": { - "iconClass" : "icon-tomcat", - "description": "Application template for JWS MongoDB applications built using STI." + "iconClass": "icon-tomcat", + "description": "Application template for JWS MongoDB applications built using S2I.", + "tags": "tomcat,tomcat8,mongodb,java,database,jboss,xpaas", + "version": "1.1.0" }, - "name": "jws-tomcat8-mongodb-sti" + "name": "jws30-tomcat8-mongodb-s2i" }, "labels": { - "template": "jws-tomcat8-mongodb-sti" + "template": "jws30-tomcat8-mongodb-s2i", + "xpaas": "1.1.0" }, "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" + "value": "jws-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "todolist/todolist-mongodb", + "required": false }, { "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", "name": "DB_JNDI", - "value": "" + "value": "", + "required": false }, { "description": "Database name", "name": "DB_DATABASE", - "value": "root" + "value": "root", + "required": true }, { "description": "The name of the secret containing the certificate files", "name": "JWS_HTTPS_SECRET", - "value": "jws-app-secret" + "value": "jws-app-secret", + "required": true }, { "description": "The name of the certificate file within the secret", "name": "JWS_HTTPS_CERTIFICATE", - "value": "server.crt" + "value": "server.crt", + "required": false }, { "description": "The name of the certificate key file within the secret", "name": "JWS_HTTPS_CERTIFICATE_KEY", - "value": "server.key" + "value": "server.key", + "required": false }, { "description": "The certificate password", "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", - "value": "" + "value": "", + "required": false }, { "description": "Sets xa-pool/min-pool-size for the configured datasource.", - "name": "DB_MIN_POOL_SIZE" + "name": "DB_MIN_POOL_SIZE", + "required": false }, { "description": "Sets xa-pool/max-pool-size for the configured datasource.", - "name": "DB_MAX_POOL_SIZE" + "name": "DB_MAX_POOL_SIZE", + "required": false }, { "description": "Sets transaction-isolation for the configured datasource.", - "name": "DB_TX_ISOLATION" + "name": "DB_TX_ISOLATION", + "required": false }, { "description": "Disable data file preallocation.", - "name": "MONGODB_NOPREALLOC" + "name": "MONGODB_NOPREALLOC", + "required": false }, { "description": "Set MongoDB to use a smaller default data file size.", - "name": "MONGODB_SMALLFILES" + "name": "MONGODB_SMALLFILES", + "required": false }, { "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.", - "name": "MONGODB_QUIET" + "name": "MONGODB_QUIET", + "required": false }, { "description": "Database user name", "name": "DB_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user password", "name": "DB_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database admin password", "name": "DB_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin User", "name": "JWS_ADMIN_USERNAME", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin Password", "name": "JWS_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -214,9 +243,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -225,7 +254,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -234,9 +263,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -245,12 +274,12 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -277,18 +306,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-webserver30-tomcat8-openshift:1.1" } } }, @@ -302,18 +332,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -344,6 +377,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -360,6 +396,7 @@ }, "spec": { "serviceAccount": "jws-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", @@ -492,10 +529,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", + "namespace": "${IMAGE_STREAM_NAMESPACE}", "name": "mongodb:latest" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -511,6 +551,7 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}-mongodb", @@ -559,4 +600,4 @@ } } ] -} +}
\ No newline at end of file diff --git a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mysql-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat8-mysql-persistent-s2i.json index 2ae59ec71..e20a45982 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mysql-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat8-mysql-persistent-s2i.json @@ -3,141 +3,177 @@ "apiVersion": "v1", "metadata": { "annotations": { - "iconClass" : "icon-tomcat", - "description": "Application template for JWS MySQL applications built using STI." + "iconClass": "icon-tomcat", + "description": "Application template for JWS MySQL applications with persistent storage built using S2I.", + "tags": "tomcat,tomcat8,mysql,java,database,jboss,xpaas", + "version": "1.1.0" }, - "name": "jws-tomcat7-mysql-sti" + "name": "jws30-tomcat8-mysql-persistent-s2i" }, "labels": { - "template": "jws-tomcat7-mysql-sti" + "template": "jws30-tomcat8-mysql-persistent-s2i", + "xpaas": "1.1.0" }, "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" + "value": "jws-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "todolist/todolist-jdbc", + "required": false }, { "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", "name": "DB_JNDI", - "value": "" + "value": "java:jboss/datasources/TodoListDS", + "required": false }, { "description": "Database name", "name": "DB_DATABASE", - "value": "root" + "value": "root", + "required": true + }, + { + "description": "Size of persistent storage for database volume.", + "name": "VOLUME_CAPACITY", + "value": "512Mi", + "required": true }, { "description": "The name of the secret containing the certificate files", "name": "JWS_HTTPS_SECRET", - "value": "jws-app-secret" + "value": "jws-app-secret", + "required": true }, { "description": "The name of the certificate file within the secret", "name": "JWS_HTTPS_CERTIFICATE", - "value": "server.crt" + "value": "server.crt", + "required": false }, { "description": "The name of the certificate key file within the secret", "name": "JWS_HTTPS_CERTIFICATE_KEY", - "value": "server.key" + "value": "server.key", + "required": false }, { "description": "The certificate password", "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", - "value": "" + "value": "", + "required": false }, { "description": "Sets xa-pool/min-pool-size for the configured datasource.", - "name": "DB_MIN_POOL_SIZE" + "name": "DB_MIN_POOL_SIZE", + "required": false }, { "description": "Sets xa-pool/max-pool-size for the configured datasource.", - "name": "DB_MAX_POOL_SIZE" + "name": "DB_MAX_POOL_SIZE", + "required": false }, { "description": "Sets transaction-isolation for the configured datasource.", - "name": "DB_TX_ISOLATION" + "name": "DB_TX_ISOLATION", + "required": false }, { "description": "Sets how the table names are stored and compared.", - "name": "MYSQL_LOWER_CASE_TABLE_NAMES" + "name": "MYSQL_LOWER_CASE_TABLE_NAMES", + "required": false }, { "description": "The maximum permitted number of simultaneous client connections.", - "name": "MYSQL_MAX_CONNECTIONS" + "name": "MYSQL_MAX_CONNECTIONS", + "required": false }, { "description": "The minimum length of the word to be included in a FULLTEXT index.", - "name": "MYSQL_FT_MIN_WORD_LEN" + "name": "MYSQL_FT_MIN_WORD_LEN", + "required": false }, { "description": "The maximum length of the word to be included in a FULLTEXT index.", - "name": "MYSQL_FT_MAX_WORD_LEN" + "name": "MYSQL_FT_MAX_WORD_LEN", + "required": false }, { "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", - "name": "MYSQL_AIO" + "name": "MYSQL_AIO", + "required": false }, { "description": "Database user name", "name": "DB_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user password", "name": "DB_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin User", "name": "JWS_ADMIN_USERNAME", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin Password", "name": "JWS_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -216,9 +252,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -227,7 +263,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -236,9 +272,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -247,12 +283,12 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -279,18 +315,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-webserver30-tomcat8-openshift:1.1" } } }, @@ -304,18 +341,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -346,6 +386,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -362,6 +405,7 @@ }, "spec": { "serviceAccount": "jws-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", @@ -490,10 +534,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", + "namespace": "${IMAGE_STREAM_NAMESPACE}", "name": "mysql:latest" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -509,6 +556,7 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}-mysql", @@ -519,6 +567,12 @@ "protocol": "TCP" } ], + "volumeMounts": [ + { + "mountPath": "/var/lib/mysql/data", + "name": "${APPLICATION_NAME}-mysql-pvol" + } + ], "env": [ { "name": "MYSQL_USER", @@ -554,10 +608,38 @@ } ] } + ], + "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}" + } + } + } } ] -} +}
\ No newline at end of file diff --git a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mysql-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat8-mysql-s2i.json index 226a983b7..1b9624756 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mysql-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat8-mysql-s2i.json @@ -3,141 +3,171 @@ "apiVersion": "v1", "metadata": { "annotations": { - "iconClass" : "icon-tomcat", - "description": "Application template for JWS MySQL applications built using STI." + "iconClass": "icon-tomcat", + "description": "Application template for JWS MySQL applications built using S2I.", + "tags": "tomcat,tomcat8,mysql,java,database,jboss,xpaas", + "version": "1.1.0" }, - "name": "jws-tomcat8-mysql-sti" + "name": "jws30-tomcat8-mysql-s2i" }, "labels": { - "template": "jws-tomcat8-mysql-sti" + "template": "jws30-tomcat8-mysql-s2i", + "xpaas": "1.1.0" }, "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" + "value": "jws-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "todolist/todolist-jdbc", + "required": false }, { "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", "name": "DB_JNDI", - "value": "" + "value": "java:jboss/datasources/TodoListDS", + "required": false }, { "description": "Database name", "name": "DB_DATABASE", - "value": "root" + "value": "root", + "required": true }, { "description": "The name of the secret containing the certificate files", "name": "JWS_HTTPS_SECRET", - "value": "jws-app-secret" + "value": "jws-app-secret", + "required": true }, { "description": "The name of the certificate file within the secret", "name": "JWS_HTTPS_CERTIFICATE", - "value": "server.crt" + "value": "server.crt", + "required": false }, { "description": "The name of the certificate key file within the secret", "name": "JWS_HTTPS_CERTIFICATE_KEY", - "value": "server.key" + "value": "server.key", + "required": false }, { "description": "The certificate password", "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", - "value": "" + "value": "", + "required": false }, { "description": "Sets xa-pool/min-pool-size for the configured datasource.", - "name": "DB_MIN_POOL_SIZE" + "name": "DB_MIN_POOL_SIZE", + "required": false }, { "description": "Sets xa-pool/max-pool-size for the configured datasource.", - "name": "DB_MAX_POOL_SIZE" + "name": "DB_MAX_POOL_SIZE", + "required": false }, { "description": "Sets transaction-isolation for the configured datasource.", - "name": "DB_TX_ISOLATION" + "name": "DB_TX_ISOLATION", + "required": false }, { "description": "Sets how the table names are stored and compared.", - "name": "MYSQL_LOWER_CASE_TABLE_NAMES" + "name": "MYSQL_LOWER_CASE_TABLE_NAMES", + "required": false }, { "description": "The maximum permitted number of simultaneous client connections.", - "name": "MYSQL_MAX_CONNECTIONS" + "name": "MYSQL_MAX_CONNECTIONS", + "required": false }, { "description": "The minimum length of the word to be included in a FULLTEXT index.", - "name": "MYSQL_FT_MIN_WORD_LEN" + "name": "MYSQL_FT_MIN_WORD_LEN", + "required": false }, { "description": "The maximum length of the word to be included in a FULLTEXT index.", - "name": "MYSQL_FT_MAX_WORD_LEN" + "name": "MYSQL_FT_MAX_WORD_LEN", + "required": false }, { "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.", - "name": "MYSQL_AIO" + "name": "MYSQL_AIO", + "required": false }, { "description": "Database user name", "name": "DB_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user password", "name": "DB_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin User", "name": "JWS_ADMIN_USERNAME", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin Password", "name": "JWS_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -216,9 +246,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -227,7 +257,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -236,9 +266,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -247,12 +277,12 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -279,18 +309,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-webserver30-tomcat8-openshift:1.1" } } }, @@ -304,18 +335,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -346,6 +380,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -362,6 +399,7 @@ }, "spec": { "serviceAccount": "jws-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", @@ -490,10 +528,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", + "namespace": "${IMAGE_STREAM_NAMESPACE}", "name": "mysql:latest" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -509,6 +550,7 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}-mysql", @@ -560,4 +602,4 @@ } } ] -} +}
\ No newline at end of file diff --git a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-postgresql-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat8-postgresql-persistent-s2i.json index 384ff1b8f..dc492a38e 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-postgresql-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat8-postgresql-persistent-s2i.json @@ -3,129 +3,162 @@ "apiVersion": "v1", "metadata": { "annotations": { - "iconClass" : "icon-tomcat", - "description": "Application template for JWS PostgreSQL applications built using STI." + "iconClass": "icon-tomcat", + "description": "Application template for JWS PostgreSQL applications with persistent storage built using S2I.", + "tags": "tomcat,tomcat8,postgresql,java,database,jboss,xpaas", + "version": "1.1.0" }, - "name": "jws-tomcat7-postgresql-sti" + "name": "jws30-tomcat8-postgresql-persistent-s2i" }, "labels": { - "template": "jws-tomcat7-postgresql-sti" + "template": "jws30-tomcat8-postgresql-persistent-s2i", + "xpaas": "1.1.0" }, "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" + "value": "jws-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "todolist/todolist-jdbc", + "required": false }, { "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", "name": "DB_JNDI", - "value": "" + "value": "java:jboss/datasources/TodoListDS", + "required": false }, { "description": "Database name", "name": "DB_DATABASE", - "value": "root" + "value": "root", + "required": true + }, + { + "description": "Size of persistent storage for database volume.", + "name": "VOLUME_CAPACITY", + "value": "512Mi", + "required": true }, { "description": "The name of the secret containing the certificate files", "name": "JWS_HTTPS_SECRET", - "value": "jws-app-secret" + "value": "jws-app-secret", + "required": true }, { "description": "The name of the certificate file within the secret", "name": "JWS_HTTPS_CERTIFICATE", - "value": "server.crt" + "value": "server.crt", + "required": false }, { "description": "The name of the certificate key file within the secret", "name": "JWS_HTTPS_CERTIFICATE_KEY", - "value": "server.key" + "value": "server.key", + "required": false }, { "description": "The certificate password", "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", - "value": "" + "value": "", + "required": false }, { "description": "Sets xa-pool/min-pool-size for the configured datasource.", - "name": "DB_MIN_POOL_SIZE" + "name": "DB_MIN_POOL_SIZE", + "required": false }, { "description": "Sets xa-pool/max-pool-size for the configured datasource.", - "name": "DB_MAX_POOL_SIZE" + "name": "DB_MAX_POOL_SIZE", + "required": false }, { "description": "Sets transaction-isolation for the configured datasource.", - "name": "DB_TX_ISOLATION" + "name": "DB_TX_ISOLATION", + "required": false }, { "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", - "name": "POSTGRESQL_MAX_CONNECTIONS" + "name": "POSTGRESQL_MAX_CONNECTIONS", + "required": false }, { "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", - "name": "POSTGRESQL_SHARED_BUFFERS" + "name": "POSTGRESQL_SHARED_BUFFERS", + "required": false }, { "description": "Database user name", "name": "DB_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user password", "name": "DB_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin User", "name": "JWS_ADMIN_USERNAME", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin Password", "name": "JWS_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -204,9 +237,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -215,7 +248,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -224,9 +257,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -235,12 +268,12 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -267,18 +300,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-webserver30-tomcat8-openshift:1.1" } } }, @@ -292,18 +326,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -334,6 +371,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -350,6 +390,7 @@ }, "spec": { "serviceAccount": "jws-service-account", + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}", @@ -478,10 +519,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", + "namespace": "${IMAGE_STREAM_NAMESPACE}", "name": "postgresql:latest" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -497,6 +541,7 @@ } }, "spec": { + "terminationGracePeriodSeconds": 60, "containers": [ { "name": "${APPLICATION_NAME}-postgresql", @@ -507,6 +552,12 @@ "protocol": "TCP" } ], + "volumeMounts": [ + { + "mountPath": "/var/lib/pgsql/data", + "name": "${APPLICATION_NAME}-postgresql-pvol" + } + ], "env": [ { "name": "POSTGRESQL_USER", @@ -530,10 +581,38 @@ } ] } + ], + "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}" + } + } + } } ] -} +}
\ No newline at end of file diff --git a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-postgresql-persistent-sti.json b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat8-postgresql-s2i.json index b4644ac08..242b37a79 100644 --- a/roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-postgresql-persistent-sti.json +++ b/roles/openshift_examples/files/examples/xpaas-templates/jws30-tomcat8-postgresql-s2i.json @@ -3,134 +3,156 @@ "apiVersion": "v1", "metadata": { "annotations": { - "iconClass" : "icon-tomcat", - "description": "Application template for JWS PostgreSQL applications with persistent storage built using STI." + "iconClass": "icon-tomcat", + "description": "Application template for JWS PostgreSQL applications built using S2I.", + "tags": "tomcat,tomcat8,postgresql,java,database,jboss,xpaas", + "version": "1.1.0" }, - "name": "jws-tomcat8-postgresql-persistent-sti" + "name": "jws30-tomcat8-postgresql-s2i" }, "labels": { - "template": "jws-tomcat8-postgresql-persistent-sti" + "template": "jws30-tomcat8-postgresql-s2i", + "xpaas": "1.1.0" }, "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" + "value": "jws-app", + "required": true }, { "description": "Custom hostname for service routes. Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>", - "name": "APPLICATION_HOSTNAME", - "value": "" + "name": "APPLICATION_DOMAIN", + "value": "", + "required": false }, { "description": "Git source URI for application", - "name": "GIT_URI" + "name": "SOURCE_REPOSITORY_URL", + "value": "https://github.com/jboss-openshift/openshift-quickstarts", + "required": true }, { "description": "Git branch/tag reference", - "name": "GIT_REF", - "value": "master" + "name": "SOURCE_REPOSITORY_REF", + "value": "1.1", + "required": false }, { "description": "Path within Git project to build; empty for root project directory.", - "name": "GIT_CONTEXT_DIR", - "value": "" + "name": "CONTEXT_DIR", + "value": "todolist/todolist-jdbc", + "required": false }, { "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb", "name": "DB_JNDI", - "value": "" + "value": "java:jboss/datasources/TodoListDS", + "required": false }, { "description": "Database name", "name": "DB_DATABASE", - "value": "root" - }, - { - "description": "Size of persistent storage for database volume.", - "name": "VOLUME_CAPACITY", - "value": "512Mi" + "value": "root", + "required": true }, { "description": "The name of the secret containing the certificate files", "name": "JWS_HTTPS_SECRET", - "value": "jws-app-secret" + "value": "jws-app-secret", + "required": true }, { "description": "The name of the certificate file within the secret", "name": "JWS_HTTPS_CERTIFICATE", - "value": "server.crt" + "value": "server.crt", + "required": false }, { "description": "The name of the certificate key file within the secret", "name": "JWS_HTTPS_CERTIFICATE_KEY", - "value": "server.key" + "value": "server.key", + "required": false }, { "description": "The certificate password", "name": "JWS_HTTPS_CERTIFICATE_PASSWORD", - "value": "" + "value": "", + "required": false }, { "description": "Sets xa-pool/min-pool-size for the configured datasource.", - "name": "DB_MIN_POOL_SIZE" + "name": "DB_MIN_POOL_SIZE", + "required": false }, { "description": "Sets xa-pool/max-pool-size for the configured datasource.", - "name": "DB_MAX_POOL_SIZE" + "name": "DB_MAX_POOL_SIZE", + "required": false }, { "description": "Sets transaction-isolation for the configured datasource.", - "name": "DB_TX_ISOLATION" + "name": "DB_TX_ISOLATION", + "required": false }, { "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.", - "name": "POSTGRESQL_MAX_CONNECTIONS" + "name": "POSTGRESQL_MAX_CONNECTIONS", + "required": false }, { "description": "Configures how much memory is dedicated to PostgreSQL for caching data.", - "name": "POSTGRESQL_SHARED_BUFFERS" + "name": "POSTGRESQL_SHARED_BUFFERS", + "required": false }, { "description": "Database user name", "name": "DB_USERNAME", "from": "user[a-zA-Z0-9]{3}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Database user password", "name": "DB_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin User", "name": "JWS_ADMIN_USERNAME", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "JWS Admin Password", "name": "JWS_ADMIN_PASSWORD", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { - "description": "Github trigger secret", - "name": "GITHUB_TRIGGER_SECRET", + "description": "GitHub trigger secret", + "name": "GITHUB_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true }, { "description": "Generic build trigger secret", - "name": "GENERIC_TRIGGER_SECRET", + "name": "GENERIC_WEBHOOK_SECRET", "from": "[a-zA-Z0-9]{8}", - "generate": "expression" + "generate": "expression", + "required": true + }, + { + "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.", + "name": "IMAGE_STREAM_NAMESPACE", + "value": "openshift", + "required": true } ], "objects": [ @@ -209,9 +231,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-http-route", + "id": "${APPLICATION_NAME}-http", "metadata": { - "name": "${APPLICATION_NAME}-http-route", + "name": "${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -220,7 +242,7 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "${APPLICATION_NAME}" } @@ -229,9 +251,9 @@ { "kind": "Route", "apiVersion": "v1", - "id": "${APPLICATION_NAME}-https-route", + "id": "${APPLICATION_NAME}-https", "metadata": { - "name": "${APPLICATION_NAME}-https-route", + "name": "secure-${APPLICATION_NAME}", "labels": { "application": "${APPLICATION_NAME}" }, @@ -240,12 +262,12 @@ } }, "spec": { - "host": "${APPLICATION_HOSTNAME}", + "host": "${APPLICATION_DOMAIN}", "to": { "name": "secure-${APPLICATION_NAME}" }, "tls": { - "termination" : "passthrough" + "termination": "passthrough" } } }, @@ -272,18 +294,19 @@ "source": { "type": "Git", "git": { - "uri": "${GIT_URI}", - "ref": "${GIT_REF}" + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" }, - "contextDir":"${GIT_CONTEXT_DIR}" + "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { + "forcePull": true, "from": { "kind": "ImageStreamTag", - "namespace": "openshift", - "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}" + "namespace": "${IMAGE_STREAM_NAMESPACE}", + "name": "jboss-webserver30-tomcat8-openshift:1.1" } } }, @@ -297,18 +320,21 @@ { "type": "GitHub", "github": { - "secret": "${GITHUB_TRIGGER_SECRET}" + "secret": "${GITHUB_WEBHOOK_SECRET}" } }, { "type": "Generic", "generic": { - "secret": "${GENERIC_TRIGGER_SECRET}" + "secret": "${GENERIC_WEBHOOK_SECRET}" } }, { "type": "ImageChange", "imageChange": {} + }, + { + "type": "ConfigChange" } ] } @@ -339,6 +365,9 @@ "name": "${APPLICATION_NAME}" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -483,10 +512,13 @@ ], "from": { "kind": "ImageStreamTag", - "namespace": "openshift", + "namespace": "${IMAGE_STREAM_NAMESPACE}", "name": "postgresql:latest" } } + }, + { + "type": "ConfigChange" } ], "replicas": 1, @@ -512,12 +544,6 @@ "protocol": "TCP" } ], - "volumeMounts": [ - { - "mountPath": "/var/lib/pgsql/data", - "name": "${APPLICATION_NAME}-postgresql-pvol" - } - ], "env": [ { "name": "POSTGRESQL_USER", @@ -541,36 +567,10 @@ } ] } - ], - "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}" - } - } - } } ] -} +}
\ No newline at end of file diff --git a/roles/openshift_examples/tasks/main.yml b/roles/openshift_examples/tasks/main.yml index 3a829a4c6..0b4784bae 100644 --- a/roles/openshift_examples/tasks/main.yml +++ b/roles/openshift_examples/tasks/main.yml @@ -32,11 +32,77 @@ - name: Import quickstart-templates command: > {{ openshift.common.client_binary }} {{ openshift_examples_import_command }} -n openshift -f {{ quickstarts_base }} - when: openshift_examples_load_quickstarts + when: openshift_examples_load_quickstarts | bool 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 origin infrastructure-templates + command: > + {{ openshift.common.client_binary }} {{ openshift_examples_import_command }} -n openshift -f {{ infrastructure_origin_base }} + when: openshift_examples_load_centos | bool + register: oex_import_infrastructure + failed_when: "'already exists' not in oex_import_infrastructure.stderr and oex_import_infrastructure.rc != 0" + changed_when: false + +- name: Import enterprise infrastructure-templates + command: > + {{ openshift.common.client_binary }} {{ openshift_examples_import_command }} -n openshift -f {{ infrastructure_enterprise_base }} + when: openshift_examples_load_rhel | bool + register: oex_import_infrastructure + failed_when: "'already exists' not in oex_import_infrastructure.stderr and oex_import_infrastructure.rc != 0" + changed_when: false + +# The 1.1 release of the xpaas content for OpenShift renamed all the templates +- name: Remove old xpaas templates from filesystem + file: + path: "{{ xpaas_templates_base }}/{{ item }}" + state: absent + with_items: + - amq6-persistent.json + - amq6.json + - eap6-amq-persistent-sti.json + - eap6-amq-sti.json + - eap6-basic-sti.json + - eap6-https-sti.json + - eap6-mongodb-persistent-sti.json + - eap6-mongodb-sti.json + - eap6-mysql-persistent-sti.json + - eap6-mysql-sti.json + - eap6-postgresql-persistent-sti.json + - eap6-postgresql-sti.json + - jws-tomcat7-basic-sti.json + - jws-tomcat7-https-sti.json + - jws-tomcat7-mongodb-sti.json + - jws-tomcat7-mongodb-persistent-sti.json + - jws-tomcat7-mysql-persistent-sti.json + - jws-tomcat7-mysql-sti.json + - jws-tomcat7-postgresql-persistent-sti.json + - jws-tomcat8-postgresql-persistent-sti.json + - jws-tomcat8-basic-sti.json + - jws-tomcat8-https-sti.json + - jws-tomcat8-mongodb-sti.json + - jws-tomcat8-mongodb-persistent-sti.json + - jws-tomcat8-mysql-sti.json + - jws-tomcat8-mysql-persistent-sti.json + - jws-tomcat8-postgresql-sti.json + - jws-tomcat7-postgresql-sti.json + +- name: Remove old xpaas templates from openshift namespace + command: > + {{ openshift.common.client_binary }} -n openshift delete + templates/amq6 templates/amq6-persistent templates/eap6-amq-persistent-sti templates/eap6-amq-sti \ + templates/eap6-basic-sti templates/eap6-basic-sti templates/eap6-mongodb-persistent-sti templates/eap6-mongodb-sti \ + templates/eap6-mysql-persistent-sti templates/eap6-mysql-sti templates/eap6-postgresql-persistent-sti \ + templates/eap6-postgresql-sti templates/jws-tomcat7-basic-sti templates/jws-tomcat7-basic-sti \ + templates/jws-tomcat7-mongodb-persistent-sti templates/jws-tomcat7-mongodb-sti \ + templates/jws-tomcat7-mysql-persistent-sti templates/jws-tomcat7-mysql-sti \ + templates/jws-tomcat7-postgresql-persistent-sti templates/jws-tomcat7-postgresql-sti \ + templates/jws-tomcat8-basic-sti templates/jws-tomcat8-basic-sti templates/jws-tomcat8-mongodb-persistent-sti + when: openshift_examples_load_xpaas | bool + register: oex_delete_old_xpaas_templates + failed_when: "'not found' not in oex_delete_old_xpaas_templates.stderr and oex_delete_old_xpaas_templates.rc != 0" + changed_when: false - name: Import xPaas image streams command: > diff --git a/roles/openshift_facts/library/openshift_facts.py b/roles/openshift_facts/library/openshift_facts.py index 69bb49c9b..ae530eadd 100755 --- a/roles/openshift_facts/library/openshift_facts.py +++ b/roles/openshift_facts/library/openshift_facts.py @@ -1,6 +1,10 @@ #!/usr/bin/python +# pylint: disable=too-many-lines # -*- coding: utf-8 -*- # vim: expandtab:tabstop=4:shiftwidth=4 +# Reason: Disable pylint too-many-lines because we don't want to split up this file. +# Status: Permanently disabled to keep this module as self-contained as possible. + """Ansible module for retrieving and setting openshift related facts""" DOCUMENTATION = ''' @@ -16,8 +20,29 @@ EXAMPLES = ''' import ConfigParser import copy import os +import StringIO +import yaml from distutils.util import strtobool +from distutils.version import LooseVersion +import struct +import socket + +def first_ip(network): + """ Return the first IPv4 address in network + + Args: + network (str): network in CIDR format + Returns: + str: first IPv4 address + """ + def atoi(addr): + return struct.unpack("!I", socket.inet_aton(addr))[0] + def itoa(addr): + return socket.inet_ntoa(struct.pack("!I", addr)) + (address, netmask) = network.split('/') + netmask_i = (0xffffffff << (32 - atoi(netmask))) & 0xffffffff + return itoa((atoi(address) & netmask_i) + 1) def hostname_valid(hostname): """ Test if specified hostname should be considered valid @@ -301,6 +326,23 @@ def set_fluentd_facts_if_unset(facts): facts['common']['use_fluentd'] = use_fluentd return facts +def set_flannel_facts_if_unset(facts): + """ Set flannel facts if not already present in facts dict + dict: the facts dict updated with the flannel facts if + missing + Args: + facts (dict): existing facts + Returns: + dict: the facts dict updated with the flannel + facts if they were not already present + + """ + if 'common' in facts: + if 'use_flannel' not in facts['common']: + use_flannel = False + facts['common']['use_flannel'] = use_flannel + return facts + def set_node_schedulability(facts): """ Set schedulable facts if not already present in facts dict Args: @@ -318,6 +360,29 @@ def set_node_schedulability(facts): facts['node']['schedulable'] = True return facts +def set_master_selectors(facts): + """ Set selectors facts if not already present in facts dict + Args: + facts (dict): existing facts + Returns: + dict: the facts dict updated with the generated selectors + facts if they were not already present + + """ + if 'master' in facts: + if 'infra_nodes' in facts['master']: + deployment_type = facts['common']['deployment_type'] + if deployment_type == 'online': + selector = "type=infra" + else: + selector = "region=infra" + + if 'router_selector' not in facts['master']: + facts['master']['router_selector'] = selector + if 'registry_selector' not in facts['master']: + facts['master']['registry_selector'] = selector + return facts + def set_metrics_facts_if_unset(facts): """ Set cluster metrics facts if not already present in facts dict dict: the facts dict updated with the generated cluster metrics facts if @@ -335,6 +400,33 @@ def set_metrics_facts_if_unset(facts): facts['common']['use_cluster_metrics'] = use_cluster_metrics return facts +def set_project_cfg_facts_if_unset(facts): + """ Set Project Configuration facts if not already present in facts dict + dict: + Args: + facts (dict): existing facts + Returns: + dict: the facts dict updated with the generated Project Configuration + facts if they were not already present + + """ + + config = { + 'default_node_selector': '', + 'project_request_message': '', + 'project_request_template': '', + 'mcs_allocator_range': 's0:/2', + 'mcs_labels_per_project': 5, + 'uid_allocator_range': '1000000000-1999999999/10000' + } + + if 'master' in facts: + for key, value in config.items(): + if key not in facts['master']: + facts['master'][key] = value + + return facts + def set_identity_providers_if_unset(facts): """ Set identity_providers fact if not already present in facts dict @@ -351,7 +443,7 @@ def set_identity_providers_if_unset(facts): name='allow_all', challenge=True, login=True, kind='AllowAllPasswordIdentityProvider' ) - if deployment_type == 'enterprise': + if deployment_type in ['enterprise', 'atomic-enterprise', 'openshift-enterprise']: identity_provider = dict( name='deny_all', challenge=True, login=True, kind='DenyAllPasswordIdentityProvider' @@ -428,24 +520,84 @@ def set_aggregate_facts(facts): dict: the facts dict updated with aggregated facts """ all_hostnames = set() + internal_hostnames = set() if 'common' in facts: all_hostnames.add(facts['common']['hostname']) all_hostnames.add(facts['common']['public_hostname']) + all_hostnames.add(facts['common']['ip']) + all_hostnames.add(facts['common']['public_ip']) + + internal_hostnames.add(facts['common']['hostname']) + internal_hostnames.add(facts['common']['ip']) if 'master' in facts: + # FIXME: not sure why but facts['dns']['domain'] fails + cluster_domain = 'cluster.local' if 'cluster_hostname' in facts['master']: all_hostnames.add(facts['master']['cluster_hostname']) if 'cluster_public_hostname' in facts['master']: all_hostnames.add(facts['master']['cluster_public_hostname']) + svc_names = ['openshift', 'openshift.default', 'openshift.default.svc', + 'openshift.default.svc.' + cluster_domain, 'kubernetes', 'kubernetes.default', + 'kubernetes.default.svc', 'kubernetes.default.svc.' + cluster_domain] + all_hostnames.update(svc_names) + internal_hostnames.update(svc_names) + first_svc_ip = first_ip(facts['master']['portal_net']) + all_hostnames.add(first_svc_ip) + internal_hostnames.add(first_svc_ip) facts['common']['all_hostnames'] = list(all_hostnames) + facts['common']['internal_hostnames'] = list(internal_hostnames) return facts + +def set_etcd_facts_if_unset(facts): + """ + If using embedded etcd, loads the data directory from master-config.yaml. + + If using standalone etcd, loads ETCD_DATA_DIR from etcd.conf. + + If anything goes wrong parsing these, the fact will not be set. + """ + if 'etcd' in facts: + if 'master' in facts and facts['master']['embedded_etcd']: + try: + # Parse master config to find actual etcd data dir: + master_cfg_path = os.path.join(facts['common']['config_base'], + 'master/master-config.yaml') + master_cfg_f = open(master_cfg_path, 'r') + config = yaml.safe_load(master_cfg_f.read()) + master_cfg_f.close() + + facts['etcd']['etcd_data_dir'] = \ + config['etcdConfig']['storageDirectory'] + # We don't want exceptions bubbling up here: + # pylint: disable=broad-except + except Exception: + pass + else: + # Read ETCD_DATA_DIR from /etc/etcd/etcd.conf: + try: + # Add a fake section for parsing: + ini_str = '[root]\n' + open('/etc/etcd/etcd.conf', 'r').read() + ini_fp = StringIO.StringIO(ini_str) + config = ConfigParser.RawConfigParser() + config.readfp(ini_fp) + etcd_data_dir = config.get('root', 'ETCD_DATA_DIR') + if etcd_data_dir.startswith('"') and etcd_data_dir.endswith('"'): + etcd_data_dir = etcd_data_dir[1:-1] + facts['etcd']['etcd_data_dir'] = etcd_data_dir + # We don't want exceptions bubbling up here: + # pylint: disable=broad-except + except Exception: + pass + return facts + def set_deployment_facts_if_unset(facts): """ Set Facts that vary based on deployment_type. This currently includes common.service_type, common.config_base, master.registry_url, - node.registry_url + node.registry_url, node.storage_plugin_deps Args: facts (dict): existing facts @@ -453,8 +605,9 @@ def set_deployment_facts_if_unset(facts): dict: the facts dict updated with the generated deployment_type facts """ - # Perhaps re-factor this as a map? - # pylint: disable=too-many-branches + # disabled to avoid breaking up facts related to deployment type into + # multiple methods for now. + # pylint: disable=too-many-statements, too-many-branches if 'common' in facts: deployment_type = facts['common']['deployment_type'] if 'service_type' not in facts['common']: @@ -468,13 +621,18 @@ def set_deployment_facts_if_unset(facts): config_base = '/etc/origin' if deployment_type in ['enterprise', 'online']: config_base = '/etc/openshift' + # Handle upgrade scenarios when symlinks don't yet exist: + if not os.path.exists(config_base) and os.path.exists('/etc/openshift'): + config_base = '/etc/openshift' facts['common']['config_base'] = config_base if 'data_dir' not in facts['common']: data_dir = '/var/lib/origin' if deployment_type in ['enterprise', 'online']: data_dir = '/var/lib/openshift' + # Handle upgrade scenarios when symlinks don't yet exist: + if not os.path.exists(data_dir) and os.path.exists('/var/lib/openshift'): + data_dir = '/var/lib/openshift' facts['common']['data_dir'] = data_dir - facts['common']['version'] = get_openshift_version() for role in ('master', 'node'): if role in facts: @@ -487,14 +645,55 @@ def set_deployment_facts_if_unset(facts): registry_url = 'aep3/aep-${component}:${version}' facts[role]['registry_url'] = registry_url + if 'master' in facts: + deployment_type = facts['common']['deployment_type'] + openshift_features = ['Builder', 'S2IBuilder', 'WebConsole'] + if 'disabled_features' in facts['master']: + if deployment_type == 'atomic-enterprise': + curr_disabled_features = set(facts['master']['disabled_features']) + facts['master']['disabled_features'] = list(curr_disabled_features.union(openshift_features)) + else: + if deployment_type == 'atomic-enterprise': + facts['master']['disabled_features'] = openshift_features + + if 'node' in facts: + deployment_type = facts['common']['deployment_type'] + if 'storage_plugin_deps' not in facts['node']: + if deployment_type in ['openshift-enterprise', 'atomic-enterprise']: + facts['node']['storage_plugin_deps'] = ['ceph', 'glusterfs'] + else: + facts['node']['storage_plugin_deps'] = [] + return facts +def set_version_facts_if_unset(facts): + """ Set version facts. This currently includes common.version and + common.version_greater_than_3_1_or_1_1. + + Args: + facts (dict): existing facts + Returns: + dict: the facts dict updated with version facts. + """ + if 'common' in facts: + deployment_type = facts['common']['deployment_type'] + facts['common']['version'] = version = get_openshift_version() + if version is not None: + if deployment_type == 'origin': + version_gt_3_1_or_1_1 = LooseVersion(version) > LooseVersion('1.0.6') + else: + version_gt_3_1_or_1_1 = LooseVersion(version) > LooseVersion('3.0.2.900') + else: + version_gt_3_1_or_1_1 = True + facts['common']['version_greater_than_3_1_or_1_1'] = version_gt_3_1_or_1_1 + return facts -def set_sdn_facts_if_unset(facts): +def set_sdn_facts_if_unset(facts, system_facts): """ Set sdn facts if not already present in facts dict Args: facts (dict): existing facts + system_facts (dict): ansible_facts Returns: dict: the facts dict updated with the generated sdn facts if they were not already present @@ -513,9 +712,18 @@ def set_sdn_facts_if_unset(facts): if 'sdn_host_subnet_length' not in facts['master']: facts['master']['sdn_host_subnet_length'] = '8' - if 'node' in facts: - if 'sdn_mtu' not in facts['node']: - facts['node']['sdn_mtu'] = '1450' + if 'node' in facts and 'sdn_mtu' not in facts['node']: + node_ip = facts['common']['ip'] + + # default MTU if interface MTU cannot be detected + facts['node']['sdn_mtu'] = '1450' + + for val in system_facts.itervalues(): + if isinstance(val, dict) and 'mtu' in val: + mtu = val['mtu'] + + if 'ipv4' in val and val['ipv4'].get('address') == node_ip: + facts['node']['sdn_mtu'] = str(mtu - 50) return facts @@ -605,11 +813,11 @@ def get_openshift_version(): Returns: version: the current openshift version """ - version = '' + version = None if os.path.isfile('/usr/bin/openshift'): _, output, _ = module.run_command(['/usr/bin/openshift', 'version']) - versions = dict(e.split(' v') for e in output.splitlines()) + versions = dict(e.split(' v') for e in output.splitlines() if ' v' in e) version = versions.get('openshift', '') #TODO: acknowledge the possility of a containerized install @@ -748,7 +956,7 @@ class OpenShiftFacts(object): Raises: OpenShiftFactsUnsupportedRoleError: """ - known_roles = ['common', 'master', 'node', 'master_sdn', 'node_sdn', 'dns'] + known_roles = ['common', 'master', 'node', 'master_sdn', 'node_sdn', 'dns', 'etcd'] def __init__(self, role, filename, local_facts): self.changed = False @@ -780,13 +988,18 @@ class OpenShiftFacts(object): facts = merge_facts(facts, local_facts) facts['current_config'] = get_current_config(facts) facts = set_url_facts_if_unset(facts) + facts = set_project_cfg_facts_if_unset(facts) facts = set_fluentd_facts_if_unset(facts) + facts = set_flannel_facts_if_unset(facts) facts = set_node_schedulability(facts) + facts = set_master_selectors(facts) facts = set_metrics_facts_if_unset(facts) facts = set_identity_providers_if_unset(facts) - facts = set_sdn_facts_if_unset(facts) + facts = set_sdn_facts_if_unset(facts, self.system_facts) facts = set_deployment_facts_if_unset(facts) + facts = set_version_facts_if_unset(facts) facts = set_aggregate_facts(facts) + facts = set_etcd_facts_if_unset(facts) return dict(openshift=facts) def get_defaults(self, roles): @@ -825,11 +1038,12 @@ class OpenShiftFacts(object): session_name='ssn', session_secrets_file='', access_token_max_seconds=86400, auth_token_max_seconds=500, - oauth_grant_method='auto', cluster_defer_ha=False) + oauth_grant_method='auto') defaults['master'] = master if 'node' in roles: - node = dict(labels={}, annotations={}, portal_net='172.30.0.0/16') + node = dict(labels={}, annotations={}, portal_net='172.30.0.0/16', + iptables_sync_period='5s') defaults['node'] = node return defaults diff --git a/roles/openshift_facts/tasks/main.yml b/roles/openshift_facts/tasks/main.yml index 6301d4fc0..913f0dc78 100644 --- a/roles/openshift_facts/tasks/main.yml +++ b/roles/openshift_facts/tasks/main.yml @@ -6,5 +6,10 @@ - ansible_version | version_compare('1.9.0', 'ne') - ansible_version | version_compare('1.9.0.1', 'ne') +- name: Ensure PyYaml is installed + yum: pkg={{ item }} state=installed + with_items: + - PyYAML + - name: Gather Cluster facts openshift_facts: diff --git a/roles/openshift_master/handlers/main.yml b/roles/openshift_master/handlers/main.yml index 2981979e0..4b9500cbd 100644 --- a/roles/openshift_master/handlers/main.yml +++ b/roles/openshift_master/handlers/main.yml @@ -1,4 +1,14 @@ --- - name: restart master service: name={{ openshift.common.service_type }}-master state=restarted - when: not openshift_master_ha | bool + when: (not openshift_master_ha | bool) and (not master_service_status_changed | default(false)) + +- name: restart master api + service: name={{ openshift.common.service_type }}-master-api state=restarted + when: (openshift_master_ha | bool) and (not master_api_service_status_changed | default(false)) and openshift.master.cluster_method == 'native' + +# TODO: need to fix up ignore_errors here +- name: restart master controllers + service: name={{ openshift.common.service_type }}-master-controllers state=restarted + when: (openshift_master_ha | bool) and (not master_controllers_service_status_changed | default(false)) and openshift.master.cluster_method == 'native' + ignore_errors: yes diff --git a/roles/openshift_master/tasks/main.yml b/roles/openshift_master/tasks/main.yml index fa12005ab..185bfb8f3 100644 --- a/roles/openshift_master/tasks/main.yml +++ b/roles/openshift_master/tasks/main.yml @@ -9,16 +9,22 @@ when: openshift_master_oauth_grant_method is defined - fail: + msg: "openshift_master_cluster_method must be set to either 'native' or 'pacemaker' for multi-master installations" + when: openshift_master_ha | bool and ((openshift_master_cluster_method is not defined) or (openshift_master_cluster_method is defined and openshift_master_cluster_method not in ["native", "pacemaker"])) +- fail: + msg: "'native' high availability is not supported for the requested OpenShift version" + when: openshift_master_ha | bool and openshift_master_cluster_method == "native" and not openshift.common.version_greater_than_3_1_or_1_1 | bool +- fail: msg: "openshift_master_cluster_password must be set for multi-master installations" - when: openshift_master_ha | bool and not openshift.master.cluster_defer_ha | bool and openshift_master_cluster_password is not defined + when: openshift_master_ha | bool and openshift_master_cluster_method == "pacemaker" and (openshift_master_cluster_password is not defined or not openshift_master_cluster_password) - name: Set master facts openshift_facts: role: master local_facts: + cluster_method: "{{ openshift_master_cluster_method | default(None) }}" cluster_hostname: "{{ openshift_master_cluster_hostname | default(None) }}" cluster_public_hostname: "{{ openshift_master_cluster_public_hostname | default(None) }}" - cluster_defer_ha: "{{ openshift_master_cluster_defer_ha | default(None) }}" debug_level: "{{ openshift_master_debug_level | default(openshift.common.debug_level) }}" api_port: "{{ openshift_master_api_port | default(None) }}" api_url: "{{ openshift_master_api_url | default(None) }}" @@ -41,6 +47,8 @@ portal_net: "{{ openshift_master_portal_net | default(None) }}" session_max_seconds: "{{ openshift_master_session_max_seconds | default(None) }}" session_name: "{{ openshift_master_session_name | default(None) }}" + session_auth_secrets: "{{ openshift_master_session_auth_secrets | default(None) }}" + session_encryption_secrets: "{{ openshift_master_session_encryption_secrets | default(None) }}" session_secrets_file: "{{ openshift_master_session_secrets_file | default(None) }}" access_token_max_seconds: "{{ openshift_master_access_token_max_seconds | default(None) }}" auth_token_max_seconds: "{{ openshift_master_auth_token_max_seconds | default(None) }}" @@ -52,27 +60,24 @@ default_subdomain: "{{ osm_default_subdomain | default(None) }}" custom_cors_origins: "{{ osm_custom_cors_origins | default(None) }}" default_node_selector: "{{ osm_default_node_selector | default(None) }}" + project_request_message: "{{ osm_project_request_message | default(None) }}" + project_request_template: "{{ osm_project_request_template | default(None) }}" + mcs_allocator_range: "{{ osm_mcs_allocator_range | default(None) }}" + mcs_labels_per_project: "{{ osm_mcs_labels_per_project | default(None) }}" + uid_allocator_range: "{{ osm_uid_allocator_range | default(None) }}" + router_selector: "{{ openshift_router_selector | default(None) }}" + registry_selector: "{{ openshift_registry_selector | default(None) }}" api_server_args: "{{ osm_api_server_args | default(None) }}" controller_args: "{{ osm_controller_args | default(None) }}" + infra_nodes: "{{ num_infra | default(None) }}" + disabled_features: "{{ osm_disabled_features | default(None) }}" + master_count: "{{ openshift_master_count | default(None) }}" + controller_lease_ttl: "{{ osm_controller_lease_ttl | default(None) }}" - name: Install Master package yum: pkg={{ openshift.common.service_type }}-master{{ openshift_version }} state=present register: install_result -- name: Check for RPM generated config marker file /etc/origin/.config_managed - stat: path=/etc/origin/.rpmgenerated - register: rpmgenerated_config - -- name: Remove RPM generated config files - file: - path: "{{ item }}" - state: absent - when: openshift.common.service_type in ['atomic-enterprise','openshift-enterprise'] and rpmgenerated_config.stat.exists == true - with_items: - - "{{ openshift.common.config_base }}/master" - - "{{ openshift.common.config_base }}/node" - - "{{ openshift.common.config_base }}/.rpmgenerated" - # TODO: These values need to be configurable - name: Set dns facts openshift_facts: @@ -82,7 +87,7 @@ domain: cluster.local when: openshift.master.embedded_dns -- name: Create config parent directory if it doesn't exist +- name: Create config parent directory if it does not exist file: path: "{{ openshift_master_config_dir }}" state: directory @@ -95,6 +100,8 @@ creates: "{{ openshift_master_policy }}" notify: - restart master + - restart master api + - restart master controllers - name: Create the scheduler config template: @@ -103,6 +110,8 @@ backup: true notify: - restart master + - restart master api + - restart master controllers - name: Install httpd-tools if needed yum: pkg=httpd-tools state=present @@ -125,6 +134,44 @@ when: item.kind == 'HTPasswdPasswordIdentityProvider' with_items: openshift.master.identity_providers +# workaround for missing systemd unit files for controllers/api +- name: Create the api service file + template: + src: atomic-openshift-master-api.service.j2 + dest: /usr/lib/systemd/system/{{ openshift.common.service_type }}-master-api.service + force: no + when: openshift_master_ha | bool and openshift_master_cluster_method == "native" +- name: Create the controllers service file + template: + src: atomic-openshift-master-controllers.service.j2 + dest: /usr/lib/systemd/system/{{ openshift.common.service_type }}-master-controllers.service + force: no + when: openshift_master_ha | bool and openshift_master_cluster_method == "native" +- name: Create the api env file + template: + src: atomic-openshift-master-api.j2 + dest: /etc/sysconfig/{{ openshift.common.service_type }}-master-api + force: no + when: openshift_master_ha | bool and openshift_master_cluster_method == "native" +- name: Create the controllers env file + template: + src: atomic-openshift-master-controllers.j2 + dest: /etc/sysconfig/{{ openshift.common.service_type }}-master-controllers + force: no + when: openshift_master_ha | bool and openshift_master_cluster_method == "native" +- command: systemctl daemon-reload + when: openshift_master_ha | bool and openshift_master_cluster_method == "native" +# end workaround for missing systemd unit files + +- name: Create session secrets file + template: + dest: "{{ openshift.master.session_secrets_file }}" + src: sessionSecretsFile.yaml.v1.j2 + force: no + notify: + - restart master + - restart master api + # TODO: add the validate parameter when there is a validation command to run - name: Create master config template: @@ -133,12 +180,15 @@ backup: true notify: - restart master + - restart master api + - restart master controllers - name: Configure master settings lineinfile: dest: /etc/sysconfig/{{ openshift.common.service_type }}-master regexp: "{{ item.regex }}" line: "{{ item.line }}" + create: yes with_items: - regex: '^OPTIONS=' line: "OPTIONS=--loglevel={{ openshift.master.debug_level }}" @@ -147,35 +197,88 @@ notify: - restart master +- name: Configure master api settings + lineinfile: + dest: /etc/sysconfig/{{ openshift.common.service_type }}-master-api + regexp: "{{ item.regex }}" + line: "{{ item.line }}" + with_items: + - regex: '^OPTIONS=' + line: "OPTIONS=--loglevel={{ openshift.master.debug_level }} --listen=https://0.0.0.0:8443 --master=https://{{ openshift.common.ip }}:8443" + - regex: '^CONFIG_FILE=' + line: "CONFIG_FILE={{ openshift_master_config_file }}" + when: openshift_master_ha | bool and openshift_master_cluster_method == "native" + notify: + - restart master api + +- name: Configure master controller settings + lineinfile: + dest: /etc/sysconfig/{{ openshift.common.service_type }}-master-controllers + regexp: "{{ item.regex }}" + line: "{{ item.line }}" + with_items: + - regex: '^OPTIONS=' + line: "OPTIONS=--loglevel={{ openshift.master.debug_level }} --listen=https://0.0.0.0:8444" + - regex: '^CONFIG_FILE=' + line: "CONFIG_FILE={{ openshift_master_config_file }}" + when: openshift_master_ha | bool and openshift_master_cluster_method == "native" + notify: + - restart master controllers + - name: Start and enable master service: name={{ openshift.common.service_type }}-master enabled=yes state=started when: not openshift_master_ha | bool register: start_result -- name: pause to prevent service restart from interfering with bootstrapping - pause: seconds=30 - when: start_result | changed +- set_fact: + master_service_status_changed = start_result | changed + when: not openshift_master_ha | bool + +- name: Start and enable master api + service: name={{ openshift.common.service_type }}-master-api enabled=yes state=started + when: openshift_master_ha | bool and openshift.master.cluster_method == 'native' + register: start_result + +- set_fact: + master_api_service_status_changed = start_result | changed + when: openshift_master_ha | bool and openshift.master.cluster_method == 'native' + +# TODO: fix the ugly workaround of setting ignore_errors +# the controllers service tries to start even if it is already started +- name: Start and enable master controller + service: name={{ openshift.common.service_type }}-master-controllers enabled=yes state=started + when: openshift_master_ha | bool and openshift.master.cluster_method == 'native' + register: start_result + ignore_errors: yes + +- set_fact: + master_controllers_service_status_changed = start_result | changed + when: openshift_master_ha | bool and openshift.master.cluster_method == 'native' - name: Install cluster packages yum: pkg=pcs state=present - when: openshift_master_ha | bool and not openshift.master.cluster_defer_ha | bool + when: openshift_master_ha | bool and openshift.master.cluster_method == 'pacemaker' register: install_result - name: Start and enable cluster service service: name=pcsd enabled=yes state=started - when: openshift_master_ha | bool and not openshift.master.cluster_defer_ha | bool + when: openshift_master_ha | bool and openshift.master.cluster_method == 'pacemaker' - name: Set the cluster user password shell: echo {{ openshift_master_cluster_password | quote }} | passwd --stdin hacluster when: install_result | changed +- name: Lookup default group for ansible_ssh_user + command: "/usr/bin/id -g {{ ansible_ssh_user }}" + register: _ansible_ssh_user_gid + - name: Create the client config dir(s) file: path: "~{{ item }}/.kube" state: directory mode: 0700 owner: "{{ item }}" - group: "{{ item }}" + group: "{{ 'root' if item == 'root' else _ansible_ssh_user_gid.stdout }}" with_items: - root - "{{ ansible_ssh_user }}" @@ -196,7 +299,7 @@ state: file mode: 0700 owner: "{{ item }}" - group: "{{ item }}" + group: "{{ 'root' if item == 'root' else _ansible_ssh_user_gid.stdout }}" with_items: - root - "{{ ansible_ssh_user }}" diff --git a/roles/openshift_master/templates/atomic-openshift-master-api.j2 b/roles/openshift_master/templates/atomic-openshift-master-api.j2 new file mode 100644 index 000000000..205934248 --- /dev/null +++ b/roles/openshift_master/templates/atomic-openshift-master-api.j2 @@ -0,0 +1,9 @@ +OPTIONS= +CONFIG_FILE={{ openshift_master_config_dir }}/master-config.yaml + +# Proxy configuration +# Origin uses standard HTTP_PROXY environment variables. Be sure to set +# NO_PROXY for your master +#NO_PROXY=master.example.com +#HTTP_PROXY=http://USER:PASSWORD@IPADDR:PORT +#HTTPS_PROXY=https://USER:PASSWORD@IPADDR:PORT diff --git a/roles/openshift_master/templates/atomic-openshift-master-api.service.j2 b/roles/openshift_master/templates/atomic-openshift-master-api.service.j2 new file mode 100644 index 000000000..ba19fb348 --- /dev/null +++ b/roles/openshift_master/templates/atomic-openshift-master-api.service.j2 @@ -0,0 +1,21 @@ +[Unit] +Description=Atomic OpenShift Master API +Documentation=https://github.com/openshift/origin +After=network.target +After=etcd.service +Before={{ openshift.common.service_type }}-node.service +Requires=network.target + +[Service] +Type=notify +EnvironmentFile=/etc/sysconfig/{{ openshift.common.service_type }}-master-api +Environment=GOTRACEBACK=crash +ExecStart=/usr/bin/openshift start master api --config=${CONFIG_FILE} $OPTIONS +LimitNOFILE=131072 +LimitCORE=infinity +WorkingDirectory={{ openshift.common.data_dir }} +SyslogIdentifier=atomic-openshift-master-api + +[Install] +WantedBy=multi-user.target +WantedBy={{ openshift.common.service_type }}-node.service diff --git a/roles/openshift_master/templates/atomic-openshift-master-controllers.j2 b/roles/openshift_master/templates/atomic-openshift-master-controllers.j2 new file mode 100644 index 000000000..205934248 --- /dev/null +++ b/roles/openshift_master/templates/atomic-openshift-master-controllers.j2 @@ -0,0 +1,9 @@ +OPTIONS= +CONFIG_FILE={{ openshift_master_config_dir }}/master-config.yaml + +# Proxy configuration +# Origin uses standard HTTP_PROXY environment variables. Be sure to set +# NO_PROXY for your master +#NO_PROXY=master.example.com +#HTTP_PROXY=http://USER:PASSWORD@IPADDR:PORT +#HTTPS_PROXY=https://USER:PASSWORD@IPADDR:PORT diff --git a/roles/openshift_master/templates/atomic-openshift-master-controllers.service.j2 b/roles/openshift_master/templates/atomic-openshift-master-controllers.service.j2 new file mode 100644 index 000000000..8952c86ef --- /dev/null +++ b/roles/openshift_master/templates/atomic-openshift-master-controllers.service.j2 @@ -0,0 +1,22 @@ +[Unit] +Description=Atomic OpenShift Master Controllers +Documentation=https://github.com/openshift/origin +After=network.target +After={{ openshift.common.service_type }}-master-api.service +Before={{ openshift.common.service_type }}-node.service +Requires=network.target + +[Service] +Type=notify +EnvironmentFile=/etc/sysconfig/{{ openshift.common.service_type }}-master-controllers +Environment=GOTRACEBACK=crash +ExecStart=/usr/bin/openshift start master controllers --config=${CONFIG_FILE} $OPTIONS +LimitNOFILE=131072 +LimitCORE=infinity +WorkingDirectory={{ openshift.common.data_dir }} +SyslogIdentifier={{ openshift.common.service_type }}-master-controllers +Restart=on-failure + +[Install] +WantedBy=multi-user.target +WantedBy={{ openshift.common.service_type }}-node.service diff --git a/roles/openshift_master/templates/master.yaml.v1.j2 b/roles/openshift_master/templates/master.yaml.v1.j2 index 500690523..bb12a0a0f 100644 --- a/roles/openshift_master/templates/master.yaml.v1.j2 +++ b/roles/openshift_master/templates/master.yaml.v1.j2 @@ -1,5 +1,7 @@ apiLevels: +{% if not openshift.common.version_greater_than_3_1_or_1_1 | bool %} - v1beta3 +{% endif %} - v1 apiVersion: v1 assetConfig: @@ -8,21 +10,33 @@ assetConfig: publicURL: {{ openshift.master.public_console_url }}/ servingInfo: bindAddress: {{ openshift.master.bind_addr }}:{{ openshift.master.console_port }} + bindNetwork: tcp4 certFile: master.server.crt clientCA: "" keyFile: master.server.key maxRequestsInFlight: 0 requestTimeoutSeconds: 0 +{% if openshift_master_ha | bool %} +controllerLeaseTTL: {{ openshift.master.controller_lease_ttl | default('30') }} +{% endif %} +controllers: '*' corsAllowedOrigins: -{% for origin in ['127.0.0.1', 'localhost', openshift.common.hostname, openshift.common.ip, openshift.common.public_hostname, openshift.common.public_ip] %} +{% for origin in ['127.0.0.1', 'localhost', openshift.common.ip, openshift.common.public_ip] | union(openshift.common.all_hostnames) | unique %} - {{ origin }} {% endfor %} {% for custom_origin in openshift.master.custom_cors_origins | default("") %} - {{ custom_origin }} {% endfor %} +{% for name in (named_certificates | map(attribute='names')) | list | oo_flatten %} + - {{ name }} +{% endfor %} +{% if 'disabled_features' in openshift.master %} +disabledFeatures: {{ openshift.master.disabled_features | to_json }} +{% endif %} {% if openshift.master.embedded_dns | bool %} dnsConfig: bindAddress: {{ openshift.master.bind_addr }}:{{ openshift.master.dns_port }} + bindNetwork: tcp4 {% endif %} etcdClientInfo: ca: {{ "ca.crt" if (openshift.master.embedded_etcd | bool) else "master.etcd-ca.crt" }} @@ -65,15 +79,19 @@ kubeletClientInfo: port: 10250 {% if openshift.master.embedded_kube | bool %} kubernetesMasterConfig: +{% if not openshift.common.version_greater_than_3_1_or_1_1 | bool %} apiLevels: - v1beta3 - v1 +{% endif %} apiServerArguments: {{ api_server_args if api_server_args is defined else 'null' }} controllerArguments: {{ controller_args if controller_args is defined else 'null' }} -{# TODO: support overriding masterCount #} - masterCount: 1 - masterIP: "" + masterCount: {{ openshift.master.master_count }} + masterIP: {{ openshift.common.ip }} podEvictionTimeout: "" + proxyClientInfo: + certFile: master.proxy-client.crt + keyFile: master.proxy-client.key schedulerConfigFile: {{ openshift_master_scheduler_conf }} servicesNodePortRange: "" servicesSubnet: {{ openshift.master.portal_net }} @@ -87,26 +105,29 @@ masterPublicURL: {{ openshift.master.public_api_url }} networkConfig: clusterNetworkCIDR: {{ openshift.master.sdn_cluster_network_cidr }} hostSubnetLength: {{ openshift.master.sdn_host_subnet_length }} +{% if openshift.common.use_openshift_sdn %} networkPluginName: {{ openshift.common.sdn_network_plugin_name }} +{% endif %} # serviceNetworkCIDR must match kubernetesMasterConfig.servicesSubnet serviceNetworkCIDR: {{ openshift.master.portal_net }} {% include 'v1_partials/oauthConfig.j2' %} +pauseControllers: false policyConfig: bootstrapPolicyFile: {{ openshift_master_policy }} openshiftInfrastructureNamespace: openshift-infra openshiftSharedResourcesNamespace: openshift -{# TODO: Allow users to override projectConfig items #} projectConfig: - defaultNodeSelector: "{{ openshift.master.default_node_selector | default("") }}" - projectRequestMessage: "" - projectRequestTemplate: "" + defaultNodeSelector: "{{ openshift.master.default_node_selector }}" + projectRequestMessage: "{{ openshift.master.project_request_message }}" + projectRequestTemplate: "{{ openshift.master.project_request_template }}" securityAllocator: - mcsAllocatorRange: s0:/2 - mcsLabelsPerProject: 5 - uidAllocatorRange: 1000000000-1999999999/10000 + mcsAllocatorRange: "{{ openshift.master.mcs_allocator_range }}" + mcsLabelsPerProject: {{ openshift.master.mcs_labels_per_project }} + uidAllocatorRange: "{{ openshift.master.uid_allocator_range }}" routingConfig: subdomain: "{{ openshift.master.default_subdomain | default("") }}" serviceAccountConfig: + limitSecretReferences: false managedNames: - default - builder @@ -117,8 +138,20 @@ serviceAccountConfig: - serviceaccounts.public.key servingInfo: bindAddress: {{ openshift.master.bind_addr }}:{{ openshift.master.api_port }} + bindNetwork: tcp4 certFile: master.server.crt clientCA: ca.crt keyFile: master.server.key maxRequestsInFlight: 500 requestTimeoutSeconds: 3600 +{% if named_certificates %} + namedCertificates: +{% for named_certificate in named_certificates %} + - certFile: {{ named_certificate['certfile'] }} + keyFile: {{ named_certificate['keyfile'] }} + names: +{% for name in named_certificate['names'] %} + - "{{ name }}" +{% endfor %} +{% endfor %} +{% endif %} diff --git a/roles/openshift_master/templates/sessionSecretsFile.yaml.v1.j2 b/roles/openshift_master/templates/sessionSecretsFile.yaml.v1.j2 new file mode 100644 index 000000000..d12d9db90 --- /dev/null +++ b/roles/openshift_master/templates/sessionSecretsFile.yaml.v1.j2 @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: SessionSecrets +secrets: +{% for secret in openshift_master_session_auth_secrets %} +- authentication: "{{ openshift_master_session_auth_secrets[loop.index0] }}" + encryption: "{{ openshift_master_session_encryption_secrets[loop.index0] }}" +{% endfor %} diff --git a/roles/openshift_master/vars/main.yml b/roles/openshift_master/vars/main.yml index ecdb4f883..534465451 100644 --- a/roles/openshift_master/vars/main.yml +++ b/roles/openshift_master/vars/main.yml @@ -2,6 +2,7 @@ openshift_master_config_dir: "{{ openshift.common.config_base }}/master" openshift_master_config_file: "{{ openshift_master_config_dir }}/master-config.yaml" openshift_master_scheduler_conf: "{{ openshift_master_config_dir }}/scheduler.json" +openshift_master_session_secrets_file: "{{ openshift_master_config_dir }}/session-secrets.yaml" openshift_master_policy: "{{ openshift_master_config_dir }}/policy.json" openshift_version: "{{ openshift_pkg_version | default('') }}" diff --git a/roles/openshift_master_ca/tasks/main.yml b/roles/openshift_master_ca/tasks/main.yml index 5c9639ea5..314f068e7 100644 --- a/roles/openshift_master_ca/tasks/main.yml +++ b/roles/openshift_master_ca/tasks/main.yml @@ -14,9 +14,8 @@ - name: Create the master certificates if they do not already exist command: > {{ openshift.common.admin_binary }} create-master-certs - --hostnames={{ openshift.common.all_hostnames | join(',') }} + --hostnames={{ master_hostnames | join(',') }} --master={{ openshift.master.api_url }} --public-master={{ openshift.master.public_api_url }} --cert-dir={{ openshift_master_config_dir }} --overwrite=false - args: - creates: "{{ openshift_master_config_dir }}/master.server.key" + when: master_certs_missing diff --git a/roles/openshift_master_certificates/tasks/main.yml b/roles/openshift_master_certificates/tasks/main.yml index 0d75a9eb3..13e5d7a4b 100644 --- a/roles/openshift_master_certificates/tasks/main.yml +++ b/roles/openshift_master_certificates/tasks/main.yml @@ -6,13 +6,9 @@ mode: 0700 with_items: masters_needing_certs -- file: - src: "{{ openshift_master_config_dir }}/{{ item.1 }}" - dest: "{{ openshift_generated_configs_dir }}/{{ item.0.master_cert_subdir }}/{{ item.1 }}" - state: hard - with_nested: - - masters_needing_certs - - - ca.crt +- set_fact: + master_certificates: + - ca.crt - ca.key - ca.serial.txt - admin.crt @@ -31,7 +27,17 @@ - openshift-router.kubeconfig - serviceaccounts.private.key - serviceaccounts.public.key + master_31_certificates: + - master.proxy-client.crt + - master.proxy-client.key +- file: + src: "{{ openshift_master_config_dir }}/{{ item.1 }}" + dest: "{{ openshift_generated_configs_dir }}/{{ item.0.master_cert_subdir }}/{{ item.1 }}" + state: hard + with_nested: + - masters_needing_certs + - "{{ master_certificates | union(master_31_certificates) if openshift.common.version_greater_than_3_1_or_1_1 | bool else master_certificates }}" - name: Create the master certificates if they do not already exist command: > @@ -41,6 +47,5 @@ --public-master={{ item.openshift.master.public_api_url }} --cert-dir={{ openshift_generated_configs_dir }}/{{ item.master_cert_subdir }} --overwrite=false - args: - creates: "{{ openshift_generated_configs_dir }}/{{ item.master_cert_subdir }}/master.server.crt" + when: master_certs_missing with_items: masters_needing_certs diff --git a/roles/openshift_master_cluster/tasks/configure_deferred.yml b/roles/openshift_master_cluster/tasks/configure_deferred.yml deleted file mode 100644 index 3b416005b..000000000 --- a/roles/openshift_master_cluster/tasks/configure_deferred.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -- debug: msg="Deferring config" - -- name: Start and enable the master - service: - name: "{{ openshift.common.service_type }}-master" - state: started - enabled: yes diff --git a/roles/openshift_master_cluster/tasks/main.yml b/roles/openshift_master_cluster/tasks/main.yml index 315947183..6303a6e46 100644 --- a/roles/openshift_master_cluster/tasks/main.yml +++ b/roles/openshift_master_cluster/tasks/main.yml @@ -4,10 +4,7 @@ register: pcs_status changed_when: false failed_when: false - when: not openshift.master.cluster_defer_ha | bool + when: openshift.master.cluster_method == "pacemaker" - include: configure.yml when: "pcs_status | failed and 'Error: cluster is not currently running on this node' in pcs_status.stderr" - -- include: configure_deferred.yml - when: openshift.master.cluster_defer_ha | bool diff --git a/roles/openshift_node/defaults/main.yml b/roles/openshift_node/defaults/main.yml index c4abf9d7c..fffbf2994 100644 --- a/roles/openshift_node/defaults/main.yml +++ b/roles/openshift_node/defaults/main.yml @@ -10,3 +10,6 @@ os_firewall_allow: port: 10255/tcp - service: Openshift kubelet ReadOnlyPort udp port: 10255/udp +- service: OpenShift OVS sdn + port: 4789/udp + when: openshift.node.use_openshift_sdn | bool diff --git a/roles/openshift_node/handlers/main.yml b/roles/openshift_node/handlers/main.yml index 633f3ed13..447ca85f3 100644 --- a/roles/openshift_node/handlers/main.yml +++ b/roles/openshift_node/handlers/main.yml @@ -1,6 +1,7 @@ --- - name: restart node service: name={{ openshift.common.service_type }}-node state=restarted + when: not node_service_status_changed | default(false) - name: restart docker service: name=docker state=restarted diff --git a/roles/openshift_node/meta/main.yml b/roles/openshift_node/meta/main.yml index c92008a77..9d40ae3b3 100644 --- a/roles/openshift_node/meta/main.yml +++ b/roles/openshift_node/meta/main.yml @@ -13,3 +13,4 @@ galaxy_info: - cloud dependencies: - { role: openshift_common } +- { role: docker } diff --git a/roles/openshift_node/tasks/main.yml b/roles/openshift_node/tasks/main.yml index d45dd8073..d11bc5123 100644 --- a/roles/openshift_node/tasks/main.yml +++ b/roles/openshift_node/tasks/main.yml @@ -8,7 +8,7 @@ when: osn_cluster_dns_ip is not defined or not osn_cluster_dns_ip - fail: msg: "SELinux is disabled, This deployment type requires that SELinux is enabled." - when: (not ansible_selinux or ansible_selinux.status != 'enabled') and deployment_type in ['enterprise', 'online'] + when: (not ansible_selinux or ansible_selinux.status != 'enabled') and deployment_type in ['enterprise', 'online', 'atomic-enterprise', 'openshift-enterprise'] - name: Set node facts openshift_facts: @@ -22,14 +22,18 @@ deployment_type: "{{ openshift_deployment_type }}" - role: node local_facts: - labels: "{{ lookup('oo_option', 'openshift_node_labels') | default( openshift_node_labels | default(none), true) }}" annotations: "{{ openshift_node_annotations | default(none) }}" - registry_url: "{{ oreg_url | default(none) }}" debug_level: "{{ openshift_node_debug_level | default(openshift.common.debug_level) }}" - portal_net: "{{ openshift_master_portal_net | default(None) }}" + docker_log_driver: "{{ lookup( 'oo_option' , 'docker_log_driver' ) | default('',True) }}" + docker_log_options: "{{ lookup( 'oo_option' , 'docker_log_options' ) | default('',True) }}" + iptables_sync_period: "{{ openshift_node_iptables_sync_period | default(None) }}" kubelet_args: "{{ openshift_node_kubelet_args | default(None) }}" - sdn_mtu: "{{ openshift_node_sdn_mtu | default(None) }}" + labels: "{{ lookup('oo_option', 'openshift_node_labels') | default( openshift_node_labels | default(none), true) }}" + portal_net: "{{ openshift_master_portal_net | default(None) }}" + registry_url: "{{ oreg_url | default(none) }}" schedulable: "{{ openshift_schedulable | default(openshift_scheduleable) | default(None) }}" + sdn_mtu: "{{ openshift_node_sdn_mtu | default(None) }}" + storage_plugin_deps: "{{ osn_storage_plugin_deps | default(None) }}" # We have to add tuned-profiles in the same transaction otherwise we run into depsolving # problems because the rpms don't pin the version properly. @@ -68,12 +72,14 @@ register: docker_check # TODO: Enable secure registry when code available in origin -- name: Secure Registry +- name: Secure Registry and Logs Options lineinfile: dest: /etc/sysconfig/docker regexp: '^OPTIONS=.*$' line: "OPTIONS='--insecure-registry={{ openshift.node.portal_net }} \ -{% if ansible_selinux and ansible_selinux.status == '''enabled''' %}--selinux-enabled{% endif %}'" +{% if ansible_selinux and ansible_selinux.status == '''enabled''' %}--selinux-enabled{% endif %} \ +{% if openshift.node.docker_log_driver is defined %} --log-driver {{ openshift.node.docker_log_driver }} {% endif %} \ +{% if openshift.node.docker_log_options is defined %} {{ openshift.node.docker_log_options | oo_split() | oo_prepend_strings_in_list('--log-opt ') | join(' ')}} {% endif %} '" when: docker_check.stat.isreg notify: - restart docker @@ -120,14 +126,12 @@ notify: - restart docker -- name: Allow NFS access for VMs - seboolean: name=virt_use_nfs state=yes persistent=yes - when: ansible_selinux and ansible_selinux.status == "enabled" +- name: Additional storage plugin configuration + include: storage_plugins/main.yml - name: Start and enable node service: name={{ openshift.common.service_type }}-node enabled=yes state=started register: start_result -- name: pause to prevent service restart from interfering with bootstrapping - pause: seconds=30 - when: start_result | changed +- set_fact: + node_service_status_changed = start_result | changed diff --git a/roles/openshift_node/tasks/storage_plugins/ceph.yml b/roles/openshift_node/tasks/storage_plugins/ceph.yml new file mode 100644 index 000000000..b6936618a --- /dev/null +++ b/roles/openshift_node/tasks/storage_plugins/ceph.yml @@ -0,0 +1,5 @@ +--- +- name: Install Ceph storage plugin dependencies + yum: + pkg: ceph-common + state: installed diff --git a/roles/openshift_node/tasks/storage_plugins/glusterfs.yml b/roles/openshift_node/tasks/storage_plugins/glusterfs.yml new file mode 100644 index 000000000..b812e81df --- /dev/null +++ b/roles/openshift_node/tasks/storage_plugins/glusterfs.yml @@ -0,0 +1,12 @@ +--- +- name: Install GlusterFS storage plugin dependencies + yum: + pkg: glusterfs-fuse + state: installed + +- name: Set seboolean to allow gluster storage plugin access from containers + seboolean: + name: virt_use_fusefs + state: yes + persistent: yes + when: ansible_selinux and ansible_selinux.status == "enabled" diff --git a/roles/openshift_node/tasks/storage_plugins/main.yml b/roles/openshift_node/tasks/storage_plugins/main.yml new file mode 100644 index 000000000..39c7b9390 --- /dev/null +++ b/roles/openshift_node/tasks/storage_plugins/main.yml @@ -0,0 +1,13 @@ +--- +# The NFS storage plugin is always enabled since it doesn't require any +# additional package dependencies +- name: NFS storage plugin configuration + include: nfs.yml + +- name: GlusterFS storage plugin configuration + include: glusterfs.yml + when: "'glusterfs' in openshift.node.storage_plugin_deps" + +- name: Ceph storage plugin configuration + include: ceph.yml + when: "'ceph' in openshift.node.storage_plugin_deps" diff --git a/roles/openshift_node/tasks/storage_plugins/nfs.yml b/roles/openshift_node/tasks/storage_plugins/nfs.yml new file mode 100644 index 000000000..1edf21d9b --- /dev/null +++ b/roles/openshift_node/tasks/storage_plugins/nfs.yml @@ -0,0 +1,7 @@ +--- +- name: Set seboolean to allow nfs storage plugin access from containers + seboolean: + name: virt_use_nfs + state: yes + persistent: yes + when: ansible_selinux and ansible_selinux.status == "enabled" diff --git a/roles/openshift_node/templates/node.yaml.v1.j2 b/roles/openshift_node/templates/node.yaml.v1.j2 index 946c0b655..7d2f506e3 100644 --- a/roles/openshift_node/templates/node.yaml.v1.j2 +++ b/roles/openshift_node/templates/node.yaml.v1.j2 @@ -4,6 +4,7 @@ dnsDomain: {{ osn_cluster_dns_domain }} dnsIP: {{ osn_cluster_dns_ip }} dockerConfig: execHandlerName: "" +iptablesSyncPeriod: "{{ openshift.node.iptables_sync_period }}" imageConfig: format: {{ openshift.node.registry_url }} latest: false @@ -12,12 +13,17 @@ kind: NodeConfig kubeletArguments: {{ openshift.node.kubelet_args | to_json }} {% endif %} masterKubeConfig: system:node:{{ openshift.common.hostname }}.kubeconfig +{% if openshift.common.use_openshift_sdn %} networkPluginName: {{ openshift.common.sdn_network_plugin_name }} +{% endif %} # networkConfig struct introduced in origin 1.0.6 and OSE 3.0.2 which # deprecates networkPluginName above. The two should match. networkConfig: mtu: {{ openshift.node.sdn_mtu }} +{% if openshift.common.use_openshift_sdn %} networkPluginName: {{ openshift.common.sdn_network_plugin_name }} +{% endif %} +nodeIP: {{ openshift.common.ip }} nodeName: {{ openshift.common.hostname | lower }} podManifestConfig: servingInfo: diff --git a/roles/openshift_registry/tasks/main.yml b/roles/openshift_registry/tasks/main.yml index 29387d7d5..749eea5c0 100644 --- a/roles/openshift_registry/tasks/main.yml +++ b/roles/openshift_registry/tasks/main.yml @@ -1,11 +1,14 @@ --- -- set_fact: _oreg_images="--images={{ oreg_url|quote }}" - when: oreg_url is defined +# This role is unused until we add options for configuring the backend storage + +- set_fact: _oreg_images="--images='{{ openshift.master.registry_url }}'" + +- set_fact: _oreg_selector="--selector='{{ openshift.master.registry_selector }}'" - name: Deploy OpenShift Registry command: > {{ openshift.common.admin_binary }} registry - --create - --credentials={{ openshift_master_config_dir }}/openshift-registry.kubeconfig {{ _oreg_images|default() }} + --create --service-account=registry {{ _oreg_selector }} + --credentials={{ openshift_master_config_dir }}/openshift-registry.kubeconfig {{ _oreg_images }} register: _oreg_results changed_when: "'service exists' not in _oreg_results.stdout" diff --git a/roles/openshift_repos/tasks/main.yaml b/roles/openshift_repos/tasks/main.yaml index 12e98b7a1..aa696ae12 100644 --- a/roles/openshift_repos/tasks/main.yaml +++ b/roles/openshift_repos/tasks/main.yaml @@ -8,7 +8,7 @@ # proper repos correctly. - assert: - that: openshift_deployment_type in known_openshift_deployment_types + that: openshift.common.deployment_type in known_openshift_deployment_types - name: Ensure libselinux-python is installed yum: diff --git a/roles/openshift_router/tasks/main.yml b/roles/openshift_router/tasks/main.yml index 929177262..498a65127 100644 --- a/roles/openshift_router/tasks/main.yml +++ b/roles/openshift_router/tasks/main.yml @@ -1,11 +1,14 @@ --- -- set_fact: _ortr_images="--images={{ oreg_url|quote }}" - when: oreg_url is defined + +- set_fact: _ortr_images="--images='{{ openshift.master.registry_url }}'" + +- set_fact: _ortr_selector="--selector='{{ openshift.master.router_selector }}'" - name: Deploy OpenShift Router command: > {{ openshift.common.admin_binary }} router - --create - --credentials={{ openshift_master_config_dir }}/openshift-router.kubeconfig {{ _ortr_images|default() }} + --create --replicas={{ openshift.master.infra_nodes }} + --service-account=router {{ _ortr_selector }} + --credentials={{ openshift_master_config_dir }}/openshift-router.kubeconfig {{ _ortr_images }} register: _ortr_results changed_when: "'service exists' not in _ortr_results.stdout" diff --git a/roles/os_zabbix/tasks/main.yml b/roles/os_zabbix/tasks/main.yml index a503b24d7..59c89bb02 100644 --- a/roles/os_zabbix/tasks/main.yml +++ b/roles/os_zabbix/tasks/main.yml @@ -15,6 +15,8 @@ - include_vars: template_ops_tools.yml - include_vars: template_app_zabbix_server.yml - include_vars: template_app_zabbix_agent.yml +- include_vars: template_performance_copilot.yml +- include_vars: template_aws.yml - name: Include Template Heartbeat include: ../../lib_zabbix/tasks/create_template.yml @@ -79,3 +81,19 @@ server: "{{ ozb_server }}" user: "{{ ozb_user }}" password: "{{ ozb_password }}" + +- name: Include Template Performance Copilot + include: ../../lib_zabbix/tasks/create_template.yml + vars: + template: "{{ g_template_performance_copilot }}" + server: "{{ ozb_server }}" + user: "{{ ozb_user }}" + password: "{{ ozb_password }}" + +- name: Include Template AWS + include: ../../lib_zabbix/tasks/create_template.yml + vars: + template: "{{ g_template_aws }}" + server: "{{ ozb_server }}" + user: "{{ ozb_user }}" + password: "{{ ozb_password }}" diff --git a/roles/os_zabbix/vars/template_app_zabbix_agent.yml b/roles/os_zabbix/vars/template_app_zabbix_agent.yml index 06c4eda8b..d636d4822 100644 --- a/roles/os_zabbix/vars/template_app_zabbix_agent.yml +++ b/roles/os_zabbix/vars/template_app_zabbix_agent.yml @@ -6,14 +6,14 @@ g_template_app_zabbix_agent: applications: - Zabbix agent value_type: character - zabbix_type: '0' + zabbix_type: agent - key: agent.ping applications: - Zabbix agent description: The agent always returns 1 for this item. It could be used in combination with nodata() for availability check. value_type: int - zabbix_type: '0' + zabbix_type: agent ztriggers: - name: '[Reboot] Zabbix agent on {HOST.NAME} is unreachable for 15 minutes' diff --git a/roles/os_zabbix/vars/template_app_zabbix_server.yml b/roles/os_zabbix/vars/template_app_zabbix_server.yml index dace2aa29..43517113b 100644 --- a/roles/os_zabbix/vars/template_app_zabbix_server.yml +++ b/roles/os_zabbix/vars/template_app_zabbix_server.yml @@ -8,7 +8,7 @@ g_template_app_zabbix_server: description: A simple count of the number of partition creates output by the housekeeper script. units: '' value_type: int - zabbix_type: '2' + zabbix_type: internal - key: housekeeper_drops applications: @@ -16,7 +16,7 @@ g_template_app_zabbix_server: description: A simple count of the number of partition drops output by the housekeeper script. units: '' value_type: int - zabbix_type: '2' + zabbix_type: internal - key: housekeeper_errors applications: @@ -24,7 +24,7 @@ g_template_app_zabbix_server: description: A simple count of the number of errors output by the housekeeper script. units: '' value_type: int - zabbix_type: '2' + zabbix_type: internal - key: housekeeper_total applications: @@ -33,7 +33,7 @@ g_template_app_zabbix_server: script. units: '' value_type: int - zabbix_type: '2' + zabbix_type: internal - key: zabbix[process,alerter,avg,busy] applications: @@ -41,7 +41,7 @@ g_template_app_zabbix_server: description: '' units: '%' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[process,configuration syncer,avg,busy] applications: @@ -49,7 +49,7 @@ g_template_app_zabbix_server: description: '' units: '%' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[process,db watchdog,avg,busy] applications: @@ -57,7 +57,7 @@ g_template_app_zabbix_server: description: '' units: '%' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[process,discoverer,avg,busy] applications: @@ -65,7 +65,7 @@ g_template_app_zabbix_server: description: '' units: '%' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[process,escalator,avg,busy] applications: @@ -73,7 +73,7 @@ g_template_app_zabbix_server: description: '' units: '%' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[process,history syncer,avg,busy] applications: @@ -81,7 +81,7 @@ g_template_app_zabbix_server: description: '' units: '%' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[process,housekeeper,avg,busy] applications: @@ -89,7 +89,7 @@ g_template_app_zabbix_server: description: '' units: '%' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[process,http poller,avg,busy] applications: @@ -97,7 +97,7 @@ g_template_app_zabbix_server: description: '' units: '%' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[process,icmp pinger,avg,busy] applications: @@ -105,7 +105,7 @@ g_template_app_zabbix_server: description: '' units: '%' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[process,ipmi poller,avg,busy] applications: @@ -113,7 +113,7 @@ g_template_app_zabbix_server: description: '' units: '%' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[process,java poller,avg,busy] applications: @@ -121,7 +121,7 @@ g_template_app_zabbix_server: description: '' units: '%' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[process,node watcher,avg,busy] applications: @@ -129,7 +129,7 @@ g_template_app_zabbix_server: description: '' units: '%' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[process,poller,avg,busy] applications: @@ -137,7 +137,7 @@ g_template_app_zabbix_server: description: '' units: '%' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[process,proxy poller,avg,busy] applications: @@ -145,7 +145,7 @@ g_template_app_zabbix_server: description: '' units: '%' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[process,self-monitoring,avg,busy] applications: @@ -153,7 +153,7 @@ g_template_app_zabbix_server: description: '' units: '%' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[process,snmp trapper,avg,busy] applications: @@ -161,7 +161,7 @@ g_template_app_zabbix_server: description: '' units: '%' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[process,timer,avg,busy] applications: @@ -169,7 +169,7 @@ g_template_app_zabbix_server: description: '' units: '%' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[process,trapper,avg,busy] applications: @@ -177,7 +177,7 @@ g_template_app_zabbix_server: description: '' units: '%' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[process,unreachable poller,avg,busy] applications: @@ -185,7 +185,7 @@ g_template_app_zabbix_server: description: '' units: '%' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[queue,10m] applications: @@ -193,7 +193,8 @@ g_template_app_zabbix_server: description: '' units: '' value_type: int - zabbix_type: '5' + zabbix_type: internal + interval: 600 - key: zabbix[queue] applications: @@ -201,7 +202,8 @@ g_template_app_zabbix_server: description: '' units: '' value_type: int - zabbix_type: '5' + zabbix_type: internal + interval: 600 - key: zabbix[rcache,buffer,pfree] applications: @@ -209,7 +211,7 @@ g_template_app_zabbix_server: description: '' units: '' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[wcache,history,pfree] applications: @@ -217,7 +219,7 @@ g_template_app_zabbix_server: description: '' units: '' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[wcache,text,pfree] applications: @@ -225,7 +227,7 @@ g_template_app_zabbix_server: description: '' units: '' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[wcache,trend,pfree] applications: @@ -233,7 +235,7 @@ g_template_app_zabbix_server: description: '' units: '' value_type: float - zabbix_type: '5' + zabbix_type: internal - key: zabbix[wcache,values] applications: @@ -241,7 +243,9 @@ g_template_app_zabbix_server: description: '' units: '' value_type: float - zabbix_type: '5' + zabbix_type: internal + delta: 1 # speed per second + ztriggers: - description: "There has been unexpected output while running the housekeeping script\ \ on the Zabbix. There are only three kinds of lines we expect to see in the output,\ diff --git a/roles/os_zabbix/vars/template_aws.yml b/roles/os_zabbix/vars/template_aws.yml new file mode 100644 index 000000000..0ed682128 --- /dev/null +++ b/roles/os_zabbix/vars/template_aws.yml @@ -0,0 +1,25 @@ +--- +g_template_aws: + name: Template AWS + zdiscoveryrules: + - name: disc.aws + key: disc.aws + lifetime: 1 + description: "Dynamically register AWS bucket info" + + zitemprototypes: + - discoveryrule_key: disc.aws + name: "S3 bucket size (GB) [{#S3_BUCKET}]" + key: "disc.aws.size[{#S3_BUCKET}]" + value_type: int + description: "Size of S3 bucket" + applications: + - AWS + + - discoveryrule_key: disc.aws + name: "S3 bucket object count [{#S3_BUCKET}]" + key: "disc.aws.objects[{#S3_BUCKET}]" + value_type: int + description: "Objects in S3 bucket" + applications: + - AWS diff --git a/roles/os_zabbix/vars/template_docker.yml b/roles/os_zabbix/vars/template_docker.yml index 395e054de..bfabf50c5 100644 --- a/roles/os_zabbix/vars/template_docker.yml +++ b/roles/os_zabbix/vars/template_docker.yml @@ -7,6 +7,11 @@ g_template_docker: - Docker Daemon value_type: int + - key: docker.info_elapsed_ms + applications: + - Docker Daemon + value_type: int + - key: docker.storage.is_loopback applications: - Docker Storage diff --git a/roles/os_zabbix/vars/template_openshift_master.yml b/roles/os_zabbix/vars/template_openshift_master.yml index 1de4fefbb..6defc4989 100644 --- a/roles/os_zabbix/vars/template_openshift_master.yml +++ b/roles/os_zabbix/vars/template_openshift_master.yml @@ -31,6 +31,78 @@ g_template_openshift_master: applications: - Openshift Master + - key: openshift.master.etcd.create.success + description: Show number of successful create actions + type: int + applications: + - Openshift Etcd + + - key: openshift.master.etcd.create.fail + description: Show number of failed create actions + type: int + applications: + - Openshift Etcd + + - key: openshift.master.etcd.delete.success + description: Show number of successful delete actions + type: int + applications: + - Openshift Etcd + + - key: openshift.master.etcd.delete.fail + description: Show number of failed delete actions + type: int + applications: + - Openshift Etcd + + - key: openshift.master.etcd.get.success + description: Show number of successful get actions + type: int + applications: + - Openshift Etcd + + - key: openshift.master.etcd.get.fail + description: Show number of failed get actions + type: int + applications: + - Openshift Etcd + + - key: openshift.master.etcd.set.success + description: Show number of successful set actions + type: int + applications: + - Openshift Etcd + + - key: openshift.master.etcd.set.fail + description: Show number of failed set actions + type: int + applications: + - Openshift Etcd + + - key: openshift.master.etcd.update.success + description: Show number of successful update actions + type: int + applications: + - Openshift Etcd + + - key: openshift.master.etcd.update.fail + description: Show number of failed update actions + type: int + applications: + - Openshift Etcd + + - key: openshift.master.etcd.watchers + description: Show number of etcd watchers + type: int + applications: + - Openshift Etcd + + - key: openshift.master.etcd.ping + description: etcd ping + type: int + applications: + - Openshift Etcd + ztriggers: - name: 'Application creation has failed on {HOST.NAME}' expression: '{Template Openshift Master:create_app.last(#1)}=1 and {Template Openshift Master:create_app.last(#2)}=1' @@ -56,3 +128,13 @@ g_template_openshift_master: expression: '{Template Openshift Master:openshift.project.counter.last()}=0' url: 'https://github.com/openshift/ops-sop/blob/master/V3/Alerts/openshift_master.asciidoc' priority: info + + - name: 'Low number of etcd watchers on {HOST.NAME}' + expression: '{Template Openshift Master:openshift.master.etcd.watchers.last(#1)}<10 and {Template Openshift Master:openshift.master.etcd.watchers.last(#2)}<10' + url: 'https://github.com/openshift/ops-sop/blob/master/V3/Alerts/check_etcd.asciidoc' + priority: avg + + - name: 'Etcd ping failed on {HOST.NAME}' + expression: '{Template Openshift Master:openshift.master.etcd.ping.last(#1)}=0 and {Template Openshift Master:openshift.master.etcd.ping.last(#2)}=0' + url: 'https://github.com/openshift/ops-sop/blob/master/V3/Alerts/check_etcd.asciidoc' + priority: high diff --git a/roles/os_zabbix/vars/template_os_linux.yml b/roles/os_zabbix/vars/template_os_linux.yml index 69432273f..04665be62 100644 --- a/roles/os_zabbix/vars/template_os_linux.yml +++ b/roles/os_zabbix/vars/template_os_linux.yml @@ -194,6 +194,16 @@ g_template_os_linux: lifetime: 1 description: "Dynamically register the filesystems" + - name: disc.disk + key: disc.disk + lifetime: 1 + description: "Dynamically register disks on a node" + + - name: disc.network + key: disc.network + lifetime: 1 + description: "Dynamically register network interfaces on a node" + zitemprototypes: - discoveryrule_key: disc.filesys name: "disc.filesys.full.{#OSO_FILESYS}" @@ -211,6 +221,42 @@ g_template_os_linux: applications: - Disk + - discoveryrule_key: disc.disk + name: "TPS (IOPS) for disk {#OSO_DISK}" + key: "disc.disk.tps[{#OSO_DISK}]" + value_type: int + description: "PCP disk.dev.totals metric measured over a period of time. This shows how many disk transactions per second the disk is using" + applications: + - Disk + + - discoveryrule_key: disc.disk + name: "Percent Utilized for disk {#OSO_DISK}" + key: "disc.disk.putil[{#OSO_DISK}]" + value_type: float + description: "PCP disk.dev.avactive metric measured over a period of time. This is the '%util' in the iostat command" + applications: + - Disk + + - discoveryrule_key: disc.network + name: "Bytes per second IN on network interface {#OSO_NET_INTERFACE}" + key: "disc.network.in.bytes[{#OSO_NET_INTERFACE}]" + value_type: int + units: B + delta: 1 + description: "PCP network.interface.in.bytes metric. This is setup as a delta in Zabbix to measure the speed per second" + applications: + - Network + + - discoveryrule_key: disc.network + name: "Bytes per second OUT on network interface {#OSO_NET_INTERFACE}" + key: "disc.network.out.bytes[{#OSO_NET_INTERFACE}]" + value_type: int + units: B + delta: 1 + description: "PCP network.interface.out.bytes metric. This is setup as a delta in Zabbix to measure the speed per second" + applications: + - Network + ztriggerprototypes: - name: 'Filesystem: {#OSO_FILESYS} has less than 15% free disk space on {HOST.NAME}' expression: '{Template OS Linux:disc.filesys.full[{#OSO_FILESYS}].last()}>85' @@ -246,15 +292,15 @@ g_template_os_linux: # CPU Utilization # - name: 'CPU idle less than 5% on {HOST.NAME}' - expression: '{Template OS Linux:kernel.all.cpu.idle.last()}<5 and {Template OS Linux:kernel.all.cpu.idle.last(#2)}<5' + expression: '{Template OS Linux:kernel.all.cpu.idle.max(#5)}<5' url: 'https://github.com/openshift/ops-sop/blob/master/V3/Alerts/check_cpu_idle.asciidoc' - priority: high + priority: average description: 'CPU is less than 5% idle' - name: 'CPU idle less than 10% on {HOST.NAME}' - expression: '{Template OS Linux:kernel.all.cpu.idle.last()}<10 and {Template OS Linux:kernel.all.cpu.idle.last(#2)}<10' + expression: '{Template OS Linux:kernel.all.cpu.idle.max(#5)}<10' url: 'https://github.com/openshift/ops-sop/blob/master/V3/Alerts/check_cpu_idle.asciidoc' - priority: warn + priority: average description: 'CPU is less than 10% idle' dependencies: - 'CPU idle less than 5% on {HOST.NAME}' diff --git a/roles/os_zabbix/vars/template_performance_copilot.yml b/roles/os_zabbix/vars/template_performance_copilot.yml new file mode 100644 index 000000000..b62fa0228 --- /dev/null +++ b/roles/os_zabbix/vars/template_performance_copilot.yml @@ -0,0 +1,14 @@ +--- +g_template_performance_copilot: + name: Template Performance Copilot + zitems: + - key: pcp.ping + applications: + - Performance Copilot + value_type: int + + ztriggers: + - name: 'pcp.ping failed on {HOST.NAME}' + expression: '{Template Performance Copilot:pcp.ping.max(#3)}<1' + url: 'https://github.com/openshift/ops-sop/blob/master/V3/Alerts/check_pcp_ping.asciidoc' + priority: average |