diff options
| author | Scott Dodson <sdodson@redhat.com> | 2017-06-26 09:08:54 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-06-26 09:08:54 -0400 | 
| commit | b64cfec4ebf9b95a8627de23bc8a15bd77fc1eb7 (patch) | |
| tree | 3f6794b3856ce4ddd31709c96cb4da09861d3f90 /roles/ansible_service_broker | |
| parent | 88690667342bca0e7df75bc90bb1846b63d6d78a (diff) | |
| parent | c299b9f199cedadf4a102ea9aaa4e33e9de6b301 (diff) | |
| download | openshift-b64cfec4ebf9b95a8627de23bc8a15bd77fc1eb7.tar.gz openshift-b64cfec4ebf9b95a8627de23bc8a15bd77fc1eb7.tar.bz2 openshift-b64cfec4ebf9b95a8627de23bc8a15bd77fc1eb7.tar.xz openshift-b64cfec4ebf9b95a8627de23bc8a15bd77fc1eb7.zip | |
Merge pull request #4195 from ewolinetz/service_catalog
Creation of service_catalog and broker roles
Diffstat (limited to 'roles/ansible_service_broker')
| -rw-r--r-- | roles/ansible_service_broker/defaults/main.yml | 6 | ||||
| -rw-r--r-- | roles/ansible_service_broker/meta/main.yml | 15 | ||||
| -rw-r--r-- | roles/ansible_service_broker/tasks/install.yml | 268 | ||||
| -rw-r--r-- | roles/ansible_service_broker/tasks/main.yml | 8 | ||||
| -rw-r--r-- | roles/ansible_service_broker/tasks/remove.yml | 65 | ||||
| -rw-r--r-- | roles/ansible_service_broker/tasks/validate_facts.yml | 15 | ||||
| -rw-r--r-- | roles/ansible_service_broker/vars/default_images.yml | 13 | ||||
| -rw-r--r-- | roles/ansible_service_broker/vars/openshift-enterprise.yml | 13 | 
8 files changed, 403 insertions, 0 deletions
| diff --git a/roles/ansible_service_broker/defaults/main.yml b/roles/ansible_service_broker/defaults/main.yml new file mode 100644 index 000000000..4a7252679 --- /dev/null +++ b/roles/ansible_service_broker/defaults/main.yml @@ -0,0 +1,6 @@ +--- + +ansible_service_broker_remove: false +ansible_service_broker_log_level: info +# Recommended you do not enable this for now +ansible_service_broker_launch_apb_on_bind: false diff --git a/roles/ansible_service_broker/meta/main.yml b/roles/ansible_service_broker/meta/main.yml new file mode 100644 index 000000000..ec4aafb79 --- /dev/null +++ b/roles/ansible_service_broker/meta/main.yml @@ -0,0 +1,15 @@ +--- +galaxy_info: +  author: Fabian von Feilitzsch +  description: OpenShift Ansible Service Broker +  company: Red Hat, Inc. +  license: Apache License, Version 2.0 +  min_ansible_version: 2.1 +  platforms: +  - name: EL +    versions: +    - 7 +  categories: +  - cloud +dependencies: +- role: lib_openshift diff --git a/roles/ansible_service_broker/tasks/install.yml b/roles/ansible_service_broker/tasks/install.yml new file mode 100644 index 000000000..b48583fd4 --- /dev/null +++ b/roles/ansible_service_broker/tasks/install.yml @@ -0,0 +1,268 @@ +--- + +# Fact setting and validations +- name: Set default image variables based on deployment type +  include_vars: "{{ item }}" +  with_first_found: +    - "{{ openshift_deployment_type | default(deployment_type) }}.yml" +    - "default_images.yml" + +- name: set ansible_service_broker facts +  set_fact: +    ansible_service_broker_image_prefix: "{{ ansible_service_broker_image_prefix | default(__ansible_service_broker_image_prefix) }}" +    ansible_service_broker_image_tag: "{{ ansible_service_broker_image_tag | default(__ansible_service_broker_image_tag) }}" + +    ansible_service_broker_etcd_image_prefix: "{{ ansible_service_broker_etcd_image_prefix | default(__ansible_service_broker_etcd_image_prefix) }}" +    ansible_service_broker_etcd_image_tag: "{{ ansible_service_broker_etcd_image_tag | default(__ansible_service_broker_etcd_image_tag) }}" + +    ansible_service_broker_registry_type: "{{ ansible_service_broker_registry_type | default(__ansible_service_broker_registry_type) }}" +    ansible_service_broker_registry_url: "{{ ansible_service_broker_registry_url | default(__ansible_service_broker_registry_url) }}" +    ansible_service_broker_registry_user: "{{ ansible_service_broker_registry_user | default(__ansible_service_broker_registry_user) }}" +    ansible_service_broker_registry_password: "{{ ansible_service_broker_registry_password | default(__ansible_service_broker_registry_password) }}" +    ansible_service_broker_registry_organization: "{{ ansible_service_broker_registry_organization | default(__ansible_service_broker_registry_organization) }}" + +- name: set ansible-service-broker image facts using set prefix and tag +  set_fact: +    ansible_service_broker_image: "{{ ansible_service_broker_image_prefix }}ansible-service-broker:{{ ansible_service_broker_image_tag }}" +    ansible_service_broker_etcd_image: "{{ ansible_service_broker_etcd_image_prefix }}etcd:{{ ansible_service_broker_etcd_image_tag }}" + +- include: validate_facts.yml + + +# Deployment of ansible-service-broker starts here +- name: create openshift-ansible-service-broker project +  oc_project: +    name: openshift-ansible-service-broker +    state: present + +- name: create ansible-service-broker serviceaccount +  oc_serviceaccount: +    name: asb +    namespace: openshift-ansible-service-broker +    state: present + +- name: create ansible-service-broker service +  oc_service: +    name: asb +    namespace: openshift-ansible-service-broker +    state: present +    labels: +      app: ansible-service-broker +      service: asb +    ports: +      - name: port-1338 +        port: 1338 +    selector: +      app: ansible-service-broker +      service: asb + +- name: create etcd service +  oc_service: +    name: etcd +    namespace: openshift-ansible-service-broker +    state: present +    ports: +      - name: etcd-advertise +        port: 2379 +    selector: +      app: ansible-service-broker +      service: etcd + +- name: create route for ansible-service-broker service +  oc_route: +    name: asb-1338 +    namespace: openshift-ansible-service-broker +    state: present +    service_name: asb +    port: 1338 +  register: asb_route_out + +- name: get ansible-service-broker route name +  set_fact: +    ansible_service_broker_route: "{{ asb_route_out.results.results[0].spec.host }}" + +- name: create persistent volume claim for etcd +  oc_obj: +    name: etcd +    namespace: openshift-ansible-service-broker +    state: present +    kind: PersistentVolumeClaim +    content: +      path: /tmp/dcout +      data: +        apiVersion: v1 +        kind: PersistentVolumeClaim +        metadata: +          name: etcd +          namespace: openshift-ansible-service-broker +        spec: +          accessModes: +            - ReadWriteOnce +          resources: +            requests: +              storage: 1Gi + +- name: create etcd deployment +  oc_obj: +    name: etcd +    namespace: openshift-ansible-service-broker +    state: present +    kind: Deployment +    content: +      path: /tmp/dcout +      data: +        apiVersion: extensions/v1beta1 +        kind: Deployment +        metadata: +          name: etcd +          namespace: openshift-ansible-service-broker +          labels: +            app: ansible-service-broker +            service: etcd +        spec: +          selector: +            matchLabels: +              app: ansible-service-broker +              service: etcd +          strategy: +            type: RollingUpdate +            rollingUpdate: +              maxSurge: 1 +              maxUnavailable: 1 +          replicas: 1 +          template: +            metadata: +              labels: +                app: ansible-service-broker +                service: etcd +            spec: +              restartPolicy: Always +              containers: +                - image: "{{ ansible_service_broker_etcd_image }}" +                  name: etcd +                  imagePullPolicy: IfNotPresent +                  terminationMessagePath: /tmp/termination-log +                  workingDir: /etcd +                  args: +                    - /usr/local/bin/etcd +                    - --data-dir=/data +                    - --listen-client-urls="http://0.0.0.0:2379" +                    - --advertise-client-urls="http://0.0.0.0:2379" +                  ports: +                    - containerPort: 2379 +                      protocol: TCP +                  env: +                    - name: ETCDCTL_API +                      value: "3" +                  volumeMounts: +                    - mountPath: /data +                      name: etcd +              volumes: +                - name: etcd +                  persistentVolumeClaim: +                    claimName: etcd + +- name: create ansible-service-broker deployment +  oc_obj: +    name: asb +    namespace: openshift-ansible-service-broker +    state: present +    kind: Deployment +    content: +      path: /tmp/dcout +      data: +        apiVersion: extensions/v1beta1 +        kind: Deployment +        metadata: +          name: asb +          namespace: openshift-ansible-service-broker +          labels: +            app: openshift-ansible-service-broker +            service: asb +        spec: +          strategy: +            type: Recreate +          replicas: 1 +          template: +            metadata: +              labels: +                app: openshift-ansible-service-broker +                service: asb +            spec: +              serviceAccount: asb +              restartPolicy: Always +              containers: +                - image: "{{ ansible_service_broker_image }}" +                  name: asb +                  imagePullPolicy: IfNotPresent +                  volumeMounts: +                    - name: config-volume +                      mountPath: /etc/ansible-service-broker +                  ports: +                    - containerPort: 1338 +                      protocol: TCP +                  env: +                    - name: BROKER_CONFIG +                      value: /etc/ansible-service-broker/config.yaml +                  terminationMessagePath: /tmp/termination-log +              volumes: +                - name: config-volume +                  configMap: +                    name: broker-config +                    items: +                      - key: broker-config +                        path: config.yaml + + +# TODO: saw a oc_configmap in the library, but didn't understand how to get it to do the following: +- name: Create config map for ansible-service-broker +  oc_obj: +    name: broker-config +    namespace: openshift-ansible-service-broker +    state: present +    kind: ConfigMap +    content: +      path: /tmp/cmout +      data: +        apiVersion: v1 +        kind: ConfigMap +        metadata: +          name: broker-config +          namespace: openshift-ansible-service-broker +          labels: +            app: ansible-service-broker +        data: +          broker-config: | +            registry: +              name: "{{ ansible_service_broker_registry_type }}" +              url:  "{{ ansible_service_broker_registry_url }}" +              user: "{{ ansible_service_broker_registry_user }}" +              pass: "{{ ansible_service_broker_registry_password }}" +              org:  "{{ ansible_service_broker_registry_organization }}" +            dao: +              etcd_host: etcd +              etcd_port: 2379 +            log: +              logfile: /var/log/ansible-service-broker/asb.log +              stdout: true +              level: "{{ ansible_service_broker_log_level }}" +              color: true +            openshift: {} +            broker: +              devbroker: false +              launchapbonbind: "{{ ansible_service_broker_launch_apb_on_bind }}" + +- name: Create the Broker resource in the catalog +  oc_obj: +    name: ansible-service-broker +    state: present +    kind: Broker +    content: +      path: /tmp/brokerout +      data: +        apiVersion: servicecatalog.k8s.io/v1alpha1 +        kind: Broker +        metadata: +          name: ansible-service-broker +        spec: +          url: http://{{ ansible_service_broker_route }} diff --git a/roles/ansible_service_broker/tasks/main.yml b/roles/ansible_service_broker/tasks/main.yml new file mode 100644 index 000000000..b46ce8233 --- /dev/null +++ b/roles/ansible_service_broker/tasks/main.yml @@ -0,0 +1,8 @@ +--- +# do any asserts here + +- include: install.yml +  when: not  ansible_service_broker_remove|default(false) | bool + +- include: remove.yml +  when: ansible_service_broker_remove|default(false) | bool diff --git a/roles/ansible_service_broker/tasks/remove.yml b/roles/ansible_service_broker/tasks/remove.yml new file mode 100644 index 000000000..2519f9f4c --- /dev/null +++ b/roles/ansible_service_broker/tasks/remove.yml @@ -0,0 +1,65 @@ +--- + +- name: remove openshift-ansible-service-broker project +  oc_project: +    name: openshift-ansible-service-broker +    state: absent + +- name: remove ansible-service-broker serviceaccount +  oc_serviceaccount: +    name: asb +    namespace: openshift-ansible-service-broker +    state: absent + +- name: remove ansible-service-broker service +  oc_service: +    name: asb +    namespace: openshift-ansible-service-broker +    state: absent + +- name: remove etcd service +  oc_service: +    name: etcd +    namespace: openshift-ansible-service-broker +    state: absent + +- name: remove route for ansible-service-broker service +  oc_route: +    name: asb-1338 +    namespace: openshift-ansible-service-broker +    state: absent + +- name: remove persistent volume claim for etcd +  oc_pvc: +    name: etcd +    namespace: openshift-ansible-service-broker +    state: absent + +- name: remove etcd deployment +  oc_obj: +    name: etcd +    namespace: openshift-ansible-service-broker +    state: absent +    kind: Deployment + +- name: remove ansible-service-broker deployment +  oc_obj: +    name: asb +    namespace: openshift-ansible-service-broker +    state: absent +    kind: Deployment + +# TODO: saw a oc_configmap in the library, but didn't understand how to get it to do the following: +- name: remove config map for ansible-service-broker +  oc_obj: +    name: broker-config +    namespace: openshift-ansible-service-broker +    state: absent +    kind: ConfigMap + +# TODO: Is this going to work? +- name: remove broker object from the catalog +  oc_obj: +    name: ansible-service-broker +    state: absent +    kind: Broker diff --git a/roles/ansible_service_broker/tasks/validate_facts.yml b/roles/ansible_service_broker/tasks/validate_facts.yml new file mode 100644 index 000000000..604d24e1d --- /dev/null +++ b/roles/ansible_service_broker/tasks/validate_facts.yml @@ -0,0 +1,15 @@ +--- +- name: validate Dockerhub registry settings +  fail: msg="To use the dockerhub registry, you must provide the ansible_service_broker_registry_user. ansible_service_broker_registry_password, and ansible_service_broker_registry_organization parameters" +  when: +    - ansible_service_broker_registry_type == 'dockerhub' +    - not (ansible_service_broker_registry_user and +        ansible_service_broker_registry_password and +        ansible_service_broker_registry_organization) + + +- name: validate RHCC registry settings +  fail: msg="To use the Red Hat Container Catalog registry, you must provide the ansible_service_broker_registry_url" +  when: +    - ansible_service_broker_registry_type == 'rhcc' +    - not ansible_service_broker_registry_url diff --git a/roles/ansible_service_broker/vars/default_images.yml b/roles/ansible_service_broker/vars/default_images.yml new file mode 100644 index 000000000..b0b3835e3 --- /dev/null +++ b/roles/ansible_service_broker/vars/default_images.yml @@ -0,0 +1,13 @@ +--- + +__ansible_service_broker_image_prefix: ansibleplaybookbundle/ +__ansible_service_broker_image_tag: latest + +__ansible_service_broker_etcd_image_prefix: quay.io/coreos/ +__ansible_service_broker_etcd_image_tag: latest + +__ansible_service_broker_registry_type: dockerhub +__ansible_service_broker_registry_url: null +__ansible_service_broker_registry_user: null +__ansible_service_broker_registry_password: null +__ansible_service_broker_registry_organization: null diff --git a/roles/ansible_service_broker/vars/openshift-enterprise.yml b/roles/ansible_service_broker/vars/openshift-enterprise.yml new file mode 100644 index 000000000..a6d999647 --- /dev/null +++ b/roles/ansible_service_broker/vars/openshift-enterprise.yml @@ -0,0 +1,13 @@ +--- + +__ansible_service_broker_image_prefix: openshift3/ +__ansible_service_broker_image_tag: latest + +__ansible_service_broker_etcd_image_prefix: rhel7/ +__ansible_service_broker_etcd_image_tag: latest + +__ansible_service_broker_registry_type: rhcc +__ansible_service_broker_registry_url: "https://registry.access.redhat.com" +__ansible_service_broker_registry_user: null +__ansible_service_broker_registry_password: null +__ansible_service_broker_registry_organization: null | 
