#PIWorld ©2019 OSIsoft, LLC
Effortlessly Deploying a PI System in Azure or AWS
Eugene Lee
Technology Enablement
Valentin Ivanov
Cloud Architect
1
#PIWorld ©2019 OSIsoft, LLC #PIWorld ©2019 OSIsoft, LLC 2
Agenda
• Introduction
•Concepts
•Demo flow
•Azure Demo
•AWS Demo
•Conclusion
#PIWorld ©2019 OSIsoft, LLC 3 3
Introduction
#PIWorld ©2019 OSIsoft, LLC 4
Cost
Available
Elastic
Accessible
Managed services
On demand
Cloud
Computing
#PIWorld ©2019 OSIsoft, LLC 5
How to run your app?
Customer Manages Managed by Vendor
#PIWorld ©2019 OSIsoft, LLC 6
Velocity vs Flexibility Trade-off
#PIWorld ©2019 OSIsoft, LLC 7
OSIsoft Offerings at Each Level
Integrate with other
cloud platforms
Make PI System
“Cloud Ready”
Offer a Platform for
Customer & Partner Apps
Deliver native, multi-
tenant, & complementary
Cloud Services
PI Server +
PI Integrators
Best Practices,
Quick Starts,
Scripts
OSIsoft Cloud Services
(OCS)
Achieved TODAY with…
Customer Customer Customer
Cloud
Vendor OSIsoft OSIsoft
Achieved TOMORROW with…
#PIWorld ©2019 OSIsoft, LLC 8
OSIsoft Cloud Services
PI Server
Any Cloud
#PIWorld ©2019 OSIsoft, LLC 9
PLC
SCADA
DCS Remote Assets
Data
Lake
Data
Warehouse Data Hub
or Queue
BI
PI Integrator for Business Analytics
Streaming
Analytics
IoT Device
Ingress IoT
Devices
Primary network ingress
Machine
Learning
Why have a PI System in the Cloud?
PI Server
Predictions
and
secondary
network ingress
Site PI Server
#PIWorld ©2019 OSIsoft, LLC 10
Cloud deployment options
Manual Automated
Intuitive
Not easily reproducible
Steps can be forgotten or reordered
Not scalable
Steeper learning curve
Reproducible
Machine always follows instruction
Scalable
#PIWorld ©2019 OSIsoft, LLC 11
#PIWorld ©2019 OSIsoft, LLC 12 12
Concepts
#PIWorld ©2019 OSIsoft, LLC 13
Infrastructure as code (IaC)
#PIWorld ©2019 OSIsoft, LLC 14
Desired State Configuration (DSC)
Write Script
Compile Script
MOF File Apply MOF
#PIWorld ©2019 OSIsoft, LLC 15 15
Demo flow
#PIWorld ©2019 OSIsoft, LLC 16
Architecture
PI Server
Domain
Domain Controller
#PIWorld ©2019 OSIsoft, LLC 17
Stage 1 (40 min)
•Build VMs with DSC scripts and Templates
•Azure uses ARM Templates
•AWS uses CloudFormation Templates
•Perform only with new updates
#PIWorld ©2019 OSIsoft, LLC 18
Stage 2 (3 min)
•Take snapshots of VMs
•Snapshots will be used for further deployments
#PIWorld ©2019 OSIsoft, LLC 19
Stage 3 (2 min)
•Deploy VMs from snapshots
•New set of templates
•Different from those in Stage 1
•Perform whenever new environment needed
#PIWorld ©2019 OSIsoft, LLC
DEMO
20
Azure & AWS Deployment
Production not supported
#PIWorld ©2019 OSIsoft, LLC 21
Azure Resource Manager
{
"$schema": "https://schema.management...Template.json#",
"contentVersion": "",
"apiProfile": "",
"parameters": { },
"variables": { },
"functions": [ ],
"resources": [ ],
"outputs": { }
}
#PIWorld ©2019 OSIsoft, LLC #PIWorld ©2019 OSIsoft, LLC 22
Conclusion
•Automated deployment is more scalable and less risky
•Build VMs snapshots only with new updates
•Deploy from snapshots for regular use
#PIWorld ©2019 OSIsoft, LLC #PIWorld ©2019 OSIsoft, LLC 23
Related Lab at PI World
•PI System Quick Start Templates for AWS Day 3: PI Admin Lab
#PIWorld ©2019 OSIsoft, LLC
Contact
24
• Eugene Lee
• Technology Enablement Engineer
• OSIsoft
• Valentin Ivanov
• Cloud Architect
• OSIsoft
#PIWorld ©2019 OSIsoft, LLC
Questions?
Please wait for
the microphone
State your
name & company
Please remember
DOWNLOAD THE MOBILE APP
25
#PIWorld ©2019 OSIsoft, LLC 26
#PIWorld ©2019 OSIsoft, LLC 27
Format
Configuration DcsDemoWebsite {
Node ("NodeIpOrName") {
#Install IIS server role
WindowsFeature IIS {
Ensure = "Present"
Name = "Web-Server"
}
#Install ASP role
WindowsFeature AspNet45 {
Ensure = "Present"
Name = "Web-Asp-Net45"
}
}
}
Resources
#PIWorld ©2019 OSIsoft, LLC 28
Modules
Import-DscResource -ModuleName PSDesiredStateConfiguration
Import-DscResource -ModuleName cChoco -ModuleVersion 2.3.1.0
Import-DscResource -ModuleName xPendingReboot -ModuleVersion 0.3.0.0
Both built-in and custom modules available
#PIWorld ©2019 OSIsoft, LLC 29
AWS CloudFormation
{
"AWSTemplateFormatVersion" : "",
"Description" : "",
"Metadata" : { },
"Parameters" : { },
"Mappings" : { },
"Conditions" : { },
"Transform" : { },
"Resources" : { },
"Outputs" : { }
}