summaryrefslogtreecommitdiffstats
path: root/roles/ands_network/tasks/nm_configure_connection.yml
blob: 18fc91ecba3665bfbad5842940221895a5a8e7ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
- name: "detect nm connection corresponding to interface '{{ iface }}'"
  shell: "nmcli d show {{ iface | quote }} | grep CONNECTION | cut -d ':' -f 2- | sed -E -e 's/^[[:space:]]+//' | grep '^[[:alpha:]]'"
  register: conres
  failed_when: false
  changed_when: false


- name: "check if the requested ip '{{ cidr }}' is present on the interface '{{ iface }}'"
  set_fact:
    ip_present: "{{ cidr | ipaddr('address') in ips }}"
  vars:
    eth:     "{{ hostvars[inventory_hostname]['ansible_' + iface] | default({}) }}"
    ipv4:    "{{ eth['ipv4'] | default({}) }}"
    q:       "{{ eth | json_query('ipv4_secondaries[*].address') }}"
    sec:     "{{ ((q == ands_none) or (q == '')) | ternary([], q) }}"
    ips:     "{{ sec  | union([ipv4.address]) }}"
  when: 
    - conres.rc == 0
#    - eth.ipv4 is defined

- name: "destroy connection '{{ conres.stdout }}' if ip does not match"
  command: "nmcli connection delete {{ conres.stdout | quote }}"
  register: delres
  when: 
    - conres.rc == 0
    - force | default(false)
    - not (alias | default(false))
    - not ip_present
    
- name: "configure storage network interface '{{ iface }}' to '{{ cidr }}'"
  command: "nmcli connection add type infiniband ifname {{ iface | quote }} con-name {{ name }} ip4 {{ cidr }}"
  when: 
    - (conres.rc != 0) or (not (delres | skipped))
    - (conres.rc != 0) or (not (alias | default(false)))

- name: "add ip alias '{{ cidr }}' to connection '{{ conres.stdout }}' using interface '{{ iface }}'"
  command: "nmcli connection modify {{ conres.stdout | quote }} +ipv4.address {{ cidr }}"
  register: alres
  when: 
    - alias | default(false)
    - conres.rc == 0
    - not ip_present
    

- name: "add ip alias '{{ cidr }}' to network interface '{{ iface }}'"
  command: "nmcli connection up {{ conres.stdout | quote }}"
  register: alres
  when: 
    - not(alres | skipped)
    - alres | succeeded
    - not ip_present