Add RadosGW container
Implements blueprint radosgw-container Change-Id: Idc88a67a0979be626d3eaa9b2b9a527010aa2006
This commit is contained in:
parent
a5a5b3fd61
commit
1a368c9134
@ -110,6 +110,7 @@ ironic_api_port: "6385"
|
|||||||
|
|
||||||
magnum_api_port: "9511"
|
magnum_api_port: "9511"
|
||||||
|
|
||||||
|
rgw_port: "6780"
|
||||||
|
|
||||||
####################
|
####################
|
||||||
# Openstack options
|
# Openstack options
|
||||||
@ -155,6 +156,7 @@ enable_rabbitmq: "yes"
|
|||||||
|
|
||||||
# Additional optional OpenStack services are specified here
|
# Additional optional OpenStack services are specified here
|
||||||
enable_ceph: "no"
|
enable_ceph: "no"
|
||||||
|
enable_ceph_rgw: "no"
|
||||||
enable_cinder: "no"
|
enable_cinder: "no"
|
||||||
enable_heat: "yes"
|
enable_heat: "yes"
|
||||||
enable_horizon: "yes"
|
enable_horizon: "yes"
|
||||||
|
@ -57,6 +57,9 @@ control
|
|||||||
[ceph-mon:children]
|
[ceph-mon:children]
|
||||||
control
|
control
|
||||||
|
|
||||||
|
[ceph-rgw:children]
|
||||||
|
control
|
||||||
|
|
||||||
[ceph-osd:children]
|
[ceph-osd:children]
|
||||||
storage
|
storage
|
||||||
|
|
||||||
|
@ -17,6 +17,9 @@ ceph_data_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docke
|
|||||||
ceph_data_tag: "{{ openstack_release }}"
|
ceph_data_tag: "{{ openstack_release }}"
|
||||||
ceph_data_image_full: "{{ ceph_data_image }}:{{ ceph_data_tag }}"
|
ceph_data_image_full: "{{ ceph_data_image }}:{{ ceph_data_tag }}"
|
||||||
|
|
||||||
|
ceph_rgw_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-ceph-rgw"
|
||||||
|
ceph_rgw_tag: "{{ openstack_release }}"
|
||||||
|
ceph_rgw_image_full: "{{ ceph_rgw_image }}:{{ ceph_rgw_tag }}"
|
||||||
|
|
||||||
####################
|
####################
|
||||||
# Ceph
|
# Ceph
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
with_items:
|
with_items:
|
||||||
- "ceph-mon"
|
- "ceph-mon"
|
||||||
- "ceph-osd"
|
- "ceph-osd"
|
||||||
|
- "ceph-rgw"
|
||||||
|
|
||||||
- name: Copying over config.json files for services
|
- name: Copying over config.json files for services
|
||||||
template:
|
template:
|
||||||
@ -15,6 +16,7 @@
|
|||||||
with_items:
|
with_items:
|
||||||
- "ceph-mon"
|
- "ceph-mon"
|
||||||
- "ceph-osd"
|
- "ceph-osd"
|
||||||
|
- "ceph-rgw"
|
||||||
|
|
||||||
- name: Copying over ceph.conf
|
- name: Copying over ceph.conf
|
||||||
merge_configs:
|
merge_configs:
|
||||||
@ -27,3 +29,4 @@
|
|||||||
with_items:
|
with_items:
|
||||||
- "ceph-mon"
|
- "ceph-mon"
|
||||||
- "ceph-osd"
|
- "ceph-osd"
|
||||||
|
- "ceph-rgw"
|
||||||
|
@ -32,3 +32,14 @@
|
|||||||
- "{{ ceph_files['ceph.client.mon.keyring'] }}"
|
- "{{ ceph_files['ceph.client.mon.keyring'] }}"
|
||||||
- "{{ ceph_files['ceph.monmap'] }}"
|
- "{{ ceph_files['ceph.monmap'] }}"
|
||||||
when: inventory_hostname in groups['ceph-mon']
|
when: inventory_hostname in groups['ceph-mon']
|
||||||
|
|
||||||
|
- name: Pushing Ceph keyrings for RGWs
|
||||||
|
bslurp:
|
||||||
|
src: "{{ item.content }}"
|
||||||
|
dest: "{{ node_config_directory }}/ceph-rgw/{{ item.filename }}"
|
||||||
|
mode: 0600
|
||||||
|
sha1: "{{ item.sha1 }}"
|
||||||
|
with_items:
|
||||||
|
- "{{ ceph_files['ceph.client.admin.keyring'] }}"
|
||||||
|
- "{{ ceph_files['ceph.client.radosgw.keyring'] }}"
|
||||||
|
when: inventory_hostname in groups['ceph-rgw']
|
||||||
|
@ -14,3 +14,8 @@
|
|||||||
|
|
||||||
- include: start_osds.yml
|
- include: start_osds.yml
|
||||||
when: inventory_hostname in groups['ceph-osd']
|
when: inventory_hostname in groups['ceph-osd']
|
||||||
|
|
||||||
|
- include: start_rgws.yml
|
||||||
|
when:
|
||||||
|
- inventory_hostname in groups['ceph-rgw']
|
||||||
|
- enable_ceph_rgw | bool
|
||||||
|
19
ansible/roles/ceph/tasks/start_rgws.yml
Normal file
19
ansible/roles/ceph/tasks/start_rgws.yml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
- name: Starting ceph-rgw container
|
||||||
|
docker:
|
||||||
|
tty: True
|
||||||
|
net: host
|
||||||
|
pull: "{{ docker_pull_policy }}"
|
||||||
|
restart_policy: "{{ docker_restart_policy }}"
|
||||||
|
restart_policy_retry: "{{ docker_restart_policy_retry }}"
|
||||||
|
state: reloaded
|
||||||
|
registry: "{{ docker_registry }}"
|
||||||
|
username: "{{ docker_registry_username }}"
|
||||||
|
password: "{{ docker_registry_password }}"
|
||||||
|
insecure_registry: "{{ docker_insecure_registry }}"
|
||||||
|
name: ceph_rgw
|
||||||
|
image: "{{ ceph_rgw_image_full }}"
|
||||||
|
volumes: "{{ node_config_directory }}/ceph-rgw/:{{ container_config_directory }}/:ro"
|
||||||
|
env:
|
||||||
|
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
|
||||||
|
when: inventory_hostname in groups['ceph-rgw']
|
25
ansible/roles/ceph/templates/ceph-rgw.json.j2
Normal file
25
ansible/roles/ceph/templates/ceph-rgw.json.j2
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"command": "/usr/bin/radosgw -c /etc/ceph/ceph.conf -n client.radosgw.gateway -d",
|
||||||
|
"config_files": [
|
||||||
|
{
|
||||||
|
"source": "{{ container_config_directory }}/ceph.conf",
|
||||||
|
"dest": "/etc/ceph/ceph.conf",
|
||||||
|
"owner": "ceph",
|
||||||
|
"perm": "0600"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": "{{ container_config_directory }}/ceph.client.admin.keyring",
|
||||||
|
"dest": "/etc/ceph/ceph.client.admin.keyring",
|
||||||
|
"owner": "ceph",
|
||||||
|
"perm": "0600",
|
||||||
|
"optional": "True"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": "{{ container_config_directory }}/ceph.client.radosgw.keyring",
|
||||||
|
"dest": "/etc/ceph/ceph.client.radosgw.keyring",
|
||||||
|
"owner": "ceph",
|
||||||
|
"perm": "0600",
|
||||||
|
"optional": "True"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -7,3 +7,11 @@ mon host = {% for host in groups['ceph-mon'] %}{{ hostvars[host]['ansible_' + ho
|
|||||||
auth cluster required = cephx
|
auth cluster required = cephx
|
||||||
auth service required = cephx
|
auth service required = cephx
|
||||||
auth client required = cephx
|
auth client required = cephx
|
||||||
|
|
||||||
|
{% if service_name is defined and service_name == 'ceph-rgw' %}
|
||||||
|
[client.radosgw.gateway]
|
||||||
|
host = {{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}
|
||||||
|
keyring = /etc/ceph/ceph.client.radosgw.keyring
|
||||||
|
log file = /var/log/radosgw/client.radosgw.gateway.log
|
||||||
|
rgw frontends = civetweb port={{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}:{{ rgw_port }}
|
||||||
|
{% endif %}
|
||||||
|
@ -173,3 +173,11 @@ listen magnum_api
|
|||||||
server {{ hostvars[host]['ansible_hostname'] }} {{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ magnum_api_port }} check inter 2000 rise 2 fall 5
|
server {{ hostvars[host]['ansible_hostname'] }} {{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ magnum_api_port }} check inter 2000 rise 2 fall 5
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if enable_ceph | bool and enable_ceph_rgw | bool %}
|
||||||
|
listen radosgw
|
||||||
|
bind {{ kolla_internal_address}}:{{ rgw_port }}
|
||||||
|
{% for host in groups['ceph-rgw'] %}
|
||||||
|
server {{ hostvars[host]['ansible_hostname'] }} {{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ rgw_port }} check inter 2000 rise 2 fall 5
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
@ -406,3 +406,19 @@
|
|||||||
connect_timeout: 1
|
connect_timeout: 1
|
||||||
state: stopped
|
state: stopped
|
||||||
when: inventory_hostname in groups['haproxy']
|
when: inventory_hostname in groups['haproxy']
|
||||||
|
|
||||||
|
- name: Checking free port for RadosGW
|
||||||
|
wait_for:
|
||||||
|
host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
|
||||||
|
port: "{{ rgw_port }}"
|
||||||
|
connect_timeout: 1
|
||||||
|
state: stopped
|
||||||
|
when: inventory_hostname in groups['ceph-rgw']
|
||||||
|
|
||||||
|
- name: Checking free port for RadosGW HAProxy
|
||||||
|
wait_for:
|
||||||
|
host: "{{ kolla_internal_address }}"
|
||||||
|
port: "{{ rgw_port }}"
|
||||||
|
connect_timeout: 1
|
||||||
|
state: stopped
|
||||||
|
when: inventory_hostname in groups['haproxy']
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
- hosts:
|
- hosts:
|
||||||
- ceph-mon
|
- ceph-mon
|
||||||
- ceph-osd
|
- ceph-osd
|
||||||
|
- ceph-rgw
|
||||||
roles:
|
roles:
|
||||||
- { role: ceph,
|
- { role: ceph,
|
||||||
tags: ceph,
|
tags: ceph,
|
||||||
|
@ -5,6 +5,7 @@ MAINTAINER {{ maintainer }}
|
|||||||
|
|
||||||
RUN yum -y install \
|
RUN yum -y install \
|
||||||
ceph \
|
ceph \
|
||||||
|
ceph-radosgw \
|
||||||
parted \
|
parted \
|
||||||
hdparm \
|
hdparm \
|
||||||
&& yum clean all
|
&& yum clean all
|
||||||
@ -13,6 +14,7 @@ RUN yum -y install \
|
|||||||
|
|
||||||
RUN apt-get install -y --no-install-recommends \
|
RUN apt-get install -y --no-install-recommends \
|
||||||
ceph \
|
ceph \
|
||||||
|
radosgw \
|
||||||
parted \
|
parted \
|
||||||
hdparm \
|
hdparm \
|
||||||
&& apt-get clean
|
&& apt-get clean
|
||||||
|
@ -5,3 +5,5 @@ COPY fetch_ceph_keys.py /usr/bin/
|
|||||||
|
|
||||||
COPY extend_start.sh /usr/local/bin/kolla_extend_start
|
COPY extend_start.sh /usr/local/bin/kolla_extend_start
|
||||||
RUN chmod 755 /usr/local/bin/kolla_extend_start /usr/bin/fetch_ceph_keys.py
|
RUN chmod 755 /usr/local/bin/kolla_extend_start /usr/bin/fetch_ceph_keys.py
|
||||||
|
|
||||||
|
{{ include_footer }}
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
# Setup common paths
|
# Setup common paths
|
||||||
KEYRING_ADMIN="/etc/ceph/ceph.client.admin.keyring"
|
KEYRING_ADMIN="/etc/ceph/ceph.client.admin.keyring"
|
||||||
KEYRING_MON="/etc/ceph/ceph.client.mon.keyring"
|
KEYRING_MON="/etc/ceph/ceph.client.mon.keyring"
|
||||||
|
KEYRING_RGW="/etc/ceph/ceph.client.radosgw.keyring"
|
||||||
MONMAP="/etc/ceph/ceph.monmap"
|
MONMAP="/etc/ceph/ceph.monmap"
|
||||||
MON_DIR="/var/lib/ceph/mon/ceph-$(hostname)"
|
MON_DIR="/var/lib/ceph/mon/ceph-$(hostname)"
|
||||||
|
|
||||||
@ -15,7 +16,9 @@ if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then
|
|||||||
# Generating initial keyrings and monmap
|
# Generating initial keyrings and monmap
|
||||||
ceph-authtool --create-keyring "${KEYRING_MON}" --gen-key -n mon. --cap mon 'allow *'
|
ceph-authtool --create-keyring "${KEYRING_MON}" --gen-key -n mon. --cap mon 'allow *'
|
||||||
ceph-authtool --create-keyring "${KEYRING_ADMIN}" --gen-key -n client.admin --set-uid=0 --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow'
|
ceph-authtool --create-keyring "${KEYRING_ADMIN}" --gen-key -n client.admin --set-uid=0 --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow'
|
||||||
|
ceph-authtool --create-keyring "${KEYRING_RGW}" --gen-key -n client.radosgw.gateway --set-uid=0 --cap osd 'allow rwx' --cap mon 'allow rwx'
|
||||||
ceph-authtool "${KEYRING_MON}" --import-keyring "${KEYRING_ADMIN}"
|
ceph-authtool "${KEYRING_MON}" --import-keyring "${KEYRING_ADMIN}"
|
||||||
|
ceph-authtool "${KEYRING_MON}" --import-keyring "${KEYRING_RGW}"
|
||||||
monmaptool --create --add "$(hostname)" "${MON_IP}" --fsid "${FSID}" "${MONMAP}"
|
monmaptool --create --add "$(hostname)" "${MON_IP}" --fsid "${FSID}" "${MONMAP}"
|
||||||
|
|
||||||
echo "Sleeping until keys are fetched"
|
echo "Sleeping until keys are fetched"
|
||||||
|
@ -57,9 +57,10 @@ def read_file(filename):
|
|||||||
def main():
|
def main():
|
||||||
admin_keyring = 'ceph.client.admin.keyring'
|
admin_keyring = 'ceph.client.admin.keyring'
|
||||||
mon_keyring = 'ceph.client.mon.keyring'
|
mon_keyring = 'ceph.client.mon.keyring'
|
||||||
|
rgw_keyring = 'ceph.client.radosgw.keyring'
|
||||||
monmap = 'ceph.monmap'
|
monmap = 'ceph.monmap'
|
||||||
|
|
||||||
files = [admin_keyring, mon_keyring, monmap]
|
files = [admin_keyring, mon_keyring, rgw_keyring, monmap]
|
||||||
json_exit({filename: read_file(filename) for filename in files})
|
json_exit({filename: read_file(filename) for filename in files})
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,3 +3,5 @@ MAINTAINER {{ maintainer }}
|
|||||||
|
|
||||||
COPY extend_start.sh /usr/local/bin/kolla_extend_start
|
COPY extend_start.sh /usr/local/bin/kolla_extend_start
|
||||||
RUN chmod 755 /usr/local/bin/kolla_extend_start
|
RUN chmod 755 /usr/local/bin/kolla_extend_start
|
||||||
|
|
||||||
|
{{ include_footer }}
|
||||||
|
4
docker/ceph/ceph-rgw/Dockerfile.j2
Normal file
4
docker/ceph/ceph-rgw/Dockerfile.j2
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
FROM {{ namespace }}/{{ image_prefix }}ceph-base:{{ tag }}
|
||||||
|
MAINTAINER {{ maintainer }}
|
||||||
|
|
||||||
|
{{ include_footer }}
|
Loading…
Reference in New Issue
Block a user