From 9427cb9e05b2027ced76a66302c30ed1f3f828e4 Mon Sep 17 00:00:00 2001 From: Adrien Reslinger Date: Fri, 5 Oct 2018 16:37:45 +0200 Subject: [PATCH] Initial release --- README.md | 1 + defaults/main.yml | 4 ++ meta/main.yml | 7 ++ tasks/main.yml | 28 ++++++++ templates/scope-clusterrole.yaml.j2 | 79 ++++++++++++++++++++++ templates/scope-clusterrolebinding.yaml.j2 | 23 +++++++ templates/scope-ds.yaml.j2 | 76 +++++++++++++++++++++ templates/scope-sa.yaml.j2 | 16 +++++ templates/scope-svc.yaml.j2 | 30 ++++++++ templates/scope.yaml.j2 | 42 ++++++++++++ templates/weave_ingress.yaml.j2 | 20 ++++++ vars/main.yml | 1 + 12 files changed, 327 insertions(+) create mode 100644 README.md create mode 100644 defaults/main.yml create mode 100644 meta/main.yml create mode 100644 tasks/main.yml create mode 100644 templates/scope-clusterrole.yaml.j2 create mode 100644 templates/scope-clusterrolebinding.yaml.j2 create mode 100644 templates/scope-ds.yaml.j2 create mode 100644 templates/scope-sa.yaml.j2 create mode 100644 templates/scope-svc.yaml.j2 create mode 100644 templates/scope.yaml.j2 create mode 100644 templates/weave_ingress.yaml.j2 create mode 100644 vars/main.yml diff --git a/README.md b/README.md new file mode 100644 index 0000000..4362c3d --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +This repo is deploy weave scope with ansible. diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..192c1cf --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,4 @@ +my_context: minikube +ingress_domain: "local.dataminem.net" + +scope_version: 1.9.1 diff --git a/meta/main.yml b/meta/main.yml new file mode 100644 index 0000000..a5de922 --- /dev/null +++ b/meta/main.yml @@ -0,0 +1,7 @@ +galaxy_info: + author: Adrien Reslinger + description: Install weave scope to a cluster + company: Flaminem + min_ansible_version: 2.6 + galaxy_tags: [] + diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..e6dd53c --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,28 @@ +- debug: var=my_context + tags: prom + +- name: Weave setup + block: + - name: namespace + k8s: + state: present + name: weave + api_version: v1 + kind: Namespace + + + - name: Weave Scope files + k8s: + state: present + context: "{{ my_context }}" + resource_definition: "{{ lookup('template', item) | from_yaml }}" + with_items: + - scope-clusterrolebinding.yaml.j2 + - scope-clusterrole.yaml.j2 + - scope-sa.yaml.j2 + - scope-svc.yaml.j2 + - scope-ds.yaml.j2 + - scope.yaml.j2 + - weave_ingress.yaml.j2 + tags: weave + diff --git a/templates/scope-clusterrole.yaml.j2 b/templates/scope-clusterrole.yaml.j2 new file mode 100644 index 0000000..3690151 --- /dev/null +++ b/templates/scope-clusterrole.yaml.j2 @@ -0,0 +1,79 @@ +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + name: weave-scope + annotations: + cloud.weave.works/launcher-info: |- + { + "original-request": { + "url": "/k8s/v1.10/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxMSIsIEdpdFZlcnNpb246InYxLjExLjIiLCBHaXRDb21taXQ6ImJiOWZmYjE2NTRkNGE3MjliYjRjZWMxOGZmMDg4ZWFjYzE1M2MyMzkiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE4LTA4LTA3VDIzOjE3OjI4WiIsIEdvVmVyc2lvbjoiZ28xLjEwLjMiLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQpTZXJ2ZXIgVmVyc2lvbjogdmVyc2lvbi5JbmZve01ham9yOiIxIiwgTWlub3I6IjExIiwgR2l0VmVyc2lvbjoidjEuMTEuMSIsIEdpdENvbW1pdDoiYjFiMjk5NzgyNzBkYzIyZmVjYzU5MmFjNTVkOTAzMzUwNDU0MzEwYSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMTgtMDctMTdUMTg6NDM6MjZaIiwgR29WZXJzaW9uOiJnbzEuMTAuMyIsIENvbXBpbGVyOiJnYyIsIFBsYXRmb3JtOiJsaW51eC9hbWQ2NCJ9Cg==", + "date": "Tue Sep 18 2018 08:36:39 GMT+0000 (UTC)" + }, + "email-address": "support@weave.works" + } + labels: + name: weave-scope +rules: + - apiGroups: + - '' + resources: + - pods + verbs: + - get + - list + - watch + - delete + - apiGroups: + - '' + resources: + - pods/log + - services + - nodes + - namespaces + - persistentvolumes + - persistentvolumeclaims + verbs: + - get + - list + - watch + - apiGroups: + - apps + resources: + - statefulsets + verbs: + - get + - list + - watch + - apiGroups: + - batch + resources: + - cronjobs + - jobs + verbs: + - get + - list + - watch + - apiGroups: + - extensions + resources: + - deployments + - daemonsets + verbs: + - get + - list + - watch + - apiGroups: + - extensions + resources: + - deployments/scale + verbs: + - get + - update + - apiGroups: + - storage.k8s.io + resources: + - storageclasses + verbs: + - get + - list + - watch diff --git a/templates/scope-clusterrolebinding.yaml.j2 b/templates/scope-clusterrolebinding.yaml.j2 new file mode 100644 index 0000000..cc81c21 --- /dev/null +++ b/templates/scope-clusterrolebinding.yaml.j2 @@ -0,0 +1,23 @@ +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + name: weave-scope + annotations: + cloud.weave.works/launcher-info: |- + { + "original-request": { + "url": "/k8s/v1.10/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxMSIsIEdpdFZlcnNpb246InYxLjExLjIiLCBHaXRDb21taXQ6ImJiOWZmYjE2NTRkNGE3MjliYjRjZWMxOGZmMDg4ZWFjYzE1M2MyMzkiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE4LTA4LTA3VDIzOjE3OjI4WiIsIEdvVmVyc2lvbjoiZ28xLjEwLjMiLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQpTZXJ2ZXIgVmVyc2lvbjogdmVyc2lvbi5JbmZve01ham9yOiIxIiwgTWlub3I6IjExIiwgR2l0VmVyc2lvbjoidjEuMTEuMSIsIEdpdENvbW1pdDoiYjFiMjk5NzgyNzBkYzIyZmVjYzU5MmFjNTVkOTAzMzUwNDU0MzEwYSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMTgtMDctMTdUMTg6NDM6MjZaIiwgR29WZXJzaW9uOiJnbzEuMTAuMyIsIENvbXBpbGVyOiJnYyIsIFBsYXRmb3JtOiJsaW51eC9hbWQ2NCJ9Cg==", + "date": "Tue Sep 18 2018 08:36:39 GMT+0000 (UTC)" + }, + "email-address": "support@weave.works" + } + labels: + name: weave-scope +roleRef: + kind: ClusterRole + name: weave-scope + apiGroup: rbac.authorization.k8s.io +subjects: + - kind: ServiceAccount + name: weave-scope + namespace: weave diff --git a/templates/scope-ds.yaml.j2 b/templates/scope-ds.yaml.j2 new file mode 100644 index 0000000..ece056d --- /dev/null +++ b/templates/scope-ds.yaml.j2 @@ -0,0 +1,76 @@ +apiVersion: extensions/v1beta1 +kind: DaemonSet +metadata: + name: weave-scope-agent + annotations: + cloud.weave.works/launcher-info: |- + { + "original-request": { + "url": "/k8s/v1.10/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxMSIsIEdpdFZlcnNpb246InYxLjExLjIiLCBHaXRDb21taXQ6ImJiOWZmYjE2NTRkNGE3MjliYjRjZWMxOGZmMDg4ZWFjYzE1M2MyMzkiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE4LTA4LTA3VDIzOjE3OjI4WiIsIEdvVmVyc2lvbjoiZ28xLjEwLjMiLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQpTZXJ2ZXIgVmVyc2lvbjogdmVyc2lvbi5JbmZve01ham9yOiIxIiwgTWlub3I6IjExIiwgR2l0VmVyc2lvbjoidjEuMTEuMSIsIEdpdENvbW1pdDoiYjFiMjk5NzgyNzBkYzIyZmVjYzU5MmFjNTVkOTAzMzUwNDU0MzEwYSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMTgtMDctMTdUMTg6NDM6MjZaIiwgR29WZXJzaW9uOiJnbzEuMTAuMyIsIENvbXBpbGVyOiJnYyIsIFBsYXRmb3JtOiJsaW51eC9hbWQ2NCJ9Cg==", + "date": "Tue Sep 18 2018 08:36:39 GMT+0000 (UTC)" + }, + "email-address": "support@weave.works" + } + labels: + name: weave-scope-agent + app: weave-scope + weave-cloud-component: scope + weave-scope-component: agent + namespace: weave +spec: + minReadySeconds: 5 + template: + metadata: + labels: + name: weave-scope-agent + app: weave-scope + weave-cloud-component: scope + weave-scope-component: agent + spec: + containers: + - name: scope-agent + args: + - '--mode=probe' + - '--probe-only' + - '--probe.kubernetes=true' + - '--probe.docker.bridge=docker0' + - '--probe.docker=true' + - 'weave-scope-app.weave.svc.cluster.local:80' + command: + - /home/weave/scope + env: + - name: KUBERNETES_NODENAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName + image: 'docker.io/weaveworks/scope:{{ scope_version }}' + imagePullPolicy: IfNotPresent + securityContext: + privileged: true + volumeMounts: + - name: scope-plugins + mountPath: /var/run/scope/plugins + - name: sys-kernel-debug + mountPath: /sys/kernel/debug + - name: docker-socket + mountPath: /var/run/docker.sock + dnsPolicy: ClusterFirstWithHostNet + hostNetwork: true + hostPID: true + serviceAccountName: weave-scope + tolerations: + - effect: NoSchedule + operator: Exists + volumes: + - name: scope-plugins + hostPath: + path: /var/run/scope/plugins + - name: sys-kernel-debug + hostPath: + path: /sys/kernel/debug + - name: docker-socket + hostPath: + path: /var/run/docker.sock + updateStrategy: + type: RollingUpdate diff --git a/templates/scope-sa.yaml.j2 b/templates/scope-sa.yaml.j2 new file mode 100644 index 0000000..5631bce --- /dev/null +++ b/templates/scope-sa.yaml.j2 @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: weave-scope + annotations: + cloud.weave.works/launcher-info: |- + { + "original-request": { + "url": "/k8s/v1.10/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxMSIsIEdpdFZlcnNpb246InYxLjExLjIiLCBHaXRDb21taXQ6ImJiOWZmYjE2NTRkNGE3MjliYjRjZWMxOGZmMDg4ZWFjYzE1M2MyMzkiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE4LTA4LTA3VDIzOjE3OjI4WiIsIEdvVmVyc2lvbjoiZ28xLjEwLjMiLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQpTZXJ2ZXIgVmVyc2lvbjogdmVyc2lvbi5JbmZve01ham9yOiIxIiwgTWlub3I6IjExIiwgR2l0VmVyc2lvbjoidjEuMTEuMSIsIEdpdENvbW1pdDoiYjFiMjk5NzgyNzBkYzIyZmVjYzU5MmFjNTVkOTAzMzUwNDU0MzEwYSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMTgtMDctMTdUMTg6NDM6MjZaIiwgR29WZXJzaW9uOiJnbzEuMTAuMyIsIENvbXBpbGVyOiJnYyIsIFBsYXRmb3JtOiJsaW51eC9hbWQ2NCJ9Cg==", + "date": "Tue Sep 18 2018 08:36:39 GMT+0000 (UTC)" + }, + "email-address": "support@weave.works" + } + labels: + name: weave-scope + namespace: weave diff --git a/templates/scope-svc.yaml.j2 b/templates/scope-svc.yaml.j2 new file mode 100644 index 0000000..2b2d5bd --- /dev/null +++ b/templates/scope-svc.yaml.j2 @@ -0,0 +1,30 @@ +apiVersion: v1 +kind: Service +metadata: + name: weave-scope-app + annotations: + cloud.weave.works/launcher-info: |- + { + "original-request": { + "url": "/k8s/v1.10/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxMSIsIEdpdFZlcnNpb246InYxLjExLjIiLCBHaXRDb21taXQ6ImJiOWZmYjE2NTRkNGE3MjliYjRjZWMxOGZmMDg4ZWFjYzE1M2MyMzkiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE4LTA4LTA3VDIzOjE3OjI4WiIsIEdvVmVyc2lvbjoiZ28xLjEwLjMiLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQpTZXJ2ZXIgVmVyc2lvbjogdmVyc2lvbi5JbmZve01ham9yOiIxIiwgTWlub3I6IjExIiwgR2l0VmVyc2lvbjoidjEuMTEuMSIsIEdpdENvbW1pdDoiYjFiMjk5NzgyNzBkYzIyZmVjYzU5MmFjNTVkOTAzMzUwNDU0MzEwYSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMTgtMDctMTdUMTg6NDM6MjZaIiwgR29WZXJzaW9uOiJnbzEuMTAuMyIsIENvbXBpbGVyOiJnYyIsIFBsYXRmb3JtOiJsaW51eC9hbWQ2NCJ9Cg==", + "date": "Tue Sep 18 2018 08:36:39 GMT+0000 (UTC)" + }, + "email-address": "support@weave.works" + } + labels: + name: weave-scope-app + app: weave-scope + weave-cloud-component: scope + weave-scope-component: app + namespace: weave +spec: + ports: + - name: app + port: 80 + protocol: TCP + targetPort: 4040 + selector: + name: weave-scope-app + app: weave-scope + weave-cloud-component: scope + weave-scope-component: app diff --git a/templates/scope.yaml.j2 b/templates/scope.yaml.j2 new file mode 100644 index 0000000..b0773b3 --- /dev/null +++ b/templates/scope.yaml.j2 @@ -0,0 +1,42 @@ +apiVersion: apps/v1beta1 +kind: Deployment +metadata: + name: weave-scope-app + annotations: + cloud.weave.works/launcher-info: |- + { + "original-request": { + "url": "/k8s/v1.10/scope.yaml?k8s-version=Q2xpZW50IFZlcnNpb246IHZlcnNpb24uSW5mb3tNYWpvcjoiMSIsIE1pbm9yOiIxMSIsIEdpdFZlcnNpb246InYxLjExLjIiLCBHaXRDb21taXQ6ImJiOWZmYjE2NTRkNGE3MjliYjRjZWMxOGZmMDg4ZWFjYzE1M2MyMzkiLCBHaXRUcmVlU3RhdGU6ImNsZWFuIiwgQnVpbGREYXRlOiIyMDE4LTA4LTA3VDIzOjE3OjI4WiIsIEdvVmVyc2lvbjoiZ28xLjEwLjMiLCBDb21waWxlcjoiZ2MiLCBQbGF0Zm9ybToibGludXgvYW1kNjQifQpTZXJ2ZXIgVmVyc2lvbjogdmVyc2lvbi5JbmZve01ham9yOiIxIiwgTWlub3I6IjExIiwgR2l0VmVyc2lvbjoidjEuMTEuMSIsIEdpdENvbW1pdDoiYjFiMjk5NzgyNzBkYzIyZmVjYzU5MmFjNTVkOTAzMzUwNDU0MzEwYSIsIEdpdFRyZWVTdGF0ZToiY2xlYW4iLCBCdWlsZERhdGU6IjIwMTgtMDctMTdUMTg6NDM6MjZaIiwgR29WZXJzaW9uOiJnbzEuMTAuMyIsIENvbXBpbGVyOiJnYyIsIFBsYXRmb3JtOiJsaW51eC9hbWQ2NCJ9Cg==", + "date": "Tue Sep 18 2018 08:36:39 GMT+0000 (UTC)" + }, + "email-address": "support@weave.works" + } + labels: + name: weave-scope-app + app: weave-scope + weave-cloud-component: scope + weave-scope-component: app + namespace: weave +spec: + replicas: 1 + revisionHistoryLimit: 2 + template: + metadata: + labels: + name: weave-scope-app + app: weave-scope + weave-cloud-component: scope + weave-scope-component: app + spec: + containers: + - name: app + args: + - '--mode=app' + command: + - /home/weave/scope + env: [] + image: 'docker.io/weaveworks/scope:{{ scope_version }}' + imagePullPolicy: IfNotPresent + ports: + - containerPort: 4040 + protocol: TCP diff --git a/templates/weave_ingress.yaml.j2 b/templates/weave_ingress.yaml.j2 new file mode 100644 index 0000000..a8495ed --- /dev/null +++ b/templates/weave_ingress.yaml.j2 @@ -0,0 +1,20 @@ +--- +#will not work: weave hate https... +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: weave + namespace: weave + annotations: + # ingress.kubernetes.io/whitelist-source-range: "10.96.0.0/12, 10.244.0.0/16, 192.168.18.0/24" + traefik.frontend.priority: "10" +spec: + rules: + - host: weave.{{ ingress_domain }} + http: + paths: + - path: / + backend: + serviceName: weave-scope-app + servicePort: 80 + diff --git a/vars/main.yml b/vars/main.yml new file mode 100644 index 0000000..aabd18d --- /dev/null +++ b/vars/main.yml @@ -0,0 +1 @@ +user: "{{ ansible_user_id }}"