diff --git a/fragments/configure-docker-storage.sh b/fragments/configure-docker-storage.sh new file mode 100644 index 0000000..91ad937 --- /dev/null +++ b/fragments/configure-docker-storage.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +. /etc/sysconfig/heat-params + +DOCKER_DEV=/dev/disk/by-id/virtio-${DOCKER_VOLUME:0:20} + +if ! [ -b $DOCKER_DEV ]; then + echo "ERROR: device $DOCKER_DEV does not exist" >&2 + exit 1 +fi + +pvcreate $DOCKER_DEV +vgcreate docker $DOCKER_DEV +lvcreate --wipesignatures y -n data docker -l 95%VG +lvcreate --wipesignatures y -n metadata docker -l 5%VG + +cat > /etc/sysconfig/docker-storage < + size of a cinder volume to allocate to docker for container/image + storage + default: 25 + # The following are all generated in the parent template. kube_master_ip: type: string @@ -90,6 +97,7 @@ resources: "$KUBE_ALLOW_PRIV": {get_param: kube_allow_priv} "$KUBE_MASTER_IP": {get_param: kube_master_ip} "$WAIT_HANDLE": {get_resource: node_wait_handle} + "$DOCKER_VOLUME": {get_resource: docker_volume} add_to_docker_group: type: "OS::Heat::SoftwareConfig" @@ -97,6 +105,12 @@ resources: group: ungrouped config: {get_file: fragments/add-to-docker-group.sh} + configure_docker_storage: + type: "OS::Heat::SoftwareConfig" + properties: + group: ungrouped + config: {get_file: fragments/configure-docker-storage.sh} + configure_kubernetes_minion: type: "OS::Heat::SoftwareConfig" properties: @@ -148,6 +162,7 @@ resources: - config: {get_resource: kube_user} - config: {get_resource: kube_examples} - config: {get_resource: add_to_docker_group} + - config: {get_resource: configure_docker_storage} - config: {get_resource: configure_kubernetes_minion} - config: {get_resource: docker_service} - config: {get_resource: enable_services} @@ -187,6 +202,17 @@ resources: port_id: get_resource: kube_node_eth0 + docker_volume: + type: "OS::Cinder::Volume" + properties: + size: {get_param: docker_volume_size} + + docker_volume_attach: + type: "OS::Cinder::VolumeAttachment" + properties: + instance_uuid: {get_resource: kube_node} + volume_id: {get_resource: docker_volume} + outputs: kube_node_ip: