en-US/about_Networking.help.txt

TOPIC
        about_Networking

SHORT DESCRIPTION

        A default internal virtual switch is created and attached to all lab virtual machines. Additional networking
        configurations can be defined in the PowerShell Desired State Configuration (.psd1) document. Lability
        uses the configuration document to create and configure virtual switches.

LONG DESCRIPTION

        When provisioning a lab environment, all virtual machines are, by default, attached to an existing virtual
        switch when the node'sthere is one with a matching name. internal virtual
        switch. Additional virtual switches can be specified to support any lab configuration needed; the current
        implementation supports creating internal, external and private Hyper-V virtual switches.

        When a lab environment requires an external/private or an additional virtual switch, the network configuration
        can be added to the configuration (.psd1) document. Lability will parse the configuration document for the
        existence of a 'NonNodeData\Lability\Network' [System.Array] element:

            @{
                AllNodes = @()
                NonNodeData = @{
                    Lability = @{
                        Network = @(

                        )
                    }
                }
            }

        Each virtual switch requires a hashtable with the following properties:

            @{
                ## Name of the virtual switch.
                Name = 'Example';

                ## Supported values are 'Internal', 'External' and 'Private'.
                Type = 'Private';

                ## The NetAdapterName is only required for 'External' switch types.
                NetAdapterName = 'Ethernet 2';

                ## The AllowManagementOS is only supported with 'External' switch types.
                AllowManagementOS = $true;
            }

        Virtual switches defined in the configuration document will only be created when they are attached to a
        virtual machine. For example, if there are 5 virtual switches defined in the configuration document, but only
        one is referenced, only one virtual switch will be created.

        To attach a virtual machine to a virtual switch, the node's declaration must include the 'SwitchName'
        property. If the 'SwitchName' property is not declared, the default internal virtual switch will be used.
        When referencing a virtual switch, the node's 'SwitchName' property must match the name of a defined virtual
        switch.

        The following configuration will create a private virtual switch called 'Development' if a private virtual
        switch with the same name does not already exist. The 'VM01' virtual machine will then be attached to the
        virtual switch:

            @{
                AllNodes = @(
                    @{
                        NodeName = 'VM01';
                        SwitchName = 'Development';
                    }
                )
                NonNodeData = @{
                    Lability = @{
                        Network = @(
                            @{
                                Name = 'Development';
                                Type = 'Private';
                            }
                        )
                    }
                }
            }

        It is possible to use existing virtual switches without specifying their type. The following configuration
        will connect the 'VM01' virtual machine to an existing 'Development' virtual switch of any type - if one
        exists with the same name. If a virtual switch named 'Development' cannot be found, an 'Internal' virtual
        switch called 'Development' will be created.

            @{
                AllNodes = @(
                    @{
                        NodeName = 'VM01';
                        Lability_SwitchName = 'Development';
                    }
                )
            }

        It is possible to attach a virtual machine to more than one virtual switch by specifying multiple virtual
        switches. When mutliple networks are specified, Lability will attach a virtual network adapter to the virtual
        machine for each network defined. For example, the following configuration creates a single virtual machine
        and attaches it to both the private 'Development' switch and the external 'Internet' switch.

            @{
                AllNodes = @(
                    @{
                        NodeName = 'VM01';
                        SwitchName = 'Development','Internet';
                    }
                )
                NonNodeData = @{
                    Lability = @{
                        Network = @(
                            @{
                                Name = 'Development';
                                Type = 'Private';
                            },
                            @{
                                Name = 'Internet';
                                Type = 'External';
                                NetAdapterName = 'Ethernet';
                                AllowManagementOS = $true;
                            }
                        )
                    }
                }
            }


KEYWORDS
    Lab networking
    Lab network switch

SEE ALSO
    about_Lability
    about_ConfigurationData
    Get-LabVMDefault
    Set-LabVMDefault