From 44e5ddc20e7069e5345f48426a69e725aa8ea1d4 Mon Sep 17 00:00:00 2001
From: Andrew Butcher <abutcher@redhat.com>
Date: Tue, 19 Jan 2016 14:50:55 -0500
Subject: Refactor registry storage options.

---
 roles/openshift_persistent_volumes/README.md       | 60 ++++++++++++++++++++++
 roles/openshift_persistent_volumes/meta/main.yml   | 13 +++++
 roles/openshift_persistent_volumes/tasks/main.yml  | 50 ++++++++++++++++++
 .../templates/persistent-volume-claim.yml.j2       | 14 +++++
 .../templates/persistent-volume.yml.j2             | 14 +++++
 roles/openshift_persistent_volumes/vars/main.yml   |  2 +
 6 files changed, 153 insertions(+)
 create mode 100644 roles/openshift_persistent_volumes/README.md
 create mode 100644 roles/openshift_persistent_volumes/meta/main.yml
 create mode 100644 roles/openshift_persistent_volumes/tasks/main.yml
 create mode 100644 roles/openshift_persistent_volumes/templates/persistent-volume-claim.yml.j2
 create mode 100644 roles/openshift_persistent_volumes/templates/persistent-volume.yml.j2
 create mode 100644 roles/openshift_persistent_volumes/vars/main.yml

(limited to 'roles/openshift_persistent_volumes')

diff --git a/roles/openshift_persistent_volumes/README.md b/roles/openshift_persistent_volumes/README.md
new file mode 100644
index 000000000..34ae89536
--- /dev/null
+++ b/roles/openshift_persistent_volumes/README.md
@@ -0,0 +1,60 @@
+OpenShift NFS Server
+====================
+
+OpenShift Persistent Volumes
+
+Requirements
+------------
+
+Role Variables
+--------------
+
+From this role:
+| Name                     | Default value |                                                                                     |
+|--------------------------|---------------|-------------------------------------------------------------------------------------|
+| persistent_volumes       | []            | List of persistent volume dictionaries, keys: name, capacity, access_modes, storage |
+| persistent_volume_claims | []            | List of persistent volume claim dictionaries, keys: name, capacity, access_modes    |
+
+
+From openshift_common:
+| Name                          | Default Value  |                                        |
+|-------------------------------|----------------|----------------------------------------|
+| openshift_debug_level         | 2              | Global openshift debug log verbosity   |
+
+
+Dependencies
+------------
+
+
+Example Playbook
+----------------
+
+- name: Create persistent volumes/claims
+  hosts: oo_first_master
+  vars:
+    persistent_volumes:
+    - name: "registry-volume"
+      capacity: "5Gi"
+      access_modes:
+      - "ReadWriteMany"
+      storage:
+        nfs:
+          server: "nfs.example.com"
+          path: "/var/exports/registry"
+    persistent_volume_claims:
+    - name: "registry-claim"
+      capacity: "5Gi"
+      access_modes:
+      - "ReadWriteMany"
+  roles:
+  - role: openshift_persistent_volumes
+
+License
+-------
+
+Apache License, Version 2.0
+
+Author Information
+------------------
+
+Andrew Butcher (abutcher@redhat.com)
diff --git a/roles/openshift_persistent_volumes/meta/main.yml b/roles/openshift_persistent_volumes/meta/main.yml
new file mode 100644
index 000000000..d9f6fc01a
--- /dev/null
+++ b/roles/openshift_persistent_volumes/meta/main.yml
@@ -0,0 +1,13 @@
+---
+galaxy_info:
+  author: Andrew Butcher
+  description: OpenShift Persistent Volumes
+  company: Red Hat, Inc.
+  license: Apache License, Version 2.0
+  min_ansible_version: 1.9
+  platforms:
+  - name: EL
+    versions:
+    - 7
+dependencies:
+- { role: openshift_common }
diff --git a/roles/openshift_persistent_volumes/tasks/main.yml b/roles/openshift_persistent_volumes/tasks/main.yml
new file mode 100644
index 000000000..2455fc792
--- /dev/null
+++ b/roles/openshift_persistent_volumes/tasks/main.yml
@@ -0,0 +1,50 @@
+---
+- name: Create temp directory for volume definitions
+  command: mktemp -d /tmp/openshift-ansible-XXXXXXX
+  register: mktemp
+  changed_when: False
+
+- name: Copy the admin client config(s)
+  command: >
+    cp {{ openshift_master_config_dir }}/admin.kubeconfig {{ mktemp.stdout }}/admin.kubeconfig
+  changed_when: False
+
+- name: Deploy PersistentVolume definitions
+  template:
+    dest: "{{ mktemp.stdout }}/persistent-volumes.yml"
+    src: persistent-volume.yml.j2
+  when: persistent_volumes | length > 0
+  changed_when: False
+
+- name: Create PersistentVolumes
+  command: >
+    {{ openshift.common.client_binary }} create
+    -f {{ mktemp.stdout }}/persistent-volumes.yml
+    --config={{ mktemp.stdout }}/admin.kubeconfig
+  register: pv_create_output
+  when: persistent_volumes | length > 0
+  failed_when: ('already exists' not in pv_create_output.stderr if pv_create_output.stderr else False) or ('created' not in pv_create_output.stdout if pv_create_output.stdout else False)
+  changed_when: ('created' in pv_create_output.stdout)
+
+- name: Deploy PersistentVolumeClaim definitions
+  template:
+    dest: "{{ mktemp.stdout }}/persistent-volume-claims.yml"
+    src: persistent-volume-claim.yml.j2
+  when: persistent_volume_claims | length > 0
+  changed_when: False
+
+- name: Create PersistentVolumeClaims
+  command: >
+    {{ openshift.common.client_binary }} create
+    -f {{ mktemp.stdout }}/persistent-volume-claims.yml
+    --config={{ mktemp.stdout }}/admin.kubeconfig
+  register: pvc_create_output
+  when: persistent_volume_claims | length > 0
+  failed_when: ('already exists' not in pvc_create_output.stderr if pvc_create_output.stderr else False) or ('created' not in pvc_create_output.stdout if pvc_create_output.stdout else False)
+  changed_when: ('created' in pvc_create_output.stdout)
+
+- name: Delete temp directory
+  file:
+    name: "{{ mktemp.stdout }}"
+    state: absent
+  changed_when: False
diff --git a/roles/openshift_persistent_volumes/templates/persistent-volume-claim.yml.j2 b/roles/openshift_persistent_volumes/templates/persistent-volume-claim.yml.j2
new file mode 100644
index 000000000..58b3e1c67
--- /dev/null
+++ b/roles/openshift_persistent_volumes/templates/persistent-volume-claim.yml.j2
@@ -0,0 +1,14 @@
+---
+apiVersion: "v1"
+kind: "List"
+items:
+{% for claim in persistent_volume_claims %}
+- kind: "PersistentVolumeClaim"
+  metadata:
+    name: "{{ claim.name }}"
+  spec:
+    accessModes: {{ claim.access_modes | to_padded_yaml(2, 2) }}
+    resources:
+      requests:
+        storage: "{{ claim.capacity }}"
+{% endfor %}
diff --git a/roles/openshift_persistent_volumes/templates/persistent-volume.yml.j2 b/roles/openshift_persistent_volumes/templates/persistent-volume.yml.j2
new file mode 100644
index 000000000..5714b6b0d
--- /dev/null
+++ b/roles/openshift_persistent_volumes/templates/persistent-volume.yml.j2
@@ -0,0 +1,14 @@
+---
+apiVersion: v1
+kind: List
+items:
+{% for volume in persistent_volumes %}
+- kind: PersistentVolume
+  metadata:
+    name: "{{ volume.name }}"
+  spec:
+    capacity:
+      storage: "{{ volume.capacity }}"
+    accessModes: {{ volume.access_modes | to_padded_yaml(2, 2) }}
+    {{ volume.storage.keys()[0] }}: {{ volume.storage[volume.storage.keys()[0]] | to_padded_yaml(3, 2) }}
+{% endfor %}
diff --git a/roles/openshift_persistent_volumes/vars/main.yml b/roles/openshift_persistent_volumes/vars/main.yml
new file mode 100644
index 000000000..9967e26f4
--- /dev/null
+++ b/roles/openshift_persistent_volumes/vars/main.yml
@@ -0,0 +1,2 @@
+---
+openshift_master_config_dir: "{{ openshift.common.config_base }}/master"
-- 
cgit v1.2.3