Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1...

19
Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1 NetApp Confidential - Internal Use Only

Transcript of Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1...

Page 1: Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1 NetApp Confidential - Internal Use Only.

1NetApp Confidential - Internal Use Only

Dr. Adolf Hohl (FCI Lead EMEA)

Developer Sessions –

Introduction into

Automating Cisco UCS

Page 2: Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1 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 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

Page 3: Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1 NetApp Confidential - Internal Use Only.

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

Page 4: Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1 NetApp Confidential - Internal Use Only.

UCS Automation – VLANs, VNIC & SP templates

4NetApp Confidential - Internal Use Only

Page 5: Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1 NetApp 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

Page 6: Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1 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

7NetApp Confidential - Internal Use Only

Page 7: Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1 NetApp Confidential - Internal Use Only.

Create a VLAN in UCSM

8NetApp Confidential - Internal Use Only

VLANs

Page 8: Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1 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

9NetApp Confidential - Internal Use Only

Page 9: Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1 NetApp 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

Page 10: Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1 NetApp Confidential - Internal Use Only.

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>>");}

Page 11: Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1 NetApp Confidential - Internal Use Only.

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"

}}

Page 12: Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1 NetApp Confidential - Internal Use Only.

Missing Associations

VLANs are there, but …– Not enabled from fabric to blades– Half way

13NetApp Confidential - Internal Use Only

Page 13: Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1 NetApp 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

Page 14: Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1 NetApp Confidential - Internal Use Only.

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}

Page 15: Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1 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

16NetApp Confidential - Internal Use Only

VNIC Template

Set of VLANs Network Control PolicyOrganization

Service Profile Template

… …

Service Profile

Blade

Page 16: Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1 NetApp Confidential - Internal Use Only.

17NetApp Confidential - Internal Use Only

Navigate in FlexPod Provisioning Sample Code

Page 17: Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1 NetApp Confidential - Internal Use Only.

FlexPod Provisioning Code Outline (I)

18

Page 18: Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1 NetApp Confidential - Internal Use Only.

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)

Page 19: Dr. Adolf Hohl (FCI Lead EMEA) Developer Sessions – Introduction into Automating Cisco UCS 1 NetApp Confidential - Internal Use Only.

20NetApp Confidential - Internal Use Only