190 likes | 298 Views
Developer Sessions – Introduction into Automating Cisco UCS. Dr. Adolf Hohl (FCI Lead EMEA). Developer Sessions. What is it about? Integration Automation Customization For Whom? Consultants, integration engineers, architects How?
E N D
Developer Sessions – Introduction into Automating Cisco UCS Dr. Adolf Hohl (FCI Lead EMEA) NetApp Confidential - Internal Use Only
Developer Sessions • What is it about? • Integration • Automation • Customization • For Whom? • Consultants, integration engineers, architects • How? • Use the glue: Leverage NetApp APIs to dobetter integrations at customers • Use case centric approach • When? • Tuesday 15:00-16:00 CET • https://communities.netapp.com/community/interfaces_and_tools/developer/developer-sessions Improving IT and operation at customer Apps Data OnTAP PowerShell Toolkit Ingredients: HyperVisor NMSDK Storage SuperGlue NetApp Confidential - Internal Use Only
Schedule May/June NetApp Confidential - Internal Use Only
UCS Automation – VLANs, VNIC & SP templates NetApp Confidential - Internal Use Only
Todays Session Ingredients • UCS Emulator • http://developer.cisco.com/web/unifiedcomputing/ucsemulatordownload • UCS PowerTool for UCSM • http://developer.cisco.com/web/unifiedcomputing/pshell-download • Flexpod Provisioning Sample Scripts • Certain fragments NetApp Confidential - Internal Use Only
Session Takeaway • Get familiar with: • Creating VLANs • Creating VNIC templates • Creating Service Profile templates • Navigate in sample Flexpod Provisioning Scripts and start to innovate NetApp Confidential - Internal Use Only
VLANs Create a VLAN in UCSM NetApp Confidential - Internal Use Only
VLANs in FlexPod Stack • Implementing different trust domains: • Storage: vfiler • Network: VLANs • Multiple VLANs defined for infrastructure (see implementation guide) • VLANs for customer, each customer gets e.g.: • Frontend VLAN: Access to the hosted services • Storage VLAN: Access to storage • Management VLAN NetApp Confidential - Internal Use Only
VLANs in the entire Stack INPUT: vlan.id/.descr PRE: Po10-Po14 exist, vlan.id does not exist on all Po10-Po14 POST: vlan.id enabled from storage (S) to Ucs (U). INFO: storage vlan needs to be enabled everywhere. E.g. frontentaccess would onlygo on Po10,13,14 For left and right Nexus Switch: config t vlan <vlan.id> descr <vlan.descr> forall <if> in {Po10, …, Po14} int <if> switchport trunk allowed vlan add <vlan.id> exit exit U U Po13 Po14 Po10 N N Po11 Po12 S S NetApp Confidential - Internal Use Only
Infrastructure VLANs • MGMT-VLAN • NFS-VLAN • vMotion-VLAN • Pkt-Ctrl-VLAN • VM-Traffic-VLAN • Native-VLAN ##line 207 UCSpart1.ps1 $NAMES_TO_VLANS = @{ "MGMT-VLAN" = $config.Get_Item("<<var_global_mgmt_vlan_id>>"); "NFS-VLAN" = $config.Get_Item("<<var_global_nfs_vlan_id>>"); "vMotion-VLAN" = $config.Get_Item("<<var_global_vmotion_vlan_id>>"); "Pkt-Ctrl-VLAN" = $config.Get_Item("<<var_global_packet_control_vlan_id>>"); "VM-Traffic-VLAN" = $config.Get_Item("<<var_global_vm_traffic_vlan_id>>"); "Native-VLAN" = $config.Get_Item("<<var_global_native_vlan_id>>");} NetApp Confidential - Internal Use Only
Creating them in bulk manner • Iterate through associative array • VLANs are not hierarchically organized in UCS ## input: $NAMES_TO_VLANS ## line 435 3_4_UCS.ps1 $fabricEthLan = New-Object Cisco.Ucs.FabricEthLan $fabricEthLan.Dn = "fabric/lan" foreach($item in $NAMES_TO_VLANS.GetEnumerator()) { $vLanName = $item.Name Write-Host "create vlan: $vLanName" $result = Get-UcsVlan -FabricLanCloud $fabricEthLan -Name $vLanName -Ucs $ucsHandle if(!$result) { if($vlanName -eq "Native-VLAN") { $native = "true" } else { $native = "false" } Add-UcsVlan -FabricLanCloud $fabricEthLan -Name $vLanName \\ -Id $item.Value -DefaultNet $native -Ucs $ucsHandle } else { Write-host "vlan $vLanName already exists, skipping" } } NetApp Confidential - Internal Use Only
Missing Associations • VLANs are there, but … • Not enabled from fabric to blades • Half way NetApp Confidential - Internal Use Only
VNIC Templates • Hierarchical element • VNIC templates bundle network settings for reusability • In FlexPod infrastructure for each fabric a VNIC template is created Set of VLANs Organization Network Control Policy VNIC Template NetApp Confidential - Internal Use Only
Creating VNIC templates ## line 487 3_4_UCS.ps1 foreach($switchId in $switchIds_a) { $orgName = $organization.Name $variable = "VNIC_TEMPLATE_" + $switchId + "_NAME" $vNicTemplateName = Get-Variable $variable -ValueOnly $vNicTemplateDescr = $vNicTemplateName + " description" $variable= "MAC_POOL_" + $switchId + "_NAME" $macPoolName = Get-Variable $variable -ValueOnly $result = Get-UcsVnicTemplate -Org $organization -Name $vNicTemplateName -Ucs $ucsHandle if($result) { Write-Host "vNIC template $vNicTemplateName already exists in org $($ourOrg.Name), replacing" Remove-UcsVnicTemplate -VnicTemplate $result -Ucs $ucsHandle -Force } $z = Add-UcsVnicTemplate -Org $rootOrg -Name $vNicTemplateName -IdentPoolName $macPoolName -Mtu 9000 \\ -NwCtrlPolicyName $NCP_NAME -SwitchId $switchId -TemplType "updating-template" foreach($item in $NAMES_TO_VLANS.GetEnumerator()) { #Add-UcsVnicInterface -VnicTemplate $z -Name $item.Name if($item.Name -eq "Native-VLAN") { $native = "true" } else { $native = "false" } Add-UcsVnicInterface -VnicTemplate $z -Name $item.Name -DefaultNet $native } Get-UcsVnicTemplate -Org $organization -Name $vNicTemplateName -Ucs $ucsHandle } NetApp Confidential - Internal Use Only
Service Profile Templates • Hierarchical element • Service Profile Templates reference the VNIC templates (among other things) • Reusable entity to create Service Profiles • Line 1051 3_4_UCS.ps1 … … Set of VLANs Organization Network Control Policy Service Profile Template VNIC Template Service Profile Blade NetApp Confidential - Internal Use Only
Navigate in FlexPod Provisioning Sample Code NetApp Confidential - Internal Use Only
FlexPod Provisioning Code Outline (II) • Automated Day 0 according TR 3939 • Aligned section by section strictly MakeMyPod.ps1 (via sshexec.jar) 3.7 Data Ontap Powershell Toolkit FAS( ) Cabling + Enable IP Communication 3.2 NetApp FAS Part I Nexus Command Line Interface (SSH) NEXUS( ) 3.6 3.3 Nexus 5548 Part I Cisco UCS XML API UCS( ) 3.4 3.8 VMWareInstall ~8-12 minutes (excludingzeroingdisks) TR3939 Continue on page 54