Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add dev plan #1

Merged
merged 5 commits into from
Sep 28, 2017
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
56 changes: 30 additions & 26 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,32 +3,36 @@ MAINTAINER Ansible Playbook Bundle Community

LABEL "com.redhat.apb.version"="1.0"
LABEL "com.redhat.apb.spec"=\
"aWQ6IGE4ZTY1MmMxLTExZTAtNDIwMi1iNmRmLTA5NTE3Zjc1ZWY5YQpuYW1lOiByaHNjbC1tYXJp\
YWRiLWFwYgppbWFnZTogYW5zaWJsZXBsYXlib29rYnVuZGxlL3Joc2NsLW1hcmlhZGItYXBiCmRl\
c2NyaXB0aW9uOiBNYXJpYWRiIGFwYiBpbXBsZW1lbnRhdGlvbgpiaW5kYWJsZTogVHJ1ZQphc3lu\
Yzogb3B0aW9uYWwKbWV0YWRhdGE6IAogIGRvY3VtZW50YXRpb25Vcmw6IGh0dHBzOi8vbWFyaWFk\
Yi5jb20va2IvZW4vbWFyaWFkYi9kb2N1bWVudGF0aW9uLwogIGxvbmdEZXNjcmlwdGlvbjogRGVw\
bG95cyBhIGJpbmRhYmxlIG1hcmlhZGIgaW5zdGFuY2UKICBkZXBlbmRlbmNpZXM6IFsncmhzY2wv\
bWFyaWFkYi0xMC1yaGVsNyddCiAgZGlzcGxheU5hbWU6IFJIU0NMIE1hcmlhREIgKEFQQikKICBj\
b25zb2xlLm9wZW5zaGlmdC5pby9pY29uQ2xhc3M6IGljb24tbWFyaWFkYgpwbGFuczoKICAtIG5h\
bWU6IGRlZmF1bHQKICAgIGRlc2NyaXB0aW9uOiBUaGlzIHBsYW4gZGVwbG95cyBhIHNpbmdsZSBN\
YXJpYURCIGluc3RhbmNlCiAgICBmcmVlOiBUcnVlCiAgICBtZXRhZGF0YToKICAgICAgZGlzcGxh\
eU5hbWU6IERlZmF1bHQKICAgICAgY29zdDogJDAuMDAKICAgIHBhcmFtZXRlcnM6CiAgICAgIC0g\
bmFtZTogbXlzcWxfZGF0YWJhc2UKICAgICAgICBkZWZhdWx0OiBhZG1pbgogICAgICAgIHR5cGU6\
IHN0cmluZwogICAgICAgIGRlc2NyaXB0aW9uOiBNYXJpYURCIGRlZmF1bHQgZGF0YWJhc2UgbmFt\
ZQogICAgICAgIHRpdGxlOiBNYXJpYURCIERhdGFiYXNlIG5hbWUKICAgICAgICByZXF1aXJlZDog\
VHJ1ZQogICAgICAtIG5hbWU6IG15c3FsX3Jvb3RfcGFzc3dvcmQKICAgICAgICBkZWZhdWx0OiBh\
ZG1pbgogICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgIGRlc2NyaXB0aW9uOiBBIHJhbmRvbSBh\
bHBoYW51bWVyaWMgc3RyaW5nIGlmIGxlZnQgYmxhbmsKICAgICAgLSBuYW1lOiBteXNxbF91c2Vy\
CiAgICAgICAgZGVmYXVsdDogYWRtaW4KICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICBkZXNj\
cmlwdGlvbjogTWFyaWFEQiBVc2VyCiAgICAgICAgcmVxdWlyZWQ6IFRydWUKICAgICAgLSBuYW1l\
OiBteXNxbF9wYXNzd29yZAogICAgICAgIGRlZmF1bHQ6IGFkbWluCiAgICAgICAgdHlwZTogc3Ry\
aW5nCiAgICAgICAgZGVzY3JpcHRpb246IEEgcmFuZG9tIGFscGhhbnVtZXJpYyBzdHJpbmcgaWYg\
bGVmdCBibGFuawogICAgICAtIG5hbWU6IG1hcmlhZGJfdmVyc2lvbgogICAgICAgIGRlZmF1bHQ6\
ICIxMC4wIgogICAgICAgIGVudW06IFsnMTAuMCcsICcxMC4xJ10KICAgICAgICB0eXBlOiBlbnVt\
CiAgICAgICAgdGl0bGU6IE1hcmlhREIgVmVyc2lvbgogICAgICAgIHJlcXVpcmVkOiBUcnVlCnJl\
cXVpcmVkOiAKICAtIG1hcmlhZGJfdmVyc2lvbgogIC0gbXlzcWxfZGF0YWJhc2UKICAtIG15c3Fs\
X3VzZXIKICAK"
"LS0tCiMjIFNoYXJlZCBwYXJhbWV0ZXJzCl9wYXJhbXM6ICZfcGFyYW1zCiAgLSBuYW1lOiBteXNx\
bF9kYXRhYmFzZQogICAgZGVmYXVsdDogYWRtaW4KICAgIHR5cGU6IHN0cmluZwogICAgZGVzY3Jp\
cHRpb246IE1hcmlhREIgZGVmYXVsdCBkYXRhYmFzZSBuYW1lCiAgICB0aXRsZTogTWFyaWFEQiBE\
YXRhYmFzZSBuYW1lCiAgICByZXF1aXJlZDogdHJ1ZQogIC0gbmFtZTogbXlzcWxfcm9vdF9wYXNz\
d29yZAogICAgZGVmYXVsdDogYWRtaW4KICAgIHR5cGU6IHN0cmluZwogICAgZGVzY3JpcHRpb246\
IEEgcmFuZG9tIGFscGhhbnVtZXJpYyBzdHJpbmcgaWYgbGVmdCBibGFuawogIC0gbmFtZTogbXlz\
cWxfdXNlcgogICAgZGVmYXVsdDogYWRtaW4KICAgIHR5cGU6IHN0cmluZwogICAgZGVzY3JpcHRp\
b246IE1hcmlhREIgVXNlcgogICAgcmVxdWlyZWQ6IHRydWUKICAtIG5hbWU6IG15c3FsX3Bhc3N3\
b3JkCiAgICBkZWZhdWx0OiBhZG1pbgogICAgdHlwZTogc3RyaW5nCiAgICBkZXNjcmlwdGlvbjog\
QSByYW5kb20gYWxwaGFudW1lcmljIHN0cmluZyBpZiBsZWZ0IGJsYW5rCiAgICByZXF1aXJlZDog\
ZmFsc2UKICAtIG5hbWU6IG1hcmlhZGJfdmVyc2lvbgogICAgZGVmYXVsdDogIjEwLjAiCiAgICBl\
bnVtOiBbJzEwLjAnLCAnMTAuMSddCiAgICB0eXBlOiBlbnVtCiAgICB0aXRsZTogTWFyaWFEQiBW\
ZXJzaW9uCiAgICByZXF1aXJlZDogdHJ1ZQoKbmFtZTogcmhzY2wtbWFyaWFkYi1hcGIKaW1hZ2U6\
IGFuc2libGVwbGF5Ym9va2J1bmRsZS9yaHNjbC1tYXJpYWRiLWFwYgpkZXNjcmlwdGlvbjogTWFy\
aWFkYiBhcGIgaW1wbGVtZW50YXRpb24KYmluZGFibGU6IHRydWUKYXN5bmM6IG9wdGlvbmFsCm1l\
dGFkYXRhOgogIGRvY3VtZW50YXRpb25Vcmw6ICJodHRwczovL21hcmlhZGIuY29tL2tiL2VuL21h\
cmlhZGIvZG9jdW1lbnRhdGlvbi8iCiAgbG9uZ0Rlc2NyaXB0aW9uOiAiRGVwbG95cyBhIGJpbmRh\
YmxlIG1hcmlhZGIgaW5zdGFuY2UiCiAgZGVwZW5kZW5jaWVzOiBbJ3JlZ2lzdHJ5LmFjY2Vzcy5y\
ZWRoYXQuY29tL3Joc2NsL21hcmlhZGItMTAtcmhlbDcnXQogIGRpc3BsYXlOYW1lOiAiUkhTQ0wg\
TWFyaWFEQiAoQVBCKSIKICBjb25zb2xlLm9wZW5zaGlmdC5pby9pY29uQ2xhc3M6IGljb24tbWFy\
aWFkYgogIHByb3ZpZGVyRGlzcGxheU5hbWU6ICJSZWQgSGF0LCBJbmMuIgpwbGFuczoKICAtIG5h\
bWU6IGRldgogICAgZGVzY3JpcHRpb246IFRoaXMgcGxhbiBkZXBsb3lzIGEgc2luZ2xlIE1hcmlh\
REIgaW5zdGFuY2Ugd2l0aCBlcGhlbWVyYWwgc3RvcmFnZQogICAgZnJlZTogdHJ1ZQogICAgZGVm\
YXVsdDogdHJ1ZQogICAgbWV0YWRhdGE6CiAgICAgIGRpc3BsYXlOYW1lOiBEZXZlbG9wbWVudAog\
ICAgICBjb3N0OiAkMC4wMAogICAgcGFyYW1ldGVyczogKl9wYXJhbXMKICAtIG5hbWU6IHByb2QK\
ICAgIGRlc2NyaXB0aW9uOiBUaGlzIHBsYW4gZGVwbG95cyBhIHNpbmdsZSBNYXJpYURCIGluc3Rh\
bmNlIHdpdGggMTAgR2lCIG9mIHBlcnNpc3RlbnQgc3RvcmFnZQogICAgZnJlZTogdHJ1ZQogICAg\
bWV0YWRhdGE6CiAgICAgIGRpc3BsYXlOYW1lOiBQcm9kdWN0aW9uCiAgICAgIGNvc3Q6ICQwLjAw\
CiAgICBwYXJhbWV0ZXJzOiAqX3BhcmFtcwpyZXF1aXJlZDoKICAtIG1hcmlhZGJfdmVyc2lvbgog\
IC0gbXlzcWxfZGF0YWJhc2UKICAtIG15c3FsX3VzZXIKCg=="

COPY roles /opt/ansible/roles
COPY playbooks /opt/apb/actions
Expand Down
81 changes: 47 additions & 34 deletions apb.yml
Original file line number Diff line number Diff line change
@@ -1,48 +1,61 @@
---
## Shared parameters
_params: &_params
- name: mysql_database
default: admin
type: string
description: MariaDB default database name
title: MariaDB Database name
required: true
- name: mysql_root_password
default: admin
type: string
description: A random alphanumeric string if left blank
- name: mysql_user
default: admin
type: string
description: MariaDB User
required: true
- name: mysql_password
default: admin
type: string
description: A random alphanumeric string if left blank
required: false
- name: mariadb_version
default: "10.0"
enum: ['10.0', '10.1']
type: enum
title: MariaDB Version
required: true

name: rhscl-mariadb-apb
image: ansibleplaybookbundle/rhscl-mariadb-apb
description: Mariadb apb implementation
bindable: True
bindable: true
async: optional
metadata:
documentationUrl: https://mariadb.com/kb/en/mariadb/documentation/
longDescription: Deploys a bindable mariadb instance
documentationUrl: "https://mariadb.com/kb/en/mariadb/documentation/"
longDescription: "Deploys a bindable mariadb instance"
dependencies: ['registry.access.redhat.com/rhscl/mariadb-10-rhel7']
displayName: RHSCL MariaDB (APB)
displayName: "RHSCL MariaDB (APB)"
console.openshift.io/iconClass: icon-mariadb
providerDisplayName: "Red Hat, Inc."
plans:
- name: default
description: This plan deploys a single MariaDB instance
free: True
- name: dev
description: This plan deploys a single MariaDB instance with ephemeral storage
free: true
default: true
metadata:
displayName: Development
cost: $0.00
parameters: *_params
- name: prod
description: This plan deploys a single MariaDB instance with 10 GiB of persistent storage
free: true
metadata:
displayName: Default
displayName: Production
cost: $0.00
parameters:
- name: mysql_database
default: admin
type: string
description: MariaDB default database name
title: MariaDB Database name
required: True
- name: mysql_root_password
default: admin
type: string
description: A random alphanumeric string if left blank
- name: mysql_user
default: admin
type: string
description: MariaDB User
required: True
- name: mysql_password
default: admin
type: string
description: A random alphanumeric string if left blank
- name: mariadb_version
default: "10.0"
enum: ['10.0', '10.1']
type: enum
title: MariaDB Version
required: True
parameters: *_params
required:
- mariadb_version
- mysql_database
Expand Down
2 changes: 1 addition & 1 deletion playbooks/deprovision.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@
roles:
- role: ansible.kubernetes-modules
install_python_requirements: no
- role: deprovision-rhscl-mariadb-apb
- role: rhscl-mariadb-apb-openshift
playbook_debug: false
2 changes: 1 addition & 1 deletion playbooks/provision.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@
- role: ansible.kubernetes-modules
install_python_requirements: no
- role: ansibleplaybookbundle.asb-modules
- role: provision-rhscl-mariadb-apb
- role: rhscl-mariadb-apb-openshift
playbook_debug: false
4 changes: 0 additions & 4 deletions roles/deprovision-rhscl-mariadb-apb/tasks/main.yml

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
mariadb-APB-Openshift
===

Automates the deployment of mariadb-apb to Openshift.
Automates the provision/deprovision of mariadb-apb to Openshift.


Requirements
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
---
service_name: "{{ lookup('env','SERVICE_NAME') | default('rhscl-mariadb', true) }}"
namespace: "{{ lookup('env','NAMESPACE') | default('rhscl-mariadb-apb', true) }}"
mysql_database: "{{ lookup('env','MYSQL_DATABASE') | default('', true) }}"
mysql_password: "{{ lookup('mysql_password', '/tmp/pass chars=ascii_letters,digits') }}"
mysql_root_password: "{{ lookup('mysql_root_password', '/tmp/rootpass chars=ascii_letters,digits') }}"
mysql_user: "{{ lookup('env','MYSQL_USER') | default('admin', true) }}"
mariadb_volume_size: "1Gi"
volume_size: "{{ lookup('env','VOLUME_SIZE') | default('10Gi', true) }}"
mariadb_version: "{{ lookup('env','MARIADB_VERSION') | default('10.0', true) }}"
image: "rhscl/mariadb-{{ mariadb_version | replace('.', '') }}-rhel7"
state: present
56 changes: 56 additions & 0 deletions roles/rhscl-mariadb-apb-openshift/tasks/dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---

- name: set mariadb deployment using persistent storage to {{ state }}
openshift_v1_deployment_config:
name: "{{ service_name }}"
namespace: '{{ namespace }}'
labels:
app: rhscl-mariadb-apb
service: "{{ service_name }}"
replicas: 1
selector:
app: rhscl-mariadb-apb
service: "{{ service_name }}"
strategy_type: Rolling
strategy_rolling_params:
interval_seconds: 1
max_surge: 25%
max_unavailable: 25%
timeout_seconds: 600
update_period_seconds: 1
spec_template_metadata_labels:
app: rhscl-mariadb-apb
service: "{{ service_name }}"
containers:
- env:
- name: MYSQL_ROOT_PASSWORD
value: '{{ mysql_root_password }}'
- name: MYSQL_USER
value: '{{ mysql_user }}'
- name: MYSQL_PASSWORD
value: '{{ mysql_root_password }}'
- name: MYSQL_DATABASE
value: '{{ mysql_database }}'
image: "{{ image }}"
image_pull_policy: IfNotPresent
name: "{{ service_name }}"
ports:
- container_port: 3306
protocol: TCP
resources: {}
security_context: {}
termination_message_path: /dev/termination-log
volume_mounts:
- mount_path: /var/lib/mysql
name: mariadb-data
working_dir: /
dns_policy: ClusterFirst
restart_policy: Always
termination_grace_period_seconds: 30
volumes:
- name: mariadb-data
emptyDir: []
triggers:
- type: ConfigChange
state: "{{ state }}"

34 changes: 34 additions & 0 deletions roles/rhscl-mariadb-apb-openshift/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
- include: dev.yml
when: _apb_plan_id == "dev"

- include: prod.yml
when: _apb_plan_id == "prod"

- name: set {{ service_name }} service state to {{ state }}
k8s_v1_service:
name: "{{ service_name }}"
namespace: '{{ namespace }}'
state: present
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will never get deprovisioned. Need "{{ state }}"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

😎

labels:
app: rhscl-mariadb-apb
service: "{{ service_name }}"
selector:
app: rhscl-mariadb-apb
service: "{{ service_name }}"
ports:
- name: port-3306
port: 3306
protocol: TCP
target_port: 3306
register: mariadb_service

- name: encode bind credentials
asb_encode_binding:
fields:
DB_TYPE: "mysql"
DB_HOST: "{{ mariadb_service.service.spec.cluster_ip }}"
DB_PORT: "3306"
DB_USER: "{{ mysql_user }}"
DB_PASSWORD: "{{ mysql_password }}"
DB_NAME: "{{ mysql_database }}"
when: state == "present"
Original file line number Diff line number Diff line change
@@ -1,43 +1,27 @@
- name: create volumes
---

- name: set volume claim state to {{ state }}
k8s_v1_persistent_volume_claim:
name: rhscl-mariadb
name: "{{ service_name }}"
namespace: '{{ namespace }}'
state: present
access_modes:
- ReadWriteOnce
resources_requests:
storage: '{{ mariadb_volume_size }}'
storage: '{{ volume_size }}'
state: "{{ state }}"

- name: create service
k8s_v1_service:
name: rhscl-mariadb
namespace: '{{ namespace }}'
state: present
labels:
app: rhscl-mariadb-apb
service: rhscl-mariadb
selector:
app: rhscl-mariadb-apb
service: rhscl-mariadb
ports:
- name: port-3306
port: 3306
protocol: TCP
target_port: 3306
register: mariadb_service

- name: create deployment config
- name: set mariadb deployment using persistent storage to {{ state }}
openshift_v1_deployment_config:
name: rhscl-mariadb
name: "{{ service_name }}"
namespace: '{{ namespace }}'
labels:
app: rhscl-mariadb-apb
service: rhscl-mariadb
service: "{{ service_name }}"
replicas: 1
selector:
app: rhscl-mariadb-apb
service: rhscl-mariadb
service: "{{ service_name }}"
strategy_type: Rolling
strategy_rolling_params:
interval_seconds: 1
Expand All @@ -47,7 +31,7 @@
update_period_seconds: 1
spec_template_metadata_labels:
app: rhscl-mariadb-apb
service: rhscl-mariadb
service: "{{ service_name }}"
containers:
- env:
- name: MYSQL_ROOT_PASSWORD
Expand All @@ -60,7 +44,7 @@
value: '{{ mysql_database }}'
image: "{{ image }}"
image_pull_policy: IfNotPresent
name: rhscl-mariadb
name: "{{ service_name }}"
ports:
- container_port: 3306
protocol: TCP
Expand All @@ -69,26 +53,17 @@
termination_message_path: /dev/termination-log
volume_mounts:
- mount_path: /var/lib/mysql
name: rhscl-mariadb
name: mariadb-data
working_dir: /
dns_policy: ClusterFirst
restart_policy: Always
termination_grace_period_seconds: 30
volumes:
- name: rhscl-mariadb
- name: mariadb-data
persistent_volume_claim:
claim_name: rhscl-mariadb
claim_name: "{{ service_name }}"
test: false
triggers:
- type: ConfigChange
triggers:
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unindented this because I am pretty sure it doesn't belong under volumes.

- type: ConfigChange
state: "{{ state }}"

- name: encode bind credentials
asb_encode_binding:
fields:
DB_TYPE: "mysql"
DB_HOST: "{{ mariadb_service.service.spec.cluster_ip }}"
DB_PORT: "3306"
DB_USER: "{{ mysql_user }}"
DB_PASSWORD: "{{ mysql_password }}"
DB_NAME: "{{ mysql_database }}"