Configuring blueprints for Microsoft Hyper-V environments using a Cisco N1KV switch

BMC Network Automation supports the integration of Cisco Nexus 1000V switch and Microsoft Service Center Virtual Machine Manager (SCVMM).

Before you begin

Ensure that you have the following products installed with BMC CloudLifecycle Management:

  • BMC Server Automation 8.6.01

To configure blueprints and templates using a Cisco N1K switch

  1. Create the pod in BMC Network Automation by using the following content:

     HyperV-SamplePodBlueprint

      <?xml version="1.0" encoding="UTF-8" ?> 
      <bbnaData>
      <version>
      <build>26</build> 
      <lastUpgrader>3</lastUpgrader> 
      <maint>1</maint> 
      <major>8</major> 
      <minor>3</minor> 
      <patch>0</patch> 
      </version>
      <podBlueprint>
      <addressPoolBlueprints>
      <addressPoolBlueprint>
      <linkId>0</linkId> 
      <name>Management</name> 
      <natPoolName /> 
      <defaultPublicFlag>false</defaultPublicFlag> 
      <defaultShareableFlag>false</defaultShareableFlag> 
      </addressPoolBlueprint>
      </addressPoolBlueprints>
      <addressRangeBlueprints>
      <addressRangeBlueprint>
      <defaultPoolMask 
    xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">24</defaultPoolMask> 
      <defaultPublicFlag>false</defaultPublicFlag> 
      <name>Data</name> 
      </addressRangeBlueprint>
      </addressRangeBlueprints>
      <balancedParamBlueprints /> 
      <integerPoolBlueprints /> 
      <legacyVersion>8.3.01</legacyVersion> 
      <name>Sample Pod Blueprint</name> 
      <nicSegmentBlueprints>
      <nicSegmentBlueprint>
      <defaultEnabledFlag>true</defaultEnabledFlag> 
      <lockedFlag>true</lockedFlag> 
      <name>Management</name> 
      <networkName>Management</networkName> 
      <addressPoolName>Management</addressPoolName> 
      <vlanName>Management</vlanName> 
      <customerFlag>false</customerFlag> 
      <managementFlag>true</managementFlag> 
      </nicSegmentBlueprint>
      </nicSegmentBlueprints>
      <nodeBlueprints>
      <nodeBlueprint>
      <balancedParamBlueprints /> 
      <category>2</category> 
      <defaultShareableFlag>false</defaultShareableFlag> 
      <name>Edge</name> 
      <optionalFlag>false</optionalFlag> 
      <paramBlueprints /> 
      <role>Edge</role> 
      </nodeBlueprint>
      <nodeBlueprint xsi:type="podHypervisorSwitchBlueprint" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <balancedParamBlueprints /> 
      <category>2</category> 
      <defaultShareableFlag>false</defaultShareableFlag> 
      <name>Access</name> 
      <optionalFlag>false</optionalFlag> 
      <paramBlueprints /> 
      <role>Access</role> 
      <portTypeBlueprints>
      <portTypeBlueprint>
      <name>Management</name> 
      <nameWithinSwitch>${pod.node.portTypes[Management].vlan}</nameWithinSwitch> 
      <nicSegmentName>Management</nicSegmentName> 
      </portTypeBlueprint>
      </portTypeBlueprints>
      </nodeBlueprint>
      </nodeBlueprints>
      <pairBlueprints /> 
      <paramBlueprints /> 
      <vlanBlueprints>
      <vlanBlueprint>
      <vlanName>Management</vlanName> 
      <vlanPoolName>Management</vlanPoolName> 
      </vlanBlueprint>
      </vlanBlueprints>
      <vlanPoolBlueprints>
      <vlanPoolBlueprint>
      <defaultEndNum>80</defaultEndNum> 
      <defaultStartNum>21</defaultStartNum> 
      <name>Data</name> 
      </vlanPoolBlueprint>
      <vlanPoolBlueprint>
      <defaultEndNum>11</defaultEndNum> 
      <defaultStartNum>11</defaultStartNum> 
      <name>Management</name> 
      </vlanPoolBlueprint>
      </vlanPoolBlueprints>
      </podBlueprint>
      </bbnaData>

  2. Edit the BNA template in BMC Network Automation by using the following content:

     HyperV-SampleTemplates

    <?xml version="1.0" encoding="UTF-8" ?> 
      <bbnaData>
      <version>
      <build>26</build> 
      <lastUpgrader>3</lastUpgrader> 
      <maint>1</maint> 
      <major>8</major> 
      <minor>3</minor> 
      <patch>0</patch> 
      </version>
      <templateGroup>
      <annotation /> 
      <dynamicFields>
      <className>com.bmc.bcan.engine.network.scripts.TemplateGroup</className> 
      <dynamicFieldMapperItems>
      <fieldName>Description</fieldName> 
      <singleTypeValue /> 
      <singleValueFlag>true</singleValueFlag> 
      </dynamicFieldMapperItems>
      </dynamicFields>
      <name>SampleStaticConfigureEdge</name> 
      <substitutionParamCheck>false</substitutionParamCheck> 
      <templates>
      <contents>vlan ${container.vlans[AccessA]} interface 
    vlan${container.vlans[AccessA]} ip address ${container.node.addresses[GatewayA]} 
    ${container.node.addresses[GatewayA].subnetMask} no shutdown exit</contents> 
      <deviceTypeGuid>BE2B2D21-1CAA-53C3-05C3-CBB0A5D151B8</deviceTypeGuid> 
      <maxRelease>
      <build>*</build> 
      <major>*</major> 
      <minor>*</minor> 
      </maxRelease>
      <minRelease>
      <build>*</build> 
      <major>*</major> 
      <minor>*</minor> 
      </minRelease>
      <substitutionParamCheck>false</substitutionParamCheck> 
      </templates>
      </templateGroup>
      <templateGroup>
      <annotation /> 
      <dynamicFields>
      <className>com.bmc.bcan.engine.network.scripts.TemplateGroup</className> 
      <dynamicFieldMapperItems>
      <fieldName>Description</fieldName> 
      <singleTypeValue /> 
      <singleValueFlag>true</singleValueFlag> 
      </dynamicFieldMapperItems>
      </dynamicFields>
      <name>SampleStaticUnconfigureEdge</name> 
      <substitutionParamCheck>false</substitutionParamCheck> 
      <templates>
      <contents>no vlan ${container.vlans[AccessA]} no interface 
    vlan${container.vlans[AccessA]}</contents> 
      <deviceTypeGuid>BE2B2D21-1CAA-53C3-05C3-CBB0A5D151B8</deviceTypeGuid> 
      <maxRelease>
      <build>*</build> 
      <major>*</major> 
      <minor>*</minor> 
      </maxRelease>
     <minRelease>
      <build>*</build> 
      <major>*</major> 
      <minor>*</minor> 
      </minRelease>
      <substitutionParamCheck>false</substitutionParamCheck> 
      </templates>
      </templateGroup>
      <templateGroup>
      <annotation /> 
      <dynamicFields>
      <className>com.bmc.bcan.engine.network.scripts.TemplateGroup</className> 
      <dynamicFieldMapperItems>
      <fieldName>Description</fieldName> 
      <singleTypeValue /> 
      <singleValueFlag>true</singleValueFlag> 
      </dynamicFieldMapperItems>
      </dynamicFields>
      <name>SampleStaticConfigureAccess</name> 
      <substitutionParamCheck>false</substitutionParamCheck> 
      <templates>
      <contents>logical-network ${container.name}-Vlan${container.vlans[AccessA]} 
    description Logical network for 
    ${container.name}-Vlan${container.vlans[AccessA]} exit network-segment-pool 
    ${container.name}-Vlan${container.vlans[AccessA]}-NetSegmentPool logical-network 
    ${container.name}-Vlan${container.vlans[AccessA]} exit ip-pool-template 
    ${container.name}-Vlan${container.vlans[AccessA]}-IpPool ! description IP Pool 
    for ${container.name}-Vlan${container.vlans[AccessA]} ! *opt* ip-address 
    <start> <end> ! *opt* subnet-mask ! *opt* gateway exit 
    network-segment ${container.name}-Vlan${container.vlans[AccessA]}-NetSegment 
    description Network segment for 
    ${container.name}-Vlan${container.vlans[AccessA]} network-segment-pool 
    ${container.name}-Vlan${container.vlans[AccessA]}-NetSegmentPool switchport 
    access vlan ${container.vlans[AccessA]} ! *opt* ip-pool-template 
    ${container.name}-Vlan${container.vlans[AccessA]}-IpPool publish network-segment 
    port-profile type vethernet 
    ${container.name}-Vlan${container.vlans[AccessA]}-PortProfile no shutdown state 
    enabled publish port-profile</contents> 
      <deviceTypeGuid>8B123D89-2A44-23CF-7FF1-8360FDDDE515</deviceTypeGuid> 
      <maxRelease>
      <build>*</build> 
      <major>*</major> 
      <minor>*</minor> 
      </maxRelease>
      <minRelease>
      <build>*</build> 
      <major>*</major> 
      <minor>*</minor> 
      </minRelease>
      <substitutionParamCheck>false</substitutionParamCheck> 
      </templates>
      </templateGroup>
      <templateGroup>
      <annotation /> 
      <dynamicFields>
      <className>com.bmc.bcan.engine.network.scripts.TemplateGroup</className> 
      <dynamicFieldMapperItems>
      <fieldName>Description</fieldName> 
      <singleTypeValue /> 
      <singleValueFlag>true</singleValueFlag> 
      </dynamicFieldMapperItems>
      </dynamicFields>
      <name>SampleStaticUnconfigureAccess</name> 
      <substitutionParamCheck>false</substitutionParamCheck> 
      <templates>
      <contents>no port-profile type vethernet 
    ${container.name}-Vlan${container.vlans[AccessA]}-PortProfile no network-segment 
    ${container.name}-Vlan${container.vlans[AccessA]}-NetSegment no ip-pool-template 
    ${container.name}-Vlan${container.vlans[AccessA]}-IpPool no network-segment-pool 
    ${container.name}-Vlan${container.vlans[AccessA]}-NetSegmentPool no 
    logical-network ${container.name}-Vlan${container.vlans[AccessA]}</contents> 
      <deviceTypeGuid>8B123D89-2A44-23CF-7FF1-8360FDDDE515</deviceTypeGuid> 
      <maxRelease>
      <build>*</build> 
      <major>*</major> 
      <minor>*</minor> 
      </maxRelease>
      <minRelease>
      <build>*</build> 
      <major>*</major> 
      <minor>*</minor> 
      </minRelease>
      <substitutionParamCheck>false</substitutionParamCheck> 
      </templates>
      </templateGroup>
      </bbnaData>
    

    The template creates the following components. In the following examples, container-name = myContainer-HyperV and container.vlan[AccessA] = 551:

    ComponentSubstitution parameterExample
    logical-network${container.name}-Vlan${container.vlans[AccessA]}myContainer-HyperV-Vlan551
    network-segment-pool${container.name}-Vlan${container.vlans[AccessA]}-NetSegmentPoolmyContainer-HyperV-Vlan551-NetSegmentPool
    ip-pool-template${container.name}-Vlan${container.vlans[AccessA]}-IpPoolmyContainer-HyperV-Vlan551-IpPool
    network-segment${container.name}-Vlan${container.vlans[AccessA]}-NetSegmentmyContainer-Vlan551-NetSegment
    port-profile${container.name}-Vlan${container.vlans[AccessA]}-PortProfilemyContainer-HyperV-Vlan551-PortProfile
  3. Create the container in BMC Clod Lifecycle Management by using the following content:

     HyperV-SampleContainerBlueprint

    <?xml version="1.0" encoding="UTF-8" ?>
      <bbnaData>
      <version>
      <build>26</build>
      <lastUpgrader>3</lastUpgrader>
      <maint>1</maint>
      <major>8</major>
      <minor>3</minor>
      <patch>0</patch>
      </version>
      <containerBlueprint>
      <addressBlueprints />
      <addressPoolBlueprints>
      <addressPoolBlueprint>
      <linkId>0</linkId>
      <name>AccessA</name>
      <rangeBlueprintName>Data</rangeBlueprintName>
      </addressPoolBlueprint>
      </addressPoolBlueprints>
      <addressSpaceBlueprints />
      <externalNetworkSegmentBlueprints>
      <externalNetworkSegmentBlueprint>
      <defaultEnabledFlag>true</defaultEnabledFlag>
      <lockedFlag>false</lockedFlag>
      <name>External</name>
      <networkName>External</networkName>
      <tag>Purpose[External]</tag>
      <defaultNetworkAddress xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">0.0.0.0</defaultNetworkAddress>
      <defaultNetworkMask xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">0</defaultNetworkMask>
      </externalNetworkSegmentBlueprint>
      </externalNetworkSegmentBlueprints>
      <integerBlueprints />
      <legacyVersion>8.3.01</legacyVersion>
      <name>Sample Container - HyperV N1KV</name>
      <networkPathBlueprints>
      <networkPathBlueprint>
      <endpoint1Name>External</endpoint1Name>
      <endpoint2Name>AccessA</endpoint2Name>
      <name>External-AccessA</name>
      <servicedNodeNames />
      </networkPathBlueprint>
      </networkPathBlueprints>
      <nicSegmentBlueprints>
      <nicSegmentBlueprint>
      <defaultEnabledFlag>true</defaultEnabledFlag>
      <lockedFlag>true</lockedFlag>
      <name>AccessA</name>
      <networkName>AccessA</networkName>
      <tag>Purpose[Web]</tag>
      <addressPoolName>AccessA</addressPoolName>
      <vlanName>AccessA</vlanName>
      <customerFlag>true</customerFlag>
      <managementFlag>false</managementFlag>
      </nicSegmentBlueprint>
      </nicSegmentBlueprints>
      <nodeBlueprints>
      <nodeBlueprint>
      <addressBlueprints>
      <addressBlueprint>
      <addressName>GatewayA</addressName>
      <gatewayFlag>true</gatewayFlag>
      <poolPosition>0</poolPosition>
      <addressPoolName>AccessA</addressPoolName>
      </addressBlueprint>
      </addressBlueprints>
      <category>2</category>
      <configureActionInfoBlueprints>
      <configureActionInfoBlueprint xsi:type="mergeActionInfoBlueprint" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <templateGroups>
      <item>SampleStaticConfigureEdge</item>
      </templateGroups>
      </configureActionInfoBlueprint>
      </configureActionInfoBlueprints>
      <dummyHostFlag>false</dummyHostFlag>
      <name>Edge</name>
      <numVrfs>0</numVrfs>
      <role>Edge</role>
      <unconfigureActionInfoBlueprints>
      <unconfigureActionInfoBlueprint xsi:type="mergeActionInfoBlueprint" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <templateGroups>
      <item>SampleStaticUnconfigureEdge</item>
      </templateGroups>
      </unconfigureActionInfoBlueprint>
      </unconfigureActionInfoBlueprints>
      </nodeBlueprint>
      <nodeBlueprint xsi:type="containerHypervisorSwitchBlueprint" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <addressBlueprints />
      <category>2</category>
      <configureActionInfoBlueprints>
      <configureActionInfoBlueprint xsi:type="mergeActionInfoBlueprint">
      <templateGroups>
      <item>SampleStaticConfigureAccess</item>
      </templateGroups>
      </configureActionInfoBlueprint>
      </configureActionInfoBlueprints>
      <dummyHostFlag>false</dummyHostFlag>
      <name>Access</name>
      <numVrfs>0</numVrfs>
      <role>Access</role>
      <unconfigureActionInfoBlueprints>
      <unconfigureActionInfoBlueprint xsi:type="mergeActionInfoBlueprint">
      <templateGroups>
      <item>SampleStaticUnconfigureAccess</item>
      </templateGroups>
      </unconfigureActionInfoBlueprint>
      </unconfigureActionInfoBlueprints>
      <portTypeBlueprints>
      <portTypeBlueprint>
      <name>AccessA</name>
      <nameWithinSwitch>${container.node.portTypes[AccessA].vlan}</nameWithinSwitch>
      <nicSegmentName>AccessA</nicSegmentName>
      </portTypeBlueprint>
      </portTypeBlueprints>
      </nodeBlueprint>
      </nodeBlueprints>
      <pairBlueprints />
      <revisionNum>0</revisionNum>
      <vipSegmentBlueprints />
      <vlanBlueprints>
      <vlanBlueprint>
      <vlanName>AccessA</vlanName>
      <vlanPoolName>Data</vlanPoolName>
      </vlanBlueprint>
      </vlanBlueprints>
      <vrfIdBlueprints />
      <zoneBlueprints />
      </containerBlueprint>
      </bbnaData>

To view the logical network created during container provisioning on SCVMM

Refresh the virtual switch extension manager for the N1KV switch to see the logical network on SCVMM by performing the following steps:

  1. RDC to the SCVMM server.
  2. Connect the SCVMM Console to localhost:8100.
  3. Click Fabric or Ctrl-Fon the lower left navigation pane.
  4. On the upper left navigation pane, go to Networking > Switch Extension Managers, click the host name specified for the Nexus1000V switch, and then click Refresh on the ribbon or right-click and select Refresh on the context menu.
  5. Go to Networking > Logical Networks and verify that myContainer-HyperV-Vlan551, the logical network created during container provisioning is displayed.

To create a VM network from SCVMM

  1. Click VMs and Services or Ctrl-M on the lower left navigation pane.
  2. Click Create VM Network on the ribbon.
  3. On the Jobs wizard that pops up, perform the following actions:
    1. Specify a name for the VM network, for example, myContainer-HyperV.
    2. Select the logical-network that was created during container creation, for example, myContainer-HyperV-Vlan551
  4. Click Next.
    1. Set Isolation to Specify an externally supplied VM Network.

      By default, External VM network is set to myContainer-HyperV-Vlan551-NetSegment and is the only option.
    2. Click Next, and then click Finish.
    3. Close the popup window and verify that the VM network is displayed on the list.

      Sample Powershell script to create VM network
      $logicalNetwork = Get-SCLogicalNetwork -Name "myContainer-HyperV-Vlan551" -ID "5e099863-09b8-489c-b9d4-d5d2ecfcec2c"
      New-SCVMNetwork -Name "myContainer-HyperV" -ExternalName "myContainer-HyperV-Vlan551-NetSegment" -LogicalNetwork $logicalNetwork

Related topics

Creating network pod blueprints
Creating network container blueprints

Onboarding Microsoft Hyper-V resources

Was this page helpful? Yes No Submitting... Thank you

Comments