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
|