Add an openshift-cns service

This service file allows for enabling CNS in an OpenShift deployment.
It works as a tagging service and the rest of the configs are applied in
the openshift-master service file.

Note that the disks used can be specified as follows:

parameter_defaults:
  OpenShiftGlusterDisks:
    - /dev/sdb

Or per-role like:

parameter_defaults:
  OpenShiftMasterParameters:
    OpenShiftGlusterDisks:
      - /dev/sdb
  OpenShiftWorkerParameters:
    OpenShiftGlusterDisks:
      - /dev/sdc

Change-Id: I92972d89ee7edf2ff211e88c6e0758628c3018a2
This commit is contained in:
Flavio Percoco 2018-02-13 14:39:14 +01:00 committed by Martin André
parent 5d69ef030e
commit e200974421
4 changed files with 131 additions and 0 deletions

View File

@ -0,0 +1,7 @@
resource_registry:
OS::TripleO::Services::OpenShift::GlusterFS: ../extraconfig/services/openshift-cns.yaml
parameter_defaults:
OpenShiftGlobalVariables:
openshift_storage_glusterfs_namespace: glusterfs
openshift_storage_glusterfs_name: storage

View File

@ -0,0 +1,84 @@
heat_template_version: queens
description: External tasks definition for OpenShift
parameters:
RoleNetIpMap:
default: {}
type: json
ServiceData:
default: {}
description: Dictionary packing service data
type: json
ServiceNetMap:
default: {}
description: Mapping of service_name -> network name. Typically set
via parameter_defaults in the resource registry. This
mapping overrides those in ServiceNetMapDefaults.
type: json
DefaultPasswords:
default: {}
type: json
RoleName:
default: ''
description: Role name on which the service is applied
type: string
RoleParameters:
default: {}
description: Parameters specific to the role
type: json
EndpointMap:
default: {}
description: Mapping of service endpoint -> protocol. Typically set
via parameter_defaults in the resource registry.
type: json
OpenShiftGlusterDisks:
default:
- /dev/vdb
- /dev/vdc
- /dev/vdd
description: List of disks for openshift_glusterfs service to use
type: comma_delimited_list
tags:
- role_specific
resources:
RoleParametersValue:
type: OS::Heat::Value
properties:
type: json
value:
map_replace:
- map_replace:
- OpenShiftGlusterDisks: OpenShiftGlusterDisks
- values: {get_param: [RoleParameters]}
- values:
OpenShiftGlusterDisks: {get_param: OpenShiftGlusterDisks}
outputs:
role_data:
description: Role data for the Openshift Service
value:
# This service template essentially tags the nodes that we want
# as cns. The actual installation is performed in
# openshift-master service template.
service_name: openshift_glusterfs
config_settings:
tripleo.openshift_glusterfs.firewall_rules:
'200 openshift-glusterfs kubelet':
dport:
- 2222
- 3260
- 10250
- 24008
- 24010
proto: tcp
'200 openshift-glusterfs external services':
dport: '49152-49251'
host_prep_tasks:
- name: Wipe the configured disks
shell:
wipefs -af {{item}}
with_items: {get_attr: [RoleParametersValue, value, OpenShiftGlusterDisks]}
upgrade_tasks: []
step_config: ''

View File

@ -48,6 +48,28 @@ parameters:
default: {}
description: OpenShift node vars specific for the worker nodes
type: json
OpenShiftGlusterDisks:
default:
- /dev/vdb
- /dev/vdc
- /dev/vdd
description: List of disks for openshift_glusterfs service to use
type: comma_delimited_list
tags:
- role_specific
resources:
RoleParametersValue:
type: OS::Heat::Value
properties:
type: json
value:
map_replace:
- map_replace:
- OpenShiftGlusterDisks: OpenShiftGlusterDisks
- values: {get_param: [RoleParameters]}
- values:
OpenShiftGlusterDisks: {get_param: OpenShiftGlusterDisks}
outputs:
role_data:
@ -82,6 +104,7 @@ outputs:
openshift_global_vars: {get_param: OpenShiftGlobalVariables}
openshift_master_node_vars: {get_param: OpenShiftMasterNodeVars}
openshift_worker_node_vars: {get_param: OpenShiftWorkerNodeVars}
openshift_gluster_disks: {get_attr: [RoleParametersValue, value, OpenShiftGlusterDisks]}
- name: generate openshift inventory
copy:
@ -127,6 +150,21 @@ outputs:
{% endfor %}
{% if groups['openshift_glusterfs'] | default([]) %}
glusterfs:
hosts:
{% for host in groups['openshift_glusterfs'] | default([]) -%}
{{ hostvars.raw_get(host)['ansible_hostname'] }}:
glusterfs_ip: {{hostvars.raw_get(host)['storage_ip']}}
glusterfs_devices:
{{openshift_gluster_disks | to_nice_yaml() | indent(8) }}
ansible_user: {{ hostvars.raw_get(host)['ansible_user'] | default(hostvars.raw_get(host)['ansible_ssh_user']) | default('root') }}
ansible_host: {{ hostvars.raw_get(host)['ansible_host'] | default(host) }}
ansible_become: true
openshift_schedulable: true
{% endfor %}
{% endif %}
etcd:
children:
masters: {}
@ -135,6 +173,7 @@ outputs:
children:
masters: {}
nodes: {}
{% if groups['openshift_glusterfs'] | default([]) %}glusterfs: {}{% endif %}
- name: generate openshift global defaults
copy:

View File

@ -200,6 +200,7 @@ resource_registry:
OS::TripleO::Services::ContainersLogrotateCrond: docker/services/logrotate-crond.yaml
OS::TripleO::Services::OpenShift::Master: OS::Heat::None
OS::TripleO::Services::OpenShift::Worker: OS::Heat::None
OS::TripleO::Services::OpenShift::GlusterFS: OS::Heat::None
OS::TripleO::Services::SwiftProxy: docker/services/swift-proxy.yaml
OS::TripleO::Services::SwiftDispersion: OS::Heat::None
OS::TripleO::Services::ExternalSwiftProxy: OS::Heat::None