aboutsummaryrefslogtreecommitdiffstats
path: root/deploy/adapters/ansible/roles/ceph-osd
diff options
context:
space:
mode:
Diffstat (limited to 'deploy/adapters/ansible/roles/ceph-osd')
-rw-r--r--deploy/adapters/ansible/roles/ceph-osd/files/ceph-crush-location.in79
-rw-r--r--deploy/adapters/ansible/roles/ceph-osd/tasks/install_osd.yml7
2 files changed, 86 insertions, 0 deletions
diff --git a/deploy/adapters/ansible/roles/ceph-osd/files/ceph-crush-location.in b/deploy/adapters/ansible/roles/ceph-osd/files/ceph-crush-location.in
new file mode 100644
index 00000000..d7637510
--- /dev/null
+++ b/deploy/adapters/ansible/roles/ceph-osd/files/ceph-crush-location.in
@@ -0,0 +1,79 @@
+#!/bin/sh
+#
+# Generate a CRUSH location for the given entity
+#
+# The CRUSH location consists of a list of key=value pairs, separated
+# by spaces, all on a single line. This describes where in CRUSH
+# hierarhcy this entity should be placed.
+#
+# Arguments:
+# --cluster <clustername> name of the cluster (see /etc/ceph/$cluster.conf)
+# --type <osd|mds|client> daemon/entity type
+# --id <id> id (osd number, mds name, client name)
+#
+
+# if we start up as ./ceph-crush-location, assume everything else is
+# in the current directory too.
+if [ `dirname $0` = "." ] && [ $PWD != "/usr/bin" ]; then
+ BINDIR=.
+ SBINDIR=.
+ LIBDIR=.
+ ETCDIR=.
+else
+ BINDIR=@bindir@
+ SBINDIR=@prefix@/sbin
+ LIBDIR=@libdir@/ceph
+ ETCDIR=@sysconfdir@/ceph
+fi
+
+usage_exit() {
+ echo "usage: $0 [--cluster <cluster>] --id <id> --type <osd|mds|client>"
+ exit
+}
+
+cluster="ceph"
+type=""
+id=""
+while [ $# -ge 1 ]; do
+ case $1 in
+ --cluster | -C)
+ shift
+ cluster="$1"
+ shift
+ ;;
+ --id | -i)
+ shift
+ id="$1"
+ shift
+ ;;
+ --type | -t)
+ shift
+ type="$1"
+ shift
+ ;;
+ *)
+ echo "unrecognized option '$1'"
+ usage_exit
+ ;;
+ esac
+done
+
+if [ -z "$type" ]; then
+ echo "must specify entity type"
+ usage_exit
+fi
+
+if [ -z "$id" ]; then
+ echo "must specify id"
+ usage_exit
+fi
+
+# try a generic location
+location="$($BINDIR/ceph-conf --cluster=${cluster:-ceph} --name=$type.$id --lookup crush_location || :)"
+if [ -n "$location" ]; then
+ echo $location
+ exit 0
+fi
+
+# spit out something generic
+echo "host=$(hostname -s) root=default"
diff --git a/deploy/adapters/ansible/roles/ceph-osd/tasks/install_osd.yml b/deploy/adapters/ansible/roles/ceph-osd/tasks/install_osd.yml
index 78d62f67..2a9ea3a5 100644
--- a/deploy/adapters/ansible/roles/ceph-osd/tasks/install_osd.yml
+++ b/deploy/adapters/ansible/roles/ceph-osd/tasks/install_osd.yml
@@ -30,6 +30,13 @@
shell: chown -R ceph:ceph /var/local/osd
when: ansible_os_family == "Debian"
+- name: copy ceph-crush-location to osd host
+ copy:
+ src: ceph-crush-location.in
+ dest: /usr/bin/ceph-crush-location
+ mode: 0755
+ when: ansible_os_family == "RedHat"
+
- name: activate osd node
shell: ceph-disk activate /var/local/osd