Merge pull request #2128 from ceph/mon_interface

config: fix monitor_interface when not passed in the inventory file | osd:  fix old jewel container activation
pull/2133/head
Sébastien Han 2017-11-03 13:05:51 +01:00 committed by GitHub
commit 76d9c8e556
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 64 additions and 34 deletions

View File

@ -6,7 +6,7 @@
- name: set docker_exec_client_cmd for containers - name: set docker_exec_client_cmd for containers
set_fact: set_fact:
docker_exec_client_cmd: docker run -v /etc/ceph:/etc/ceph --entrypoint /usr/bin/{{ docker_exec_client_cmd_binary }} {{ ceph_docker_registry}}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} docker_exec_client_cmd: docker run --rm -v /etc/ceph:/etc/ceph --entrypoint /usr/bin/{{ docker_exec_client_cmd_binary }} {{ ceph_docker_registry}}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }}
when: containerized_deployment when: containerized_deployment
- name: set docker_exec_client_cmd for non-containers - name: set docker_exec_client_cmd for non-containers

View File

@ -50,11 +50,19 @@ mon host = {% if nb_mon > 0 %}
{%- elif ip_version == 'ipv6' -%} {%- elif ip_version == 'ipv6' -%}
[{{ hostvars[host]['monitor_address'] }}] [{{ hostvars[host]['monitor_address'] }}]
{%- endif %} {%- endif %}
{%- else -%} {%- elif hostvars[host]['monitor_interface'] is defined -%}
{% set interface = 'ansible_' + hostvars[host]['monitor_interface'] %}
{% if ip_version == 'ipv4' -%} {% if ip_version == 'ipv4' -%}
{{ hostvars[host]['ansible_' + hostvars[host]['monitor_interface']][ip_version]['address'] }} {{ hostvars[host][interface][ip_version]['address'] }}
{%- elif ip_version == 'ipv6' -%} {%- elif ip_version == 'ipv6' -%}
[{{ hostvars[host]['ansible_' + hostvars[host]['monitor_interface']][ip_version][0]['address'] }}] [{{ hostvars[host][interface][ip_version][0]['address'] }}]
{%- endif %}
{%- else -%}
{% set interface = 'ansible_' + monitor_interface %}
{% if ip_version == 'ipv4' -%}
{{ hostvars[host][interface][ip_version]['address'] }}
{%- elif ip_version == 'ipv6' -%}
[{{ hostvars[host][interface][ip_version][0]['address'] }}]
{%- endif %} {%- endif %}
{%- endif %} {%- endif %}
{% if not loop.last -%},{%- endif %} {% if not loop.last -%},{%- endif %}
@ -80,13 +88,20 @@ mon host = {% if nb_mon > 0 %}
{%- elif ip_version == 'ipv6' -%} {%- elif ip_version == 'ipv6' -%}
[{{ hostvars[host]['monitor_address'] }}] [{{ hostvars[host]['monitor_address'] }}]
{%- endif %} {%- endif %}
{%- else -%} {%- elif hostvars[host]['monitor_interface'] is defined -%}
{% set interface = 'ansible_' + hostvars[host]['monitor_interface'] %} {% set interface = 'ansible_' + hostvars[host]['monitor_interface'] %}
{% if ip_version == 'ipv4' -%} {% if ip_version == 'ipv4' -%}
{{ hostvars[host][interface][ip_version]['address'] }} {{ hostvars[host][interface][ip_version]['address'] }}
{%- elif ip_version == 'ipv6' -%} {%- elif ip_version == 'ipv6' -%}
[{{ hostvars[host][interface][ip_version][0]['address'] }}] [{{ hostvars[host][interface][ip_version][0]['address'] }}]
{%- endif %} {%- endif %}
{%- else -%}
{% set interface = 'ansible_' + monitor_interface %}
{% if ip_version == 'ipv4' -%}
{{ [interface][ip_version]['address'] }}
{%- elif ip_version == 'ipv6' -%}
[{{ [interface][ip_version][0]['address'] }}]
{%- endif %}
{%- endif %} {%- endif %}
{% if not loop.last -%},{%- endif %} {% if not loop.last -%},{%- endif %}
{%- endfor %} {%- endfor %}

View File

@ -94,7 +94,7 @@
- fetch_container_image - fetch_container_image
- name: get ceph version - name: get ceph version
command: docker run --entrypoint /usr/bin/ceph {{ ceph_docker_registry}}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} --version command: docker run --rm --entrypoint /usr/bin/ceph {{ ceph_docker_registry}}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} --version
changed_when: false changed_when: false
check_mode: no check_mode: no
register: ceph_version register: ceph_version

View File

@ -8,48 +8,54 @@ ExecStartPre=-/usr/bin/docker rm ceph-mon-%i
ExecStartPre=$(command -v mkdir) -p /etc/ceph /var/lib/ceph/mon ExecStartPre=$(command -v mkdir) -p /etc/ceph /var/lib/ceph/mon
ExecStart=/usr/bin/docker run --rm --name ceph-mon-%i --net=host \ ExecStart=/usr/bin/docker run --rm --name ceph-mon-%i --net=host \
--memory={{ ceph_mon_docker_memory_limit }} \ --memory={{ ceph_mon_docker_memory_limit }} \
{% if docker_version.split('.')[0] | version_compare('13', '>=') -%} {% if docker_version.split('.')[0] | version_compare('13', '>=') -%}
--cpus={{ ceph_mon_docker_cpu_limit }} \ --cpus={{ ceph_mon_docker_cpu_limit }} \
{% else -%} {% else -%}
--cpu-quota={{ ceph_mon_docker_cpu_limit * 100000 }} \ --cpu-quota={{ ceph_mon_docker_cpu_limit * 100000 }} \
{% endif -%} {% endif -%}
{% if not containerized_deployment_with_kv -%} {% if not containerized_deployment_with_kv -%}
-v /var/lib/ceph:/var/lib/ceph \ -v /var/lib/ceph:/var/lib/ceph \
-v /etc/ceph:/etc/ceph \ -v /etc/ceph:/etc/ceph \
{% else -%} {% else -%}
-e KV_TYPE={{kv_type}} \ -e KV_TYPE={{kv_type}} \
-e KV_IP={{kv_endpoint}}\ -e KV_IP={{kv_endpoint}}\
-e KV_PORT={{kv_port}} \ -e KV_PORT={{kv_port}} \
{% endif -%} {% endif -%}
-v /etc/localtime:/etc/localtime:ro \ -v /etc/localtime:/etc/localtime:ro \
{% if mon_docker_privileged -%} {% if mon_docker_privileged -%}
--privileged \ --privileged \
{% endif -%} {% endif -%}
{% if mon_docker_net_host -%} {% if mon_docker_net_host -%}
--net=host \ --net=host \
{% endif -%} {% endif -%}
-e IP_VERSION={{ ip_version[-1:] }} \ -e IP_VERSION={{ ip_version[-1:] }} \
{% if monitor_address_block != 'subnet' %} {% if monitor_address_block != 'subnet' %}
{% if ip_version == 'ipv4' -%} {% if ip_version == 'ipv4' -%}
-e MON_IP={{ hostvars[inventory_hostname]['ansible_all_' + ip_version + '_addresses'] | ipaddr(monitor_address_block) | first }} \ -e MON_IP={{ hostvars[inventory_hostname]['ansible_all_' + ip_version + '_addresses'] | ipaddr(monitor_address_block) | first }} \
{% elif ip_version == 'ipv6' -%} {% elif ip_version == 'ipv6' -%}
-e MON_IP=[{{ hostvars[inventory_hostname]['ansible_all_' + ip_version + '_addresses'] | ipaddr(monitor_address_block) | first }}] \ -e MON_IP=[{{ hostvars[inventory_hostname]['ansible_all_' + ip_version + '_addresses'] | ipaddr(monitor_address_block) | first }}] \
{% endif -%} {% endif -%}
{% elif hostvars[inventory_hostname]['monitor_address'] is defined and hostvars[inventory_hostname]['monitor_address'] != '0.0.0.0' -%} {% elif hostvars[inventory_hostname]['monitor_address'] is defined and hostvars[inventory_hostname]['monitor_address'] != '0.0.0.0' %}
{% if ip_version == 'ipv4' -%} {% if ip_version == 'ipv4' -%}
-e MON_IP={{ hostvars[inventory_hostname]['monitor_address'] }} \ -e MON_IP={{ hostvars[inventory_hostname]['monitor_address'] }} \
{% elif ip_version == 'ipv6' -%} {% elif ip_version == 'ipv6' -%}
-e MON_IP=[{{ hostvars[inventory_hostname]['monitor_address'] }}] \ -e MON_IP=[{{ hostvars[inventory_hostname]['monitor_address'] }}] \
{% endif -%} {% endif -%}
{% else -%} {% elif hostvars[inventory_hostname]['monitor_interface'] is defined %}
{% set interface = 'ansible_' + hostvars[inventory_hostname]['monitor_interface'] %} {% set interface = 'ansible_' + hostvars[inventory_hostname]['monitor_interface'] %}
{% if ip_version == 'ipv6' -%} {% if ip_version == 'ipv4' -%}
-e MON_IP=[{{ hostvars[inventory_hostname][interface][ip_version][0]['address'] }}] \
{% elif ip_version == 'ipv4' -%}
-e MON_IP={{ hostvars[inventory_hostname][interface][ip_version]['address'] }} \ -e MON_IP={{ hostvars[inventory_hostname][interface][ip_version]['address'] }} \
{% endif -%} {% elif ip_version == 'ipv6' -%}
{% endif -%} -e MON_IP=[{{ hostvars[inventory_hostname][interface][ip_version][0]['address'] }}] \
{% endif -%}
{% else %}
{% set interface = 'ansible_' + monitor_interface %}
{% if ip_version == 'ipv4' -%}
-e MON_IP={{ [interface][ip_version]['address'] }} \
{% elif ip_version == 'ipv6' -%}
-e MON_IP=[{{ [interface][ip_version][0]['address'] }}] \
{% endif -%}
{%- endif %}
-e CLUSTER={{ cluster }} \ -e CLUSTER={{ cluster }} \
-e FSID={{ fsid }} \ -e FSID={{ fsid }} \
-e CEPH_PUBLIC_NETWORK={{ public_network }} \ -e CEPH_PUBLIC_NETWORK={{ public_network }} \

View File

@ -11,7 +11,7 @@
- ceph_docker_on_openstack - ceph_docker_on_openstack
- name: test if the container image has the disk_list function - name: test if the container image has the disk_list function
command: docker run --entrypoint=stat {{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} disk_list.sh command: docker run --rm --entrypoint=stat {{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} disk_list.sh
changed_when: false changed_when: false
failed_when: false failed_when: false
register: disk_list register: disk_list

View File

@ -5,7 +5,6 @@
- name: prepare ceph containerized osd disk collocated - name: prepare ceph containerized osd disk collocated
shell: | shell: |
docker run --net=host \ docker run --net=host \
--rm \
--pid=host \ --pid=host \
--privileged=true \ --privileged=true \
--name=ceph-osd-prepare-{{ ansible_hostname }}-{{ item.1 | regex_replace('/dev/', '') }} \ --name=ceph-osd-prepare-{{ ansible_hostname }}-{{ item.1 | regex_replace('/dev/', '') }} \
@ -32,7 +31,6 @@
- name: automatic prepare ceph containerized osd disk collocated - name: automatic prepare ceph containerized osd disk collocated
shell: | shell: |
docker run --net=host \ docker run --net=host \
--rm \
--pid=host \ --pid=host \
--privileged=true \ --privileged=true \
--name=ceph-osd-prepare-{{ ansible_hostname }}-{{ item.key }} \ --name=ceph-osd-prepare-{{ ansible_hostname }}-{{ item.key }} \

View File

@ -5,7 +5,6 @@
- name: prepare ceph "{{ osd_objectstore }}" containerized osd disk(s) non-collocated - name: prepare ceph "{{ osd_objectstore }}" containerized osd disk(s) non-collocated
shell: | shell: |
docker run --net=host \ docker run --net=host \
--rm \
--pid=host \ --pid=host \
--privileged=true \ --privileged=true \
--name=ceph-osd-prepare-{{ ansible_hostname }}-{{ item.1 | regex_replace('/dev/', '') }} \ --name=ceph-osd-prepare-{{ ansible_hostname }}-{{ item.1 | regex_replace('/dev/', '') }} \
@ -34,7 +33,6 @@
- name: prepare ceph "{{ osd_objectstore }}" containerized osd disk(s) non-collocated with a dedicated device for db and wal - name: prepare ceph "{{ osd_objectstore }}" containerized osd disk(s) non-collocated with a dedicated device for db and wal
shell: | shell: |
docker run --net=host \ docker run --net=host \
--rm \
--pid=host \ --pid=host \
--privileged=true \ --privileged=true \
--name=ceph-osd-prepare-{{ ansible_hostname }}-{{ item.1 | regex_replace('/dev/', '') }} \ --name=ceph-osd-prepare-{{ ansible_hostname }}-{{ item.1 | regex_replace('/dev/', '') }} \

View File

@ -7,7 +7,7 @@
############# #############
{% if disk_list.get("rc", 1) == 0 -%} {% if disk_list.get("rc", 1) == 0 -%}
function expose_partitions () { function expose_partitions () {
DOCKER_ENV=$(docker run --name expose_partitions_${1} --privileged=true -v /dev/:/dev/ -v /etc/ceph:/etc/ceph -e CLUSTER={{ cluster }} -e OSD_DEVICE=/dev/${1} {{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} disk_list) DOCKER_ENV=$(docker run --rm --name expose_partitions_${1} --privileged=true -v /dev/:/dev/ -v /etc/ceph:/etc/ceph -e CLUSTER={{ cluster }} -e OSD_DEVICE=/dev/${1} {{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} disk_list)
docker rm -f expose_partitions_${1} docker rm -f expose_partitions_${1}
} }
{% else -%} {% else -%}
@ -15,9 +15,22 @@ DOCKER_ENV=$(docker run --name expose_partitions_${1} --privileged=true -v /dev/
# Jewel images prior to https://github.com/ceph/ceph-docker/pull/797 # Jewel images prior to https://github.com/ceph/ceph-docker/pull/797
REGEX="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}" REGEX="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
function expose_partitions { function expose_partitions {
local partition if docker ps -a | grep -sq ceph-osd-prepare-{{ ansible_hostname }}-devdev${1}; then
if docker logs ceph-osd-prepare-{{ ansible_hostname }}-devdev${1} |& grep -Eo "$partition is GPT partition"; then if [[ ! -f {{ ceph_osd_docker_run_script_path }}/ceph-osd-prepare-{{ ansible_hostname }}-devdev${1}.log ]]; then
part=$(docker logs ceph-osd-prepare-{{ ansible_hostname }}-devdev${1} |& grep "$partition is GPT partition" | grep -Eo /dev/disk/by-partuuid/${REGEX} | uniq) docker logs ceph-osd-prepare-{{ ansible_hostname }}-devdev${1} &> {{ ceph_osd_docker_run_script_path }}/ceph-osd-prepare-{{ ansible_hostname }}-devdev${1}.log
fi
fi
if docker ps -a | grep -sq ceph-osd-prepare-{{ ansible_hostname }}-${1}; then
if [[ ! -f {{ ceph_osd_docker_run_script_path }}/ceph-osd-prepare-{{ ansible_hostname }}-${1}.log ]]; then
docker logs ceph-osd-prepare-{{ ansible_hostname }}-${1} &> {{ ceph_osd_docker_run_script_path }}/ceph-osd-prepare-{{ ansible_hostname }}-${1}.log
fi
fi
if [[ -f {{ ceph_osd_docker_run_script_path }}/ceph-osd-prepare-{{ ansible_hostname }}-devdev${1}.log ]]; then
part=$(grep "Journal is GPT partition" {{ ceph_osd_docker_run_script_path }}/ceph-osd-prepare-{{ ansible_hostname }}-devdev${1}.log | grep -Eo /dev/disk/by-partuuid/${REGEX} | uniq)
DOCKER_ENV="$DOCKER_ENV -e OSD_JOURNAL=$part"
fi
if [[ -f {{ ceph_osd_docker_run_script_path }}/ceph-osd-prepare-{{ ansible_hostname }}-${1}.log ]]; then
part=$(grep "Journal is GPT partition" {{ ceph_osd_docker_run_script_path }}/ceph-osd-prepare-{{ ansible_hostname }}-${1}.log | grep -Eo /dev/disk/by-partuuid/${REGEX} | uniq)
DOCKER_ENV="$DOCKER_ENV -e OSD_JOURNAL=$part" DOCKER_ENV="$DOCKER_ENV -e OSD_JOURNAL=$part"
fi fi
} }