From 6473bbfc8e2eeb94bfa73fbee82dbc1c655f7237 Mon Sep 17 00:00:00 2001 From: Proskurin Kirill Date: Thu, 13 Oct 2016 11:12:06 +0000 Subject: [PATCH] Add radosgw service Change-Id: Iefcebfe55544331b379f4ee1c4001ec33f539a28 --- .gitignore | 69 ++++++++++++++++++++ docker/radosgw/Dockerfile.j2 | 10 +++ docker/radosgw/sources.list.debian | 1 + service/files/ceph.client.radosgw.keyring.j2 | 3 + service/files/ceph.conf.j2 | 27 ++++++++ service/files/defaults.yaml | 7 ++ service/radosgw.yaml | 50 ++++++++++++++ tools/yamllint.sh | 5 ++ tools/yamllint.yaml | 21 ++++++ tox.ini | 17 +++++ 10 files changed, 210 insertions(+) create mode 100644 .gitignore create mode 100644 docker/radosgw/Dockerfile.j2 create mode 100644 docker/radosgw/sources.list.debian create mode 100644 service/files/ceph.client.radosgw.keyring.j2 create mode 100644 service/files/ceph.conf.j2 create mode 100644 service/files/defaults.yaml create mode 100644 service/radosgw.yaml create mode 100755 tools/yamllint.sh create mode 100644 tools/yamllint.yaml create mode 100644 tox.ini diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d537f0c --- /dev/null +++ b/.gitignore @@ -0,0 +1,69 @@ +*.py[cod] + +# C extensions +*.so + +# Packages +*.egg +*.egg-info +dist +build +.eggs +eggs +parts +bin +var +sdist +develop-eggs +.installed.cfg +lib +lib64 + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +.coverage +cover +.tox +nosetests.xml +.testrepository +.venv + +# Translations +*.mo + +# Mr Developer +.mr.developer.cfg +.project +.pydevproject + +# Complexity +output/*.html +output/*/index.html + +# Sphinx +doc/build + +# oslo-config-generator +etc/*.sample + +# pbr generates these +AUTHORS +ChangeLog + +# Editors +*~ +.*.swp +.*sw? + +# Vagrant +.vagrant +vagrant/Vagrantfile.custom +vagrant/vagrantkey* + +# generated openrc +openrc + +# tests +tests/.cache/* diff --git a/docker/radosgw/Dockerfile.j2 b/docker/radosgw/Dockerfile.j2 new file mode 100644 index 0000000..6e1f776 --- /dev/null +++ b/docker/radosgw/Dockerfile.j2 @@ -0,0 +1,10 @@ +FROM {{ image_spec("openstack-base") }} +MAINTAINER {{ maintainer }} + +COPY sources.list.debian /etc/apt/sources.list.d/ceph.list +RUN apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 460F3994 \ + && apt-get update \ + && apt-get install -y --no-install-recommends radosgw \ + && apt-get clean \ + && mkdir -p /var/lib/ceph/radosgw/ceph-rgw + diff --git a/docker/radosgw/sources.list.debian b/docker/radosgw/sources.list.debian new file mode 100644 index 0000000..2fec95f --- /dev/null +++ b/docker/radosgw/sources.list.debian @@ -0,0 +1 @@ +deb http://eu.ceph.com/debian-jewel jessie main diff --git a/service/files/ceph.client.radosgw.keyring.j2 b/service/files/ceph.client.radosgw.keyring.j2 new file mode 100644 index 0000000..1cd3972 --- /dev/null +++ b/service/files/ceph.client.radosgw.keyring.j2 @@ -0,0 +1,3 @@ +[client.radosgw.gateway] + key = {{ radosgw.key }} + diff --git a/service/files/ceph.conf.j2 b/service/files/ceph.conf.j2 new file mode 100644 index 0000000..8fc77a5 --- /dev/null +++ b/service/files/ceph.conf.j2 @@ -0,0 +1,27 @@ +[global] +fsid = {{ ceph.fsid }} +mon_host = {{ ceph.mon_host }} +auth_cluster_required = cephx +auth_service_required = cephx +auth_client_required = cephx +debug_rgw = 20 + +[client.radosgw.gateway] +keyring = /var/lib/ceph/radosgw/ceph-rgw/keyring +rgw socket path = /tmp/radosgw.sock +log file = /var/log/ceph/ceph-rgw-{{ namespace }}.log +rgw data = /var/lib/ceph/radosgw/ceph-rgw +rgw frontends = civetweb port={{ radosgw.port }} num_threads=50 + +rgw keystone api version = 3 +rgw keystone admin domain = default +rgw keystone admin project = admin +rgw keystone url = http://{{ address('keystone') }}:{{ keystone.admin_port }} +rgw keystone accepted roles = Member, _member_, admin +rgw keystone revocation interval = 900 +rgw s3 auth use keystone = true +#nss db path = /var/lib/ceph/radosgw/ceph-rgw.ccp/nss +rgw keystone verify ssl = false +rgw keystone admin user = admin +rgw keystone admin password = password + diff --git a/service/files/defaults.yaml b/service/files/defaults.yaml new file mode 100644 index 0000000..c9529b1 --- /dev/null +++ b/service/files/defaults.yaml @@ -0,0 +1,7 @@ +configs: + ceph: + fsid: "Changeme" + mon_host: "Changeme" + radosgw: + port: 7480 + key: "Changeme" diff --git a/service/radosgw.yaml b/service/radosgw.yaml new file mode 100644 index 0000000..6c187a2 --- /dev/null +++ b/service/radosgw.yaml @@ -0,0 +1,50 @@ +service: + name: radosgw + ports: + - {{ radosgw.port }} + containers: + - name: radosgw + image: radosgw + probes: + readiness: "true" + liveness: "true" + pre: + - name: radosgw-create-swift-service + type: single + command: openstack service create --name swift --description "Swift Service" object-store + dependencies: + - keystone + - name: radosgw-create-swift-public-endpoint + type: single + command: openstack endpoint create --region RegionOne swift public + "http://{{ address('radosgw') }}:{{ radosgw.port }}/swift/v1" + dependencies: + - radosgw-create-swift-service + - name: radosgw-create-swift-admin-endpoint + type: single + command: openstack endpoint create --region RegionOne swift admin + "http://{{ address('radosgw') }}:{{ radosgw.port }}/swift/v1" + dependencies: + - radosgw-create-swift-service + - name: radosgw-create-swift-internal-endpoint + type: single + command: openstack endpoint create --region RegionOne swift internal + "http://{{ address('radosgw') }}:{{ radosgw.port }}/swift/v1" + dependencies: + - radosgw-create-swift-service + daemon: + command: radosgw -c /etc/ceph/ceph.conf -n client.radosgw.gateway -d + files: + - ceph-conf + - radosgw-ceph-key + - radosgw-keyring +files: + ceph-conf: + path: /etc/ceph/ceph.conf + content: ceph.conf.j2 + radosgw-ceph-key: + path: /etc/ceph/ceph.client.radosgw.keyring + content: ceph.client.radosgw.keyring.j2 + radosgw-keyring: + path: /var/lib/ceph/radosgw/ceph-rgw/keyring + content: ceph.client.radosgw.keyring.j2 diff --git a/tools/yamllint.sh b/tools/yamllint.sh new file mode 100755 index 0000000..6e84445 --- /dev/null +++ b/tools/yamllint.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -ex + +workdir=$(dirname $0) +yamllint -c $workdir/yamllint.yaml $(find . -not -path '*/\.*' -type f -name '*.yaml') diff --git a/tools/yamllint.yaml b/tools/yamllint.yaml new file mode 100644 index 0000000..6c2e4a7 --- /dev/null +++ b/tools/yamllint.yaml @@ -0,0 +1,21 @@ +extends: default + +rules: + braces: + max-spaces-inside: 1 + comments: + level: error + comments-indentation: + level: warning + document-end: + present: no + document-start: + level: error + present: no + empty-lines: + max: 1 + max-start: 0 + max-end: 0 + line-length: + level: warning + max: 120 diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..8b6a5b9 --- /dev/null +++ b/tox.ini @@ -0,0 +1,17 @@ +[tox] +minversion = 1.6 +envlist = linters,bashate +skipsdist = True + +[testenv:linters] +deps = yamllint +commands = + {toxinidir}/tools/yamllint.sh + +[testenv:bashate] +deps = bashate>=0.2 +whitelist_externals = bash +commands = bash -c "find {toxinidir} -type f -name '*.sh' -not -path '*/.tox/*' -print0 | xargs -0 bashate -v" + +[testenv:venv] +commands = {posargs}