forked from openshift/openshift-ansible
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request openshift#3969 from jarrpa/glusterfs-registry-too
Merged by openshift-bot
- Loading branch information
Showing
28 changed files
with
607 additions
and
233 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
# This is an example of a bring your own (byo) host inventory for a cluster | ||
# with natively hosted, containerized GlusterFS storage. | ||
# | ||
# This inventory may be used with the byo/config.yml playbook to deploy a new | ||
# cluster with GlusterFS storage, which will use that storage to create a | ||
# volume that will provide backend storage for a hosted Docker registry. | ||
# | ||
# This inventory may also be used with byo/openshift-glusterfs/config.yml to | ||
# deploy GlusterFS storage on an existing cluster. With this playbook, the | ||
# registry backend volume will be created but the administrator must then | ||
# either deploy a hosted registry or change an existing hosted registry to use | ||
# that volume. | ||
# | ||
# There are additional configuration parameters that can be specified to | ||
# control the deployment and state of a GlusterFS cluster. Please see the | ||
# documentation in playbooks/byo/openshift-glusterfs/README.md and | ||
# roles/openshift_storage_glusterfs/README.md for additional details. | ||
|
||
[OSEv3:children] | ||
masters | ||
nodes | ||
# Specify there will be GlusterFS nodes | ||
glusterfs | ||
|
||
[OSEv3:vars] | ||
ansible_ssh_user=root | ||
deployment_type=origin | ||
# Specify that we want to use GlusterFS storage for a hosted registry | ||
openshift_hosted_registry_storage_kind=glusterfs | ||
|
||
[masters] | ||
master node=True storage=True master=True | ||
|
||
[nodes] | ||
master node=True storage=True master=True openshift_schedulable=False | ||
# A hosted registry, by default, will only be deployed on nodes labeled | ||
# "region=infra". | ||
node0 node=True openshift_node_labels="{'region': 'infra'}" openshift_schedulable=True | ||
node1 node=True openshift_node_labels="{'region': 'infra'}" openshift_schedulable=True | ||
node2 node=True openshift_node_labels="{'region': 'infra'}" openshift_schedulable=True | ||
|
||
# Specify the glusterfs group, which contains the nodes that will host | ||
# GlusterFS storage pods. At a minimum, each node must have a | ||
# "glusterfs_devices" variable defined. This variable is a list of block | ||
# devices the node will have access to that is intended solely for use as | ||
# GlusterFS storage. These block devices must be bare (e.g. have no data, not | ||
# be marked as LVM PVs), and will be formatted. | ||
[glusterfs] | ||
node0 glusterfs_devices='[ "/dev/vdb", "/dev/vdc", "/dev/vdd" ]' | ||
node1 glusterfs_devices='[ "/dev/vdb", "/dev/vdc", "/dev/vdd" ]' | ||
node2 glusterfs_devices='[ "/dev/vdb", "/dev/vdc", "/dev/vdd" ]' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
# OpenShift GlusterFS Playbooks | ||
|
||
These playbooks are intended to enable the use of GlusterFS volumes by pods in | ||
OpenShift. While they try to provide a sane set of defaults they do cover a | ||
variety of scenarios and configurations, so read carefully. :) | ||
|
||
## Playbook: config.yml | ||
|
||
This is the main playbook that integrates GlusterFS into a new or existing | ||
OpenShift cluster. It will also, if specified, configure a hosted Docker | ||
registry with GlusterFS backend storage. | ||
|
||
This playbook requires the `glusterfs` group to exist in the Ansible inventory | ||
file. The hosts in this group are the nodes of the GlusterFS cluster. | ||
|
||
* If this is a newly configured cluster each host must have a | ||
`glusterfs_devices` variable defined, each of which must be a list of block | ||
storage devices intended for use only by the GlusterFS cluster. If this is | ||
also an external GlusterFS cluster, you must specify | ||
`openshift_storage_glusterfs_is_native=False`. If the cluster is to be | ||
managed by an external heketi service you must also specify | ||
`openshift_storage_glusterfs_heketi_is_native=False` and | ||
`openshift_storage_glusterfs_heketi_url=<URL>` with the URL to the heketi | ||
service. All these variables are specified in `[OSEv3:vars]`, | ||
* If this is an existing cluster you do not need to specify a list of block | ||
devices but you must specify the following variables in `[OSEv3:vars]`: | ||
* `openshift_storage_glusterfs_is_missing=False` | ||
* `openshift_storage_glusterfs_heketi_is_missing=False` | ||
|
||
By default, pods for a native GlusterFS cluster will be created in the | ||
`default` namespace. To change this, specify | ||
`openshift_storage_glusterfs_namespace=<other namespace>` in `[OSEv3:vars]`. | ||
|
||
To configure the deployment of a Docker registry with GlusterFS backend | ||
storage, specify `openshift_hosted_registry_storage_kind=glusterfs` in | ||
`[OSEv3:vars]`. To create a separate GlusterFS cluster for use only by the | ||
registry, specify a `glusterfs_registry` group that is populated as the | ||
`glusterfs` is with the nodes for the separate cluster. If no | ||
`glusterfs_registry` group is specified, the cluster defined by the `glusterfs` | ||
group will be used. | ||
|
||
To swap an existing hosted registry's backend storage for a GlusterFS volume, | ||
specify `openshift_hosted_registry_storage_glusterfs_swap=True`. To | ||
additoinally copy any existing contents from an existing hosted registry, | ||
specify `openshift_hosted_registry_storage_glusterfs_swapcopy=True`. | ||
|
||
**NOTE:** For each namespace that is to have access to GlusterFS volumes an | ||
Enpoints resource pointing to the GlusterFS cluster nodes and a corresponding | ||
Service resource must be created. If dynamic provisioning using StorageClasses | ||
is configure, these resources are created automatically in the namespaces that | ||
require them. This playbook also takes care of creating these resources in the | ||
namespaces used for deployment. | ||
|
||
An example of a minimal inventory file: | ||
``` | ||
[OSEv3:children] | ||
masters | ||
nodes | ||
glusterfs | ||
[OSEv3:vars] | ||
ansible_ssh_user=root | ||
deployment_type=origin | ||
[masters] | ||
master | ||
[nodes] | ||
node0 | ||
node1 | ||
node2 | ||
[glusterfs] | ||
node0 glusterfs_devices='[ "/dev/sdb" ]' | ||
node1 glusterfs_devices='[ "/dev/sdb", "/dev/sdc" ]' | ||
node2 glusterfs_devices='[ "/dev/sdd" ]' | ||
``` | ||
|
||
## Playbook: registry.yml | ||
|
||
This playbook is intended for admins who want to deploy a hosted Docker | ||
registry with GlusterFS backend storage on an existing OpenShift cluster. It | ||
has all the same requirements and behaviors as `config.yml`. | ||
|
||
## Role: openshift_storage_glusterfs | ||
|
||
The bulk of the work is done by the `openshift_storage_glusterfs` role. This | ||
role can handle the deployment of GlusterFS (if it is to be hosted on the | ||
OpenShift cluster), the registration of GlusterFS nodes (hosted or standalone), | ||
and (if specified) integration as backend storage for a hosted Docker registry. | ||
|
||
See the documentation in the role's directory for further details. | ||
|
||
## Role: openshift_hosted | ||
|
||
The `openshift_hosted` role recognizes `glusterfs` as a possible storage | ||
backend for a hosted docker registry. It will also, if configured, handle the | ||
swap of an existing registry's backend storage to a GlusterFS volume. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
--- | ||
- include: ../openshift-cluster/initialize_groups.yml | ||
tags: | ||
- always | ||
|
||
- include: ../../common/openshift-cluster/std_include.yml | ||
tags: | ||
- always | ||
|
||
- include: ../../common/openshift-glusterfs/config.yml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
../../../filter_plugins |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
../../../lookup_plugins |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
--- | ||
- include: ../openshift-cluster/initialize_groups.yml | ||
tags: | ||
- always | ||
|
||
- include: ../../common/openshift-cluster/std_include.yml | ||
tags: | ||
- always | ||
|
||
- include: ../../common/openshift-glusterfs/registry.yml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
../../../roles |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
--- | ||
- include: config.yml | ||
|
||
- name: Initialize GlusterFS registry PV and PVC vars | ||
hosts: oo_first_master | ||
tags: hosted | ||
tasks: | ||
- set_fact: | ||
glusterfs_pv: [] | ||
glusterfs_pvc: [] | ||
|
||
- set_fact: | ||
glusterfs_pv: | ||
- name: "{{ openshift.hosted.registry.storage.volume.name }}-glusterfs-volume" | ||
capacity: "{{ openshift.hosted.registry.storage.volume.size }}" | ||
access_modes: "{{ openshift.hosted.registry.storage.access.modes }}" | ||
storage: | ||
glusterfs: | ||
endpoints: "{{ openshift.hosted.registry.storage.glusterfs.endpoints }}" | ||
path: "{{ openshift.hosted.registry.storage.glusterfs.path }}" | ||
readOnly: "{{ openshift.hosted.registry.storage.glusterfs.readOnly }}" | ||
glusterfs_pvc: | ||
- name: "{{ openshift.hosted.registry.storage.volume.name }}-glusterfs-claim" | ||
capacity: "{{ openshift.hosted.registry.storage.volume.size }}" | ||
access_modes: "{{ openshift.hosted.registry.storage.access.modes }}" | ||
when: openshift.hosted.registry.storage.glusterfs.swap | ||
|
||
- name: Create persistent volumes | ||
hosts: oo_first_master | ||
tags: | ||
- hosted | ||
vars: | ||
persistent_volumes: "{{ hostvars[groups.oo_first_master.0] | oo_persistent_volumes(groups, glusterfs_pv) }}" | ||
persistent_volume_claims: "{{ hostvars[groups.oo_first_master.0] | oo_persistent_volume_claims(glusterfs_pvc) }}" | ||
roles: | ||
- role: openshift_persistent_volumes | ||
when: persistent_volumes | union(glusterfs_pv) | length > 0 or persistent_volume_claims | union(glusterfs_pvc) | length > 0 | ||
|
||
- name: Create Hosted Resources | ||
hosts: oo_first_master | ||
tags: | ||
- hosted | ||
pre_tasks: | ||
- set_fact: | ||
openshift_hosted_router_registryurl: "{{ hostvars[groups.oo_first_master.0].openshift.master.registry_url }}" | ||
openshift_hosted_registry_registryurl: "{{ hostvars[groups.oo_first_master.0].openshift.master.registry_url }}" | ||
when: "'master' in hostvars[groups.oo_first_master.0].openshift and 'registry_url' in hostvars[groups.oo_first_master.0].openshift.master" | ||
roles: | ||
- role: openshift_hosted |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.