Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[18.0-fr1] Add osasinfra-ipv6 network-values template #2665

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 15 additions & 2 deletions reproducer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,21 @@
- name: Allow traffic from OSP VMs to OSP API (needed for shiftstack)
become: true
when: cifmw_allow_vms_to_reach_osp_api | default ('false') | bool
ansible.builtin.command: # noqa: command-instead-of-module
cmd: iptables -I LIBVIRT_FWI 1 -o ocpbm -j ACCEPT
block:
- name: Allow traffic from OSP VMs to OSP API for ipv4
ansible.builtin.command: # noqa: command-instead-of-module
cmd: iptables -I LIBVIRT_FWI 1 -o ocpbm -j ACCEPT

- name: Allow traffic from OSP VMs to OSP API for ipv6
ansible.builtin.lineinfile:
path: /etc/firewalld/firewalld.conf
regexp: '^IPv6_rpfilter='
line: 'IPv6_rpfilter=no'

- name: Restart firewalld.service
ansible.builtin.systemd_service:
name: firewalld
state: restarted

- name: Run deployment if instructed to
when:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
---
# source: osasinfra-ipv6/network-values/values.yaml.j2
{% set _ipv = cifmw_ci_gen_kustomize_values_ip_version_var_mapping %}
{% set ns = namespace(interfaces={},
ocp_index=0,
lb_tools={}) %}
data:
{% for host in cifmw_networking_env_definition.instances.keys() -%}
{% if host is match('^(ocp|crc).*') %}
node_{{ ns.ocp_index }}:
{% set ns.ocp_index = ns.ocp_index+1 %}
name: {{ cifmw_networking_env_definition.instances[host]['hostname'] }}
{# FIXEME: (hjensas): We need to ensure the OCP cluster_name and base_domain is available here #}
{# Because devscripts use fqdn for node names when ipv6 #}
node_name: {{ cifmw_networking_env_definition.instances[host]['hostname'] }}.ocp.openstack.lab
{% for network in cifmw_networking_env_definition.instances[host]['networks'].values() %}
{% set ns.interfaces = ns.interfaces |
combine({network.network_name: (network.parent_interface |
default(network.interface_name)
)
},
recursive=true) %}
{{ network.network_name }}_ip: {{ network[_ipv.ip_vX] }}
{% endfor %}
{% endif %}
{% endfor %}

{% for network in cifmw_networking_env_definition.networks.values() %}
{% set ns.lb_tools = {} %}
{{ network.network_name }}:
dnsDomain: {{ network.search_domain }}
{% if network.tools is defined and network.tools.keys() | length > 0 %}
subnets:
{% for tool in network.tools.keys() %}
{% if tool is match('.*lb$') %}
{% set _ = ns.lb_tools.update({tool: []}) %}
{% endif %}
{% endfor %}
- allocationRanges:
{% for range in network.tools.netconfig[_ipv.ipvX_ranges] %}
- end: {{ range.end }}
start: {{ range.start }}
{% endfor %}
cidr: {{ network[_ipv.network_vX] }}
{% if network[_ipv.gw_vX] is defined %}
gateway: {{ network[_ipv.gw_vX] }}
{% endif %}
name: subnet1
{% if network.vlan_id is defined %}
vlan: {{ network.vlan_id }}
{% endif %}
{% if ns.lb_tools | length > 0 %}
lb_addresses:
{% for tool in ns.lb_tools.keys() %}
{% for lb_range in network.tools[tool][_ipv.ipvX_ranges] %}
- {{ lb_range.start }}-{{ lb_range.end }}
{% set _ = ns.lb_tools[tool].append(lb_range.start) %}
{% endfor %}
endpoint_annotations:
{{ tool }}.universe.tf/address-pool: {{ network.network_name }}
{{ tool }}.universe.tf/allow-shared-ip: {{ network.network_name }}
{{ tool }}.universe.tf/loadBalancerIPs: {{ ','.join(ns.lb_tools[tool]) }}
{% endfor %}
{% endif %}
{% endif %}
prefix-length: {{ network[_ipv.network_vX] | ansible.utils.ipaddr('prefix') }}
mtu: {{ network.mtu | default(1500) }}
{% if network.vlan_id is defined %}
vlan: {{ network.vlan_id }}
{% if ns.interfaces[network.network_name] is defined %}
iface: {{ network.network_name }}
base_iface: {{ ns.interfaces[network.network_name] }}
{% endif %}
{% else %}
{% if ns.interfaces[network.network_name] is defined %}
iface: {{ ns.interfaces[network.network_name] }}
{% endif %}
{% endif %}
{% if network.tools.multus is defined %}
net-attach-def: |
{
"cniVersion": "0.3.1",
"name": "{{ network.network_name }}",
"type": "macvlan",
{% if network.vlan_id is defined%}
"master": "{{ network.network_name }}",
{% elif network.network_name == "ctlplane" %}
"master": "ospbr",
{% else %}
"master": "{{ ns.interfaces[network.network_name] }}",
{% endif %}
"ipam": {
"type": "whereabouts",
"range": "{{ network[_ipv.network_vX] }}",
"range_start": "{{ network.tools.multus[_ipv.ipvX_ranges].0.start }}",
"range_end": "{{ network.tools.multus[_ipv.ipvX_ranges].0.end }}"
}
}
{% endif %}
{% endfor %}

dns-resolver:
config:
server:
- "{{ cifmw_networking_env_definition.networks.ctlplane[_ipv.gw_vX] }}"
search: []
options:
- key: server
values:
- {{ cifmw_networking_env_definition.networks.ctlplane[_ipv.gw_vX] }}
{% for nameserver in cifmw_ci_gen_kustomize_values_nameservers %}
- key: server
values:
- {{ nameserver }}
{% endfor %}

routes:
config: []

# Hardcoding the last IP bit since we don't have support for endpoint_annotations in the networking_mapper output
rabbitmq:
endpoint_annotations:
metallb.universe.tf/address-pool: internalapi
metallb.universe.tf/loadBalancerIPs: {{ cifmw_networking_env_definition.networks['internalapi'][_ipv.network_vX] | ansible.utils.ipmath(85) }}
rabbitmq-cell1:
endpoint_annotations:
metallb.universe.tf/address-pool: internalapi
metallb.universe.tf/loadBalancerIPs: {{ cifmw_networking_env_definition.networks['internalapi'][_ipv.network_vX] | ansible.utils.ipmath(86) }}

lbServiceType: LoadBalancer
storageClass: {{ cifmw_ci_gen_kustomize_values_storage_class }}
Loading