Lightweight inventory management with Pallet Jack

Slides:



Advertisements
Similar presentations
VMWare to Hyper-V FOR SERVER What we looked at before migration  Performance – Hyper-V performs at near native speeds.  OS Compatibility – Hyper-V.
Advertisements

Privileged Account Management Jason Fehrenbach, Product Manager.
SOA, EDA, ECM and more Discover a pragmatic architecture for an intelligent enterprise, to maximize impact on the business Patrice Bertrand Software Architect.
Configurations Management System Chris Boyd.  Time consuming task of provisioning a number of systems with STIG compliance  Managing a number of systems.
A centralized system.  Active Directory is Microsoft's trademarked directory service, an integral part of the Windows architecture. Like other directory.
NET+OS Bootloader Overview Requirements How to Build How to Customize Changes to Applications Configuration Settings.
CONTINUOUS INTEGRATION, DELIVERY & DEPLOYMENT ONE CLICK DELIVERY.
Microsoft Windows 2003 Server. Client/Server Environment Many client computers connect to a server.
Getting to Push Button Deploys Moovweb January 19, 2012.
Membership in ASP.Net...if only Presented by: Patrick Hynds President, CriticalSites Microsoft Regional Director.
SCRAM Software Configuration, Release And Management Background SCRAM has been developed to enable large, geographically dispersed and autonomous groups.
Background The Encyclopedio of Life (EOL) is an ROR open source project to create a free, online reference source and database for every one of the 1.8.
Managing Windows Server 2008 R2 Lesson 2. Objectives.
Microsoft Active Directory(AD) A presentation by Robert, Jasmine, Val and Scott IMT546 December 11, 2004.
AI project components: Facter and Hiera
Model a Container Runtime environment on Your Mac with VMware AppCatalyst VMworld Fabio Rapposelli
XML in Development of Distributed Systems Tooling Programming Runtime.
© 2008 IBM Corporation ® IBM Cognos Business Viewpoint Miguel Garcia - Solutions Architect.
The Art and Zen of Managing Nagios with Puppet Michael Merideth - VictorOps
Version Control. How do you share code? Discussion.
SWEN 302: AGILE METHODS Roma Klapaukh & Alex Potanin.
Configuration Management with Cobbler and Puppet Kashif Mohammad University of Oxford.
1 Chapter Overview Introducing Replication Planning for Replication Implementing Replication Monitoring and Administering Replication.
Database Design and Management CPTG /23/2015Chapter 12 of 38 Functions of a Database Store data Store data School: student records, class schedules,
ArcGIS Server for Administrators
6 th Annual Focus Users’ Conference 6 th Annual Focus Users’ Conference Import Testing Data Presented by: Adrian Ruiz Presented by: Adrian Ruiz.
Google Refine for Data Quality / Integrity. Context BioVeL Data Refinement Workflow Synonym Expansion / Occurrence Retrieval Data Selection Data Quality.
Wordpress with Mina Automated Deployment Solution Jonathan Gravato DIG 4104c.
HELP COMPONEN SYSTEM WinCC CERN SUBJECTS - GENERATE HTML COMPONENT FILES - FULL COMPONENTS FRAMEWORK HELP - CENTRAL HELP REPOSITORY - ACCESIBLE.
Intro to Git presented by Brian K. Vagnini Hosted by.
The IPSO Factor Enriching portfolios with market data.
Linux Operations and Administration
Selenium server By, Kartikeya Rastogi Mayur Sapre Mosheca. R
COMP1321 Digital Infrastructure Richard Henson March 2016.
DECTRIS Ltd Baden-Daettwil Switzerland Continuous Integration and Automatic Testing for the FLUKA release using Jenkins (and Docker)
April 1st, 2009 Cobbler Provisioning Made Easy Jasper Capel.
WebYaST Remote Web Based System Management
Version 0.1 Draft – For Review Murali Mohan Murthy
Patrick Desbrow, CIO & VP of Engineering October 29, 2014
Data Virtualization Demoette… ODBC Clients
Agenda:- DevOps Tools Chef Jenkins Puppet Apache Ant Apache Maven Logstash Docker New Relic Gradle Git.
Nithyamoorthy S Core Mind Technologies
L – Modeling and Simulating Social Systems with MATLAB
Proposed IT Infrastructure for TOP OS project
Efficient development and deployment of Hydra projects using Vagrant
File System Implementation
Node.js Express Web Applications
Version Control.
LOCO Extract – Transform - Load
Self Healing and Dynamic Construction Framework:
L – Modeling and Simulating Social Systems with MATLAB
Logo here Module 3 Microsoft Azure Web App. Logo here Module Overview Introduction to App Service Overview of Web Apps Hosting Web Applications in Azure.
MCSA VCE
SUBMITTED BY: NAIMISHYA ATRI(7TH SEM) IT BRANCH
Andrew Pruski SQL Server & Containers
Basic Web Scraping with Python
DDPS in Action: Session 11 Hydration
DHCP, DNS, Client Connection, Assignment 1 1.3
Tech Inside Extended Document Management System (EDMS)
The Re3gistry software and the INSPIRE Registry
Media365 Portal by Ctrl365 is Powered by Azure and Enables Easy and Seamless Dissemination of Video for Enhanced B2C and B2B Communication MICROSOFT AZURE.
Presented By - Avinash Pawar
DAT381 Team Development with SQL Server 2005
Metadata The metadata contains
Windows Active Directory Environment
Business Add-Ins.
Patrick Cozzi University of Pennsylvania CIS Fall 2012
Module 1: Overview of Systems Management Server 2003
Mark Quirk Head of Technology Developer & Platform Group
Profit Tools IT Infrastructure Improvement
Presentation transcript:

Lightweight inventory management with Pallet Jack Linux.conf.au 2017 sysadmin miniconf Karl-Johan Karlsson

Problem statement Inventory management for system administrators Store system information IP addresses, locations, serial numbers, … Generate service configuration DHCP, DNS, configuration management, … Search for static information Location, service contracts, ...

Goals Single source of truth for system administration Version controlled together with configuration management Easily interoperable Reasonably scaleable Decomposable database Single source: Easily extensible data model to store all kinds of data. Don't repeat yourself. Version control: Need to be able to feature freeze individual branches and revert to previous state Interoperable: Export data to create service configuration in many different forms Reasonable: 1k machines, 10k objects Decomposable: Vertical slice for delivery to customer, horizontal slice for separation of responsibilities

Data store “Warehouse” with “pallets” (objects) Objects are directories Keys and values stored in YAML files Inheritance by symlinks and directory hierarchy system ├── testvm │ ├── architecture.yaml │ ├── domain -> ../../domain/example.com/ │ ├── machine -> ../../machine/testvm/ │ ├── netinstall -> ../../netinstall/CentOS-7.2.1511-x86_64/Kickstart_vda/ │ └── role.yaml Database is not very big (~10k objects), so a file system has sufficient performance File system and Git gives us lots of tools: Store files in the same Git repository as configuration management state, run export at Git push Infrastructure as code, with code review! Vertical decomposition: traverse the graph starting from affected systems, keep everything you visit, throw away the rest Horizontal decomposition: logically separate information in separate files, merged by the system at load time system: role: - kvm-server - ssh-server

Transformations Synthesize new values from existing information Value substitution and regular expressions - net.dns.fqdn:   - synthesize: "#[net.dns.name].#[net.dns.domain]" - host.pxelinux.kernel:   - synthesize: "/boot/#[system.os]/vmlinuz" Don't repeat yourself! Regular expressions to read parts of values.

Database tools create_system --warehouse examples/warehouse/ --system vmhost1 --domain example.com --os CentOS-7.2.1511-x86_64 dump_pallet --position --warehouse examples/warehouse/ --type system vmhost1 [...] system: os: CentOS-7.2.1511-x86_64  # transforms.yaml                               # (line 175, column 15) role: - kvm-server  # system/vmhost1/role.yaml (line 3, column 4) - ssh-server  # system/vmhost1/role.yaml (line 4, column 0) architecture: x86_64  # system/vmhost1/architecture.yaml                         # (line 2, column 0) name: vmhost1  # transforms.yaml (line 165, column 15) [...] create_*: Minimal helper wrappers around mkdir and friends for quickly creating empty template objects. dump_pallet: Debugging tool, dumps all data for an object, optionally including its source, taking into account inheritance and transformations.

Data export tools palletjack2kea --warehouse examples/warehouse/ --service example-com ## Automatically generated by palletjack2kea from ## Repository: /home/creideiki/src/palletjack/ ## Branch: refs/heads/master [...] "subnet4": [ { "subnet": "192.168.0.0/24", "reservations": [ "hw-address": "14:18:77:ab:cd:ef", "ip-address": "192.168.0.1", "hostname": "vmhost1.example.com", Generates configuration in whatever format another service needs. Intended to be run automatically as Git post-receive hooks. Our setup generates configuration files into the Salt state repository, then Salt distributes them if they have changed.

Current integrations Configuration management: Salt System installation: PXELINUX and Kickstart DHCP server: Kea Authoritative DNS: Knot Recursing DNS: Unbound (Directory service: FreeIPA) FreeIPA integration under development. We have only implemented what we need right now. Integrating with other services is easy using the API.

API > require 'palletjack' > jack = PalletJack.load('examples/warehouse') > vmhost1 = jack.fetch(kind:'system', name:'vmhost1') > vmhost1['system.role'] ["kvm-server", "ssh-server"] > jack.each(kind:'system') { |s| puts s['system.name'] } vmhost1 testvm Ruby library. Example run in IRB. Loading a warehouse does the heavy lifting, keeping everything in RAM. Extract values from a single object or loop over all objects satisfying a filter. Helper library for common tool functions, e.g. creating files.

gem install palletjack-tools https://github.com/saab-simc-admin/palletjack (or search GitHub for “palletjack”) Published on RubyGems. Development on GitHub. “Palletjack” is unique on GitHub, so just search for it. Patches welcome! Thanks to our employer, SAAB, for letting us develop Pallet Jack as free software. I don't speak for them.