dr. adolf hohl (fci lead emea) developer sessions – introduction into automating cisco ucs 1...
TRANSCRIPT
1NetApp Confidential - Internal Use Only
Dr. Adolf Hohl (FCI Lead EMEA)
Developer Sessions –
Introduction into
Automating Cisco UCS
Developer Sessions
What is it about?– Integration
– Automation
– Customization
For Whom?– Consultants, integration engineers, architects
How?– Use the glue: Leverage NetApp APIs to do
better 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
2NetApp Confidential - Internal Use Only
Improving IT andoperation at customer
Super
Glu
e
NM
SD
K
Ing
red
ien
ts:
Dat
a O
nTA
P
Po
wer
Sh
ell T
oo
lkit
Apps
HyperVisor
Storage
Schedule May/JuneDate (cal.
entry) TopicAbstract and Takeaway Programming
Language
15.05.2012 NetApp Powershell Toolkit Intro
This session is an introduction to the NetApp Powershell Toolkit. It show the feature richness and the simplicity of use. You learn how to install the toolkit, connect to controllers and get an overview on its features.
Powershell
22.05.2012 NetApp Manageability SDK Introduction
This session is an introduction to the NetApp Manageability SDK in its latest release. You learn the coverage to the SDK and get an overview on its features. You learn how to install it and start rapid prototyping with automatic code generation.
Various
29.05.2012 Use Case: Automated Snapshot Archiving using APIs
This session is about automated snapshot archiving leveraging NetApp APIs. You learn how to organize snapshot archives from different sources.
Perl
3NetApp Confidential - Internal Use Only
Date (cal. entry) Topic
Abstract and TakeawayProgramming
Language
05.06.2012 Introduction into Automating Cisco UCS
This session is an introduction to the Cisco UCSPS library to automate Cisco UCS components in a FlexPod. You learn how to install, connect and use basic commandlets.
Powershell
12.06.2012 Use Case: Performance Advisor Data Extraction
This session is about extracting performance data of the storage infrastructure and making it available in structured SQL database for further processing. You learn how to parse performance data and extract relevant counters.
Perl
19.06.2012 Use Case: Creating VLANs on Cisco UCS
Within this session the Cisco UCSPS library is used to create VLANs according to the specification of the FlexPod reference architecture. You learn how to query for existing VLANs, define new VLANs and register them in a VLAN template.
Powershell
26.06.2012 Use Case: DB Backup Workflow with DB Verification
This session is about a backup workflow for a database which includes a verification phase before treating the backup as valid. You learn the basic structure of a backup workflow and how to embed any postprocessing steps.
Perl
UCS Automation – VLANs, VNIC & SP templates
4NetApp Confidential - Internal Use Only
Todays Session Ingredients
UCS Emulator– http://developer.cisco.com/web/
unifiedcomputing/ucsemulatordownloadUCS PowerTool for UCSM
– http://developer.cisco.com/web/unifiedcomputing/pshell-download
Flexpod Provisioning Sample Scripts– Certain fragments
6NetApp 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
7NetApp Confidential - Internal Use Only
Create a VLAN in UCSM
8NetApp Confidential - Internal Use Only
VLANs
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
9NetApp Confidential - Internal Use Only
VLANs in the entire Stack
10NetApp Confidential - Internal Use Only
S S
N N
U U
Po10
Po11 Po12
Po13 Po14
INPUT: vlan.id/.descrPRE: Po10-Po14 exist, vlan.id does not exist on all Po10-Po14POST: 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 tvlan <vlan.id>descr <vlan.descr>
forall <if> in {Po10, …, Po14}int <if>switchport trunk allowed vlan add <vlan.id>exit
exit
Infrastructure VLANs
MGMT-VLANNFS-VLANvMotion-VLANPkt-Ctrl-VLANVM-Traffic-VLANNative-VLAN
11NetApp Confidential - Internal Use Only
##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>>");}
Creating them in bulk manner
Iterate through associative array
VLANs are not hierarchically organized in UCS
12NetApp Confidential - Internal Use Only
## 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.NameWrite-Host "create vlan: $vLanName"
$result = Get-UcsVlan -FabricLanCloud $fabricEthLan -Name $vLanName -Ucs $ucsHandleif(!$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"
}}
Missing Associations
VLANs are there, but …– Not enabled from fabric to blades– Half way
13NetApp Confidential - Internal Use Only
VNIC Templates
Hierarchical elementVNIC templates bundle network settings for
reusabilityIn FlexPod infrastructure for each fabric a
VNIC template is created
14NetApp Confidential - Internal Use Only
VNIC Template
Set of VLANs Network Control PolicyOrganization
Creating VNIC templates
15NetApp Confidential - Internal Use Only
## line 487 3_4_UCS.ps1foreach($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 $ucsHandleif($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}
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
16NetApp Confidential - Internal Use Only
VNIC Template
Set of VLANs Network Control PolicyOrganization
Service Profile Template
… …
Service Profile
Blade
17NetApp Confidential - Internal Use Only
Navigate in FlexPod Provisioning Sample Code
FlexPod Provisioning Code Outline (I)
18
FlexPod Provisioning Code Outline (II)
19
FAS( )
NEXUS( )
UCS( )
3.2 NetApp FAS Part I
3.3 Nexus 5548 Part I
3.4
TR3939 Continue on page 54
3.8 VMWare Install
3.7
Ca
blin
g +
En
ab
le I
P
Co
mm
un
ica
tion
Data OntapPowershell Toolkit
Nexus Command LineInterface (SSH)
Cisco UCS XML API
~8-12 minutes(excluding zeroing disks)
• Automated Day 0 according TR 3939• Aligned section by section strictly
3.6
MakeMyPod.ps1(via sshexec.jar)
20NetApp Confidential - Internal Use Only