10. CI / CD Pipeline
Check-In
GitHub
Mercurial
Build
MSBuild
Unit tests
NUnit
Integratio
n tests
UI Testing
Prod
Deployment
Managed by Jenkins
QA
Deployment
21. Hiera
● Developed by Puppet labs, there for fully integrated with
puppet
● Key value store
● Configuration file per environment on the same puppet
master
22. ETCD
acl to the office acl to the office
Azure North Europe
server 1 server 2
APP1
DLL
APP2
DLL
APP3
DLL
CCM 2
UI -
Admin
server 3 server 4
CCM 4
Azure West Europe
ILB LBS ILB LBS
CCM 3CCM 1
24. PAAS in Azure
● Cloud service
● Slots
● Uploading Packages
● Integration with github
(Git Hook)
25. IAAS on Azure
● Jenkins agent
● Puppet master
● Mcollective client
● Mcollective server and puppet agent on all servers.
26. Summaries
● Jenkins - Main CI / CD tool
● Puppet - Provisioning and deployment
● Mcollective - Orchestrate
● PowerShell Azure SDK - For deploying Web/worker
roles
● This is all just tools - DevOps is a lot more
27. Wish List
● Automate the creation of new Jobs and Flows in
Jenkins.
● More self service
So Now let’s talk about CI / CD and how it works on Microsoft based environment.
CI / CD ingredient
Now we know what is CI / CD but how do we implement it on our company?
First, what are the challenges we are facing with?
So, can we do it on our mostly microsoft based environment?
Yes we can
Despite most tools were designed first to work on unix based servers.
The Jenkins agent connected to the Jenkins master in our local DC
designated puppet master and Mcollective
The Jenkins agent connected to the Jenkins master in our local DC
designated puppet master and Mcollective
The Jenkins agent connected to the Jenkins master in our local DC
designated puppet master and Mcollective
Mcollective server and puppet agent on each vm, same as on our on-premise.
Our Mcollective client, the component which send the command to the servers, installed on a Ubuntu server.
In that server we run a shell script that run the nco command that trigger puppet the run on the server we want to
in accordance with the environment we want to deploy into.
Developed by Puppet labs, there for fully integrated with puppet
Key value store
Configuration file per environment on the same puppet master
We use etcd with inhouse development of admin UI for it. We call it CCM (Central Configuration Management).
All applications are taking their configuration from it. It’s simplify when wanting to change configuration without logging to the server itself were the application is installed or when we use puppet for the deployment and hiera for the key-value it saves us the necessary to run full deployment.
We can’t talk about microsoft / windows without talking on azure.
Few key features in Azure makes it very easy.
Cloud services
Slots
Uploading packages
GitHook
The Jenkins agent connected to the Jenkins master in our local DC
designated puppet master and Mcollective
Mcollective server and puppet agent on each vm, same as on our on-premise.
The Jenkins agent connected to the Jenkins master in our local DC
designated puppet master and Mcollective
Mcollective server and puppet agent on each vm, same as on our on-premise.
The Jenkins agent connected to the Jenkins master in our local DC
designated puppet master and Mcollective
Mcollective server and puppet agent on each vm, same as on our on-premise.