ARG RECLASS_BASE="/srv/salt/reclass"
ENV RECLASS_BASE $RECLASS_BASE
- RUN echo "Layer python/salt module prerequisites, formulas" \
-+ RUN echo "Layer python/salt module prerequisites, formulas (27 Sep 2018)" \
++ RUN echo "Layer python/salt module prerequisites, formulas (22 Oct 2018)" \
&& mkdir -p /srv/salt \
&& curl -sSqL https://raw.githubusercontent.com/salt-formulas/salt-formulas-scripts/master/formula-fetch.sh -o /srv/salt/formula-fetch.sh \
&& bash -c 'source /srv/salt/formula-fetch.sh && setupPyEnv && fetchAll' \
openstack_compute_node01_hostname: cmp001
openstack_compute_node02_hostname: cmp002
- # opendaylight options
-{%- if conf.MCP_VCP %}
- opendaylight_server_node01_hostname: odl01
- opendaylight_server_node01_single_address: ${_param:opnfv_opendaylight_server_node01_single_address}
-{%- else %}
- opendaylight_control_hostname: ${_param:openstack_control_node02_hostname}
- opendaylight_server_node01_hostname: ${_param:opendaylight_control_hostname}
- opendaylight_server_node01_single_address: ${_param:opnfv_openstack_control_node02_address}
-{%- endif %}
-
openstack_region: RegionOne
admin_email: root@localhost
db_connection_recycle_time: 300
##############################################################################
---
classes:
- - system.reclass.storage.system.opendaylight_control_single
- cluster.mcp-common-ha.infra.config
- cluster.mcp-odl-ha.infra
parameters:
+ _param:
+ opendaylight_server_node01_hostname: odl01
+ opendaylight_server_node02_hostname: odl02
+ opendaylight_server_node03_hostname: odl03
reclass:
storage:
node:
- opendaylight_control_node01:
+{%- for i in range(1, 4) %}
+ opendaylight_control_node0{{ i }}:
+ name: ${_param:opendaylight_server_node0{{ i }}_hostname}
+ domain: ${_param:cluster_domain}
classes:
- cluster.${_param:cluster_name}.opendaylight.control
params:
- linux_system_codename: xenial
- single_address: ${_param:opendaylight_server_node01_single_address}
- pxe_admin_address: ${_param:opnfv_opendaylight_server_node01_pxe_admin_address}
+ salt_master_host: ${_param:reclass_config_master}
+ linux_system_codename: ${_param:linux_system_codename}
+ single_address: ${_param:opendaylight_server_node0{{ i }}_address}
+ pxe_admin_address: ${_param:opnfv_opendaylight_server_node0{{ i }}_pxe_admin_address}
+ keepalived_vip_priority: 10{{ i }}
+{%- endfor %}
cluster:
internal:
node:
- odl01:
- name: ${_param:opendaylight_server_node01_hostname}
- provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
+ {%- for i in range(1, 4) %}
+ odl0{{ i }}:
+ name: ${_param:opendaylight_server_node0{{ i }}_hostname}
+ provider: ${_param:infra_kvm_node0{{ i }}_hostname}.${_param:cluster_domain}
image: ${_param:salt_control_xenial_image}
size: opendaylight.server
-{%- if conf.nodes[nm.ctl01.idx].node.arch == 'aarch64' %}
+ {%- if conf.nodes[nm.ctl01.idx].node.arch == 'aarch64' %}
machine: virt
cpu_mode: host-passthrough
loader:
readonly: 'yes'
type: pflash
path: /usr/share/AAVMF/AAVMF_CODE.fd
-{%- endif %}
+ {%- endif %}
+ {%- endfor %}
{%- endif %}
##############################################################################
---
classes:
- - service.opendaylight.server.single
+ - service.opendaylight.server.cluster
- cluster.mcp-common-ha.openstack_interface_vcp_biport
{%- if conf.MCP_VCP %}
- cluster.mcp-odl-ha
- odl-aaa-authn
netvirt:
- odl-netvirt-openstack
+ seed_nodes_list: {%- for i in range(1, 4) %} ${_param:opendaylight_server_node0{{ i }}_address}{%- endfor %}
- cluster.mcp-common-ha.openstack_init
parameters:
_param:
+ neutron_tenant_network_types: "flat,vxlan"
+
# opendaylight options
- opendaylight_service_host: ${_param:opendaylight_server_node01_single_address}
+ opendaylight_service_host: ${_param:opnfv_opendaylight_server_address}
opendaylight_rest_port: 8282
-
- neutron_tenant_network_types: "flat,vxlan"
{%- if conf.MCP_VCP %}
+ opendaylight_server_node01_hostname: odl01
+ opendaylight_server_node02_hostname: odl02
+ opendaylight_server_node03_hostname: odl03
+ opendaylight_server_node01_address: ${_param:opnfv_opendaylight_server_node01_address}
+ opendaylight_server_node02_address: ${_param:opnfv_opendaylight_server_node02_address}
+ opendaylight_server_node03_address: ${_param:opnfv_opendaylight_server_node03_address}
linux:
network:
host:
- odl01:
- address: ${_param:opendaylight_service_host}
+ {%- for i in range(1, 4) %}
+ odl0{{ i }}:
+ address: ${_param:opendaylight_server_node0{{ i }}_address}
names:
- - ${_param:opendaylight_server_node01_hostname}
- - ${_param:opendaylight_server_node01_hostname}.${_param:cluster_domain}
+ - ${_param:opendaylight_server_node0{{ i }}_hostname}
+ - ${_param:opendaylight_server_node0{{ i }}_hostname}.${_param:cluster_domain}
+ {%- endfor %}
+{%- else %}
+ opendaylight_control_hostname: ${_param:openstack_control_node02_hostname}
+ opendaylight_server_node01_hostname: ${_param:opendaylight_control_hostname}
+ opendaylight_server_node01_address: ${_param:opnfv_openstack_control_node02_address}
{%- endif %}
parameters:
_param:
- opendaylight_service_host: ${_param:opnfv_opendaylight_server_node01_single_address}
+ opendaylight_service_host: ${_param:opnfv_opendaylight_server_node01_address}
network:
host:
odl01:
- address: ${_param:opnfv_opendaylight_server_node01_single_address}
+ address: ${_param:opnfv_opendaylight_server_node01_address}
names:
- odl01
- odl01.${_param:cluster_domain}
--- /dev/null
+##############################################################################
+# Copyright (c) 2018 Mirantis Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+applications:
+ - opendaylight
+classes:
+ - service.keepalived.cluster.single
+parameters:
+ _param:
+ opendaylight_version: fluorine
+ keepalived_vip_virtual_router_id: 199
+ keepalived_vip_address: ${_param:opendaylight_service_host}
+ keepalived_vip_password: ${_param:opnfv_main_password}
+ keepalived_vip_interface: ${_param:single_nic}
+ opendaylight:
+ server:
+ enabled: 'True'
+ version: ${_param:opendaylight_version}
+ repo: 'odl-team/${_param:opendaylight_version}'
+ cluster_enabled: true
+ logging:
+ engine: syslog
+ keepalived:
+ cluster:
+ vrrp_scripts:
+ check_port:
+ args:
+ - ${_param:opendaylight_rest_port}
+ - TCP
+ - 4
+ interval: 15
+ rise: 3
+ fall: 1
+ instance:
+ VIP:
+ track_script: check_port
'odl_bind_ip': '0.0.0.0',
'repo': 'odl-team/oxygen',
'log_levels': {},
- 'enable_ha': false,
- 'ha_node_ips': [],
- 'ha_node_index': 0,
+ 'cluster_enabled': false,
+ 'seed_nodes_list': [],
'stats_polling_enabled': false,
'dhcp': {
'enabled': false,
- prereq:
- pkg: opendaylight
+{%- if server.cluster_enabled %}
+configure_cluster:
+ cmd.run:
+ - name: /opt/opendaylight/bin/configure-cluster-ipdetect.sh {{ server.seed_nodes_list }}
+ - require:
+ - pkg: opendaylight
+{%- endif %}
+
opendaylight:
pkg.installed:
- require: