add juju availability zone to ceph osd location when present
The approach here is to use the availability zone as an imaginary rack. All hosts that are in the same AZ will be in the same imaginary rack. From Ceph's perspective this doesn't matter as it's just a bucket after all. This will give users the ability to further customize their ceph deployment. Change-Id: Ie25ac1b001db558d6a40fe3eaca014e8f4174241
This commit is contained in:
parent
5eb7fb5b65
commit
c94e0b4b0e
@ -12,6 +12,7 @@ import os
|
|||||||
import shutil
|
import shutil
|
||||||
import sys
|
import sys
|
||||||
import tempfile
|
import tempfile
|
||||||
|
import socket
|
||||||
|
|
||||||
import ceph
|
import ceph
|
||||||
from charmhelpers.core.hookenv import (
|
from charmhelpers.core.hookenv import (
|
||||||
@ -73,6 +74,12 @@ def install():
|
|||||||
install_upstart_scripts()
|
install_upstart_scripts()
|
||||||
|
|
||||||
|
|
||||||
|
def az_info():
|
||||||
|
az_info = os.environ.get('JUJU_AVAILABILITY_ZONE')
|
||||||
|
log("AZ Info: " + az_info)
|
||||||
|
return az_info
|
||||||
|
|
||||||
|
|
||||||
def emit_cephconf():
|
def emit_cephconf():
|
||||||
mon_hosts = get_mon_hosts()
|
mon_hosts = get_mon_hosts()
|
||||||
log('Monitor hosts are ' + repr(mon_hosts))
|
log('Monitor hosts are ' + repr(mon_hosts))
|
||||||
@ -103,6 +110,10 @@ def emit_cephconf():
|
|||||||
if not cluster_network:
|
if not cluster_network:
|
||||||
cephcontext['cluster_addr'] = dynamic_ipv6_address
|
cephcontext['cluster_addr'] = dynamic_ipv6_address
|
||||||
|
|
||||||
|
if az_info():
|
||||||
|
cephcontext['crush_location'] = "root=default rack={} host={}" \
|
||||||
|
.format(az_info(), socket.gethostname())
|
||||||
|
|
||||||
# Install ceph.conf as an alternative to support
|
# Install ceph.conf as an alternative to support
|
||||||
# co-existence with other charms that write this file
|
# co-existence with other charms that write this file
|
||||||
charm_ceph_conf = "/var/lib/charm/{}/ceph.conf".format(service_name())
|
charm_ceph_conf = "/var/lib/charm/{}/ceph.conf".format(service_name())
|
||||||
|
@ -29,6 +29,10 @@ public addr = {{ public_addr }}
|
|||||||
cluster addr = {{ cluster_addr }}
|
cluster addr = {{ cluster_addr }}
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
|
||||||
|
{% if crush_location %}
|
||||||
|
osd crush location = {{crush_location}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
[mon]
|
[mon]
|
||||||
keyring = /var/lib/ceph/mon/$cluster-$id/keyring
|
keyring = /var/lib/ceph/mon/$cluster-$id/keyring
|
||||||
|
Loading…
Reference in New Issue
Block a user