Skip to content

Commit 5c487c6

Browse files
Maxim Savamaximsava12
authored andcommitted
cifmw_ceph_client: Discover Ceph RGW and create Glance secrets
This patch enhances the cifmw_ceph_client role to: - Automatically discover Ceph RGW (RADOS Gateway) endpoint and credentials - Create Glance secrets using the discovered RGW settings This integration allows Glance to leverage Ceph RGW for secret storage when object store backends are enabled in the environment. Changes: - Add RGW discovery tasks to the role - Add logic to create Glance secrets with RGW config
1 parent 8b60523 commit 5c487c6

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed

roles/cifmw_ceph_client/defaults/main.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,5 @@ cifmw_ceph_client_k8s_secret_name: ceph-conf-files
3535
cifmw_ceph_client_k8s_namespace: openstack
3636
cifmw_ceph_client_values_post_ceph_path_dst: "{{ cifmw_ceph_client_fetch_dir }}/edpm_values_post_ceph.yaml"
3737
cifmw_ceph_client_service_values_post_ceph_path_dst: "{{ cifmw_ceph_client_fetch_dir }}/edpm_service_values_post_ceph.yaml"
38+
cifmw_ceph_client_rgw_bucket_name: "ceph-s3-bucket"
39+
cifmw_ceph_client_rgw_store_cacert: "/etc/pki/tls/certs/ca-bundle.crt"

roles/cifmw_ceph_client/tasks/main.yml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,42 @@
7878
mode: "0600"
7979
force: true
8080

81+
- name: Get ceph RGW endpoint API endpoint
82+
ansible.builtin.shell:
83+
cmd: |
84+
set -xe -o pipefail
85+
oc rsh -n {{ namespace }} openstackclient openstack endpoint list --interface internal --service swift -c URL -f value | cut -d "/" -f 1,2,3
86+
register: reg_ceph_rgw_s3_endpoint
87+
changed_when: "'stdout' in reg_ceph_rgw_s3_endpoint"
88+
failed_when: (reg_ceph_rgw_s3_endpoint.rc | int) >= 1
89+
90+
- name: Discover ceph RGW settings
91+
ansible.builtin.set_fact:
92+
ceph_s3_access_key: "{{ lookup('ansible.builtin.password', '/dev/null', chars=['ascii_letters','digits'], length=32) }}"
93+
ceph_s3_secret_key: "{{ lookup('ansible.builtin.password', '/dev/null', chars=['ascii_letters','digits'], length=32) }}"
94+
ceph_s3_bucket: "{{ cifmw_ceph_client_rgw_bucket_name }}"
95+
ceph_s3_endpoint: "{{ reg_ceph_rgw_s3_endpoint.stdout }}"
96+
97+
- name: Create glance secrets for ceph S3 backend
98+
ansible.builtin.template:
99+
src: templates/k8s_ceph_rgw_glance_secret.j2
100+
dest: "{{ cifmw_ceph_client_fetch_dir }}/k8s_ceph_rgw_glance_secret.yaml"
101+
mode: "0640"
102+
force: true
103+
104+
- name: Create ec2 credentials
105+
ansible.builtin.shell: |-
106+
oc rsh -n {{ namespace }} openstackclient openstack credential create --type ec2 --project admin admin '{"access": "{{ ceph_s3_access_key }}", "secret": "{{ ceph_s3_secret_key }}"}'
107+
changed_when: false
108+
109+
- name: Apply the S3 backend secrets
110+
ansible.builtin.shell: |
111+
oc project {{ namespace }}
112+
oc apply -f {{ cifmw_ceph_client_fetch_dir }}/k8s_ceph_rgw_glance_secret.yaml
113+
register: s3_secrets_oc_apply_result
114+
changed_when: ('stdout' in s3_secrets_oc_apply_result) and ('unchanged' not in s3_secrets_oc_apply_result.stdout)
115+
failed_when: ( s3_secrets_oc_apply_result.rc | int ) >= 1
116+
81117
- name: Create edpm-values-post-ceph ConfigMap if sample path provided
82118
ansible.builtin.include_tasks: edpm_values_post_ceph.yml
83119
when:
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
s3_store_host = {{ ceph_s3_endpoint }}
2+
s3_store_access_key = {{ ceph_s3_access_key }}
3+
s3_store_secret_key = {{ ceph_s3_secret_key }}
4+
s3_store_bucket = {{ ceph_s3_bucket }}
5+
s3_store_cacert = {{ cifmw_ceph_client_rgw_store_cacert }}

0 commit comments

Comments
 (0)