DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf ·...

20
DOCKER & CONFIGURATIEMANAGEMENT Docker Meetup 12-07-2016

Transcript of DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf ·...

Page 1: DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf · 12/7/2016  · INHOUD • Configuratie-management? • Continuous Integration mogelijkheden

DOCKER &CONFIGURATIEMANAGEMENT

Docker Meetup 12-07-2016

Page 2: DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf · 12/7/2016  · INHOUD • Configuratie-management? • Continuous Integration mogelijkheden

- In dienst sinds 2012 bij Oxilion- Drones- Voetballiefhebber- Verzot op techniek

EVEN VOORSTELLEN RIK

Page 3: DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf · 12/7/2016  · INHOUD • Configuratie-management? • Continuous Integration mogelijkheden

INHOUD

• Configuratie-management?• Continuous Integration mogelijkheden• Gitlab CI• Travis-CI• Voorbeeld op basis van Ansible• Voorbeeld op basis van Puppet

Page 4: DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf · 12/7/2016  · INHOUD • Configuratie-management? • Continuous Integration mogelijkheden

CONFIGURATIEMANAGEMENT?

Configuration management (CM) is a systems engineering process for establishing and maintaining consistency of a product's performance, functional, and physical attributes with its requirements, design, and operational information throughout its life.

Page 5: DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf · 12/7/2016  · INHOUD • Configuratie-management? • Continuous Integration mogelijkheden

CONFIGURATIEMANAGEMENT & OXILION

Bij Oxilion wordt configuratiemanagement toegepast op alle door ons beheerde servers middels Puppet. We gebruiken peer-review en continuous integration om zorg te dragen dat alle wijzigingen juist zijn.

Page 6: DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf · 12/7/2016  · INHOUD • Configuratie-management? • Continuous Integration mogelijkheden
Page 7: DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf · 12/7/2016  · INHOUD • Configuratie-management? • Continuous Integration mogelijkheden

• Bamboo• Drone.io• Gitlab Ci• GoCD• Jenkins.io• Travis-CI

CONTINUOUS INTEGRATION MOGELIJKHEDEN

Page 8: DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf · 12/7/2016  · INHOUD • Configuratie-management? • Continuous Integration mogelijkheden

• Autoscaling • Volledig geïntegreerd met Gitlab• Realtime logging• Geschreven in GO• Continuous Delivery mogelijkheden

Gitlab CI

Page 9: DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf · 12/7/2016  · INHOUD • Configuratie-management? • Continuous Integration mogelijkheden
Page 10: DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf · 12/7/2016  · INHOUD • Configuratie-management? • Continuous Integration mogelijkheden

• Open-source sinds 2011• Gratis voor open-source projecten• Fantastische integratie met Github• Bewaar je configuratie bij je code• Ondersteuning voor diverse talen en frameworks

waaronder Xcode en Android

Travis-CI

Page 11: DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf · 12/7/2016  · INHOUD • Configuratie-management? • Continuous Integration mogelijkheden

Travis-CI

Page 12: DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf · 12/7/2016  · INHOUD • Configuratie-management? • Continuous Integration mogelijkheden
Page 13: DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf · 12/7/2016  · INHOUD • Configuratie-management? • Continuous Integration mogelijkheden

Centos 7: image: docker:latest services: - docker:dind before_script: - docker build --rm=true --file=tests/Dockerfile.centos-7 --tag=centos-7:ansible . script: - container_id=$(mktemp) - docker run --detach ${RUN_OPTS_CENTOS7} centos-7:ansible > "${container_id}" - docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml --syntax-check - docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml - docker exec "$(cat ${container_id})" ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml | grep -q 'changed=0.*failed=0' && (echo "Idempotence test pass" && exit 0) || (echo "Idempotence test fail" && exit 1) - docker stop "$(cat ${container_id})" variables: RUN_OPTS_CENTOS7: --privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro --volume=/tmp/$(mktemp):/run

Gitlab-ci.yml voor Ansible role testing

Page 14: DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf · 12/7/2016  · INHOUD • Configuratie-management? • Continuous Integration mogelijkheden

---sudo: requiredenv: - distribution: ubuntu version: 12.04 init: /sbin/init run_opts: ""services: - dockerbefore_install: - 'sudo docker pull ${distribution}:${version}' - 'sudo docker build --rm=true --file=tests/Dockerfile.${distribution}-${version} --tag=${distribution}-${version}:ansible tests'

Travis-ci.yml voor Ansible role testing (1/2)

Page 15: DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf · 12/7/2016  · INHOUD • Configuratie-management? • Continuous Integration mogelijkheden

script: - container_id=$(mktemp) - 'sudo docker run --detach --volume="${PWD}":/etc/ansible/roles/role_under_test:ro ${run_opts} ${distribution}-${version}:ansible "${init}" > "${container_id}"' - 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml --syntax-check' - 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml' - sudo docker exec "$(cat ${container_id})" ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml | grep -q 'changed=0.*failed=0' && (echo 'Idempotence test: pass' && exit 0) \ || (echo 'Idempotence test: fail' && exit 1) - 'sudo docker stop "$(cat ${container_id})"'notifications: webhooks: https://galaxy.ansible.com/api/v1/notifications/

Travis-ci.yml voor Ansible role testing (2/2)

Page 16: DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf · 12/7/2016  · INHOUD • Configuratie-management? • Continuous Integration mogelijkheden

sudo: falselanguage: rubycache: bundlerscript: "bundle exec rake validate lint spec"matrix: fast_finish: true include: - rvm: 2.1.6 bundler_args: --without system_tests env: PUPPET_GEM_VERSION="~> 4.0" STRICT_VARIABLES="yes" - rvm: 2.1.5 bundler_args: --without system_tests env: PUPPET_GEM_VERSION="~> 3.0" FUTURE_PARSER="yes" - rvm: 2.1.5 bundler_args: --without system_tests env: PUPPET_GEM_VERSION="~> 3.0"notifications: email: false

travis-ci.yml voor Puppet module testing

Page 17: DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf · 12/7/2016  · INHOUD • Configuratie-management? • Continuous Integration mogelijkheden

Ruby2: image: "centos:7" script:

- yum -y install ruby-gem ruby-devel gcc libxslt-devel libxml2-devel patch make git g++ gcc-c++

- gem install bundler - bundle update - export LANG=en_US.UTF-8 - export LANGUAGE=en_US.UTF-8 - export LC_ALL=en_US.UTF-8 - bundle exec rake

Gitlab-ci.yml voor Puppet module testing

Page 18: DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf · 12/7/2016  · INHOUD • Configuratie-management? • Continuous Integration mogelijkheden
Page 19: DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf · 12/7/2016  · INHOUD • Configuratie-management? • Continuous Integration mogelijkheden
Page 20: DOCKER & CONFIGURATIEMANAGEMENTfiles.meetup.com/14564952/Oxilion-Docker-meetup-12-07-2016.pdf · 12/7/2016  · INHOUD • Configuratie-management? • Continuous Integration mogelijkheden