Kolmo. Making automation & configuration easier. bert hubert. -

Similar documents
4.1 Review - the DPLL procedure

Hello, and welcome to another episode of. Getting the Most Out of IBM U2. This is Kenny Brunel, and

Lab 08. Command Line and Git

How to set up SQL Source Control The short guide for evaluators

CSE 374 Programming Concepts & Tools. Hal Perkins Winter 2012 Lecture 16 Version control and svn

Frequently Asked Questions

Media-Ready Network Transcript

For those who might be worried about the down time during Lync Mobility deployment, No there is no down time required

Sunil Shah SECURE, FLEXIBLE CONTINUOUS DELIVERY PIPELINES WITH GITLAB AND DC/OS Mesosphere, Inc. All Rights Reserved.

Title: Episode 11 - Walking through the Rapid Business Warehouse at TOMS Shoes (Duration: 18:10)

Advanced Google Local Maps Ranking Strategies for Local SEO Agencies

Windows. Everywhere else

Performance Best Practices Paper for IBM Tivoli Directory Integrator v6.1 and v6.1.1

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)

Agenda. - Final Project Info. - All things Git. - Make sure to come to lab for Python next week

Today: VM wrap-up Select (if time) Course wrap-up Final Evaluations

Who am I? I m a python developer who has been working on OpenStack since I currently work for Aptira, who do OpenStack, SDN, and orchestration

Quickly Repair the Most Common Problems that Prevent Windows XP from Starting Up

2 Initialize a git repository on your machine, add a README file, commit and push

Mobile Computing Professor Pushpedra Singh Indraprasth Institute of Information Technology Delhi Andriod Development Lecture 09

There And Back Again

Abstractions and Reality

Clickbank Domination Presents. A case study by Devin Zander. A look into how absolutely easy internet marketing is. Money Mindset Page 1

CTI-TC Working Session

ò Server can crash or be disconnected ò Client can crash or be disconnected ò How to coordinate multiple clients accessing same file?

Apache Ignite Best Practices: Cluster Topology Management and Data Replication

Building a Django Twilio Programmable Chat Application

<Insert Picture Here> Looking at Performance - What s new in MySQL Workbench 6.2

Using GitHub to Share with SparkFun a

Campus Automation. Joe Neville Aruba Consulting System Engineer

Lesson 9 Transcript: Backup and Recovery

NFS. Don Porter CSE 506

XP: Backup Your Important Files for Safety

Chapter 3. Revision Control

Laboratorio di Programmazione. Prof. Marco Bertini

Brief overview of the topic and myself the 7 VCS used so far (different one each time), still many unused Acts as a time-machine, and almost as

24 Writing Your First Script

Versioned APIs with Phoenix. Elvio Vicosa

The SD-WAN security guide

Privacy and Security in Online Social Networks Department of Computer Science and Engineering Indian Institute of Technology, Madras

FileWave 10 Webinar Q&A

Git Workbook. Self-Study Guide to Git. Lorna Mitchell. This book is for sale at

These are notes for the third lecture; if statements and loops.

2008 WebSphere System z Podcasts Did you say Mainframe?

Introduction to Revision Control

Best practices to achieve optimal memory allocation and remote desktop user experience

What Are CSS and DHTML?

Web Hosting. Important features to consider

ACE Operation Manual

GETTING STARTED WITH. Michael Lessard Senior Solutions Architect June 2017

Project Collaboration

How Rust views tradeoffs. Steve Klabnik

Pragmatic Guide to Git

US FOODS ONLINE 2015: Overview

GIT : BEST PRACTICES GUIDE BY ERIC PIDOUX DOWNLOAD EBOOK : GIT : BEST PRACTICES GUIDE BY ERIC PIDOUX PDF

Submitting your Work using GIT

Keeping Sane - Managing your

Persistence & State. SWE 432, Fall 2016 Design and Implementation of Software for the Web

Contents. Page 3: Uploading Contacts. Page 5: Sending a Message. Page 7: Analysing your Message. Page 9: Unsubscribe a Contact. Page 11: Add a Forward

Interview Data: Jim Edwards

Revision control. INF5750/ Lecture 2 (Part I)

The next generation of Google APIs


A function is a named piece of code that performs a specific task. Sometimes functions are called methods, procedures, or subroutines (like in LC-3).

Life Without DevStack: OpenStack Development With OSA. Miguel

CIO 24/7 Podcast: Tapping into Accenture s rich content with a new search capability

Distack. A Framework for Anomaly-based Large-scale Attack Detection. Thomas Gamer, Christoph P. Mayer, Martina Zitterbart

Optimising large dynamic code bases.

Software Development I

Upgrading Your Geant4 Release

Getting Started. Excerpted from Hello World! Computer Programming for Kids and Other Beginners

Git Resolve Conflict Using Mine Command Line

FIREFOX REVIEWER S GUIDE. Contact us:

It starts like this...

Implement an ADT while using Subversion

CTI-TC Weekly Working Sessions

Troubleshooting An Embedded Sametime Install by Julian Robichaux, panagenda originally published on socialbizug.org, November 2013

DOWNLOAD PDF REDIRECT FOR WINDOWS 7

A NETWORK PRIMER. An introduction to some fundamental networking concepts and the benefits of using LANtastic.

Debugging Your Python Code: For Dummies

3D Printing. Rob Miles. Department of Computer Science University of Hull

Lecture 34 SDLC Phases and UML Diagrams

Transitioning From SSIS to Azure Data Factory. Meagan Longoria, Solution Architect, BlueGranite

Introduction to Scientific Computing

Exploring UNIX: Session 3

Page 1

web.py Tutorial Tom Kelliher, CS 317 This tutorial is the tutorial from the web.py web site, with a few revisions for our local environment.

21 Lessons Learned From Sending Over 110,000 s

describe the functions of Windows Communication Foundation describe the features of the Windows Workflow Foundation solution

Human-Computer Interaction Design

Outlook is easier to use than you might think; it also does a lot more than. Fundamental Features: How Did You Ever Do without Outlook?

Welcome to this IBM podcast, Realizing More. Value from Your IMS Compiler Upgrade. I'm Kimberly Gist

DarkRift Server Plugin Tutorial

Distributed Systems. 27. Engineering Distributed Systems. Paul Krzyzanowski. Rutgers University. Fall 2018

Git GitHub & secrets

Setting up your new login

Welcome to the world of .

Android Manual Google Sync Contacts Not Working One Way

Lesson 14 Transcript: Triggers

(Refer Slide Time: 1:26)

Transcription:

Kolmo Making automation & configuration easier bert hubert https://kolmo.org/ - http://tinyurl.org/kolmopreso @PowerDNS_Bert

128Kbit/s, 500ms latency. Also, Biddinghuizen

You can t download the configuration?!?! You can t even commit the configuration?!?!

Never underestimate the bandwidth of an armoured helicopter in Bosnia - no one ever

Configuration Make runtime/boot time changes to: iptables ifconfig txqueuelen /proc/sys/ bridge (brctl) Actual QoS (tc, htb, cbq) ALL OF THESE could not be serialized Pretty output is available - for humans Most of them to this day can t be saved/serialized Exception: iptables-save / iptables-restore

Central problem: hard to figure out server/system state

2000 solution: generation /etc/network/i nterfaces ifconfig DO NOT TOUCH!! route DO NOT TOUCH!! dhcp-client DO NOT TOUCH!!

2014 solution: generation DO NOT TOUCH!! Play book /etc/network/interfaces ifconfig DO NOT TOUCH!! route DO NOT TOUCH!! dhcp-client DO NOT TOUCH!!

Automation workflow Create playbook Run playbook on servers Modify playbook bit in response to new needs Deploy to servers Happiness Lies!

Actual automation workflow Create playbook, run playbook on server Server does nothing like you want it to Inspect server Find Ansible lineinfile triggers on a comment block Change playbook, rerun Find further problems, change playbook, rerun Webserver does not do what you want, work on server to figure out how to get it to do what you want Attempt to put those changes in playbook, finally it works Rerun playbook against fresh server: nothing works

Automation dream workflow Deploy fresh server Configure everything, on that server, until it is exactly how you like it Download server state Insert state in playbook Happiness

Why it can t be done A typical process if configured using several configuration files Some of them under distribution/operating system control Some of them explicitly meant for you to change them Include.d directories, sites-enabled, sites-available Some of them are TEH HUGE and actually contain large parts of the software logic (Exim) There is no easy way to extract your changes from this set of configuration files There are only very painful ways to insert your changes into existing configuration files (sometimes there is an ansible module that helps)

Secret 2017 solution We re doing automation! We can compose our infrastructure at will! Why are you stuck on CentOS 6.low? Um, well, our playbooks simply copy lots of files from a 6.0 installation to the target And those files create errors on newer releases Not actually configuring services, only distributing large amounts of configuration Yeah, you are doing automation

What you would want addsite( http://ds9a.nl/, /var/www/ds9a.nl)=ds9a ds9a.setbool( redirect-to-https, true) API (Stored) API (Runtime) getminimalconfig() Committed Configuration Process commitconfig() Runtime Configuration

Programmatic access to configuration Introducing: Kolmo Inspect, retrieve, modify & deploy configuration safely Read/Write Self-documenting Client-side, offline, validity checking Meant to ease automation Library & tools to support all kinds of systems/services

Configuration Schema File: Defaults, constraints, prototypes Stored Configuration File (Lua, JSON) Libkolmo Your Process (WS) Kolmo Thread (web) kolctl Kolmo Thread (web)

The Schema: Welcome to the default free zone Defines all configuration settings Type (YES IT IS TYPESAFE) Defaults (ALL defaults) Mandatory / optional DESCRIPTION UNITS CONSTRAINTS If nothing else, the configuration schema is GREAT documentation of your configuration file and all defaults! The problem with documentation is that the compiler does not read it

Ws : the Kolmo Hello, World application (that powers https://kolmo.org/)

Runtime & Constraints

Dealing with new versions New versions of software bring new configuration settings And worse, changed defaults of old configuration settings And often, this change is an improvement Can also simply be incompatible Kolmo procedure: kolctl full-config > full.json of version 1.0 software Next up: kolctl --schema version2-schema.lua --config full.json minimal-config Suddenly, your old defaults stick out as explicit configuration items in new version If your old configuration conflicts with new schema, will tell you where

Some usecases Webserver is misbehaving all of a sudden Run kolctl delta-config on running process: gives all runtime changes versus startup configuration Discover someone helpfully changed the certificate file to the wrong path, at runtime Webserver is misbehaving all of a sudden delta-config shows nothing interesting ls -l ws.json* however shows a new configuration was created 5 minutes ago diff -ubb ws.json.20170908-1245 ws.json shows client-timeout was set to 1 millisecond By operator who had ignored the helpful units output in kolctl ls

Relation to Automation For Kolmo enabled services 1. Instead of hacks to manipulate configuration file, execute kolctl commands on server 2. Alternatively, deploy the minimal-config you got from your Kolmo-enabled service when it was Just Right (but mind the migration slide)

FAQ Q: Yet another configuration file parser! A: It is nothing of the sort. World does not need more configuration file parsers. World needs configuration files with schemas, versioning, APIs for online and offline use Q: My playbooks already do this A: Likely. But I want to make it a lot easier for you so you don t have to depend on third party modules Q: Windows did this already! A: True - and they let it die: https://en.wikipedia.org/wiki/windows_management_instrumentation

Status Working prototype, running code! https://kolmo.org/ & https://github.com/ahupowerdns/kolmo Tremendous fun to work with, concept works for me as a programmer (I m not ever writing or even USING a configuration file parser ever again) Quality of code: this segmentation fault is your hint Only available for C++ 2014 GOAL: Get everyone hot for this concept

Now what? Please join in! If you are a developer: share your thoughts on the API As an automation person: how does this fit in your life? Has it been done? As software users: get annoyed that all your favourite servers do not come with a configuration schema file! You ll miss wctl ls from today onwards!

Kolmo Making automation & configuration easier bert hubert https://kolmo.org/ @PowerDNS_Bert