From e7ed329bd81c2273c03e94c93c9ce9c1d01cdc86 Mon Sep 17 00:00:00 2001
From: "Suren A. Chilingaryan" <csa@suren.me>
Date: Sat, 1 Apr 2017 04:53:28 +0200
Subject: Initial import

---
 .../templates/heketi/heketi-sc.yml.j2              |  21 ++
 .../templates/heketi/heketi_template.json.j2       | 232 +++++++++++++++++++++
 .../templates/heketi/topology.json.j2              |  28 +++
 3 files changed, 281 insertions(+)
 create mode 100644 roles/ands_openshift/templates/heketi/heketi-sc.yml.j2
 create mode 100644 roles/ands_openshift/templates/heketi/heketi_template.json.j2
 create mode 100644 roles/ands_openshift/templates/heketi/topology.json.j2

(limited to 'roles/ands_openshift/templates/heketi')

diff --git a/roles/ands_openshift/templates/heketi/heketi-sc.yml.j2 b/roles/ands_openshift/templates/heketi/heketi-sc.yml.j2
new file mode 100644
index 0000000..23ce6ce
--- /dev/null
+++ b/roles/ands_openshift/templates/heketi/heketi-sc.yml.j2
@@ -0,0 +1,21 @@
+---
+apiVersion: v1
+kind: Template
+metadata:
+  name: heketi-sc
+  annotations:
+    descriptions: "Heketi Dynamic Volume Provisioning"
+    tags: heketi
+objects:
+  - apiVersion: storage.k8s.io/v1beta1
+    kind: StorageClass
+    metadata:
+      name: heketi
+      annotations:
+        storageclass.beta.kubernetes.io/is-default-class: "true" 
+    provisioner: kubernetes.io/glusterfs
+    parameters:
+      resturl: "http://heketi.{{ openshift_master_default_subdomain }}" 
+      restuser: "admin"
+      secretName: "heketi" 
+      secretNamespace: "default" 
diff --git a/roles/ands_openshift/templates/heketi/heketi_template.json.j2 b/roles/ands_openshift/templates/heketi/heketi_template.json.j2
new file mode 100644
index 0000000..221662b
--- /dev/null
+++ b/roles/ands_openshift/templates/heketi/heketi_template.json.j2
@@ -0,0 +1,232 @@
+{
+  "kind": "Template",
+  "apiVersion": "v1",
+  "metadata": {
+    "name": "heketi",
+    "labels": {
+      "glusterfs": "heketi-template"
+    },
+    "annotations": {
+      "description": "Heketi service deployment template",
+      "tags": "glusterfs,heketi"
+    }
+  },
+  "labels": {
+    "template": "heketi"
+  },
+  "objects": [
+    {
+        "kind": "PersistentVolume",
+        "apiVersion": "v1",
+        "metadata": {
+            "name": "heketidb"
+        },
+        "spec": {
+            "persistentVolumeReclaimPolicy": "Retain",
+            "glusterfs": {
+                "endpoints": "gfs",
+                "path": "heketidbstorage"
+            },
+            "accessModes": [ "ReadWriteMany" ],
+            "capacity": {
+                "storage": "1Gi"
+            },
+            "claimRef": {
+                "name": "heketidb",
+                "namespace": "default"
+            }
+        }
+    },
+    {
+        "kind": "PersistentVolumeClaim",
+        "apiVersion": "v1",
+        "metadata": {
+            "name": "heketidb"
+        },
+        "spec": {
+            "volumeName": "heketidb",
+            "accessModes": [ "ReadWriteMany" ],
+            "resources": {
+                "requests": {
+                    "storage": "1Gi"
+                }
+            }
+        }
+    },
+    {
+      "kind": "Service",
+      "apiVersion": "v1",
+      "metadata": {
+        "name": "heketi",
+        "labels": {
+          "glusterfs": "heketi"
+        },
+        "annotations": {
+          "description": "Exposes Heketi service"
+        }
+      },
+      "spec": {
+        "ports": [
+          {
+            "name": "heketi",
+            "port": 8080,
+            "targetPort": 8080
+          }
+        ],
+        "selector": {
+          "name": "heketi"
+        }
+      }
+    },
+    {
+      "kind": "Route",
+      "apiVersion": "v1",
+      "metadata": {
+        "name": "heketi",
+        "labels": {
+          "glusterfs": "heketi"
+        }
+      },
+      "spec": {
+        "host": "heketi.{{ openshift_master_default_subdomain }}",
+        "to": {
+          "kind": "Service",
+          "name": "heketi"
+        }
+      }
+    },
+    {
+      "kind": "DeploymentConfig",
+      "apiVersion": "v1",
+      "metadata": {
+        "name": "heketi",
+        "labels": {
+          "glusterfs": "heketi"
+        },
+        "annotations": {
+          "description": "Defines how to deploy Heketi"
+        }
+      },
+      "spec": {
+        "replicas": 1,
+        "selector": {
+          "name": "heketi"
+        },
+        "template": {
+          "metadata": {
+            "name": "heketi",
+            "labels": {
+              "name": "heketi",
+              "glusterfs": "heketi"
+            }
+          },
+          "triggers": [
+            {
+              "type": "ConfigChange"
+            }
+          ],
+          "strategy": {
+            "type": "Recreate"
+          },
+          "spec": {
+            "nodeSelector": {
+                "master": "1"
+            },
+            "containers": [
+              {
+                "name": "heketi",
+                "image": "heketi/heketi:dev",
+                "imagePullPolicy": "Always",
+                "env": [
+                  {
+                    "name": "HEKETI_USER_KEY",
+                    "valueFrom": {
+                      "secretKeyRef": {
+                        "name": "heketi",
+                        "key": "user"
+                      }
+                    }
+                  },
+                  {
+                    "name": "HEKETI_ADMIN_KEY",
+                    "valueFrom": {
+                      "secretKeyRef": {
+                        "name": "heketi",
+                        "key": "key"
+                      }
+                    }
+                  },
+                  {
+                    "name": "HEKETI_FSTAB",
+                    "value": "/var/lib/heketi/fstab"
+                  },
+                  {
+                    "name": "HEKETI_SNAPSHOT_LIMIT",
+                    "value": "14"
+                  }
+                ],
+                "ports": [
+                  {
+                    "containerPort": 8080
+                  }
+                ],
+                "volumeMounts": [
+                  {
+                    "name": "config",
+                    "mountPath": "/etc/heketi",
+                    "readOnly": true
+                  },
+                  {
+                    "name": "ssh",
+                    "mountPath": "/etc/heketi_keys",
+                    "readOnly": true
+                  },
+                  {
+                    "name": "db",
+                    "mountPath": "/var/lib/heketi"
+                  }
+                ],
+                "readinessProbe": {
+                  "timeoutSeconds": 3,
+                  "initialDelaySeconds": 3,
+                  "httpGet": {
+                    "path": "/hello",
+                    "port": 8080
+                  }
+                },
+                "livenessProbe": {
+                  "timeoutSeconds": 3,
+                  "initialDelaySeconds": 30,
+                  "httpGet": {
+                    "path": "/hello",
+                    "port": 8080
+                  }
+                }
+              }
+            ],
+            "volumes": [
+              {
+                "name": "ssh",
+                "secret": {
+                  "secretName": "ands-ssh"
+                }
+              },
+              {
+                "name": "config",
+                "configMap": {
+                  "name" : "heketi"
+                }
+              },
+              {
+                "name": "db",
+                "persistentVolumeClaim": {
+                  "claimName" : "heketidb"
+                }
+              }
+            ]
+          }
+        }
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/roles/ands_openshift/templates/heketi/topology.json.j2 b/roles/ands_openshift/templates/heketi/topology.json.j2
new file mode 100644
index 0000000..53d683e
--- /dev/null
+++ b/roles/ands_openshift/templates/heketi/topology.json.j2
@@ -0,0 +1,28 @@
+
+{
+    "clusters": [
+        {
+            "nodes": [
+{% set comma = joiner(",") %}
+{% for node in openshift_storage_nodes %}
+                {{ comma() }} {
+                    "node": {
+                        "hostnames": {
+                            "manage": [
+                                "{{ node }}"
+                            ],
+                            "storage": [
+                                "{{ node }}"
+                            ]
+                        },
+                        "zone": 1
+                    },
+                    "devices": [
+                        "/dev/{{ansible_lvm.lvs[ands_heketi_lv].vg}}/{{ ands_heketi_lv }}"
+                    ]
+                }
+{% endfor %}
+            ]
+        }
+    ]
+}
-- 
cgit v1.2.3