PowerShell and the web v2

Download Report

Transcript PowerShell and the web v2

POWERSHELL AND
THE WEB
PowerShell Summit 2014
Trond Hindenes, Crayon AS (@trondhindenes)
THE IT AUTOMATION PYRAMID
Integration
Automation
Orchestration
POWERSHELL INTEGRATION MATURITY
HTTP API
(rest)
.Net
wrapper
(dll)
PS
Module
WHY STEP TO THE LEFT?
• Low quality vendor-supplied CmdLets
• Lack of functionality
TYPES OF WEB SERVICES
• Generation 1: XML Web Services (SOAP)
• Stateful (or, acting like they are stateful)
• Generation 2: RESTful services (JSON/XML)
• Stateless
• Good overview at:
http://www.developingthefuture.net/webservices-overview/
TYPES OF WEB SERVICES (2)
• SOAP: Access api through methods on the
proxy object
$citynames = $proxy.LatLonListCityNames(1)
• REST: Each operation has a URL:
• http://server/api/customers/fred/orders
• HTTP DELETE to
http://server/api/products/orange
AUTHENTICATION GOTCHA’S
• The life of a http request
• Authentication types:
• Unauthenticated or IP based
• Basic/NTLM
• Token based
VISUAL STUDIO LIGHTSWITCH
• Rapid development of
Data-driven applications
• Can be self-hosted or built as
a Sharepoint 2013 “app”
• The backend data is served using WCF
OData
PATTERNS FOR LIGHTSWITCH + POWERSHELL
• Develop the app
• Deploy it somewhere
• Generate proxy dll
• Use the proxy to interact
with the service endpoint
EXAMINING THE PROXY DLL
• Use the VS Object Browser to inspect the dll
• Or use Ilspy (http://ilspy.net/)
POWERSHELL AND RESTFUL SERVICES WITH JSON AKA INVOKE-RESTMETHOD
• JSON – Javascript Object Notation
• “Human readable objects”
• Similar to XML, but lighter weight (XML is
wire-heavy)
Construct
Object
Convert
to Json
Send to
server
Get stuff
back
REST GOTCHAS
• Everything is a PsCustomObject
• No “.gettype()”
• Each request is atomic
• No “state”
• API examples often use curl
• Important differences between PowerShell and curl (authentication)
• Be mindful of JSON syntax
• You'll often end up with lots of "nested" objects
GENERATING “PROPER” OBJECTS
• New-Struct to the rescue
• (http://powershellcommunity.poshcode.org/3146)
ASP.NET MVC/WEB API
• General-purpose web app framework for
building “stuff”
• Scott Guthrie’s brainchild
• Web API is a flexible framework for building
(among others) RESTful web services
• Natively supports both JSON and xml
CASE: HOSTED MAIL FLOW MONITORING
IaaS hMail
Azure Web Site Web API
Operations Manager
FUN WITH WEB
• SpamTitan (super-simple XML/Rest)
• Geckoboard (complex json)
• PagerDuty (simple json)
THANK YOU!