blob: 79790d4713e9f521a8849ef7554a7d1d9d95f6c8 (
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
---
- name: Create ports for Octavia health-manager nodes
become: true
kolla_toolbox:
container_engine: "{{ kolla_container_engine }}"
module_name: openstack.cloud.port
module_args:
auth: "{{ octavia_user_auth }}"
cacert: "{{ openstack_cacert }}"
endpoint_type: "{{ openstack_interface }}"
region_name: "{{ openstack_region_name }}"
state: present
network: "{{ octavia_amp_network['name'] }}"
security_groups: "{{ octavia_amp_security_groups['health-mgr-sec-grp']['name'] }}"
device_owner: "Octavia:health-mgr"
name: "octavia-listen-port-{{ ansible_facts.nodename }}"
register: port_info
# ansible os_port module does not support 'host' parameter, but we need set the port's host
# value to {{ ansible_facts.nodename }}, once os_port support this parameter, remove the task below
# https://docs.ansible.com/ansible/latest/modules/os_port_module.html#parameters
- name: Update Octavia health manager port host_id
become: true
changed_when: true
vars:
port_id: "{{ port_info.port.id }}"
command: >
{{ kolla_container_engine }} exec kolla_toolbox openstack
--os-interface {{ openstack_interface }}
--os-auth-url {{ octavia_user_auth.auth_url }}
--os-identity-api-version 3
--os-project-domain-name {{ octavia_user_auth.domain_name }}
--os-project-name {{ octavia_user_auth.project_name }}
--os-region-name {{ openstack_region_name }}
--os-username {{ octavia_user_auth.username }}
--os-password {{ octavia_user_auth.password }}
{% if openstack_cacert != '' %}--os-cacert {{ openstack_cacert }} {% endif %}
port set --host {{ ansible_facts.nodename }} {{ port_id }}
when:
- port_info.changed
- name: Add Octavia port to openvswitch br-int
vars:
port_mac: "{{ port_info.port.mac_address }}"
port_id: "{{ port_info.port.id }}"
become: true
changed_when: true
command: >
{{ kolla_container_engine }} exec openvswitch_vswitchd ovs-vsctl --may-exist \
add-port br-int {{ octavia_network_interface }} \
-- set Interface {{ octavia_network_interface }} type=internal \
-- set Interface {{ octavia_network_interface }} external-ids:iface-status=active \
-- set Interface {{ octavia_network_interface }} external-ids:attached-mac={{ port_mac }} \
-- set Interface {{ octavia_network_interface }} external-ids:iface-id={{ port_id }} \
-- set Interface {{ octavia_network_interface }} external-ids:skip_cleanup=true
- name: Create octavia dhclient conf
become: true
copy:
content: |
request subnet-mask,broadcast-address,interface-mtu;
do-forward-updates false;
dest: /etc/dhcp/octavia-dhclient.conf
mode: "0664"
- name: Create octavia-interface service
become: true
template:
src: octavia-interface.service.j2
dest: /etc/systemd/system/octavia-interface.service
mode: "0644"
register: octavia_interface
- name: Restart octavia-interface.service if required
become: true
systemd:
name: octavia-interface
daemon_reload: true
state: restarted
when: octavia_interface.changed
- name: Enable and start octavia-interface.service
become: true
service:
name: octavia-interface
enabled: true
state: started
- name: Wait for interface {{ octavia_network_interface }} ip appear
vars:
port_ip: "{{ port_info.port.fixed_ips[0].ip_address }}"
command: ip address show dev {{ octavia_network_interface }}
changed_when: false
register: ip_info
until: ip_info.stdout.find(port_ip) != -1
retries: 5
delay: 2
# NOTE(wuchunyang): we have gathered facts at first, but here we add a new
# network device(o-hm0) which is not collected, so we need gather facts again
- name: Gather facts
setup:
when: octavia_interface.changed
|