A talk dedicated to improving the quality of infrastructure code using free open source software. We used to say "if it moves, lock it down in version control" and then the concept of a Continuous Delivery pipeline came along and the advice progressed to "if it moves, lock it down in version control and build a Continuous Delivery pipeline to test and release every change continuously". This advice is still more commonly followed in application code than infrastructure and platform code. I will talk about how we have seasoned this dogfood by making CD of infrastructure code easier. The solution “ADOP” is free and open source and currently makes building a pipeline for a Chef Cookbook, Ansible Playbook or Docker image almost trivial. I will describe and demo the solution including how to adopt it, where I think it is going next, and how valuable we have found it.
http://cfgmgmtcamp.eu/schedule/testing/mark-rendell.html
3. AWS region
Availability Zone
AWS cloud
AWS Cloud
Internet
Docker Machine
Docker
Compose Selenium
Spin up an ADOP (I’ll come back to why later)
$ curl Jenkins-api
quick-start.sh
@markosrendell
4. Mark (aka Markos) Rendell
Associate Director at Accenture
DevOps Shared Service Lead
@markosrendell
mark.rendell@accenture.com
@markosrendell
kramos
http://markosrendell.wordpress.com
5. Diversion into Inclusion and Diversity
1. It should be down to all of us to champion this at every opportunity.
2. We all suffer from Unconscious Bias and even if this has just a 0.1% on the
opportunities that we give others, cumulatively this stacks up. (Take a test:
https://implicit.harvard.edu/implicit/selectatest.html)
3. Mirco aggression is a term for behaviour that intimidates others and make it harder
for them to perform a their best in the working environment. Be vigilant and call it
out. (Real examples here: http://www.microaggressions.com/)
Other links:
• https://www.fastcompany.com/3044738/hit-the-ground-running/7-simple-methods-to-fight-
against-your-unconscious-biases
• https://codeascraft.com/2016/10/19/being-an-effective-ally-to-women-and-non-binary-people/
• http://weprinciples.org/files/attachments/WHITE_PAPER_Nudging_the_Unconscious_Mind_N
ielsen_&_Kepinski_Oct_2014.pdf
• https://managingbias.fb.com/
• http://www.cmu.edu/news/stories/archives/2015/june/bias-blind-spot.html
@markosrendell
10. Orchestrate the automation for integrity
https://unsplash.com/photos/yBzrPGLjMQw
“the things”files that make “the things”
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and
Perf Test
Deploy Prod Test
11. Tests configuration
Build tools configuration
Deployment software configuration
Middleware configuration
Operating System configuration
Virtual infrastructure configuration
Hardware configuration
Business
Application
Business
Application
Business
Application
Business
Application
Business
Application
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and
Perf Test
Continuous Delivery Pipeline, yeah?
Committer: jdoe
Story:2
Commit ID: 23
Committer: jdoe
Story:54
Commit ID: 23
Committer: jdoe
Story:6
Commit ID: 73
13. Tests configuration
Build tools configuration
Deployment software configuration
Middleware configuration
Operating System configuration
Virtual infrastructure configuration
Hardware configuration
Business
Application
Business
Application
Business
Application
Business
Application
Business
Application
If it moves, give it a pipeline “CDDD”
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and Perf
Test
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and Perf
Test
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and Perf
Test
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and Perf
Test
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and Perf
Test
14. Tests configuration
Build tools configuration
Deployment software configuration
Middleware configuration
Operating System configuration
Virtual infrastructure configuration
Hardware configuration
Business
Application
Business
Application
Business
Application
Business
Application
Business
Application
Pipelines for tools
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and Perf
Test
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and Perf
Test
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and Perf
Test
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and Perf
Test
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and Perf
Test
15. Tests configuration
Build tools configuration
Deployment software configuration
Middleware configuration
Operating System configuration
Virtual infrastructure configuration
Hardware configuration
Business
Application
Business
Application
Business
Application
Business
Application
Business
Application
Pipelines for Infra Code
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and Perf
Test
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and Perf
Test
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and Perf
Test
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and Perf
Test
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and Perf
Test
16. Website
Version 12
Order Service
Version 1.0.3.15
Email Service
Version 1.0.0.9
Payment
Service
Version 1.0.0.3
Deployment
tools
Version 47
Platform
Version 83
Cloud Foundrv
Version 23
MySQL
Version 12
CAssandra
Version 12
RabbotMQ
Version 24
Infra-structure
Version 28
Whole
Solution
Version 46
17. Website
Version 12
Order
Service
Version 1.0.3.15
Email
Service
Version 1.0.0.9
Payment
Service
Version 1.0.0.3
Deployment
tools
Version 47
Platform
Version 83
Cloud
Foundrv
Version 23
MySQL
Version 12
CAssandra
Version 12
RabbotMQ
Version 24
Infra-structure
Version 28
Whole
Solution
Version 46
NONPRODDATACENTREPLATFORM
PROD DATA CENTRE
Check in
Check in
Check in
Check in
Check in
Check in
Check in
Check in
Check in
Compile
and package
Static Code
Analysis
Unit Tests
Run Functional
Tests
Run Security Tests PT env deploy Run Tech Tests
CT env
deploy
Production deploy
Compile
and package
Static Code
Analysis
Unit Tests
Run Functional
Tests
Run Security Tests PT env deploy Run Tech Tests
CT env
deploy
Production deploy
Compile
and package
Static Code
Analysis
Unit Tests
Run Functional
Tests
Run Security Tests PT env deploy Run Tech Tests
CT env
deploy
Production deploy
Compile
and package
Static Code
Analysis
Unit Tests
Run Functional
Tests
Run Security Tests PT env deploy Run Tech Tests
CT env
deploy
Production deploy
Compile
and package
Unit Tests
Platform env
deploy
Monitoring tests
Compile
and package
Unit Tests
Platform env
deploy
Monitoring tests
Compile
and package
Unit Tests
Platform env
deploy
Monitoring tests
Compile
and package
Unit Tests
Platform env
deploy
Monitoring tests
Compile
and package
Unit Tests
Platform env
deploy
Monitoring tests
Website
Order
Service
Email
Service
Payment
Service
Cloud
Foundrv
MySQLCassandraRabbitMQ
Infra-
structure
Platform
18. NONPRODDATACENTREPLATFORM
PROD DATA CENTRE
Check in
Check in
Check in
Check in
Check in
Check in
Check in
Check in
Check in
Compile
and package
Static Code
Analysis
Unit Tests
Run Functional
Tests
Run Security Tests PT env deploy Run Tech Tests
CT env
deploy
Production deploy
Compile
and package
Static Code
Analysis
Unit Tests
Run Functional
Tests
Run Security Tests PT env deploy Run Tech Tests
CT env
deploy
Production deploy
Compile
and package
Static Code
Analysis
Unit Tests
Run Functional
Tests
Run Security Tests PT env deploy Run Tech Tests
CT env
deploy
Production deploy
Compile
and package
Static Code
Analysis
Unit Tests
Run Functional
Tests
Run Security Tests PT env deploy Run Tech Tests
CT env
deploy
Production deploy
Compile
and package
Unit Tests
Platform env
deploy
Monitoring tests
Compile
and package
Unit Tests
Platform env
deploy
Monitoring tests
Compile
and package
Unit Tests
Platform env
deploy
Monitoring tests
Compile
and package
Unit Tests
Platform env
deploy
Monitoring tests
Compile
and package
Unit Tests
Platform env
deploy
Monitoring tests
Website
Order
Service
Email
Service
Payment
Service
Cloud
Foundrv
MySQLCassandraRabbitMQ
Infra-
structure
Platform
Website
Version12
Order
Service
Version1.0.3.15
Email
Service
Version1.0.0.9
Payment
Service
Version1.0.0.3
Deployment
tools
Version47
Platform
Version83
Cloud
Foundrv
Version23
MySQL
Version12
CAssandra
Version12
RabbotMQ
Version24
Infra-structure
Version28
Whole
Solution
Version46
19. NONPRODDATACENTREPLATFORM
PROD DATA CENTRE
Check in
Check in
Check in
Check in
Check in
Check in
Check in
Check in
Check in
Compile
and package
Static Code
Analysis
Unit Tests
Run Functional
Tests
Run Security Tests PT env deploy Run Tech Tests
CT env
deploy
Production deploy
Compile
and package
Static Code
Analysis
Unit Tests
Run Functional
Tests
Run Security Tests PT env deploy Run Tech Tests
CT env
deploy
Production deploy
Compile
and package
Static Code
Analysis
Unit Tests
Run Functional
Tests
Run Security Tests PT env deploy Run Tech Tests
CT env
deploy
Production deploy
Compile
and package
Static Code
Analysis
Unit Tests
Run Functional
Tests
Run Security Tests PT env deploy Run Tech Tests
CT env
deploy
Production deploy
Compile
and package
Unit Tests
Platform env
deploy
Monitoring tests
Compile
and package
Unit Tests
Platform env
deploy
Monitoring tests
Compile
and package
Unit Tests
Platform env
deploy
Monitoring tests
Compile
and package
Unit Tests
Platform env
deploy
Monitoring tests
Compile
and package
Unit Tests
Platform env
deploy
Monitoring tests
Website
Order
Service
Email
Service
Payment
Service
Cloud
Foundrv
MySQLCassandraRabbitMQ
Infra-
structure
Platform
Website
Version12
Order
Service
Version1.0.3.15
Email
Service
Version1.0.0.9
Payment
Service
Version1.0.0.3
Deployment
tools
Version47
Platform
Version83
Cloud
Foundrv
Version23
MySQL
Version12
CAssandra
Version12
RabbotMQ
Version24
Infra-structure
Version28
Whole
Solution
Version46
20. NONPRODDATACENTREPLATFORM
PROD DATA CENTRE
Check in
Check in
Check in
Check in
Check in
Check in
Check in
Check in
Check in
Compile
and package
Static Code
Analysis
Unit Tests
Run Functional
Tests
Run Security Tests PT env deploy Run Tech Tests
CT env
deploy
Production deploy
Compile
and package
Static Code
Analysis
Unit Tests
Run Functional
Tests
Run Security Tests PT env deploy Run Tech Tests
CT env
deploy
Production deploy
Compile
and package
Static Code
Analysis
Unit Tests
Run Functional
Tests
Run Security Tests PT env deploy Run Tech Tests
CT env
deploy
Production deploy
Compile
and package
Static Code
Analysis
Unit Tests
Run Functional
Tests
Run Security Tests PT env deploy Run Tech Tests
CT env
deploy
Production deploy
Compile
and package
Unit Tests
Platform env
deploy
Monitoring tests
Compile
and package
Unit Tests
Platform env
deploy
Monitoring tests
Compile
and package
Unit Tests
Platform env
deploy
Monitoring tests
Compile
and package
Unit Tests
Platform env
deploy
Monitoring tests
Compile
and package
Unit Tests
Platform env
deploy
Monitoring tests
Website
Order
Service
Email
Service
Payment
Service
Cloud
Foundrv
MySQLCassandraRabbitMQ
Infra-
structure
Platform
Website
Version12
Order
Service
Version1.0.3.15
Email
Service
Version1.0.0.9
Payment
Service
Version1.0.0.3
Deployment
tools
Version47
Platform
Version83
Cloud
Foundrv
Version23
MySQL
Version12
CAssandra
Version12
RabbotMQ
Version24
Infra-structure
Version28
Whole
Solution
Version46
21. Anatomy of a Cartridge – 3 files plus a readme
$ tree
.
|-- README.md
`-- src
`-- urls.txt “1”
|-- jenkins
| `-- jobs
| |-- dsl
| | |-- platform_provisionin_jobsg.groovy “2”
| | `-- application_jobs.groovy “3”
@markosrendell
22. AWS region
Availability Zone
AWS cloud
AWS Cloud
Internet
On Premise
Docker Machine
Docker
Compose Selenium
ADOP Platform
Extension
Cartridges
ADOP Cartridge
ADOP: platform for sharing and reusing automation
@markosrendell
23. AWS region
Availability Zone
AWS cloud
AWS Cloud
Internet
Docker Machine
Docker
Compose Selenium
ADOP Platform
Extension
Cartridges
ADOP Cartridge
We’re going to look at…
@markosrendell
24. Demo
1. Spin up the platform
2. Load the Docker cartridge and play with it
3. Load the Chef cartridge and play with it
4. Load the Ansible cartridge and play with it
25. AWS region
Availability Zone
AWS cloud
AWS Cloud
Internet
Docker Machine
Docker
Compose Selenium
ADOP Platform
Extension
Cartridges
ADOP Cartridge
What we looked at
@markosrendell
26. Tests configuration
Build tools configuration
Deployment software configuration
Middleware configuration
Operating System configuration
Virtual infrastructure configuration
Hardware configuration
Business
Application
Business
Application
Business
Application
Business
Application
Business
Application
Sharing the “full stack”
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and Perf
Test
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and Perf
Test
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and Perf
Test
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and Perf
Test
Compile Code Analysis
Committer: jdoe
Story:25
Commit ID: 113 Unit Test Deploy PPE Functional Test
Security and Perf
Test