113 lines
3.9 KiB
YAML
113 lines
3.9 KiB
YAML
---
|
|
|
|
- name: Contiv | Wait for netmaster
|
|
uri:
|
|
url: "http://127.0.0.1:{{ contiv_netmaster_port }}/info"
|
|
register: result
|
|
until: result.status is defined and result.status == 200
|
|
retries: 10
|
|
delay: 5
|
|
|
|
- name: Contiv | Get global configuration
|
|
command: |
|
|
{{ bin_dir }}/netctl --netmaster "http://127.0.0.1:{{ contiv_netmaster_port }}" \
|
|
global info --json --all
|
|
register: global_config
|
|
run_once: true
|
|
changed_when: false
|
|
|
|
- name: Contiv | Set contiv_global_config
|
|
set_fact:
|
|
contiv_global_config: "{{ (global_config.stdout|from_json)[0] }}"
|
|
|
|
- name: Contiv | Set global forwarding mode
|
|
command: |
|
|
{{ bin_dir }}/netctl --netmaster "http://127.0.0.1:{{ contiv_netmaster_port }}" \
|
|
global set --fwd-mode={{ contiv_fwd_mode }}
|
|
when: "contiv_global_config.get('fwdMode', '') != contiv_fwd_mode"
|
|
run_once: true
|
|
|
|
- name: Contiv | Set global fabric mode
|
|
command: |
|
|
{{ bin_dir }}/netctl --netmaster "http://127.0.0.1:{{ contiv_netmaster_port }}" \
|
|
global set --fabric-mode={{ contiv_fabric_mode }}
|
|
when: "contiv_global_config.networkInfraType != contiv_fabric_mode"
|
|
run_once: true
|
|
|
|
- name: Contiv | Set peer hostname
|
|
set_fact:
|
|
contiv_peer_hostname: >-
|
|
{%- if override_system_hostname|default(true) -%}
|
|
{{ contiv_peer_hostname|default({})|combine({item: hostvars[item]['inventory_hostname']}) }}
|
|
{%- else -%}
|
|
{{ contiv_peer_hostname|default({})|combine({item: hostvars[item]['ansible_fqdn']}) }}
|
|
{%- endif -%}
|
|
with_items: "{{ groups['k8s-cluster'] }}"
|
|
run_once: true
|
|
when:
|
|
- contiv_fwd_mode == 'routing'
|
|
- contiv_peer_with_uplink_leaf
|
|
|
|
- name: Contiv | Get BGP configuration
|
|
command: |
|
|
{{ bin_dir }}/netctl --netmaster "http://127.0.0.1:{{ contiv_netmaster_port }}" \
|
|
bgp ls --json
|
|
register: bgp_config
|
|
run_once: true
|
|
changed_when: false
|
|
when:
|
|
- contiv_fwd_mode == 'routing'
|
|
- contiv_peer_with_uplink_leaf
|
|
|
|
- name: Contiv | Configure peering with router(s)
|
|
command: |
|
|
{{ bin_dir }}/netctl --netmaster "http://127.0.0.1:{{ contiv_netmaster_port }}" \
|
|
bgp create {{ item.value }} \
|
|
--router-ip="{{ hostvars[item.key]['contiv']['router_ip'] }}" \
|
|
--as="{{ hostvars[item.key]['contiv']['as'] | default(contiv_global_as) }}" \
|
|
--neighbor-as="{{ hostvars[item.key]['contiv']['neighbor_as'] | default(contiv_global_neighbor_as) }}" \
|
|
--neighbor="{{ hostvars[item.key]['contiv']['neighbor'] }}"
|
|
run_once: true
|
|
with_dict: "{{ contiv_peer_hostname }}"
|
|
when:
|
|
- contiv_fwd_mode == 'routing'
|
|
- contiv_peer_with_uplink_leaf
|
|
- bgp_config.stdout|from_json|length == 0 or not item.value in bgp_config.stdout|from_json|map(attribute='key')|list
|
|
|
|
- name: Contiv | Get existing networks
|
|
command: |
|
|
{{ bin_dir }}/netctl --netmaster "http://127.0.0.1:{{ contiv_netmaster_port }}" \
|
|
net ls -q
|
|
register: net_result
|
|
run_once: true
|
|
changed_when: false
|
|
|
|
- name: Contiv | Create networks
|
|
command: |
|
|
{{ bin_dir }}/netctl --netmaster "http://127.0.0.1:{{ contiv_netmaster_port }}" \
|
|
net create \
|
|
--encap={{ item.encap|default("vxlan") }} \
|
|
--gateway={{ item.gateway }} \
|
|
--nw-type={{ item.nw_type|default("data") }} \
|
|
--pkt-tag={{ item.pkt_tag|default("0") }} \
|
|
--subnet={{ item.subnet }} \
|
|
--tenant={{ item.tenant|default("default") }} \
|
|
"{{ item.name }}"
|
|
with_items: "{{ contiv_networks }}"
|
|
when: item['name'] not in net_result.stdout_lines
|
|
run_once: true
|
|
|
|
- name: Contiv | Check if default group exists
|
|
command: |
|
|
{{ bin_dir }}/netctl --netmaster "http://127.0.0.1:{{ contiv_netmaster_port }}" \
|
|
group ls -q
|
|
register: group_result
|
|
run_once: true
|
|
changed_when: false
|
|
|
|
- name: Contiv | Create default group
|
|
command: |
|
|
{{ bin_dir }}/netctl --netmaster "http://127.0.0.1:{{ contiv_netmaster_port }}" \
|
|
group create default-net default
|
|
when: "'default' not in group_result.stdout_lines"
|
|
run_once: true
|