# 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. # Description: # Creates a libvirt network. libvirt_network are # exactly converted to XML from YAML so there # is no validation whether the arguments are # correct or not. Caller must ensure that yaml # is formulated correctly. # # Inputs: # network_action: "create" # libvirt_network: # name: # persistent: # autostart: # recreate: # spec: # forward: # mode: # nat: # port: # - start: # end: # bridge: # name: # stp: # delay: # domain: # name: # localOnly: # dns: # forwarder: # domain: # addr: # mac: # address: # ip: # address: # netmask: # dhcp: # - range: # start: # end: - name: Validate input assert: that: - "libvirt_network is defined" - "libvirt_network.name is defined" - "libvirt_network.spec is defined" - name: Create yaml for template set_fact: net_yaml: >- {{ libvirt_network.spec | combine({'name': libvirt_network.name}, recursive=True) }} - name: "Define network" virt_net: command: define # If libvirt_network.xml is defined, spec will be ignored. xml: "{{ libvirt_network.xml | default(libvirt_network_template_default) }}" name: "{{ libvirt_network.name }}" - name: "Start network" virt_net: state: active name: "{{ libvirt_network.name }}" - name: "Autostart network" virt_net: name: "{{ libvirt_network.name }}" autostart: "{{ libvirt_network.autostart |default(true) }}"