Fix etcd when Kuryr is disabled

This is because the environment variable ETCD_INITIAL_CLUSTER contains
compute nodes, which are not running etcd.

Compute nodes are in the etcd group to allow for kuryr, which needs etcd
to be running on compute nodes (why???). When kuryr is disabled, etcd is
not deployed on these hosts (using host_in_groups). However, the
ETCD_INITIAL_CLUSTER environment variable always includes all hosts in
the etcd group.

This change sets ETCD_INITIAL_CLUSTER correctly in both cases.

Change-Id: I11f812d3fdacf0eeb8236f9a39d673aaa480dd26
Closes-Bug: #1783963
This commit is contained in:
Mark Goddard 2018-07-26 18:58:25 +01:00
parent 3e45b2cbec
commit b9208cd178

View File

@ -14,16 +14,12 @@ etcd_services:
ETCD_INITIAL_ADVERTISE_PEER_URLS: "{{ internal_protocol }}://{{ api_interface_address }}:{{ etcd_peer_port }}"
ETCD_LISTEN_PEER_URLS: "{{ internal_protocol }}://{{ api_interface_address }}:{{ etcd_peer_port }}"
ETCD_INITIAL_CLUSTER_TOKEN: "{{ etcd_cluster_token }}"
ETCD_INITIAL_CLUSTER: "{% for host in groups['etcd'] %}{{ hostvars[host]['ansible_hostname'] }}={{ internal_protocol }}://{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ etcd_peer_port }}{% if not loop.last %},{% endif %}{% endfor %}"
ETCD_INITIAL_CLUSTER: "{% for host in etcd_hosts %}{{ hostvars[host]['ansible_hostname'] }}={{ internal_protocol }}://{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ etcd_peer_port }}{% if not loop.last %},{% endif %}{% endfor %}"
ETCD_INITIAL_CLUSTER_STATE: "new"
ETCD_OUT_FILE: "/var/log/kolla/etcd/etcd.log"
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
image: "{{ etcd_image_full }}"
host_in_groups: >-
{{
inventory_hostname in groups['control']
or (enable_kuryr | bool and inventory_hostname in groups['compute'])
}}
host_in_groups: "{{ inventory_hostname in etcd_hosts }}"
volumes:
- "{{ node_config_directory }}/etcd/:{{ container_config_directory }}/:ro"
- "/etc/localtime:/etc/localtime:ro"
@ -39,3 +35,6 @@ etcd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_nam
etcd_tag: "{{ openstack_release }}"
etcd_image_full: "{{ etcd_image }}:{{ etcd_tag }}"
etcd_dimensions: "{{ default_container_dimensions }}"
# List of hosts running etcd.
etcd_hosts: "{{ groups['control'] + (groups['compute'] if enable_kuryr | bool else []) }}"