Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone cd docker Edit the docker...

28
Kai Tödter

Transcript of Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone cd docker Edit the docker...

Page 1: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

Kai Tödter

Page 2: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

Who am I? Principal Key Expert

at Siemens Building Technologies

Web Technology Fan

Open Source Lover

E-mail: [email protected]

Twitter: twitter.com/kaitoedter

Blog: toedter.com/blog

4/10/2018 2 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License.

Page 3: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

Show Hands!

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 3

Page 4: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

Outline

Build Pipeline with Docker

Setting up

Jenkins

SonarQube

Artifactory

Terraform

AWS Deployment

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 4

Page 5: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

Demo (Local Docker)

https://192.168.99.100

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 5

Page 6: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

How to run the Demo? Install Docker

git clone https://github.com/toedter/cd-pipeline

cd docker

Edit the docker host in cd-pipeline.sh or .bat

When using Windows: Make sure *.sh files and plugins.txt have Unix line endings

Run cd-pipeline.sh or .bat

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 6

Page 7: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

DevOps CAMS

Culture

Automation

Measurement

Sharing

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 7

Page 8: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 8

Automation

Page 9: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

What can be automated Testing

Build Pipelines

Build Infrastructure

Deployments

Monitoring

Configuration

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 9

Page 10: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

Infrastructure as Code

Automation of infrastructure creation

Servers, OS, software, storage, networking, …

Stored in code repositories

Lots of tools available

SaltStack, Puppet, Chef, Terraform, Ansible, …

Infrastructure as Code is the approach “treating infrastructure like software”

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 10

Page 11: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

Creating a Build Pipeline

Jenkins

Continuous Integration

SonarQube

Internal Quality

Artifactory

Binary Artifact Repository

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 11

Page 12: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 12

Page 13: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

Docker

Docker images for

Jenkins, Sonarqube, Artifactory, nginx

Extra container for tools configuration

Docker Compose

for defining and running the multi-container pipeline tools

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 13

Page 14: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

Dockerfile (nginx) FROM nginx COPY nginx-selfsigned.crt /etc/ssl/ COPY nginx-selfsigned.key /etc/ssl/ COPY index.html /usr/share/nginx/html/ COPY *.png /usr/share/nginx/html/ COPY nginx.conf /etc/nginx

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 14

Page 15: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

Docker Compose version: '3.2' networks: cd-tools-network: driver: bridge services: sonarqubedb: image: postgres container_name: sonarqube-db environment: - POSTGRES_USER=sonar - POSTGRES_PASSWORD=sonar volumes: - /volumes/postgres/data:/var/lib/postgresql/data

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 15

Page 16: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

Docker Code Deep Dive

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 16

Page 17: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

Pipeline as Code

Jenkins => Jenkinsfile

TracisCI => .travis.yml

Gitlab CI => .gitlab-ci.yml

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 17

Page 18: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

Jenkinsfile pipeline { agent { docker { image 'java:openjdk-8' args '--network=docker_cd-tools-network' } } stages { stage('build + tests') { steps { sh './gradlew test' } } …

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 18

Page 19: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 19

Terraform

Page 20: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

Terraform

Write

Infrastructure as code

Plan

Preview changes before applying

Create

Always reproducible infrastructure

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 20

Page 21: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

Pipeline, Terraform and AWS

Create Security Groups

Configure SSH keys

Create EC2 instance

Provide scripts that are executed after creation

Output IP address

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 21

Page 22: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

Terraform Code Deep Dive

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 22

Page 23: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

Demo (AWS)

https://<ip address from terraform output>

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 23

Page 24: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

What’ Next? DNS entries for all tools

Let’s Encrypt Certificates

Backup/Restore

Monitoring with Prometheus and Grafana

Support of Nexus and Teamscale

AWS Spot instances

Single & Multi host deployments

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 24

Page 25: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

NextGen Pipeline Demo (AWS)

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 25

Page 26: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 26

Discussion

Page 27: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

Links

Github Repo: https://github.com/toedter/cd-pipeline

Terraform: https://www.terraform.io/

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 27

Page 28: Kai Tödter - JAX DevOpsHow to run the Demo? Install Docker git clone  cd docker Edit the docker host in cd-pipeline.sh or .bat

License This work is licensed under a Creative Commons

Attribution 4.0 International License. See http://creativecommons.org/licenses/by/4.0/

4/10/2018 © Kai Tödter, Licensed under a Creative Commons Attribution 4.0 International License. 28