diff options
Diffstat (limited to 'ansible/roles/infra_create_vms/tasks/create_interfaces.yml')
-rw-r--r-- | ansible/roles/infra_create_vms/tasks/create_interfaces.yml | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/ansible/roles/infra_create_vms/tasks/create_interfaces.yml b/ansible/roles/infra_create_vms/tasks/create_interfaces.yml new file mode 100644 index 000000000..12b2726dc --- /dev/null +++ b/ansible/roles/infra_create_vms/tasks/create_interfaces.yml @@ -0,0 +1,84 @@ +# Copyright (c) 2017-2018 Intel Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- +- set_fact: + mac_address_arg: "mac_address" + +- set_fact: + mac_address_arg: "macaddress" + when: + - ansible_distribution == 'Ubuntu' + - ansible_distribution_major_version|int >= 18 + +- name: Add network-data + blockinfile: + path: "{{ network_config }}" + insertafter: 'ethernets:' + marker: "MARKER" + block: |2 + {{ 'enp0s%d:'| format( slot_address | int) }} + match: + {{ mac_address_arg }}: {{ '52:54:00:5d:7d:%02x'| format( mac_address_counter | int) }} + addresses: + - {{ interface_item.ip }}/{{ (interface_item.ip + '/' + interface_item.netmask) | ipaddr('prefix') }} + +- name: Add default gateway + blockinfile: + path: "{{ network_config }}" + insertafter: "{{ interface_item.ip }}" + marker: "MARKER" + block: |2 + gateway4: {{ default_bridge.host_ip }} + when: + - default_bridge is defined + - default_bridge.name == interface_item.network + +- name: Remove the marker introduced in network-data + lineinfile: + dest: "{{ network_config }}" + state: absent + regexp: "MARKER" + +- name: Add new children nodes to "domain" node + xml: + path: "{{ xml_file }}" + xpath: /domain/devices + add_children: + - interface: + type: 'bridge' + pretty_print: yes + +- name: Add new children nodes to "domain" node + xml: + path: "{{ xml_file }}" + xpath: /domain/devices/interface + add_children: + - source: + bridge: "{{ interface_item.network }}" + - model: + type: 'virtio' + - address: + type: 'pci' + domain: '0x0000' + bus: '0x00' + slot: "{{ '0x%02x'| format( slot_address | int) }}" + function: '0x0' + - mac: + address: "{{ '52:54:00:5d:7d:%02x'| format( mac_address_counter | int) }}" + pretty_print: yes + +- set_fact: + slot_address: "{{ slot_address | int + 1 }}" +- set_fact: + mac_address_counter: "{{ mac_address_counter | int + 1 }}" |