![Page 1: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/1.jpg)
HOW OPEN SOURCE IS DRIVINGDEVOPS INNOVATION
Gordon Haff @ghaffWilliam Henry @ipbabbleCloud & DevOps Product Strategy, Red Hat17 August 2015
![Page 2: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/2.jpg)
What is DevOps?
Source: DevOps Days DC 2015 word cloud from Open Spaces.
![Page 3: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/3.jpg)
DevOps applies open source principles and practices with...
![Page 4: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/4.jpg)
DEVOPS:THE WHAT & THE WHY
TOOLS drawing from innovative development communities
![Page 5: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/5.jpg)
A typical DevOps workflow
![Page 6: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/6.jpg)
Tools for operations*/infrastucture
Containerized infrastructureOrchestrationPolicy-based governanceConfiguration managementAutomationPackagingUpdates
* But they bleed into developer land!
![Page 7: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/7.jpg)
Infrastructures evolve for cloud-native
�Monolithic app container�Scale up by adding hardware resources�Limited scale out through clustering
�Distributed, networked, containerized services�Scale out by orchestrating services�Faster iteration and release�More robust
RHEL
APP APP
SINGLE-HOST APPS MULTI-HOST APPS
![Page 8: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/8.jpg)
Infrastructure layer:A Cloud Platform for Microservice Cloud Apps
Provision apps from service catalog
Orchestrate and place apps
Run composed microservices in containers
Provide dynamic, programmable infrastructure
OPS MANAGEMENT AND SERVICE CATALOG
(e.g. RED HAT CLOUDFORMS)
CONTENT, ENTITLEMENT, AND LIFECYCLE
(e.g. RED HAT SATELLITE)
SERVICE SCHEDULER/ORCHESTRATOR(e.g. KUBERNETES)
PaaS(e.g. O
PE
NS
HIFT)
RED HAT ENTERPRISE LINUX OPENSTACK PLATFORMCOMPUTE STORAGE NETWORK
(e.g. OPENSTACK, CEPH, OPEN DAYLIGHT)
RHEL ATOMIC HOST GUEST
RHEL ATOMIC HOST GUEST
Red HatCloudFormsMonitoring
DockerImage
Red HatCloudForms
OrchestrationDockerImage
Red HatSatelliteContentDockerImage
Red HatJBossAMQ
DockerImage
App DBDockerImage
Red HatJBossBRMSDockerImage
![Page 9: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/9.jpg)
Tools for developer* workflowsCollaborationCI/CDIssue trackingSource code controlCode reviewPlatform-as-a-Service
* But they bleed into ops land!
![Page 10: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/10.jpg)
CI/CD Pipeline Toolset
CI/CD Workflow UI
![Page 11: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/11.jpg)
DEVOPS:THE WHAT & THE WHY
Automation of
PROCESS from development through ongoing operations
![Page 12: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/12.jpg)
Automation as a CI/CD Process
myRepo ProjectRepo
CI
Commit Push
Pass/Fail
Local Test
BuildRepo
CD
ReleaseRepo
Monitor
Build Test Review/Appr Deliver Deploy
3rd Party
![Page 13: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/13.jpg)
myRepo ProjectRepo
CI
Commit Push
Pass/Fail
Local Test
BuildRepo
CD
ReleaseRepo
Monitor
Build Test Review/Appr Deliver Deploy
3rd Party
● Collaboration○ Kanban - Trello○ Docs - etherpad, google docs○ Pastebin - fpaste○ Ticketing - Jira, Redmine○ Coding - Eclipse, Emacs,
![Page 14: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/14.jpg)
myRepo ProjectRepo
CI
Commit Push
Pass/Fail
Local Test
BuildRepo
CD
ReleaseRepo
Monitor
Build Test Review/Appr Deliver Deploy
3rd Party
● Asset Management○ Code/Config - git, subversion○ Docs - git, Google docs○ Policy/rules - ManageIQ, Katello
![Page 15: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/15.jpg)
myRepo ProjectRepo
CI
Commit Push
Pass/Fail
Local Test
BuildRepo
CD
ReleaseRepo
Monitor
Build Test Review/Appr Deliver Deploy
3rd Party
● Continuous Integration○ Jenkins○ Travis CI○ BuildBot
![Page 16: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/16.jpg)
myRepo ProjectRepo
CI
Commit Push
Pass/Fail
Local Test
BuildRepo
CD
ReleaseRepo
Monitor
Build Test Review/Appr Deliver Deploy
3rd Party
● Code/Image Build○ Compilers○ Code Build - Ant, Maven,
Buildbot, Cruisecontrol, etc.
![Page 17: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/17.jpg)
myRepo ProjectRepo
CI
Commit Push
Pass/Fail
Local Test
BuildRepo
CD
ReleaseRepo
Monitor
Build Test Review/Appr Deliver Deploy
3rd Party
● Testing○ SonarQube○ Cucumber○ JUnit○ Arquillian
![Page 18: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/18.jpg)
myRepo ProjectRepo
CI
Commit Push
Pass/Fail
Local Test
BuildRepo
CD
ReleaseRepo
Monitor
Build Test Review/Appr Deliver Deploy
3rd Party
● Review/Approve○ Gerrit, Github
● Ticket Update○ Jira, Redmine
![Page 19: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/19.jpg)
myRepo ProjectRepo
CI
Commit Push
Pass/Fail
Local Test
BuildRepo
CD
ReleaseRepo
Monitor
Build Test Review/Appr Deliver Deploy
3rd Party
● Packaging○ RPM
● Images○ Docker, OCI
● Applications/Services○ Kubernetes, Atomicapp
![Page 20: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/20.jpg)
myRepo ProjectRepo
CI
Commit Push
Pass/Fail
Local Test
BuildRepo
CD
ReleaseRepo
Monitor
Build Test Review/Appr Deliver Deploy
3rd Party
● Anisible,Puppet, Chef● Atomic/Atomicapp● Kubernetes● ManageIQ● Katella
![Page 21: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/21.jpg)
myRepo ProjectRepo
CI
Commit Push
Pass/Fail
Local Test
BuildRepo
CD
ReleaseRepo
Monitor
Build Test Review/Appr Deliver Deploy
3rd Party
● Tomcat● Wildfly● MongoDB● MySQL● Vert.x● Node.js● Docker● ActiveMQ● FeedHenry● Openstack● Openshift
![Page 22: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/22.jpg)
Continuous Integration / Continuous Deployment
Image & Package &Metadata Repository
src repo
Dev./Build QA Productionin OHC
Automation Across Environments
Events
Assets
![Page 23: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/23.jpg)
Portable Application
AtomicApp
![Page 24: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/24.jpg)
Continuous Integration / Continuous Deployment
Image & Package &Metadata Repository
src repo
Dev./Build QA Productionin OHC
Automation Across Environments
Events
Assets
![Page 25: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/25.jpg)
PaaS provides an integration point
![Page 26: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/26.jpg)
DEVOPS:THE WHAT & THE WHY
CULTURE of collaboration valuing openness and transparency
![Page 27: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/27.jpg)
![Page 28: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/28.jpg)
Our culture is too difficult!Really?
Consider post war Japan.
https://leanhomebuilding.wordpress.com/page/4/
![Page 29: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/29.jpg)
Impose a culture of:EmpathyTrustLearningCooperationResponsibility ?
![Page 30: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/30.jpg)
![Page 31: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/31.jpg)
Issues with just “changing culture”
● Lack of agreed-to model of what “right” culture looks like● Different organizations require different behaviors● Culture change is difficult to measure and quantify● Culture is very hard to impose● Culture is an output, not an input
![Page 32: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/32.jpg)
Culture = f (l, o, i, t, …)where:l = leadershipo = organizationi = incentivest = trust… = many other things
Open source offers guidance
![Page 33: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/33.jpg)
Leadership and vision but no one organizational structure
Multiple models work but characteristics need to fit the project, participants, and vision
![Page 34: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/34.jpg)
Solve specific problemsOpen source projects often begun because of an individual’s interest or issueDevOps projects (often) benefit by tackling low surface area problem cases(But, like open source, DevOps can become the default)
![Page 35: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/35.jpg)
TransparencyWho made changes?When and why did they make them?What’s the state of the project?What’s the state of the system?It’s the expectation for both open source and DevOps
![Page 36: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/36.jpg)
Rich communication flows matterOpen source projects have been forced to deal with distributed (cross-timezone) teamsTools vary by teamsVideo getting betterF2F time still a big plus
![Page 37: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/37.jpg)
Don’t fear failureOpen source innovation highly driven by experimentationOne of the points of DevOps is to enable better experimentationIf it doesn’t work, move on(But fast failures)
![Page 38: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/38.jpg)
Incentives matterOpen source projects (tend to) reward based on merit and contributionIncentives in DevOps organization (advancement, money, recognition) need to reward trust and cooperationIndividual has control over their own success
![Page 39: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/39.jpg)
Open source is driving DevOps
But it’s more than the code!
![Page 40: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/40.jpg)
CreditsTools: Dorli Photography, cc/flickr https://www.flickr.com/photos/dorlino/4946061042/
Robots: davidgariepy, cc/flickr https://www.flickr.com/photos/davidgariepy/2495011427/
Kids programming: Esti Alvarez cc license
Dev: Nelson Pavlosky/flickr under CC http://www.flickr.com/photos/skyfaller/113796919/
Ops: Leonardo Rizzi/flickr under CC http://www.flickr.com/photos/stars6/4381851322/
Rainbows and Unicorns: http://kaigumo.deviantart.com/art/Unicorns-Fart-Rainbows-3-151273843
Join hands: https://www.flickr.com/photos/vogelium/10565496565/
Thanks to J.P.Morgenthal for some of his thoughts about culture change. See also http://www.slideshare.net/JPMorgenthal1/process-andorgtrumpcultureinentdevops
Governance models: http://oss-watch.ac.uk/resources/governancemodels
Transparent code: iStockPhoto
Linux Collaboration Summit: Linux Foundation
Wipeout: https://www.flickr.com/photos/andymorffew/15843725192
No: Wikimedia
![Page 41: DEVOPS INNOVATION HOW OPEN SOURCE IS DRIVING · Docker Image Red Hat CloudForms Orchestration Docker Image Red Hat Satellite ... Anisible,Puppet, Chef Atomic/Atomicapp Kubernetes](https://reader035.vdocuments.us/reader035/viewer/2022062602/5ec887c5fa146116dd23a3fb/html5/thumbnails/41.jpg)
Thank you!
Questions?