ceph: allow external cluster
Sem-Ver: feature
Change-Id: Ic449f58c3e2a4e51a06bdaa53baa1a8759d33a05
diff --git a/releasenotes/notes/allow-external-ceph-9fa982e6734902e9.yaml b/releasenotes/notes/allow-external-ceph-9fa982e6734902e9.yaml
new file mode 100644
index 0000000..eaa9f75
--- /dev/null
+++ b/releasenotes/notes/allow-external-ceph-9fa982e6734902e9.yaml
@@ -0,0 +1,3 @@
+---
+features:
+ - Add ability to use an externally deployed Ceph cluster.
diff --git a/roles/ceph_csi_rbd/tasks/main.yml b/roles/ceph_csi_rbd/tasks/main.yml
index c4d1b80..b8839ee 100644
--- a/roles/ceph_csi_rbd/tasks/main.yml
+++ b/roles/ceph_csi_rbd/tasks/main.yml
@@ -25,12 +25,15 @@
ceph_monitors: "{{ _ceph_mon_dump.stdout | from_json | community.general.json_query('mons[*].addr') | map('regex_replace', '(.*):(.*)', '\\1') }}"
- name: Create Ceph pool
+ delegate_to: "{{ groups[ceph_csi_rbd_mons_group][0] }}"
vexxhost.atmosphere.ceph_pool:
name: "{{ ceph_csi_rbd_pool }}"
+ rule_name: "{{ ceph_csi_rbd_rule_name | default(omit) }}"
application: rbd
pg_autoscale_mode: "on"
- name: Create {{ ceph_csi_rbd_user }} user
+ delegate_to: "{{ groups[ceph_csi_rbd_mons_group][0] }}"
vexxhost.atmosphere.ceph_key:
name: "{{ ceph_csi_rbd_user }}"
caps:
@@ -39,6 +42,7 @@
osd: profile rbd pool={{ ceph_csi_rbd_pool }}
- name: Retrieve {{ ceph_csi_rbd_user }} keyring
+ delegate_to: "{{ groups[ceph_csi_rbd_mons_group][0] }}"
vexxhost.atmosphere.ceph_key:
name: "{{ ceph_csi_rbd_user }}"
state: info
@@ -58,7 +62,7 @@
kubeconfig: /etc/kubernetes/admin.conf
values:
csiConfig:
- - clusterID: "{{ ceph_mon_fsid }}"
+ - clusterID: "{{ ceph_csi_rbd_ceph_fsid }}"
monitors: "{{ ceph_monitors }}"
nodeplugin:
httpMetrics:
diff --git a/roles/openstack_helm_infra_ceph_provisioners/defaults/main.yml b/roles/openstack_helm_infra_ceph_provisioners/defaults/main.yml
index b4f8d8a..636d0e9 100644
--- a/roles/openstack_helm_infra_ceph_provisioners/defaults/main.yml
+++ b/roles/openstack_helm_infra_ceph_provisioners/defaults/main.yml
@@ -29,6 +29,12 @@
openstack_helm_infra_ceph_provisioners_chart_name: ceph-provisioners
# ]]]
+# .. envvar:: openstack_helm_infra_ceph_provisioners_ceph_mon_group [[[
+#
+# Ansible inventory group containing Ceph monitors.
+openstack_helm_infra_ceph_provisioners_ceph_mon_group: controllers
+
+ # ]]]
# .. envvar:: openstack_helm_infra_ceph_provisioners_ceph_monitors [[[
#
# IP address list of Ceph monitors
diff --git a/roles/openstack_helm_infra_ceph_provisioners/tasks/main.yml b/roles/openstack_helm_infra_ceph_provisioners/tasks/main.yml
index b76d60e..17e08e3 100644
--- a/roles/openstack_helm_infra_ceph_provisioners/tasks/main.yml
+++ b/roles/openstack_helm_infra_ceph_provisioners/tasks/main.yml
@@ -76,6 +76,7 @@
protocol: TCP
- name: Retrieve client.admin keyring
+ delegate_to: "{{ groups[openstack_helm_infra_ceph_provisioners_ceph_mon_group][0] }}"
vexxhost.atmosphere.ceph_key:
name: client.admin
state: info