From 32f870f10eaf441efa4acd1ddf460c4eac72a781 Mon Sep 17 00:00:00 2001 From: Jason Montleon Date: Mon, 16 Apr 2018 17:42:16 -0400 Subject: [PATCH] initial commit --- Dockerfile | 28 +++++++++++++++++++ Makefile | 20 ++++++++++++++ README.md | 1 - apb.yml | 40 +++++++++++++++++++++++++++ playbooks/deprovision.yml | 12 ++++++++ playbooks/provision.yml | 12 ++++++++ roles/vnc-desktop-apb/tasks/main.yml | 41 ++++++++++++++++++++++++++++ 7 files changed, 153 insertions(+), 1 deletion(-) create mode 100644 Dockerfile create mode 100644 Makefile delete mode 100644 README.md create mode 100644 apb.yml create mode 100644 playbooks/deprovision.yml create mode 100644 playbooks/provision.yml create mode 100644 roles/vnc-desktop-apb/tasks/main.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..43f325d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,28 @@ +FROM ansibleplaybookbundle/apb-base + +LABEL "com.redhat.apb.spec"=\ +"dmVyc2lvbjogMS4wCm5hbWU6IHZuYy1kZXNrdG9wLWFwYgpkZXNjcmlwdGlvbjogVGhpcyBpcyBh\ +IHNhbXBsZSBhcHBsaWNhdGlvbiBnZW5lcmF0ZWQgYnkgYXBiIGluaXQKYmluZGFibGU6IEZhbHNl\ +CmFzeW5jOiBvcHRpb25hbAptZXRhZGF0YToKICBkaXNwbGF5TmFtZTogIlZOQyBEZXNrdG9wIChB\ +UEIpIgogIGRlcGVuZGVuY2llczoKICAtIGRvY2tlci5pby9hbnNpYmxlcGxheWJvb2tidW5kbGUv\ +dm5jLWRlc2t0b3A6ZjI4CiAgLSBkb2NrZXIuaW8vYW5zaWJsZXBsYXlib29rYnVuZGxlL3ZuYy1k\ +ZXNrdG9wOmYyNwpwbGFuczoKICAtIG5hbWU6IGYyOAogICAgZGVzY3JpcHRpb246IFJ1biBhIGRl\ +c2t0b3Agb2YgeW91ciBjaG9pY2Ugb24gRmVkb3JhIDI4CiAgICBmcmVlOiBUcnVlCiAgICBtZXRh\ +ZGF0YToge30KICAgIHBhcmFtZXRlcnM6CiAgICAtIG5hbWU6IHZuY3Bhc3MKICAgICAgdGl0bGU6\ +IFZOQyBQYXNzd29yZAogICAgICB0eXBlOiBzdHJpbmcKICAgICAgcmVxdWlyZWQ6IHRydWUKICAg\ +IC0gbmFtZTogZGUKICAgICAgdGl0bGU6IERlc2t0b3AgRW52aXJvbm1lbnQKICAgICAgdHlwZTog\ +ZW51bQogICAgICBlbnVtOiBbJ0Npbm5hbW9uJywgJ2Z2d20nLCAnaTMnLCAnS0RFJywgJ0xYREUn\ +LCAnTFhRdCcsICdNQVRFJywgJ1N1Z2FyJywgJ3R3bScsICdYZmNlJ10KICAgICAgZGVmYXVsdDog\ +J1hmY2UnCiAgLSBuYW1lOiBmMjcKICAgIGRlc2NyaXB0aW9uOiBSdW4gYSBEZXNrdG9wIG9mIHlv\ +dXIgY2hvaWNlIG9uIEZlZG9yYSAyNyAKICAgIGZyZWU6IFRydWUKICAgIG1ldGFkYXRhOiB7fQog\ +ICAgcGFyYW1ldGVyczogCiAgICAtIG5hbWU6IHZuY3Bhc3MKICAgICAgdGl0bGU6IFZOQyBQYXNz\ +d29yZAogICAgICB0eXBlOiBzdHJpbmcKICAgICAgcmVxdWlyZWQ6IHRydWUKICAgIC0gbmFtZTog\ +ZGUKICAgICAgdGl0bGU6IERlc2t0b3AgRW52aXJvbm1lbnQKICAgICAgdHlwZTogZW51bQogICAg\ +ICBlbnVtOiBbJ0Npbm5hbW9uJywgJ2Z2d20nLCAnaTMnLCAnS0RFJywgJ0xYREUnLCAnTFhRdCcs\ +ICdNQVRFJywgJ1N1Z2FyJywgJ3R3bScsICdYZmNlJ10KICAgICAgZGVmYXVsdDogJ1hmY2UnCgo=" + + +COPY playbooks /opt/apb/actions +COPY roles /opt/ansible/roles +RUN chmod -R g=u /opt/{ansible,apb} +USER apb diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..900944d --- /dev/null +++ b/Makefile @@ -0,0 +1,20 @@ +DOCKERHOST = docker.io +DOCKERORG = vnc-desktop-apb +IMAGENAME = vnc-desktop +TAG = latest +USER=$(shell id -u) +PWD=$(shell pwd) +build_and_push: apb_build docker_push apb_push + +.PHONY: apb_build +apb_build: + docker run --rm --privileged -v $(PWD):/mnt:z -v $(HOME)/.kube:/.kube -v /var/run/docker.sock:/var/run/docker.sock -u $(USER) docker.io/ansibleplaybookbundle/apb-tools:latest prepare + docker build -t $(DOCKERHOST)/$(DOCKERORG)/$(IMAGENAME):$(TAG) . + +.PHONY: docker_push +docker_push: + docker push $(DOCKERHOST)/$(DOCKERORG)/$(IMAGENAME):$(TAG) + +.PHONY: apb_push +apb_push: + docker run --rm --privileged -v $(PWD):/mnt:z -v $(HOME)/.kube:/.kube -v /var/run/docker.sock:/var/run/docker.sock -u $(USER) docker.io/ansibleplaybookbundle/apb-tools:latest push diff --git a/README.md b/README.md deleted file mode 100644 index 54856b8..0000000 --- a/README.md +++ /dev/null @@ -1 +0,0 @@ -# vnc-desktop-apb diff --git a/apb.yml b/apb.yml new file mode 100644 index 0000000..28f52c9 --- /dev/null +++ b/apb.yml @@ -0,0 +1,40 @@ +version: 1.0 +name: vnc-desktop-apb +description: This is a sample application generated by apb init +bindable: False +async: optional +metadata: + displayName: "VNC Desktop (APB)" + dependencies: + - docker.io/ansibleplaybookbundle/vnc-desktop:f28 + - docker.io/ansibleplaybookbundle/vnc-desktop:f27 +plans: + - name: f28 + description: Run a desktop of your choice on Fedora 28 + free: True + metadata: {} + parameters: + - name: vncpass + title: VNC Password + type: string + required: true + - name: de + title: Desktop Environment + type: enum + enum: ['Cinnamon', 'fvwm', 'i3', 'KDE', 'LXDE', 'LXQt', 'MATE', 'Sugar', 'twm', 'Xfce'] + default: 'Xfce' + - name: f27 + description: Run a Desktop of your choice on Fedora 27 + free: True + metadata: {} + parameters: + - name: vncpass + title: VNC Password + type: string + required: true + - name: de + title: Desktop Environment + type: enum + enum: ['Cinnamon', 'fvwm', 'i3', 'KDE', 'LXDE', 'LXQt', 'MATE', 'Sugar', 'twm', 'Xfce'] + default: 'Xfce' + diff --git a/playbooks/deprovision.yml b/playbooks/deprovision.yml new file mode 100644 index 0000000..739ca0c --- /dev/null +++ b/playbooks/deprovision.yml @@ -0,0 +1,12 @@ +- name: vnc-desktop-apb playbook to deprovision the application + hosts: localhost + vars: + state: absent + gather_facts: false + connection: local + roles: + - role: ansible.kubernetes-modules + install_python_requirements: no + - role: ansibleplaybookbundle.asb-modules + - role: vnc-desktop-apb + playbook_debug: false diff --git a/playbooks/provision.yml b/playbooks/provision.yml new file mode 100644 index 0000000..ed58adb --- /dev/null +++ b/playbooks/provision.yml @@ -0,0 +1,12 @@ +- name: vnc-desktop-apb playbook to provision the application + hosts: localhost + vars: + state: present + gather_facts: false + connection: local + roles: + - role: ansible.kubernetes-modules + install_python_requirements: no + - role: ansibleplaybookbundle.asb-modules + - role: vnc-desktop-apb + playbook_debug: false diff --git a/roles/vnc-desktop-apb/tasks/main.yml b/roles/vnc-desktop-apb/tasks/main.yml new file mode 100644 index 0000000..89a10bc --- /dev/null +++ b/roles/vnc-desktop-apb/tasks/main.yml @@ -0,0 +1,41 @@ +- name: process deployment config + openshift_v1_deployment_config: + name: vnc-desktop + state: '{{ state }}' + namespace: '{{ namespace }}' + labels: + app: vnc-desktop + service: vnc-desktop + replicas: 1 + selector: + app: vnc-desktop + service: vnc-desktop + spec_template_metadata_labels: + app: vnc-desktop + service: vnc-desktop + containers: + - env: + - name: VNCPASS + value: "{{ vncpass }}" + - name: DE + value: "{{ de }}" + image: docker.io/ansibleplaybookbundle/vnc-desktop:{{ _apb_plan_id }} + name: vnc-desktop + ports: + - container_port: 5901 + protocol: TCP + +- name: process vnc-desktop service + k8s_v1_service: + name: vnc-desktop + namespace: '{{ namespace }}' + labels: + app: vnc-desktop + service: vnc-desktop + selector: + app: vnc-desktop + service: vnc-desktop + ports: + - name: vnc + port: 5901 + target_port: 5901