]> git.apps.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
Provide the ability to provide monitor_address instead of an interface
authorAndrew Schoen <aschoen@redhat.com>
Tue, 22 Mar 2016 14:11:12 +0000 (09:11 -0500)
committerAndrew Schoen <aschoen@redhat.com>
Wed, 23 Mar 2016 12:30:01 +0000 (07:30 -0500)
This would allow users who don't know what interface to provide to
give an IP address to use for the monitor instead.

Note: the includes are needed in ceph.conf.j2 because without them
jinja2 can not properly evaluate the template and will complain about a
missing 'ansible_interface' variable. The includes allow the template to
be evaluated correctly and then the correct include will be used during
render time.

Signed-off-by: Andrew Schoen <aschoen@redhat.com>
group_vars/all.sample
roles/ceph-common/defaults/main.yml
roles/ceph-common/tasks/checks/check_mandatory_vars.yml
roles/ceph-common/templates/ceph.conf.j2
roles/ceph-common/templates/client_restapi_address.j2 [new file with mode: 0644]
roles/ceph-common/templates/client_restapi_interface.j2 [new file with mode: 0644]
roles/ceph-common/templates/mon_addr_address.j2 [new file with mode: 0644]
roles/ceph-common/templates/mon_addr_interface.j2 [new file with mode: 0644]

index f9bc47e6d22305c87caa7152a5a953e69c86befd..c7aaffe94108cc81a4c4d56b3c202123933a0bbd 100644 (file)
@@ -192,6 +192,7 @@ dummy:
 ## Monitor options
 #
 #monitor_interface: interface
+#monitor_address: 0.0.0.0
 #mon_use_fqdn: false # if set to true, the MON name used will be the fqdn in the ceph.conf
 #mon_osd_down_out_interval: 600
 #mon_osd_min_down_reporters: 7 # number of OSDs per host + 1
@@ -286,6 +287,7 @@ dummy:
 ## REST API options
 #
 #restapi_interface: "{{ monitor_interface }}"
+#restapi_address: "{{ monitor_address }}"
 #restapi_port: 5000
 #restapi_base_url: /api/v0.1
 #restapi_log_level: warning # available level are: critical, error, warning, info, debug
index bfacdb24f767ef0ee6daff8848a40b843863fc77..c13c44ffc101792d04b0120111688b72d9ec05d8 100644 (file)
@@ -184,6 +184,7 @@ rbd_default_format: 2
 ## Monitor options
 #
 monitor_interface: interface
+monitor_address: 0.0.0.0
 mon_use_fqdn: false # if set to true, the MON name used will be the fqdn in the ceph.conf
 mon_osd_down_out_interval: 600
 mon_osd_min_down_reporters: 7 # number of OSDs per host + 1
@@ -278,6 +279,7 @@ email_address: foo@bar.com
 ## REST API options
 #
 restapi_interface: "{{ monitor_interface }}"
+restapi_address: "{{ monitor_address }}"
 restapi_port: 5000
 restapi_base_url: /api/v0.1
 restapi_log_level: warning # available level are: critical, error, warning, info, debug
index e9d0d9b16632ced45b56120dde8d7ebd4fbf7cb8..cafd1fcbc41ff53849c7062107efc000872c8b66 100644 (file)
     journal_size|int == 0 and
     osd_group_name in group_names
 
-- name: make sure monitor_interface configured
+- name: make sure monitor_interface or monitor_address is configured
   fail:
-    msg: "monitor_interface must be configured. Interface for the monitor to listen on"
+    msg: "monitor_interface or monitor_address must be configured. Interface for the monitor to listen on or IP address of that interface"
   when:
     monitor_interface == 'interface' and
+    monitor_address == '0.0.0.0' and
     mon_group_name in group_names
 
 - name: make sure cluster_network configured
index c5d154a3ee6ec588801733a9b175593e476336ba..63f8140a468a593d9eb554dee4676a0be39901e0 100644 (file)
@@ -92,11 +92,14 @@ debug auth = {{ debug_mon_level }}
 {% if hostvars[host]['ansible_fqdn'] is defined and mon_use_fqdn %}
 [mon.{{ hostvars[host]['ansible_fqdn'] }}]
 host = {{ hostvars[host]['ansible_fqdn'] }}
-mon addr = {{ hostvars[host]['ansible_' + (hostvars[host]['monitor_interface'] if hostvars[host]['monitor_interface'] is defined else monitor_interface) ]['ipv4']['address'] }}
 {% elif hostvars[host]['ansible_hostname'] is defined %}
 [mon.{{ hostvars[host]['ansible_hostname'] }}]
 host = {{ hostvars[host]['ansible_hostname'] }}
-mon addr = {{ hostvars[host]['ansible_' + (hostvars[host]['monitor_interface'] if hostvars[host]['monitor_interface'] is defined else monitor_interface) ]['ipv4']['address'] }}
+{% endif %}
+{% if monitor_interface != "interface" %}
+{% include 'mon_addr_interface.j2' %}
+{% else %}
+{% include 'mon_addr_address.j2' %}
 {% endif %}
 {% endfor %}
 
@@ -198,7 +201,11 @@ nss db path = {{ radosgw_nss_db_path }}
 
 {% if groups[restapi_group_name] is defined %}
 [client.restapi]
-public addr = {{ hostvars[inventory_hostname]['ansible_' + restapi_interface]['ipv4']['address'] }}:{{ restapi_port }}
+{% if restapi_interface != "interface" %}
+{% include 'client_restapi_interface.j2' %}
+{% else %}
+{% include 'client_restapi_address.j2' %}
+{% endif %}
 restapi base url = {{ restapi_base_url }}
 restapi log level = {{ restapi_log_level }}
 keyring = /var/lib/ceph/restapi/ceph-restapi/keyring
diff --git a/roles/ceph-common/templates/client_restapi_address.j2 b/roles/ceph-common/templates/client_restapi_address.j2
new file mode 100644 (file)
index 0000000..e7279a8
--- /dev/null
@@ -0,0 +1,2 @@
+public addr = {{ hostvars[inventory_hostname]['restapi_address'] if hostvars[inventory_hostname]['restapi_address'] is defined else restapi_address }}:{{ restapi_port }}
+
diff --git a/roles/ceph-common/templates/client_restapi_interface.j2 b/roles/ceph-common/templates/client_restapi_interface.j2
new file mode 100644 (file)
index 0000000..6686de6
--- /dev/null
@@ -0,0 +1,2 @@
+public addr = {{ hostvars[inventory_hostname]['ansible_' + restapi_interface]['ipv4']['address'] }}:{{ restapi_port }}
+
diff --git a/roles/ceph-common/templates/mon_addr_address.j2 b/roles/ceph-common/templates/mon_addr_address.j2
new file mode 100644 (file)
index 0000000..19dfa53
--- /dev/null
@@ -0,0 +1,2 @@
+mon addr = {{ hostvars[host]['monitor_address'] if hostvars[host]['monitor_address'] is defined else monitor_address }}
+
diff --git a/roles/ceph-common/templates/mon_addr_interface.j2 b/roles/ceph-common/templates/mon_addr_interface.j2
new file mode 100644 (file)
index 0000000..b5c85cd
--- /dev/null
@@ -0,0 +1,2 @@
+mon addr = {{ hostvars[host]['ansible_' + (hostvars[host]['monitor_interface'] if hostvars[host]['monitor_interface'] is defined else monitor_interface) ]['ipv4']['address'] }}
+