From 167fa25096631d8be1c5a96b1eabb3f1af0c428b Mon Sep 17 00:00:00 2001 From: Aaron Weitekamp Date: Fri, 11 Aug 2017 16:18:27 -0400 Subject: [PATCH 1/4] mongodb apb Signed-off-by: Aaron Weitekamp --- mongodb-apb/Dockerfile | 9 +++ mongodb-apb/apb.yml | 56 +++++++++++++++++ mongodb-apb/playbooks/deprovision.yml | 11 ++++ mongodb-apb/playbooks/provision.yml | 12 ++++ .../mongodb-apb-openshift/defaults/main.yml | 11 ++++ .../roles/mongodb-apb-openshift/tasks/dev.yml | 60 +++++++++++++++++++ .../mongodb-apb-openshift/tasks/main.yml | 56 +++++++++++++++++ 7 files changed, 215 insertions(+) create mode 100644 mongodb-apb/Dockerfile create mode 100644 mongodb-apb/apb.yml create mode 100644 mongodb-apb/playbooks/deprovision.yml create mode 100644 mongodb-apb/playbooks/provision.yml create mode 100644 mongodb-apb/roles/mongodb-apb-openshift/defaults/main.yml create mode 100644 mongodb-apb/roles/mongodb-apb-openshift/tasks/dev.yml create mode 100644 mongodb-apb/roles/mongodb-apb-openshift/tasks/main.yml diff --git a/mongodb-apb/Dockerfile b/mongodb-apb/Dockerfile new file mode 100644 index 0000000..da50c8e --- /dev/null +++ b/mongodb-apb/Dockerfile @@ -0,0 +1,9 @@ +FROM ansibleplaybookbundle/apb-base + +LABEL "com.redhat.apb.version"="0.1.0" +LABEL "com.redhat.apb.spec"=bmFtZTogbW9uZ29kYi1hcGIKaW1hZ2U6IGFuc2libGVwbGF5Ym9va2J1bmRsZS9tb25nb2RiLWFwYgpkZXNjcmlwdGlvbjogVGhpcyB0ZW1wbGF0ZSBwcm92aWRlcyBhIHN0YW5kYWxvbmUgTW9uZ29EQiBzZXJ2ZXIgd2l0aCBhIGRhdGFiYXNlIGNyZWF0ZWQuICBUaGUgZGF0YWJhc2UgaXMgc3RvcmVkIG9uIHBlcnNpc3RlbnQgc3RvcmFnZS4gIFRoZSBkYXRhYmFzZSBuYW1lLCB1c2VybmFtZSwgYW5kIHBhc3N3b3JkIGFyZSBjaG9zZW4gdmlhIHBhcmFtZXRlcnMgd2hlbiBwcm92aXNpb25pbmcgdGhpcyBzZXJ2aWNlLgpiaW5kYWJsZTogVHJ1ZQphc3luYzogdHJ1ZQptZXRhZGF0YToKICBkb2N1bWVudGF0aW9uVXJsOiBodHRwczovL2FjY2Vzcy5yZWRoYXQuY29tCiAgZGlzcGxheU5hbWU6IE1vbmdvREIgKFBlcnNpc3RlbnQpCiAgY29uc29sZS5vcGVuc2hpZnQuaW8vaWNvbkNsYXNzOiBpY29uLW1vbmdvZGIKICBsb25nRGVzY3JpcHRpb246IFRoaXMgdGVtcGxhdGUgcHJvdmlkZXMgYSBzdGFuZGFsb25lIE1vbmdvREIgc2VydmVyIHdpdGggYSBkYXRhYmFzZSBjcmVhdGVkLiAgVGhlIGRhdGFiYXNlIGlzIHN0b3JlZCBvbiBwZXJzaXN0ZW50IHN0b3JhZ2UuICBUaGUgZGF0YWJhc2UgbmFtZSwgdXNlcm5hbWUsIGFuZCBwYXNzd29yZCBhcmUgY2hvc2VuIHZpYSBwYXJhbWV0ZXJzIHdoZW4gcHJvdmlzaW9uaW5nIHRoaXMgc2VydmljZS4KcGxhbnM6CiAgLSBuYW1lOiBkZWZhdWx0CiAgICBkZXNjcmlwdGlvbjogVGhpcyBkZWZhdWx0IHBsYW4gZGVwbG95cyBtb25nb2RiCiAgICBmcmVlOiB0cnVlCiAgICBtZXRhZGF0YToKICAgICAgZGlzcGxheU5hbWU6IERlZmF1bHQKICAgICAgbG9uZ0Rlc2NyaXB0aW9uOiBUaGlzIHBsYW4gZGVwbG95cyBNb25nb2RiCiAgICAgIGNvc3Q6ICQwLjAwCiAgICBwYXJhbWV0ZXJzOgogICAgICAtIG5hbWU6IG1lbW9yeV9saW1pdAogICAgICAgIGRlZmF1bHQ6IDUxMk1pCiAgICAgICAgdGl0bGU6IE1heGltdW0gYW1vdW50IG9mIG1lbW9yeSB0aGUgY29udGFpbmVyIGNhbiB1c2UuCiAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgIC0gbmFtZTogbmFtZXNwYWNlCiAgICAgICAgZGVmYXVsdDoKICAgICAgICB0aXRsZTogVGhlIE9wZW5TaGlmdCBOYW1lc3BhY2Ugd2hlcmUgdGhlIEltYWdlU3RyZWFtIHJlc2lkZXMuCiAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgIC0gbmFtZTogZGF0YWJhc2Vfc2VydmljZV9uYW1lCiAgICAgICAgZGVmYXVsdDogbW9uZ29kYgogICAgICAgIHRpdGxlOiBUaGUgbmFtZSBvZiB0aGUgT3BlblNoaWZ0IFNlcnZpY2UgZXhwb3NlZCBmb3IgdGhlIGRhdGFiYXNlLgogICAgICAgIHR5cGU6IHN0cmluZwogICAgICAtIG5hbWU6IG1vbmdvZGJfdXNlcgogICAgICAgIGRlZmF1bHQ6IAogICAgICAgIHRpdGxlOiBVc2VybmFtZSBmb3IgTW9uZ29EQiB1c2VyIHRoYXQgd2lsbCBiZSB1c2VkIGZvciBhY2Nlc3NpbmcgdGhlIGRhdGFiYXNlLgogICAgICAgIHR5cGU6IHN0cmluZwogICAgICAtIG5hbWU6IG1vbmdvZGJfcGFzc3dvcmQKICAgICAgICBkZWZhdWx0OiAKICAgICAgICB0aXRsZTogUGFzc3dvcmQgZm9yIHRoZSBNb25nb0RCIGNvbm5lY3Rpb24gdXNlci4KICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgLSBuYW1lOiBtb25nb2RiX2RhdGFiYXNlCiAgICAgICAgZGVmYXVsdDogc2FtcGxlZGIKICAgICAgICB0aXRsZTogTmFtZSBvZiB0aGUgTW9uZ29EQiBkYXRhYmFzZSBhY2Nlc3NlZC4KICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgLSBuYW1lOiBtb25nb2RiX2FkbWluX3Bhc3N3b3JkCiAgICAgICAgZGVmYXVsdDogCiAgICAgICAgdGl0bGU6IFBhc3N3b3JkIGZvciB0aGUgZGF0YWJhc2UgYWRtaW4gdXNlci4KICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgLSBuYW1lOiB2b2x1bWVfY2FwYWNpdHkKICAgICAgICBkZWZhdWx0OiAxR2kKICAgICAgICB0aXRsZTogVm9sdW1lIHNwYWNlIGF2YWlsYWJsZSBmb3IgZGF0YSwgZS5nLiA1MTJNaSwgMkdpLgogICAgICAgIHR5cGU6IHN0cmluZwogICAgICAtIG5hbWU6IG1vbmdvZGJfdmVyc2lvbgogICAgICAgIGRlZmF1bHQ6IDMuMgogICAgICAgIHRpdGxlOiBWZXJzaW9uIG9mIE1vbmdvREIgaW1hZ2UgdG8gYmUgdXNlZCAoMi40LCAyLjYsIDMuMiBvciBsYXRlc3QpLgogICAgICAgIHR5cGU6IHN0cmluZwogIAo= + +COPY playbooks /opt/apb/actions +COPY roles /opt/ansible/roles +RUN chmod -R g=u /opt/{ansible,apb} +USER apb diff --git a/mongodb-apb/apb.yml b/mongodb-apb/apb.yml new file mode 100644 index 0000000..5f8c960 --- /dev/null +++ b/mongodb-apb/apb.yml @@ -0,0 +1,56 @@ +name: mongodb-apb +image: ansibleplaybookbundle/mongodb-apb +description: This template provides a standalone MongoDB server with a database created. The database is stored on persistent storage. The database name, username, and password are chosen via parameters when provisioning this service. +bindable: True +async: true +metadata: + documentationUrl: https://access.redhat.com + displayName: MongoDB (Persistent) + console.openshift.io/iconClass: icon-mongodb + longDescription: This template provides a standalone MongoDB server with a database created. The database is stored on persistent storage. The database name, username, and password are chosen via parameters when provisioning this service. +plans: + - name: default + description: This default plan deploys mongodb + free: true + metadata: + displayName: Default + longDescription: This plan deploys Mongodb + cost: $0.00 + parameters: + - name: memory_limit + default: 512Mi + title: Maximum amount of memory the container can use. + type: string + - name: namespace + default: + title: The OpenShift Namespace where the ImageStream resides. + type: string + - name: database_service_name + default: mongodb + title: The name of the OpenShift Service exposed for the database. + type: string + - name: mongodb_user + default: + title: Username for MongoDB user that will be used for accessing the database. + type: string + - name: mongodb_password + default: + title: Password for the MongoDB connection user. + type: string + - name: mongodb_database + default: sampledb + title: Name of the MongoDB database accessed. + type: string + - name: mongodb_admin_password + default: + title: Password for the database admin user. + type: string + - name: volume_capacity + default: 1Gi + title: Volume space available for data, e.g. 512Mi, 2Gi. + type: string + - name: mongodb_version + default: 3.2 + title: Version of MongoDB image to be used (2.4, 2.6, 3.2 or latest). + type: string + diff --git a/mongodb-apb/playbooks/deprovision.yml b/mongodb-apb/playbooks/deprovision.yml new file mode 100644 index 0000000..6c2e883 --- /dev/null +++ b/mongodb-apb/playbooks/deprovision.yml @@ -0,0 +1,11 @@ +- name: Remove mongodb-apb from openshift + hosts: localhost + gather_facts: false + connection: local + vars: + state: absent + roles: + - role: ansible.kubernetes-modules + install_python_requirements: no + - role: mongodb-apb-openshift + playbook_debug: false diff --git a/mongodb-apb/playbooks/provision.yml b/mongodb-apb/playbooks/provision.yml new file mode 100644 index 0000000..467a327 --- /dev/null +++ b/mongodb-apb/playbooks/provision.yml @@ -0,0 +1,12 @@ +- name: Deploy mongodb-apb to openshift + hosts: localhost + gather_facts: false + connection: local + vars: + state: present + roles: + - role: ansible.kubernetes-modules + install_python_requirements: no + - role: mongodb-apb-openshift + playbook_debug: false + diff --git a/mongodb-apb/roles/mongodb-apb-openshift/defaults/main.yml b/mongodb-apb/roles/mongodb-apb-openshift/defaults/main.yml new file mode 100644 index 0000000..308bf8b --- /dev/null +++ b/mongodb-apb/roles/mongodb-apb-openshift/defaults/main.yml @@ -0,0 +1,11 @@ +--- +mongodb_admin_password: "{{ lookup('password', '/tmp/pass chars=ascii_letters,digits') }}" +mongodb_password: "{{ lookup('password', '/tmp/pass chars=ascii_letters,digits') }}" +mongodb_user: "admin" +volume_capacity: "1Gi" +mongodb_version: "3.2" +state: present +image: "centos/mongodb-{{ mongodb_version | replace('.', '') }}-centos7" +_apb_plan_id: default +database_service_name: mongodb +mongodb_database: sampledb diff --git a/mongodb-apb/roles/mongodb-apb-openshift/tasks/dev.yml b/mongodb-apb/roles/mongodb-apb-openshift/tasks/dev.yml new file mode 100644 index 0000000..2edd2f2 --- /dev/null +++ b/mongodb-apb/roles/mongodb-apb-openshift/tasks/dev.yml @@ -0,0 +1,60 @@ +- name: set development deployment config state to {{ state }} + openshift_v1_deployment_config: + name: mongodb + namespace: '{{ namespace }}' + labels: + app: mongodb-apb + service: mongodb + replicas: 1 + selector: + app: mongodb-apb + service: mongodb + 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: mongodb-apb + service: mongodb + containers: + - env: + - name: MONGODB_ADMIN_PASSWORD + value: '{{ mongodb_admin_password }}' + - name: MONGODB_PASSWORD + value: '{{ mongodb_password }}' + - name: MONGODB_USER + value: '{{ mongodb_user }}' + - name: MONGODB_DATABASE + value: '{{ mongodb_database }}' + image: '{{ image }}' + image_pull_policy: IfNotPresent + liveness_probe: + initial_delay_seconds: 30 + tcp_socket: + port: 27017 + timeout_seconds: 1 + readiness_probe: + exec: + command: + - "/bin/sh" + - "-i" + - "-c" + - "mongo 127.0.0.1:27017/$MONGODB_DATABASE -u $MONGODB_USER -p $MONGODB_PASSWORD --eval=\"quit()\"" + initial_delay_seconds: 3 + timeout_seconds: 1 + name: mongodb + ports: + - container_port: 27017 + protocol: TCP + termination_message_path: /dev/termination-log + working_dir: / + dns_policy: ClusterFirst + restart_policy: Always + termination_grace_period_seconds: 30 + test: false + triggers: + - type: ConfigChange + state: "{{ state }}" diff --git a/mongodb-apb/roles/mongodb-apb-openshift/tasks/main.yml b/mongodb-apb/roles/mongodb-apb-openshift/tasks/main.yml new file mode 100644 index 0000000..3756c3c --- /dev/null +++ b/mongodb-apb/roles/mongodb-apb-openshift/tasks/main.yml @@ -0,0 +1,56 @@ +- name: set service state to {{ state }} + k8s_v1_service: + name: mongodb + namespace: "{{ namespace }}" + labels: + app: mongodb-apb + service: mongodb + selector: + app: mongodb-apb + service: mongodb + ports: + - name: port-27017 + port: 27017 + protocol: TCP + target_port: 27017 + state: "{{ state }}" + register: mongodb_service + +- name: scale deployment down + openshift_v1_deployment_config: + name: mongodb + namespace: "{{ namespace }}" + replicas: 0 + state: present + selector: + app: mongodb-apb + service: mongodb + when: state == "absent" + +- include: dev.yml + when: _apb_plan_id == "default" + +- name: delete replication controller + k8s_v1_replication_controller: + name: mongodb-1 + namespace: "{{ namespace }}" + state: absent + when: state == "absent" + +- name: Wait for mongodb to come up + wait_for: + port: 27017 + host: "{{ mongodb_service.service.spec.cluster_ip }}" + timeout: 300 + when: state == "present" + +#- name: encode bind credentials +# asb_encode_binding: +# fields: +# DB_TYPE: mongodb +# DB_HOST: mongodb +# DB_PORT: "27017" +# DB_USER: "{{ mongodb_user }}" +# DB_PASSWORD: "{{ mongodb_password }}" +# DB_NAME: "{{ mongodb_database }}" +# when: state == "present" From ea8ac4d1d916d33e599ca0c5e4ab71d59cfecbb7 Mon Sep 17 00:00:00 2001 From: Aaron Weitekamp Date: Mon, 14 Aug 2017 14:57:50 -0400 Subject: [PATCH 2/4] add Makefile Signed-off-by: Aaron Weitekamp --- mongodb-apb/Dockerfile | 3 +- mongodb-apb/Makefile | 52 +++++++++++++++++++ mongodb-apb/{playbooks => }/deprovision.yml | 0 .../defaults/main.yml => group_vars/all} | 1 - mongodb-apb/playbooks/provision.yml | 12 ----- mongodb-apb/provision.yml | 21 ++++++++ mongodb-apb/test.yml | 12 +++++ 7 files changed, 86 insertions(+), 15 deletions(-) create mode 100644 mongodb-apb/Makefile rename mongodb-apb/{playbooks => }/deprovision.yml (100%) rename mongodb-apb/{roles/mongodb-apb-openshift/defaults/main.yml => group_vars/all} (99%) delete mode 100644 mongodb-apb/playbooks/provision.yml create mode 100644 mongodb-apb/provision.yml create mode 100644 mongodb-apb/test.yml diff --git a/mongodb-apb/Dockerfile b/mongodb-apb/Dockerfile index da50c8e..ae0f939 100644 --- a/mongodb-apb/Dockerfile +++ b/mongodb-apb/Dockerfile @@ -1,9 +1,8 @@ FROM ansibleplaybookbundle/apb-base LABEL "com.redhat.apb.version"="0.1.0" -LABEL "com.redhat.apb.spec"=bmFtZTogbW9uZ29kYi1hcGIKaW1hZ2U6IGFuc2libGVwbGF5Ym9va2J1bmRsZS9tb25nb2RiLWFwYgpkZXNjcmlwdGlvbjogVGhpcyB0ZW1wbGF0ZSBwcm92aWRlcyBhIHN0YW5kYWxvbmUgTW9uZ29EQiBzZXJ2ZXIgd2l0aCBhIGRhdGFiYXNlIGNyZWF0ZWQuICBUaGUgZGF0YWJhc2UgaXMgc3RvcmVkIG9uIHBlcnNpc3RlbnQgc3RvcmFnZS4gIFRoZSBkYXRhYmFzZSBuYW1lLCB1c2VybmFtZSwgYW5kIHBhc3N3b3JkIGFyZSBjaG9zZW4gdmlhIHBhcmFtZXRlcnMgd2hlbiBwcm92aXNpb25pbmcgdGhpcyBzZXJ2aWNlLgpiaW5kYWJsZTogVHJ1ZQphc3luYzogdHJ1ZQptZXRhZGF0YToKICBkb2N1bWVudGF0aW9uVXJsOiBodHRwczovL2FjY2Vzcy5yZWRoYXQuY29tCiAgZGlzcGxheU5hbWU6IE1vbmdvREIgKFBlcnNpc3RlbnQpCiAgY29uc29sZS5vcGVuc2hpZnQuaW8vaWNvbkNsYXNzOiBpY29uLW1vbmdvZGIKICBsb25nRGVzY3JpcHRpb246IFRoaXMgdGVtcGxhdGUgcHJvdmlkZXMgYSBzdGFuZGFsb25lIE1vbmdvREIgc2VydmVyIHdpdGggYSBkYXRhYmFzZSBjcmVhdGVkLiAgVGhlIGRhdGFiYXNlIGlzIHN0b3JlZCBvbiBwZXJzaXN0ZW50IHN0b3JhZ2UuICBUaGUgZGF0YWJhc2UgbmFtZSwgdXNlcm5hbWUsIGFuZCBwYXNzd29yZCBhcmUgY2hvc2VuIHZpYSBwYXJhbWV0ZXJzIHdoZW4gcHJvdmlzaW9uaW5nIHRoaXMgc2VydmljZS4KcGxhbnM6CiAgLSBuYW1lOiBkZWZhdWx0CiAgICBkZXNjcmlwdGlvbjogVGhpcyBkZWZhdWx0IHBsYW4gZGVwbG95cyBtb25nb2RiCiAgICBmcmVlOiB0cnVlCiAgICBtZXRhZGF0YToKICAgICAgZGlzcGxheU5hbWU6IERlZmF1bHQKICAgICAgbG9uZ0Rlc2NyaXB0aW9uOiBUaGlzIHBsYW4gZGVwbG95cyBNb25nb2RiCiAgICAgIGNvc3Q6ICQwLjAwCiAgICBwYXJhbWV0ZXJzOgogICAgICAtIG5hbWU6IG1lbW9yeV9saW1pdAogICAgICAgIGRlZmF1bHQ6IDUxMk1pCiAgICAgICAgdGl0bGU6IE1heGltdW0gYW1vdW50IG9mIG1lbW9yeSB0aGUgY29udGFpbmVyIGNhbiB1c2UuCiAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgIC0gbmFtZTogbmFtZXNwYWNlCiAgICAgICAgZGVmYXVsdDoKICAgICAgICB0aXRsZTogVGhlIE9wZW5TaGlmdCBOYW1lc3BhY2Ugd2hlcmUgdGhlIEltYWdlU3RyZWFtIHJlc2lkZXMuCiAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgIC0gbmFtZTogZGF0YWJhc2Vfc2VydmljZV9uYW1lCiAgICAgICAgZGVmYXVsdDogbW9uZ29kYgogICAgICAgIHRpdGxlOiBUaGUgbmFtZSBvZiB0aGUgT3BlblNoaWZ0IFNlcnZpY2UgZXhwb3NlZCBmb3IgdGhlIGRhdGFiYXNlLgogICAgICAgIHR5cGU6IHN0cmluZwogICAgICAtIG5hbWU6IG1vbmdvZGJfdXNlcgogICAgICAgIGRlZmF1bHQ6IAogICAgICAgIHRpdGxlOiBVc2VybmFtZSBmb3IgTW9uZ29EQiB1c2VyIHRoYXQgd2lsbCBiZSB1c2VkIGZvciBhY2Nlc3NpbmcgdGhlIGRhdGFiYXNlLgogICAgICAgIHR5cGU6IHN0cmluZwogICAgICAtIG5hbWU6IG1vbmdvZGJfcGFzc3dvcmQKICAgICAgICBkZWZhdWx0OiAKICAgICAgICB0aXRsZTogUGFzc3dvcmQgZm9yIHRoZSBNb25nb0RCIGNvbm5lY3Rpb24gdXNlci4KICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgLSBuYW1lOiBtb25nb2RiX2RhdGFiYXNlCiAgICAgICAgZGVmYXVsdDogc2FtcGxlZGIKICAgICAgICB0aXRsZTogTmFtZSBvZiB0aGUgTW9uZ29EQiBkYXRhYmFzZSBhY2Nlc3NlZC4KICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgLSBuYW1lOiBtb25nb2RiX2FkbWluX3Bhc3N3b3JkCiAgICAgICAgZGVmYXVsdDogCiAgICAgICAgdGl0bGU6IFBhc3N3b3JkIGZvciB0aGUgZGF0YWJhc2UgYWRtaW4gdXNlci4KICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgLSBuYW1lOiB2b2x1bWVfY2FwYWNpdHkKICAgICAgICBkZWZhdWx0OiAxR2kKICAgICAgICB0aXRsZTogVm9sdW1lIHNwYWNlIGF2YWlsYWJsZSBmb3IgZGF0YSwgZS5nLiA1MTJNaSwgMkdpLgogICAgICAgIHR5cGU6IHN0cmluZwogICAgICAtIG5hbWU6IG1vbmdvZGJfdmVyc2lvbgogICAgICAgIGRlZmF1bHQ6IDMuMgogICAgICAgIHRpdGxlOiBWZXJzaW9uIG9mIE1vbmdvREIgaW1hZ2UgdG8gYmUgdXNlZCAoMi40LCAyLjYsIDMuMiBvciBsYXRlc3QpLgogICAgICAgIHR5cGU6IHN0cmluZwogIAo= -COPY playbooks /opt/apb/actions +COPY provision.yml deprovision.yml test.yml /opt/apb/actions/ COPY roles /opt/ansible/roles RUN chmod -R g=u /opt/{ansible,apb} USER apb diff --git a/mongodb-apb/Makefile b/mongodb-apb/Makefile new file mode 100644 index 0000000..b143b1a --- /dev/null +++ b/mongodb-apb/Makefile @@ -0,0 +1,52 @@ +CONTEXT = ansibleplaybookbundle +VERSION = v0.1 +IMAGE_NAME = mongodb-apb +DISTRO = centos7 +REGISTRY = 172.30.174.0:5000 +OC_USER = developer +OC_PASS = developer +APB_APP = mongodb +APB_SPEC = `base64 --wrap=0 apb.yml` +IMAGE = ${CONTEXT}/${IMAGE_NAME}:${DISTRO}-${VERSION} + +ifneq ($(shell oc whoami . 2> /dev/null; echo $$?), 0) + loggedin = $(shell oc login -u ${OC_USER} -p ${OC_PASS}) +endif +ifndef project + export project = $(shell oc project -q) +endif + +all: localtest localteardown localbuild push + +.PHONY: localbuild +localbuild: + docker build --no-cache \ + --label "com.redhat.apb.version=${VERSION}" \ + --label "com.redhat.apb.spec=${APB_SPEC}" \ + -t ${CONTEXT}/${IMAGE_NAME}:${DISTRO}-${VERSION} \ + -t ${CONTEXT}/${IMAGE_NAME} . + +.PHONY: push +push: + docker login -u ${OC_USER} -p `oc whoami -t` ${REGISTRY} + docker tag ${CONTEXT}/${IMAGE_NAME}:${DISTRO}-${VERSION} \ + ${REGISTRY}/${project}/${IMAGE_NAME} + docker push ${REGISTRY}/${project}/${IMAGE_NAME} + +.PHONY: buildopenshift +buildopenshift: + oc patch bc/${APB_APP} --patch="{\"spec\": {\"output\": {\"imageLabels\":[{\"name\":\"com.redhat.apb.spec\", \"value\": \"${APB_SPEC}\"}]}}}" ${project} + oc start-build ${APB_APP} -n ${project} + +test: localtest + +.PHONY: localtest +localtest: + ANSIBLE_STRATEGY=debug + ansible-playbook provision.yml --extra-vars namespace=${project} + +.PHONY: localteardown +localteardown: + ANSIBLE_STRATEGY=debug + ansible-playbook deprovision.yml --extra-vars namespace=${project} + diff --git a/mongodb-apb/playbooks/deprovision.yml b/mongodb-apb/deprovision.yml similarity index 100% rename from mongodb-apb/playbooks/deprovision.yml rename to mongodb-apb/deprovision.yml diff --git a/mongodb-apb/roles/mongodb-apb-openshift/defaults/main.yml b/mongodb-apb/group_vars/all similarity index 99% rename from mongodb-apb/roles/mongodb-apb-openshift/defaults/main.yml rename to mongodb-apb/group_vars/all index 308bf8b..ab493f9 100644 --- a/mongodb-apb/roles/mongodb-apb-openshift/defaults/main.yml +++ b/mongodb-apb/group_vars/all @@ -1,4 +1,3 @@ ---- mongodb_admin_password: "{{ lookup('password', '/tmp/pass chars=ascii_letters,digits') }}" mongodb_password: "{{ lookup('password', '/tmp/pass chars=ascii_letters,digits') }}" mongodb_user: "admin" diff --git a/mongodb-apb/playbooks/provision.yml b/mongodb-apb/playbooks/provision.yml deleted file mode 100644 index 467a327..0000000 --- a/mongodb-apb/playbooks/provision.yml +++ /dev/null @@ -1,12 +0,0 @@ -- name: Deploy mongodb-apb to openshift - hosts: localhost - gather_facts: false - connection: local - vars: - state: present - roles: - - role: ansible.kubernetes-modules - install_python_requirements: no - - role: mongodb-apb-openshift - playbook_debug: false - diff --git a/mongodb-apb/provision.yml b/mongodb-apb/provision.yml new file mode 100644 index 0000000..2436382 --- /dev/null +++ b/mongodb-apb/provision.yml @@ -0,0 +1,21 @@ +- name: Deploy mongodb-apb to openshift + hosts: localhost + gather_facts: false + connection: local + vars: + - mongodb_admin_password: "{{ lookup('password', '/tmp/pass chars=ascii_letters,digits') }}" + - mongodb_password: "{{ lookup('password', '/tmp/pass chars=ascii_letters,digits') }}" + - mongodb_user: "admin" + - volume_capacity: "1Gi" + - mongodb_version: "3.2" + - state: present + - image: "centos/mongodb-{{ mongodb_version | replace('.', '') }}-centos7" + - _apb_plan_id: default + - database_service_name: mongodb + - mongodb_database: sampledb + roles: + - role: ansible.kubernetes-modules + install_python_requirements: no + - role: mongodb-apb-openshift + playbook_debug: false + diff --git a/mongodb-apb/test.yml b/mongodb-apb/test.yml new file mode 100644 index 0000000..bc80903 --- /dev/null +++ b/mongodb-apb/test.yml @@ -0,0 +1,12 @@ +- name: Test mongodb-apb on openshift + hosts: localhost + gather_facts: false + connection: local + vars: + target: all + tasks: + - name: Test entrypoint + make: + chdir: . + target: "{{ target }}" + become: yes From be7635b7991751e1197c02ce63b1eb1f14839db0 Mon Sep 17 00:00:00 2001 From: Aaron Weitekamp Date: Wed, 6 Sep 2017 11:04:28 -0400 Subject: [PATCH 3/4] ansible.cfg with local roles dir for local ansible dev --- mongodb-apb/ansible.cfg | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 mongodb-apb/ansible.cfg diff --git a/mongodb-apb/ansible.cfg b/mongodb-apb/ansible.cfg new file mode 100644 index 0000000..fd8645a --- /dev/null +++ b/mongodb-apb/ansible.cfg @@ -0,0 +1,2 @@ +[defaults] +roles_path = ./roles:/etc/ansible/roles From b4fb45b36c468add187adce3a22245af6e7ec9ef Mon Sep 17 00:00:00 2001 From: Aaron Weitekamp Date: Wed, 6 Sep 2017 16:34:05 -0400 Subject: [PATCH 4/4] working mongodb apb Signed-off-by: Aaron Weitekamp --- mongodb-apb/Dockerfile | 50 +++++++++- mongodb-apb/Makefile | 20 ++-- mongodb-apb/README.md | 17 ++++ mongodb-apb/apb.yml | 94 +++++++++++-------- mongodb-apb/deprovision.yml | 11 --- mongodb-apb/playbooks/deprovision.yml | 12 +++ mongodb-apb/{ => playbooks}/group_vars/all | 9 +- mongodb-apb/playbooks/provision.yml | 10 ++ mongodb-apb/{ => playbooks}/test.yml | 0 mongodb-apb/provision.yml | 21 ----- .../roles/mongodb-apb-openshift/tasks/dev.yml | 14 +-- .../mongodb-apb-openshift/tasks/main.yml | 31 +++--- .../mongodb-apb-openshift/tasks/prod.yml | 73 ++++++++++++++ 13 files changed, 256 insertions(+), 106 deletions(-) create mode 100644 mongodb-apb/README.md delete mode 100644 mongodb-apb/deprovision.yml create mode 100644 mongodb-apb/playbooks/deprovision.yml rename mongodb-apb/{ => playbooks}/group_vars/all (81%) create mode 100644 mongodb-apb/playbooks/provision.yml rename mongodb-apb/{ => playbooks}/test.yml (100%) delete mode 100644 mongodb-apb/provision.yml create mode 100644 mongodb-apb/roles/mongodb-apb-openshift/tasks/prod.yml diff --git a/mongodb-apb/Dockerfile b/mongodb-apb/Dockerfile index ae0f939..90720cd 100644 --- a/mongodb-apb/Dockerfile +++ b/mongodb-apb/Dockerfile @@ -1,8 +1,56 @@ FROM ansibleplaybookbundle/apb-base LABEL "com.redhat.apb.version"="0.1.0" +LABEL "com.redhat.apb.spec"=\ +"LS0tCiMgUGFyYW1ldGVycyBzaGFyZWQgYW1vbmcgcGxhbnMKX3BhcmFtczogJl9wYXJhbXMKICAt\ +IG5hbWU6IG1lbW9yeV9saW1pdAogICAgZGVmYXVsdDogNTEyTWkKICAgIHRpdGxlOiBNYXhpbXVt\ +IGFtb3VudCBvZiBtZW1vcnkgdGhlIGNvbnRhaW5lciBjYW4gdXNlLgogICAgdHlwZTogc3RyaW5n\ +CiAgLSBuYW1lOiBuYW1lc3BhY2UKICAgIGRlZmF1bHQ6CiAgICB0aXRsZTogVGhlIE9wZW5TaGlm\ +dCBOYW1lc3BhY2Ugd2hlcmUgdGhlIEltYWdlU3RyZWFtIHJlc2lkZXMuCiAgICB0eXBlOiBzdHJp\ +bmcKICAtIG5hbWU6IHNlcnZpY2VfbmFtZQogICAgZGVmYXVsdDogbW9uZ29kYgogICAgdGl0bGU6\ +IFRoZSBuYW1lIG9mIHRoZSBPcGVuU2hpZnQgU2VydmljZSBleHBvc2VkIGZvciB0aGUgZGF0YWJh\ +c2UuCiAgICB0eXBlOiBzdHJpbmcKICAtIG5hbWU6IG1vbmdvZGJfdXNlcgogICAgZGVmYXVsdDoK\ +ICAgIHRpdGxlOiBVc2VybmFtZSBmb3IgTW9uZ29EQiB1c2VyIHRoYXQgd2lsbCBiZSB1c2VkIGZv\ +ciBhY2Nlc3NpbmcgdGhlIGRhdGFiYXNlLgogICAgdHlwZTogc3RyaW5nCiAgLSBuYW1lOiBtb25n\ +b2RiX3Bhc3N3b3JkCiAgICBkZWZhdWx0OgogICAgdGl0bGU6IFBhc3N3b3JkIGZvciB0aGUgTW9u\ +Z29EQiBjb25uZWN0aW9uIHVzZXIuCiAgICB0eXBlOiBzdHJpbmcKICAtIG5hbWU6IG1vbmdvZGJf\ +ZGF0YWJhc2UKICAgIGRlZmF1bHQ6IHNhbXBsZWRiCiAgICB0aXRsZTogTmFtZSBvZiB0aGUgTW9u\ +Z29EQiBkYXRhYmFzZSBhY2Nlc3NlZC4KICAgIHR5cGU6IHN0cmluZwogIC0gbmFtZTogbW9uZ29k\ +Yl9hZG1pbl9wYXNzd29yZAogICAgZGVmYXVsdDoKICAgIHRpdGxlOiBQYXNzd29yZCBmb3IgdGhl\ +IGRhdGFiYXNlIGFkbWluIHVzZXIuCiAgICB0eXBlOiBzdHJpbmcKICAtIG5hbWU6IHZvbHVtZV9j\ +YXBhY2l0eQogICAgZGVmYXVsdDogMUdpCiAgICB0aXRsZTogVm9sdW1lIHNwYWNlIGF2YWlsYWJs\ +ZSBmb3IgZGF0YSwgZS5nLiA1MTJNaSwgMkdpLgogICAgdHlwZTogc3RyaW5nCiAgLSBuYW1lOiBt\ +b25nb2RiX3ZlcnNpb24KICAgIGRlZmF1bHQ6IDMuMgogICAgdGl0bGU6IFZlcnNpb24gb2YgTW9u\ +Z29EQiBpbWFnZSB0byBiZSB1c2VkICgyLjQsIDIuNiwgMy4yIG9yIGxhdGVzdCkuCiAgICB0eXBl\ +OiBzdHJpbmcKCm5hbWU6IG1vbmdvZGItYXBiCmltYWdlOiBhbnNpYmxlcGxheWJvb2tidW5kbGUv\ +bW9uZ29kYi1hcGIKZGVzY3JpcHRpb246IFRoaXMgdGVtcGxhdGUgcHJvdmlkZXMgYSBzdGFuZGFs\ +b25lIE1vbmdvREIgc2VydmVyIHdpdGggYSBkYXRhYmFzZSBjcmVhdGVkLiAgVGhlIGRhdGFiYXNl\ +IGlzIHN0b3JlZCBvbiBwZXJzaXN0ZW50IHN0b3JhZ2UuICBUaGUgZGF0YWJhc2UgbmFtZSwgdXNl\ +cm5hbWUsIGFuZCBwYXNzd29yZCBhcmUgY2hvc2VuIHZpYSBwYXJhbWV0ZXJzIHdoZW4gcHJvdmlz\ +aW9uaW5nIHRoaXMgc2VydmljZS4KYmluZGFibGU6IFRydWUKYXN5bmM6IG9wdGlvbmFsCnRhZ3M6\ +CiAgLSBkYXRhYmFzZXMKICAtIG1vbmdvZGIKbWV0YWRhdGE6CiAgZG9jdW1lbnRhdGlvblVybDog\ +aHR0cHM6Ly9hY2Nlc3MucmVkaGF0LmNvbQogIGRpc3BsYXlOYW1lOiBNb25nb0RCIChQZXJzaXN0\ +ZW50KQogIGNvbnNvbGUub3BlbnNoaWZ0LmlvL2ljb25DbGFzczogaWNvbi1tb25nb2RiCiAgbG9u\ +Z0Rlc2NyaXB0aW9uOiBUaGlzIHRlbXBsYXRlIHByb3ZpZGVzIGEgc3RhbmRhbG9uZSBNb25nb0RC\ +IHNlcnZlciB3aXRoIGEgZGF0YWJhc2UgY3JlYXRlZC4gIFRoZSBkYXRhYmFzZSBpcyBzdG9yZWQg\ +b24gcGVyc2lzdGVudCBzdG9yYWdlLiAgVGhlIGRhdGFiYXNlIG5hbWUsIHVzZXJuYW1lLCBhbmQg\ +cGFzc3dvcmQgYXJlIGNob3NlbiB2aWEgcGFyYW1ldGVycyB3aGVuIHByb3Zpc2lvbmluZyB0aGlz\ +IHNlcnZpY2UuCnBsYW5zOgogIC0gbmFtZTogZGV2CiAgICBkZXNjcmlwdGlvbjogVGhpcyBkZWZh\ +dWx0IHBsYW4gZGVwbG95cyBtb25nb2RiCiAgICBmcmVlOiB0cnVlCiAgICBtZXRhZGF0YToKICAg\ +ICAgZGlzcGxheU5hbWU6IERlZmF1bHQKICAgICAgbG9uZ0Rlc2NyaXB0aW9uOiBUaGlzIHBsYW4g\ +ZGVwbG95cyBNb25nb2RiCiAgICAgIGNvc3Q6ICQwLjAwCiAgICBwYXJhbWV0ZXJzOiAqX3BhcmFt\ +cwogIC0gbmFtZTogcHJvZAogICAgZGVzY3JpcHRpb246IFRoaXMgcHJvZHVjdGlvbiBwbGFuIGRl\ +cGxveXMgbW9uZ29kYgogICAgZnJlZTogdHJ1ZQogICAgbWV0YWRhdGE6CiAgICAgIGRpc3BsYXlO\ +YW1lOiBEZWZhdWx0CiAgICAgIGxvbmdEZXNjcmlwdGlvbjogVGhpcyBwbGFuIGRlcGxveXMgTW9u\ +Z29kYiB3aXRoIGEgcGVyc2lzdGVudCB2b2x1bWUKICAgICAgY29zdDogJDAuMDAKICAgIHBhcmFt\ +ZXRlcnM6ICpfcGFyYW1zCg==" -COPY provision.yml deprovision.yml test.yml /opt/apb/actions/ + + + + + +COPY playbooks /opt/apb/actions COPY roles /opt/ansible/roles RUN chmod -R g=u /opt/{ansible,apb} USER apb diff --git a/mongodb-apb/Makefile b/mongodb-apb/Makefile index b143b1a..f1c9f00 100644 --- a/mongodb-apb/Makefile +++ b/mongodb-apb/Makefile @@ -2,7 +2,7 @@ CONTEXT = ansibleplaybookbundle VERSION = v0.1 IMAGE_NAME = mongodb-apb DISTRO = centos7 -REGISTRY = 172.30.174.0:5000 +REGISTRY = 172.30.1.1:5000 OC_USER = developer OC_PASS = developer APB_APP = mongodb @@ -16,7 +16,7 @@ ifndef project export project = $(shell oc project -q) endif -all: localtest localteardown localbuild push +all: localtest localteardown build push .PHONY: localbuild localbuild: @@ -26,27 +26,31 @@ localbuild: -t ${CONTEXT}/${IMAGE_NAME}:${DISTRO}-${VERSION} \ -t ${CONTEXT}/${IMAGE_NAME} . +.PHONY: build +build: + apb build --tag ${CONTEXT}/${IMAGE_NAME}:${DISTRO}-${VERSION} + .PHONY: push -push: +push: docker login -u ${OC_USER} -p `oc whoami -t` ${REGISTRY} docker tag ${CONTEXT}/${IMAGE_NAME}:${DISTRO}-${VERSION} \ ${REGISTRY}/${project}/${IMAGE_NAME} docker push ${REGISTRY}/${project}/${IMAGE_NAME} + apb push .PHONY: buildopenshift -buildopenshift: +buildopenshift: oc patch bc/${APB_APP} --patch="{\"spec\": {\"output\": {\"imageLabels\":[{\"name\":\"com.redhat.apb.spec\", \"value\": \"${APB_SPEC}\"}]}}}" ${project} oc start-build ${APB_APP} -n ${project} -test: localtest +test: localtest localteardown .PHONY: localtest localtest: ANSIBLE_STRATEGY=debug - ansible-playbook provision.yml --extra-vars namespace=${project} + ansible-playbook playbooks/provision.yml --extra-vars namespace=${project} --extra-vars _apb_plan_id=prod .PHONY: localteardown localteardown: ANSIBLE_STRATEGY=debug - ansible-playbook deprovision.yml --extra-vars namespace=${project} - + ansible-playbook playbooks/deprovision.yml --extra-vars namespace=${project} --extra-vars _apb_plan_id=prod diff --git a/mongodb-apb/README.md b/mongodb-apb/README.md new file mode 100644 index 0000000..c67bf30 --- /dev/null +++ b/mongodb-apb/README.md @@ -0,0 +1,17 @@ +# rhscl-mongodb-apb + + +An Ansible Playbook Bundle (APB) to deploy MongoDB. + +## What it does + +Deploys a MongoDB server using the [RHSCL MongoDB container image](https://github.com/sclorg/mongodb-container). + +## Parameters + +See apb.yml file + +## Plans + +- dev +- prod diff --git a/mongodb-apb/apb.yml b/mongodb-apb/apb.yml index 5f8c960..5fd7219 100644 --- a/mongodb-apb/apb.yml +++ b/mongodb-apb/apb.yml @@ -1,56 +1,70 @@ +--- +# Parameters shared among plans +_params: &_params + - name: memory_limit + default: 512Mi + title: Maximum amount of memory the container can use. + type: string + - name: namespace + default: + title: The OpenShift Namespace where the ImageStream resides. + type: string + - name: service_name + default: mongodb + title: The name of the OpenShift Service exposed for the database. + type: string + - name: mongodb_user + default: + title: Username for MongoDB user that will be used for accessing the database. + type: string + - name: mongodb_password + default: + title: Password for the MongoDB connection user. + type: string + - name: mongodb_database + default: sampledb + title: Name of the MongoDB database accessed. + type: string + - name: mongodb_admin_password + default: + title: Password for the database admin user. + type: string + - name: volume_capacity + default: 1Gi + title: Volume space available for data, e.g. 512Mi, 2Gi. + type: string + - name: mongodb_version + default: 3.2 + title: Version of MongoDB image to be used (2.4, 2.6, 3.2 or latest). + type: string + name: mongodb-apb image: ansibleplaybookbundle/mongodb-apb description: This template provides a standalone MongoDB server with a database created. The database is stored on persistent storage. The database name, username, and password are chosen via parameters when provisioning this service. bindable: True -async: true +async: optional +tags: + - databases + - mongodb metadata: documentationUrl: https://access.redhat.com displayName: MongoDB (Persistent) console.openshift.io/iconClass: icon-mongodb longDescription: This template provides a standalone MongoDB server with a database created. The database is stored on persistent storage. The database name, username, and password are chosen via parameters when provisioning this service. plans: - - name: default + - name: dev description: This default plan deploys mongodb free: true metadata: displayName: Default longDescription: This plan deploys Mongodb cost: $0.00 - parameters: - - name: memory_limit - default: 512Mi - title: Maximum amount of memory the container can use. - type: string - - name: namespace - default: - title: The OpenShift Namespace where the ImageStream resides. - type: string - - name: database_service_name - default: mongodb - title: The name of the OpenShift Service exposed for the database. - type: string - - name: mongodb_user - default: - title: Username for MongoDB user that will be used for accessing the database. - type: string - - name: mongodb_password - default: - title: Password for the MongoDB connection user. - type: string - - name: mongodb_database - default: sampledb - title: Name of the MongoDB database accessed. - type: string - - name: mongodb_admin_password - default: - title: Password for the database admin user. - type: string - - name: volume_capacity - default: 1Gi - title: Volume space available for data, e.g. 512Mi, 2Gi. - type: string - - name: mongodb_version - default: 3.2 - title: Version of MongoDB image to be used (2.4, 2.6, 3.2 or latest). - type: string - + parameters: *_params + - name: prod + description: This production plan deploys mongodb + free: true + metadata: + displayName: Default + longDescription: This plan deploys Mongodb with a persistent volume + cost: $0.00 + parameters: *_params diff --git a/mongodb-apb/deprovision.yml b/mongodb-apb/deprovision.yml deleted file mode 100644 index 6c2e883..0000000 --- a/mongodb-apb/deprovision.yml +++ /dev/null @@ -1,11 +0,0 @@ -- name: Remove mongodb-apb from openshift - hosts: localhost - gather_facts: false - connection: local - vars: - state: absent - roles: - - role: ansible.kubernetes-modules - install_python_requirements: no - - role: mongodb-apb-openshift - playbook_debug: false diff --git a/mongodb-apb/playbooks/deprovision.yml b/mongodb-apb/playbooks/deprovision.yml new file mode 100644 index 0000000..7ac53fa --- /dev/null +++ b/mongodb-apb/playbooks/deprovision.yml @@ -0,0 +1,12 @@ +- name: Remove mongodb-apb from openshift + hosts: localhost + gather_facts: false + connection: local + vars: + - state: absent + roles: + - role: ansible.kubernetes-modules + install_python_requirements: no + - role: ansible-asb-modules + - role: mongodb-apb-openshift + playbook_debug: true diff --git a/mongodb-apb/group_vars/all b/mongodb-apb/playbooks/group_vars/all similarity index 81% rename from mongodb-apb/group_vars/all rename to mongodb-apb/playbooks/group_vars/all index ab493f9..e78eca3 100644 --- a/mongodb-apb/group_vars/all +++ b/mongodb-apb/playbooks/group_vars/all @@ -1,10 +1,11 @@ +--- +state: present +_apb_plan_id: dev mongodb_admin_password: "{{ lookup('password', '/tmp/pass chars=ascii_letters,digits') }}" mongodb_password: "{{ lookup('password', '/tmp/pass chars=ascii_letters,digits') }}" mongodb_user: "admin" -volume_capacity: "1Gi" +volume_size: "1Gi" mongodb_version: "3.2" -state: present image: "centos/mongodb-{{ mongodb_version | replace('.', '') }}-centos7" -_apb_plan_id: default -database_service_name: mongodb +service_name: mongodb mongodb_database: sampledb diff --git a/mongodb-apb/playbooks/provision.yml b/mongodb-apb/playbooks/provision.yml new file mode 100644 index 0000000..aea8885 --- /dev/null +++ b/mongodb-apb/playbooks/provision.yml @@ -0,0 +1,10 @@ +- name: Deploy mongodb-apb to openshift + hosts: localhost + gather_facts: false + connection: local + roles: + - role: ansible.kubernetes-modules + install_python_requirements: no + - role: ansible-asb-modules + - role: mongodb-apb-openshift + playbook_debug: true diff --git a/mongodb-apb/test.yml b/mongodb-apb/playbooks/test.yml similarity index 100% rename from mongodb-apb/test.yml rename to mongodb-apb/playbooks/test.yml diff --git a/mongodb-apb/provision.yml b/mongodb-apb/provision.yml deleted file mode 100644 index 2436382..0000000 --- a/mongodb-apb/provision.yml +++ /dev/null @@ -1,21 +0,0 @@ -- name: Deploy mongodb-apb to openshift - hosts: localhost - gather_facts: false - connection: local - vars: - - mongodb_admin_password: "{{ lookup('password', '/tmp/pass chars=ascii_letters,digits') }}" - - mongodb_password: "{{ lookup('password', '/tmp/pass chars=ascii_letters,digits') }}" - - mongodb_user: "admin" - - volume_capacity: "1Gi" - - mongodb_version: "3.2" - - state: present - - image: "centos/mongodb-{{ mongodb_version | replace('.', '') }}-centos7" - - _apb_plan_id: default - - database_service_name: mongodb - - mongodb_database: sampledb - roles: - - role: ansible.kubernetes-modules - install_python_requirements: no - - role: mongodb-apb-openshift - playbook_debug: false - diff --git a/mongodb-apb/roles/mongodb-apb-openshift/tasks/dev.yml b/mongodb-apb/roles/mongodb-apb-openshift/tasks/dev.yml index 2edd2f2..12c8a83 100644 --- a/mongodb-apb/roles/mongodb-apb-openshift/tasks/dev.yml +++ b/mongodb-apb/roles/mongodb-apb-openshift/tasks/dev.yml @@ -1,7 +1,7 @@ -- name: set development deployment config state to {{ state }} +- name: set development deployment config state to "{{ state }}" openshift_v1_deployment_config: name: mongodb - namespace: '{{ namespace }}' + namespace: "{{ namespace }}" labels: app: mongodb-apb service: mongodb @@ -22,14 +22,14 @@ containers: - env: - name: MONGODB_ADMIN_PASSWORD - value: '{{ mongodb_admin_password }}' + value: "{{ mongodb_admin_password }}" - name: MONGODB_PASSWORD - value: '{{ mongodb_password }}' + value: "{{ mongodb_password }}" - name: MONGODB_USER - value: '{{ mongodb_user }}' + value: "{{ mongodb_user }}" - name: MONGODB_DATABASE - value: '{{ mongodb_database }}' - image: '{{ image }}' + value: "{{ mongodb_database }}" + image: "{{ image }}" image_pull_policy: IfNotPresent liveness_probe: initial_delay_seconds: 30 diff --git a/mongodb-apb/roles/mongodb-apb-openshift/tasks/main.yml b/mongodb-apb/roles/mongodb-apb-openshift/tasks/main.yml index 3756c3c..3bebf24 100644 --- a/mongodb-apb/roles/mongodb-apb-openshift/tasks/main.yml +++ b/mongodb-apb/roles/mongodb-apb-openshift/tasks/main.yml @@ -1,4 +1,4 @@ -- name: set service state to {{ state }} +- name: "set service state to {{ state }}" k8s_v1_service: name: mongodb namespace: "{{ namespace }}" @@ -27,9 +27,6 @@ service: mongodb when: state == "absent" -- include: dev.yml - when: _apb_plan_id == "default" - - name: delete replication controller k8s_v1_replication_controller: name: mongodb-1 @@ -37,6 +34,12 @@ state: absent when: state == "absent" +- include: dev.yml + when: _apb_plan_id == "dev" + +- include: prod.yml + when: _apb_plan_id == "prod" + - name: Wait for mongodb to come up wait_for: port: 27017 @@ -44,13 +47,13 @@ timeout: 300 when: state == "present" -#- name: encode bind credentials -# asb_encode_binding: -# fields: -# DB_TYPE: mongodb -# DB_HOST: mongodb -# DB_PORT: "27017" -# DB_USER: "{{ mongodb_user }}" -# DB_PASSWORD: "{{ mongodb_password }}" -# DB_NAME: "{{ mongodb_database }}" -# when: state == "present" +- name: encode bind credentials + asb_encode_binding: + fields: + DB_TYPE: mongodb + DB_HOST: mongodb + DB_PORT: 27017 + DB_USER: "{{ mongodb_user }}" + DB_PASSWORD: "{{ mongodb_password }}" + DB_NAME: "{{ mongodb_database }}" + when: state == "present" diff --git a/mongodb-apb/roles/mongodb-apb-openshift/tasks/prod.yml b/mongodb-apb/roles/mongodb-apb-openshift/tasks/prod.yml new file mode 100644 index 0000000..9f0542b --- /dev/null +++ b/mongodb-apb/roles/mongodb-apb-openshift/tasks/prod.yml @@ -0,0 +1,73 @@ +- name: set volume claim state to {{ state }} + k8s_v1_persistent_volume_claim: + name: "{{ service_name }}" + namespace: "{{ namespace }}" + labels: + app: mongodb-apb + service: "{{ service_name }}" + access_modes: + - ReadWriteOnce + resources_requests: + storage: "{{ volume_size }}" + state: "{{ state }}" + +- name: set development deployment config state to "{{ state }}" + openshift_v1_deployment_config: + name: mongodb + namespace: "{{ namespace }}" + labels: + app: mongodb-apb + service: mongodb + replicas: 1 + selector: + app: mongodb-apb + service: mongodb + 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: mongodb-apb + service: mongodb + containers: + - env: + - name: MONGODB_ADMIN_PASSWORD + value: "{{ mongodb_admin_password }}" + - name: MONGODB_PASSWORD + value: "{{ mongodb_password }}" + - name: MONGODB_USER + value: "{{ mongodb_user }}" + - name: MONGODB_DATABASE + value: "{{ mongodb_database }}" + image: "{{ image }}" + image_pull_policy: IfNotPresent + liveness_probe: + initial_delay_seconds: 30 + tcp_socket: + port: 27017 + timeout_seconds: 1 + readiness_probe: + exec: + command: + - "/bin/sh" + - "-i" + - "-c" + - "mongo 127.0.0.1:27017/$MONGODB_DATABASE -u $MONGODB_USER -p $MONGODB_PASSWORD --eval=\"quit()\"" + initial_delay_seconds: 3 + timeout_seconds: 1 + name: mongodb + ports: + - container_port: 27017 + protocol: TCP + termination_message_path: /dev/termination-log + working_dir: / + dns_policy: ClusterFirst + restart_policy: Always + termination_grace_period_seconds: 30 + test: false + triggers: + - type: ConfigChange + state: "{{ state }}"