10 changed files with 142 additions and 0 deletions
@ -0,0 +1,26 @@ |
|||||
|
FROM centos:7 |
||||
|
|
||||
|
MAINTAINER Nicolas Masse <nmasse@redhat.com> |
||||
|
|
||||
|
LABEL io.k8s.display-name="Ansible role nmasse-itix.threescale-cicd" \ |
||||
|
io.k8s.description="Deploys an API to 3scale API Management." \ |
||||
|
io.openshift.tags="ansible,api,3scale" |
||||
|
|
||||
|
ARG GIT_REPOSITORY=https://github.com/nmasse-itix/threescale-cicd.git |
||||
|
ARG GIT_BRANCH=master |
||||
|
|
||||
|
RUN yum install -y centos-release-scl && \ |
||||
|
yum-config-manager --enable rhel-server-rhscl-7-rpms && \ |
||||
|
yum install -y ansible git python27-python-pip && \ |
||||
|
scl enable python27 "pip install --install-option='--install-purelib=/usr/lib/python2.7/site-packages/' jinja2" && \ |
||||
|
yum clean all && \ |
||||
|
rm -rf /var/cache/yum && \ |
||||
|
mkdir -p /opt/ansible/threescale-cicd && \ |
||||
|
git clone -b ${GIT_BRANCH} -- ${GIT_REPOSITORY} /opt/ansible/threescale-cicd && \ |
||||
|
cd /opt/ansible/threescale-cicd/support/docker && \ |
||||
|
ansible-playbook install.yaml |
||||
|
|
||||
|
WORKDIR /opt/ansible/threescale-cicd/support/docker |
||||
|
|
||||
|
ENTRYPOINT [ "/usr/bin/ansible-playbook", "deploy-api.yaml" ] |
||||
|
CMD [ ] |
||||
@ -0,0 +1 @@ |
|||||
|
../../ansible.cfg |
||||
@ -0,0 +1 @@ |
|||||
|
../jenkins/deploy-api.yaml |
||||
@ -0,0 +1,10 @@ |
|||||
|
|
||||
|
- name: Install the pre-requisites |
||||
|
hosts: localhost |
||||
|
gather_facts: no |
||||
|
vars: |
||||
|
ansible_connection: local |
||||
|
tasks: |
||||
|
- import_role: |
||||
|
name: 'nmasse-itix.threescale-cicd' |
||||
|
tasks_from: 'install_prerequisites' |
||||
@ -0,0 +1 @@ |
|||||
|
../../.. |
||||
@ -0,0 +1,26 @@ |
|||||
|
FROM openshift/origin-base:v3.11 |
||||
|
|
||||
|
MAINTAINER Nicolas Masse <nmasse@redhat.com> |
||||
|
|
||||
|
LABEL io.k8s.display-name="OpenShift Custom builder for Ansible role nmasse-itix.threescale-cicd" \ |
||||
|
io.k8s.description="Deploys an API to 3scale API Management." \ |
||||
|
io.openshift.tags="builder,3scale" |
||||
|
|
||||
|
ARG THREESCALE_CICD_GIT_REPOSITORY=https://github.com/nmasse-itix/threescale-cicd.git |
||||
|
ARG THREESCALE_CICD_GIT_BRANCH=master |
||||
|
|
||||
|
RUN yum install -y centos-release-scl && \ |
||||
|
yum-config-manager --enable rhel-server-rhscl-7-rpms && \ |
||||
|
yum install -y ansible git python27-python-pip && \ |
||||
|
scl enable python27 "pip install --install-option='--install-purelib=/usr/lib/python2.7/site-packages/' jinja2" && \ |
||||
|
yum clean all && \ |
||||
|
rm -rf /var/cache/yum && \ |
||||
|
mkdir -p /opt/ansible/threescale-cicd && \ |
||||
|
git clone -b ${THREESCALE_CICD_GIT_BRANCH} -- ${THREESCALE_CICD_GIT_REPOSITORY} /opt/ansible/threescale-cicd && \ |
||||
|
cd /opt/ansible/threescale-cicd/support/openshift && \ |
||||
|
ansible-playbook install.yaml |
||||
|
|
||||
|
WORKDIR /opt/ansible/threescale-cicd/support/openshift |
||||
|
|
||||
|
ENTRYPOINT [ "/usr/bin/ansible-playbook", "deploy-api.yaml" ] |
||||
|
CMD [ ] |
||||
@ -0,0 +1 @@ |
|||||
|
../../ansible.cfg |
||||
@ -0,0 +1,74 @@ |
|||||
|
--- |
||||
|
|
||||
|
- name: Prepare the Ansible inventory |
||||
|
hosts: localhost |
||||
|
gather_facts: no |
||||
|
vars: |
||||
|
threescale_portal_hostname: 'lookup(''file'', ''/tmp/secrets/hostname'')' |
||||
|
threescale_cicd_access_token: 'lookup(''file'', ''/tmp/secrets/access_token'')' |
||||
|
tasks: |
||||
|
- assert: |
||||
|
that: threescale_portal_hostname is defined |
||||
|
msg: > |
||||
|
Please pass the hostname of your 3scale Admin Portal in "hostname" key of the |
||||
|
"3scale-admin-portal" secret. |
||||
|
|
||||
|
- assert: |
||||
|
that: threescale_cicd_access_token is defined |
||||
|
msg: > |
||||
|
Please pass the access token of your 3scale Admin Portal in "access_token" key of the |
||||
|
"3scale-admin-portal" secret. |
||||
|
|
||||
|
# Generate dynamically a one host inventory |
||||
|
- add_host: |
||||
|
hostname: '{{ threescale_portal_hostname }}' |
||||
|
groups: |
||||
|
- threescale |
||||
|
threescale_cicd_access_token: '{{ threescale_cicd_access_token }}' |
||||
|
|
||||
|
- name: Deploy an API to 3scale |
||||
|
hosts: threescale |
||||
|
gather_facts: no |
||||
|
vars: |
||||
|
build: '{{ lookup(''env'', ''BUILD'')|from_json }}' |
||||
|
git_repository: '{{ build.spec.source.git.uri }}' |
||||
|
git_context_dir: '{{ build.spec.source.git.contextDir|default('''') }}' |
||||
|
git_ref: '{{ build.spec.source.git.ref|default(''master'') }}' |
||||
|
ansible_connection: local |
||||
|
parameter_whitelist: |
||||
|
- threescale_cicd_openapi_file |
||||
|
- threescale_cicd_openapi_file_format |
||||
|
- threescale_cicd_api_system_name |
||||
|
- threescale_cicd_api_base_system_name |
||||
|
- threescale_cicd_wildcard_domain |
||||
|
- threescale_cicd_api_basepath |
||||
|
- threescale_cicd_api_backend_hostname |
||||
|
- threescale_cicd_api_backend_scheme |
||||
|
- threescale_cicd_private_base_url |
||||
|
- threescale_cicd_apicast_policies_cors |
||||
|
- threescale_cicd_openapi_smoketest_operation |
||||
|
- threescale_cicd_api_environment_name |
||||
|
- threescale_cicd_validate_openapi |
||||
|
- threescale_cicd_apicast_sandbox_endpoint |
||||
|
- threescale_cicd_apicast_production_endpoint |
||||
|
threescale_cicd_sso_issuer_endpoint: 'lookup(''file'', ''/tmp/secrets/sso_issuer_endpoint'')' |
||||
|
pre_tasks: |
||||
|
|
||||
|
- name: Clone the git repo containing the API Definition |
||||
|
git: |
||||
|
repo: '{{ git_repository }}' |
||||
|
dest: '{{ playbook_dir }}/api' |
||||
|
version: '{{ git_ref }}' |
||||
|
|
||||
|
- name: Accept threescale_cicd_* variables from environment variables |
||||
|
set_fact: |
||||
|
'{{ item|lower }}': '{{ lookup(''env'', item|upper) }}' |
||||
|
with_items: '{{ parameter_whitelist }}' |
||||
|
when: 'lookup(''env'', item|upper)|length > 0' |
||||
|
|
||||
|
- name: Add the contextDir to the OpenAPI file path |
||||
|
set_fact: |
||||
|
threescale_cicd_openapi_file: '{{ playbook_dir }}/api/{{ git_context_dir }}/{{ threescale_cicd_openapi_file }}' |
||||
|
|
||||
|
roles: |
||||
|
- nmasse-itix.threescale-cicd |
||||
@ -0,0 +1 @@ |
|||||
|
../docker/install.yaml |
||||
@ -0,0 +1 @@ |
|||||
|
../../.. |
||||
Loading…
Reference in new issue