Deploying Foreman in Enterprise Environments

inovex GmbH
inovex GmbHinovex GmbH
Deploying Foreman in Enterprise Environments
best practices
and lessons learned…
Nils Domrose
Gent, February, 3 2014
About me
▸ senior linux systems engineer at
inovex GmbH
▸ worked as a network engineer,
software developer and systems
engineer
▸ using foreman for about 1 year

▸ using bare-metal deployment for
ages
▸ life is short – let’s focus on
interesting stuff!
#irc

__endy__

@endyman
https://plus.google.com/+NilsDomrose
2
About inovex
We use technology to make our customers happy. And ourselves.

▸ http://www.inovex.de
▸ offices in [‘Pforzheim’, ‘Karlsruhe’, ‘Cologne’, ‘Munich’]
▸ we have open positions...

1
SHAPE
Consulting

2
BUILD
Application
Development

3
RUN
IT Engineering &
Operations

4
TRACK
Business
Intelligence

5
TEACH
Academy

3
Agenda
▸
▸
▸
▸
▸

the chicken & egg problem
foreman components
we are the borg
fail! foreman HA
best practices

4
The Chicken & Egg Problem
...deploying your deployment infrastructure

▸ some shell scripts to push
installer and answers.yaml to
new system (installer is subject
to rpm/deb packaging)
▸ run a custom kafo installer
▸ setup repos
▸ configure nics (bonding)
▸ setup pacemaker &
corosync
▸ setup drbd
▸ setup dhcp server
▸ setup postgreSQL
▸ setup puppetDB
▸ run foreman kafo installer
The Chicken & Egg Problem
build your first kafo installer

▸ kafo?
▸ kafo! - imagine master-less
puppet plus config data in yaml
(like hiera)
▸ can’t tell wether it’s the chicken
or the egg or both but it’s cool 

▸ stores parameters for your
modules in answers.yaml
▸ simply copy your modules into
the installer’s modules directory
▸ or even use puppet-librarian to
manage your modules (poor
man’s git-submodules)

https://github.com/rodjek/librarian-puppet
https://github.com/theforeman/kafo
The Chicken & Egg Problem
kafo - getting started

▸ Never give up, never surrender!:
depending on your kafo gem it
might not (yet) be as easy as:
root@foreman:~# cd /var/tmp/
root@foreman:/var/tmp# i=my-installer; mkdir $i; cd $i; kafofy $i

▸ It’s more like:
i=my-installer; mkdir $i && cd $i && kafofy $i && mkdir /etc/$i && cat
> /etc/$i/$i.yaml << EOF
> -->
:log_dir: /var/log/$i
>
:log_name: configuration.log
>
:log_level: info
>
:no_prefix: false
>
:mapping: {}
>
:answer_file: /etc/$i/answers.yaml
>
:installer_dir: $(pwd)
>
:modules_dir: $(pwd)/modules
>
:default_values_dir: /tmp
>
:colors: true
>
:kafo_modules_dir: /usr/lib/ruby/vendor_ruby/kafo/modules
> EOF
The Chicken & Egg Problem
get the modules

▸ delete the modules directory
root@foreman:/var/tmp/my-installer# rm -Rf modules/

▸ create a Puppetfile
root@foreman:/var/tmp/my-installer# cat Puppetfile
forge "http://forge.puppetlabs.com"
mod 'puppetlabs/stdlib'
mod 'ntp',
:git => 'git://github.com/puppetlabs/puppetlabs-ntp.git'

▸ run the librarian
root@foreman:/var/tmp/my-installer# librarian-puppet install --clean
root@foreman:/var/tmp/my-installer# ll modules
total 16
drwxr-xr-x 4 root root 4096 Jan 29 12:25 ./
drwxr-xr-x 7 root root 4096 Jan 29 12:17 ../
drwxr-xr-x 7 root root 4096 Jan 29 12:25 ntp/
drwxr-xr-x 6 root root 4096 Jan 29 12:24 stdlib/

▸ next: package it, install it
Foreman Components
foreman

▸
▸
▸
▸
▸

rails application
apache mod_passenger
Webinterface
REST API
unattended resources –
rendered templates
database
REST API

unattended
resources

foreman
frontend

apache mod_passenger
Port 80 HTTP

Port 443 HTTPS
9
Foreman Components
smart-proxy

▸ WEBrick based REST
server to manage
supporting infrastructure

Port 8443 HTTPS
WEBrick server
puppet
CA

puppet

apache
mod_passenger
Port 8140 HTTPS

BMC

DHCP

TFTP

DNS

ipmitool

ISC
dhcpd

tftpd

nsupdate

Port 67
UDP

Port 69
UDP
10
Foreman Components
placement of foreman components
▸
▸
▸
▸

flows at each side to local puppet
and smart proxy
all VLANs directly access puppet ca
all VLANs directly access foreman
unattended resources
we need DNS only once (so let’s
limit TSIG key distribution)

VLAN D Site2

mgmt VLAN2

fw

VLAN C Site2

Smartproxy, puppet,
DHCP

VLAN A Site1

mgmt VLAN1

fw
Foreman
Smartproxy, puppet, CA,
DNS, DHCP

VLAN B Site1
11
Foreman Components
optimizing comms flows
▸

limit access to the smartproxy and
foreman to local clients only

▸

open dedicate flow from proxy to
foreman and puppet

VLAN D Site2

mgmt VLAN2

fw

VLAN C Site2

smartproxy, puppet,
DHCP, Proxy

VLAN A Site1

mgmt VLAN1

fw
Foreman
smartproxy, puppet, CA,
DNS, DHCP

VLAN B Site1
12
Foreman Components
optimizing comms flows
▸

install apache mod_rewrite on
remote smartproxy

▸

rewrite/proxy unattended resources

▸

rewrite/proxy puppet CA resources

...
rewrite_rule => [
‘^/unattended/(.*)$ http://foreman.mysite.com/unattended/$1 [P]’,
]
rewrite_rule => [
‘^/([^/]+/certificate.*)$ https://puppetca.mysite.com:8140/$1’,
]
...

13
Foreman Components
foreman customization
▸
▸
▸

we must identify proxied servers
foreman url must be customized
templates must be adapted

▸

enable tokens (default in 1.4)

▸

create parameter in hostgroups for each
segment (unattended_url in 1.4 does not
seam to help here…)

▸ adapt templates

14
Resistance is futile
Integrating foreman into corporate infrastructure

Integrating foreman into corporate
infrastructure is:
▸ not a technical issue
▸ mostly even not a security issue
▸ It’s about convincing people to do
things differently

▸ It’s about responsibilities
▸ It’s about fear
▸ It’s about laziness

15
Resistance is futile
The one with the wrong <enter vendor name> DHCP product

The corporate DHCP does not provide a proper API
and changes are distributed across the DHCP
infrastructure in a slow, asynchronous manner…

Deploy your own DHCP server:
- You must be able to create and delete leases
instantly
- You only need it to bootstrap your servers. Later a
static NIC configuration can be applied using your
favorite cfgmgmt. No, it’s not that static – we can
use ENC variables to update IP addresses.
- Repeat: I won’t create my leases manually and I
won’t wait for changes to be replicated until I
power-on my server
16
Resistance is futile
The one with the DHCP caused Zombiecalypse

You are about to deploy your own DHCP but people
complain that your DHCP will nuke the corporate
datacenter and will cause an epic loss of revenue…

Ask for dedicated VLANs and for ip-helper configs
on routers and firewalls
- Your DHCP is limited to your VLANs only
- You only need one DHCP server
- It’s not an evil plan to make the guy running the
corporate DHCP redundant

17
Resistance is futile
The one with static DNS

You kindly ask for TSIG keys to create your A and
PTR records automatically but the DNS is managed
manually and there is no TSIG key although dynamic
updates are enabled…
Make a deal: you won’t talk about the missing TSIG
keys and get your key or keytab and permissions
right after the guy fixed the security issue.
Ask for dedicated zones and for credentials which
allow you to manage your zones using nsupdate
- Alternatively ask for delegation of your zones and
setup a dedicated DNS server (protected by keys)
18
FAIL!
Foreman HA
▸

use pacemaker/corosync to provide
basic resilience for postgreSQL and
puppetDB, puppetCA

▸

If you scale out, you might setup a
nice pg-pool2 cluster

▸

puppetmasters could be ran active
active as well as the foreman rails
application (keep memcached in
mind)

▸

on pure smartproxies no pacemaker
cluster is required. A simple failover
using VRRP (via keepalived) should
be sufficient – if you replicate the
tftp and dhcp data (for puppet you’ll
have to do the exercise anyhow.)

HA IP(s)

HA IP(s)

puppetDB

puppetDB

Apache
mod_passenger

Apache
mod_passenger

postgreSQL

postgreSQL

DRBD

DRBD

pacemaker

pacemaker
corosync

node1

node2
19
Best practices
▸

use separate IP addresses for each service so you
can split up stuff later on

▸

If you can’t use DHCP the bootdisk plugin might be
an option (currently .deb package 1.2.3 is broken
for 1.4 but version plugin source is ready for 1.4)

▸

LDAP or kerberos5 (1.4) for user authentication

▸

use Locations for filtering

▸

classes are not tight to locations so you better use
the same set of classes and import only once from
you master puppet master 

▸

use the column plugin for better overview

▸

ENC and smart variables are nice – ever configured
dhcp pool as yaml hash? Use smart variables as
switches, and for simple datatypes only - do the
complex stuff in service modules - ideally by using
data in modules
20
Wishlist
...secret guide to world domination

▸ integrate the reverse proxy feature into
smart-proxy (there is a ticket for that
somewhere)
▸ implement iso image provisioning based
vm installation in conjunction with the
bootdisk plugin
▸ support more configuration management
stacks
▸ better support for discovery, ipmi and
hardware provisioning (like HW-Raid)

21
Thank You!

Contact
Nils Domrose
Senior Systems Engineer
inovex GmbH
Office cologne
Schanzenstr. 6-20
51063 Köln
nils.domrose@inovex.de

22
1 of 22

Recommended

Foreman in your datacenter by
Foreman in your datacenterForeman in your datacenter
Foreman in your datacenterlzap
382.8K views32 slides
Simplifying Your IT Workflow with Katello and Foreman by
Simplifying Your IT Workflow with Katello and ForemanSimplifying Your IT Workflow with Katello and Foreman
Simplifying Your IT Workflow with Katello and ForemanNikhil Kathole
163 views33 slides
Linux host orchestration with Foreman, Puppet and Gitlab by
Linux host orchestration with Foreman, Puppet and GitlabLinux host orchestration with Foreman, Puppet and Gitlab
Linux host orchestration with Foreman, Puppet and GitlabBen Tullis
9.7K views28 slides
Full Stack Automation with Katello & The Foreman by
Full Stack Automation with Katello & The ForemanFull Stack Automation with Katello & The Foreman
Full Stack Automation with Katello & The ForemanWeston Bassler
8.2K views27 slides
Lifecycle Management with Foreman by
Lifecycle Management with ForemanLifecycle Management with Foreman
Lifecycle Management with ForemanJulien Pivotto
13.3K views59 slides
Ansible Integration in Foreman by
Ansible Integration in ForemanAnsible Integration in Foreman
Ansible Integration in ForemanNikhil Kathole
3.3K views32 slides

More Related Content

What's hot

Kubernetes intro public - kubernetes meetup 4-21-2015 by
Kubernetes intro   public - kubernetes meetup 4-21-2015Kubernetes intro   public - kubernetes meetup 4-21-2015
Kubernetes intro public - kubernetes meetup 4-21-2015Rohit Jnagal
3.3K views31 slides
Foreman Single Sign-On Made Easy with Keycloak by
Foreman Single Sign-On Made Easy with KeycloakForeman Single Sign-On Made Easy with Keycloak
Foreman Single Sign-On Made Easy with KeycloakNikhil Kathole
363 views30 slides
Introduction to kubernetes by
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetesRaffaele Di Fazio
576 views38 slides
Automating OpenSCAP with Foreman by
Automating OpenSCAP with ForemanAutomating OpenSCAP with Foreman
Automating OpenSCAP with Foremanszadok
5.4K views16 slides
Rancher Rodeo by
Rancher RodeoRancher Rodeo
Rancher RodeoSUSE
404 views87 slides
Kubernetes Webinar - Using ConfigMaps & Secrets by
Kubernetes Webinar - Using ConfigMaps & Secrets Kubernetes Webinar - Using ConfigMaps & Secrets
Kubernetes Webinar - Using ConfigMaps & Secrets Janakiram MSV
1.4K views14 slides

What's hot(20)

Kubernetes intro public - kubernetes meetup 4-21-2015 by Rohit Jnagal
Kubernetes intro   public - kubernetes meetup 4-21-2015Kubernetes intro   public - kubernetes meetup 4-21-2015
Kubernetes intro public - kubernetes meetup 4-21-2015
Rohit Jnagal3.3K views
Foreman Single Sign-On Made Easy with Keycloak by Nikhil Kathole
Foreman Single Sign-On Made Easy with KeycloakForeman Single Sign-On Made Easy with Keycloak
Foreman Single Sign-On Made Easy with Keycloak
Nikhil Kathole363 views
Automating OpenSCAP with Foreman by szadok
Automating OpenSCAP with ForemanAutomating OpenSCAP with Foreman
Automating OpenSCAP with Foreman
szadok5.4K views
Rancher Rodeo by SUSE
Rancher RodeoRancher Rodeo
Rancher Rodeo
SUSE404 views
Kubernetes Webinar - Using ConfigMaps & Secrets by Janakiram MSV
Kubernetes Webinar - Using ConfigMaps & Secrets Kubernetes Webinar - Using ConfigMaps & Secrets
Kubernetes Webinar - Using ConfigMaps & Secrets
Janakiram MSV1.4K views
Openstack Neutron, interconnections with BGP/MPLS VPNs by Thomas Morin
Openstack Neutron, interconnections with BGP/MPLS VPNsOpenstack Neutron, interconnections with BGP/MPLS VPNs
Openstack Neutron, interconnections with BGP/MPLS VPNs
Thomas Morin1.7K views
Enable DPDK and SR-IOV for containerized virtual network functions with zun by heut2008
Enable DPDK and SR-IOV for containerized virtual network functions with zunEnable DPDK and SR-IOV for containerized virtual network functions with zun
Enable DPDK and SR-IOV for containerized virtual network functions with zun
heut20082.5K views
Kubernetes in 30 minutes (2017/03/10) by lestrrat
Kubernetes in 30 minutes (2017/03/10)Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)
lestrrat29.3K views
Introduction to kubernetes by Gabriel Carro
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetes
Gabriel Carro229 views
How Kubernetes scheduler works by Himani Agrawal
How Kubernetes scheduler worksHow Kubernetes scheduler works
How Kubernetes scheduler works
Himani Agrawal366 views
An SFU/MCU integration for heterogeneous environments by Giacomo Vacca
An SFU/MCU integration for heterogeneous environmentsAn SFU/MCU integration for heterogeneous environments
An SFU/MCU integration for heterogeneous environments
Giacomo Vacca5.1K views
Kubernetes 101 - A Cluster Operating System by mikaelbarbero
Kubernetes 101 - A Cluster Operating SystemKubernetes 101 - A Cluster Operating System
Kubernetes 101 - A Cluster Operating System
mikaelbarbero8.3K views
Autoscaling Kubernetes by craigbox
Autoscaling KubernetesAutoscaling Kubernetes
Autoscaling Kubernetes
craigbox14.1K views
Hardening Kubernetes by Securing Pods by Suraj Deshmukh
Hardening Kubernetes by Securing PodsHardening Kubernetes by Securing Pods
Hardening Kubernetes by Securing Pods
Suraj Deshmukh807 views
Kubernetes Architecture by Knoldus Inc.
 Kubernetes Architecture Kubernetes Architecture
Kubernetes Architecture
Knoldus Inc.3K views
Understanding eBPF in a Hurry! by Ray Jenkins
Understanding eBPF in a Hurry!Understanding eBPF in a Hurry!
Understanding eBPF in a Hurry!
Ray Jenkins1.5K views
Advanced Deployment Strategies with Kubernetes and Istio by CloudOps2005
Advanced Deployment Strategies with Kubernetes and IstioAdvanced Deployment Strategies with Kubernetes and Istio
Advanced Deployment Strategies with Kubernetes and Istio
CloudOps2005556 views
Linux Instrumentation by DarkStarSword
Linux InstrumentationLinux Instrumentation
Linux Instrumentation
DarkStarSword9.7K views

Similar to Deploying Foreman in Enterprise Environments

OpenNebula, the foreman and CentOS play nice, too by
OpenNebula, the foreman and CentOS play nice, tooOpenNebula, the foreman and CentOS play nice, too
OpenNebula, the foreman and CentOS play nice, tooinovex GmbH
2.3K views36 slides
[k8s] Kubernetes terminology (1).pdf by
[k8s] Kubernetes terminology (1).pdf[k8s] Kubernetes terminology (1).pdf
[k8s] Kubernetes terminology (1).pdfFrederik Wouters
14 views33 slides
FOSDEM'17: Disaster Recovery Management with ReaR (relax-and-recover) & DRLM ... by
FOSDEM'17: Disaster Recovery Management with ReaR (relax-and-recover) & DRLM ...FOSDEM'17: Disaster Recovery Management with ReaR (relax-and-recover) & DRLM ...
FOSDEM'17: Disaster Recovery Management with ReaR (relax-and-recover) & DRLM ...Didac Oliveira
590 views41 slides
Bare metal Hadoop provisioning by
Bare metal Hadoop provisioningBare metal Hadoop provisioning
Bare metal Hadoop provisioningGoDataDriven
2.6K views22 slides
Nrpe - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core by
Nrpe - Nagios Remote Plugin Executor. NRPE plugin for Nagios CoreNrpe - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core
Nrpe - Nagios Remote Plugin Executor. NRPE plugin for Nagios CoreNagios
878 views18 slides
NRPE - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core 4 and others. by
NRPE - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core 4 and others.NRPE - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core 4 and others.
NRPE - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core 4 and others.Marc Trimble
668 views18 slides

Similar to Deploying Foreman in Enterprise Environments(20)

OpenNebula, the foreman and CentOS play nice, too by inovex GmbH
OpenNebula, the foreman and CentOS play nice, tooOpenNebula, the foreman and CentOS play nice, too
OpenNebula, the foreman and CentOS play nice, too
inovex GmbH2.3K views
FOSDEM'17: Disaster Recovery Management with ReaR (relax-and-recover) & DRLM ... by Didac Oliveira
FOSDEM'17: Disaster Recovery Management with ReaR (relax-and-recover) & DRLM ...FOSDEM'17: Disaster Recovery Management with ReaR (relax-and-recover) & DRLM ...
FOSDEM'17: Disaster Recovery Management with ReaR (relax-and-recover) & DRLM ...
Didac Oliveira590 views
Bare metal Hadoop provisioning by GoDataDriven
Bare metal Hadoop provisioningBare metal Hadoop provisioning
Bare metal Hadoop provisioning
GoDataDriven2.6K views
Nrpe - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core by Nagios
Nrpe - Nagios Remote Plugin Executor. NRPE plugin for Nagios CoreNrpe - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core
Nrpe - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core
Nagios878 views
NRPE - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core 4 and others. by Marc Trimble
NRPE - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core 4 and others.NRPE - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core 4 and others.
NRPE - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core 4 and others.
Marc Trimble668 views
A Detailed Look At cassandra.yaml (Edward Capriolo, The Last Pickle) | Cassan... by DataStax
A Detailed Look At cassandra.yaml (Edward Capriolo, The Last Pickle) | Cassan...A Detailed Look At cassandra.yaml (Edward Capriolo, The Last Pickle) | Cassan...
A Detailed Look At cassandra.yaml (Edward Capriolo, The Last Pickle) | Cassan...
DataStax5.8K views
Cfgmgmt Challenges aren't technical anymore by Julien Pivotto
Cfgmgmt Challenges aren't technical anymoreCfgmgmt Challenges aren't technical anymore
Cfgmgmt Challenges aren't technical anymore
Julien Pivotto354 views
Free radius billing server with practical vpn exmaple by Chanaka Lasantha
Free radius billing server with practical vpn exmapleFree radius billing server with practical vpn exmaple
Free radius billing server with practical vpn exmaple
Chanaka Lasantha37 views
Cobbler, Func and Puppet: Tools for Large Scale Environments by Michael Zhang
Cobbler, Func and Puppet: Tools for Large Scale EnvironmentsCobbler, Func and Puppet: Tools for Large Scale Environments
Cobbler, Func and Puppet: Tools for Large Scale Environments
Michael Zhang2.9K views
Install MariaDB on IBM i - Tips, troubleshooting, and more by Rod Flohr
Install MariaDB on IBM i - Tips, troubleshooting, and moreInstall MariaDB on IBM i - Tips, troubleshooting, and more
Install MariaDB on IBM i - Tips, troubleshooting, and more
Rod Flohr1.6K views
the NML project by Lei Yang
the NML projectthe NML project
the NML project
Lei Yang597 views
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP by Dana Luther
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPHands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Dana Luther406 views
Building Apache Cassandra clusters for massive scale by Alex Thompson
Building Apache Cassandra clusters for massive scaleBuilding Apache Cassandra clusters for massive scale
Building Apache Cassandra clusters for massive scale
Alex Thompson54 views
Containers with systemd-nspawn by Gábor Nyers
Containers with systemd-nspawnContainers with systemd-nspawn
Containers with systemd-nspawn
Gábor Nyers5.5K views
RAC-Installing your First Cluster and Database by Nikhil Kumar
RAC-Installing your First Cluster and DatabaseRAC-Installing your First Cluster and Database
RAC-Installing your First Cluster and Database
Nikhil Kumar1.1K views
DoS and DDoS mitigations with eBPF, XDP and DPDK by Marian Marinov
DoS and DDoS mitigations with eBPF, XDP and DPDKDoS and DDoS mitigations with eBPF, XDP and DPDK
DoS and DDoS mitigations with eBPF, XDP and DPDK
Marian Marinov1.1K views

More from inovex GmbH

lldb – Debugger auf Abwegen by
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegeninovex GmbH
914 views54 slides
Are you sure about that?! Uncertainty Quantification in AI by
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIinovex GmbH
547 views55 slides
Why natural language is next step in the AI evolution by
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolutioninovex GmbH
321 views23 slides
WWDC 2019 Recap by
WWDC 2019 RecapWWDC 2019 Recap
WWDC 2019 Recapinovex GmbH
361 views38 slides
Network Policies by
Network PoliciesNetwork Policies
Network Policiesinovex GmbH
821 views30 slides
Interpretable Machine Learning by
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learninginovex GmbH
471 views34 slides

More from inovex GmbH(20)

lldb – Debugger auf Abwegen by inovex GmbH
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegen
inovex GmbH914 views
Are you sure about that?! Uncertainty Quantification in AI by inovex GmbH
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AI
inovex GmbH547 views
Why natural language is next step in the AI evolution by inovex GmbH
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolution
inovex GmbH321 views
Network Policies by inovex GmbH
Network PoliciesNetwork Policies
Network Policies
inovex GmbH821 views
Interpretable Machine Learning by inovex GmbH
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learning
inovex GmbH471 views
Jenkins X – CI/CD in wolkigen Umgebungen by inovex GmbH
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungen
inovex GmbH469 views
AI auf Edge-Geraeten by inovex GmbH
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeten
inovex GmbH402 views
Prometheus on Kubernetes by inovex GmbH
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetes
inovex GmbH204 views
Deep Learning for Recommender Systems by inovex GmbH
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systems
inovex GmbH1.5K views
Representation Learning von Zeitreihen by inovex GmbH
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreihen
inovex GmbH329 views
Talk to me – Chatbots und digitale Assistenten by inovex GmbH
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenten
inovex GmbH391 views
Künstlich intelligent? by inovex GmbH
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?
inovex GmbH1.1K views
Das Android Open Source Project by inovex GmbH
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Project
inovex GmbH431 views
Machine Learning Interpretability by inovex GmbH
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretability
inovex GmbH999 views
Performance evaluation of GANs in a semisupervised OCR use case by inovex GmbH
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use case
inovex GmbH170 views
People & Products – Lessons learned from the daily IT madness by inovex GmbH
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madness
inovex GmbH859 views
Infrastructure as (real) Code – Manage your K8s resources with Pulumi by inovex GmbH
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
inovex GmbH280 views

Recently uploaded

Info Session November 2023.pdf by
Info Session November 2023.pdfInfo Session November 2023.pdf
Info Session November 2023.pdfAleksandraKoprivica4
12 views15 slides
MVP and prioritization.pdf by
MVP and prioritization.pdfMVP and prioritization.pdf
MVP and prioritization.pdfrahuldharwal141
31 views8 slides
Microsoft Power Platform.pptx by
Microsoft Power Platform.pptxMicrosoft Power Platform.pptx
Microsoft Power Platform.pptxUni Systems S.M.S.A.
53 views38 slides
Future of Indian ConsumerTech by
Future of Indian ConsumerTechFuture of Indian ConsumerTech
Future of Indian ConsumerTechKapil Khandelwal (KK)
21 views68 slides
Piloting & Scaling Successfully With Microsoft Viva by
Piloting & Scaling Successfully With Microsoft VivaPiloting & Scaling Successfully With Microsoft Viva
Piloting & Scaling Successfully With Microsoft VivaRichard Harbridge
12 views160 slides
Scaling Knowledge Graph Architectures with AI by
Scaling Knowledge Graph Architectures with AIScaling Knowledge Graph Architectures with AI
Scaling Knowledge Graph Architectures with AIEnterprise Knowledge
30 views15 slides

Recently uploaded(20)

Piloting & Scaling Successfully With Microsoft Viva by Richard Harbridge
Piloting & Scaling Successfully With Microsoft VivaPiloting & Scaling Successfully With Microsoft Viva
Piloting & Scaling Successfully With Microsoft Viva
"Running students' code in isolation. The hard way", Yurii Holiuk by Fwdays
"Running students' code in isolation. The hard way", Yurii Holiuk "Running students' code in isolation. The hard way", Yurii Holiuk
"Running students' code in isolation. The hard way", Yurii Holiuk
Fwdays11 views
Voice Logger - Telephony Integration Solution at Aegis by Nirmal Sharma
Voice Logger - Telephony Integration Solution at AegisVoice Logger - Telephony Integration Solution at Aegis
Voice Logger - Telephony Integration Solution at Aegis
Nirmal Sharma39 views
Business Analyst Series 2023 - Week 3 Session 5 by DianaGray10
Business Analyst Series 2023 -  Week 3 Session 5Business Analyst Series 2023 -  Week 3 Session 5
Business Analyst Series 2023 - Week 3 Session 5
DianaGray10248 views
TouchLog: Finger Micro Gesture Recognition Using Photo-Reflective Sensors by sugiuralab
TouchLog: Finger Micro Gesture Recognition  Using Photo-Reflective SensorsTouchLog: Finger Micro Gesture Recognition  Using Photo-Reflective Sensors
TouchLog: Finger Micro Gesture Recognition Using Photo-Reflective Sensors
sugiuralab19 views
6g - REPORT.pdf by Liveplex
6g - REPORT.pdf6g - REPORT.pdf
6g - REPORT.pdf
Liveplex10 views
PharoJS - Zürich Smalltalk Group Meetup November 2023 by Noury Bouraqadi
PharoJS - Zürich Smalltalk Group Meetup November 2023PharoJS - Zürich Smalltalk Group Meetup November 2023
PharoJS - Zürich Smalltalk Group Meetup November 2023
Noury Bouraqadi127 views
Future of AR - Facebook Presentation by ssuserb54b561
Future of AR - Facebook PresentationFuture of AR - Facebook Presentation
Future of AR - Facebook Presentation
ssuserb54b56114 views
Unit 1_Lecture 2_Physical Design of IoT.pdf by StephenTec
Unit 1_Lecture 2_Physical Design of IoT.pdfUnit 1_Lecture 2_Physical Design of IoT.pdf
Unit 1_Lecture 2_Physical Design of IoT.pdf
StephenTec12 views
STPI OctaNE CoE Brochure.pdf by madhurjyapb
STPI OctaNE CoE Brochure.pdfSTPI OctaNE CoE Brochure.pdf
STPI OctaNE CoE Brochure.pdf
madhurjyapb14 views
Case Study Copenhagen Energy and Business Central.pdf by Aitana
Case Study Copenhagen Energy and Business Central.pdfCase Study Copenhagen Energy and Business Central.pdf
Case Study Copenhagen Energy and Business Central.pdf
Aitana16 views

Deploying Foreman in Enterprise Environments

  • 1. Deploying Foreman in Enterprise Environments best practices and lessons learned… Nils Domrose Gent, February, 3 2014
  • 2. About me ▸ senior linux systems engineer at inovex GmbH ▸ worked as a network engineer, software developer and systems engineer ▸ using foreman for about 1 year ▸ using bare-metal deployment for ages ▸ life is short – let’s focus on interesting stuff! #irc __endy__ @endyman https://plus.google.com/+NilsDomrose 2
  • 3. About inovex We use technology to make our customers happy. And ourselves. ▸ http://www.inovex.de ▸ offices in [‘Pforzheim’, ‘Karlsruhe’, ‘Cologne’, ‘Munich’] ▸ we have open positions... 1 SHAPE Consulting 2 BUILD Application Development 3 RUN IT Engineering & Operations 4 TRACK Business Intelligence 5 TEACH Academy 3
  • 4. Agenda ▸ ▸ ▸ ▸ ▸ the chicken & egg problem foreman components we are the borg fail! foreman HA best practices 4
  • 5. The Chicken & Egg Problem ...deploying your deployment infrastructure ▸ some shell scripts to push installer and answers.yaml to new system (installer is subject to rpm/deb packaging) ▸ run a custom kafo installer ▸ setup repos ▸ configure nics (bonding) ▸ setup pacemaker & corosync ▸ setup drbd ▸ setup dhcp server ▸ setup postgreSQL ▸ setup puppetDB ▸ run foreman kafo installer
  • 6. The Chicken & Egg Problem build your first kafo installer ▸ kafo? ▸ kafo! - imagine master-less puppet plus config data in yaml (like hiera) ▸ can’t tell wether it’s the chicken or the egg or both but it’s cool  ▸ stores parameters for your modules in answers.yaml ▸ simply copy your modules into the installer’s modules directory ▸ or even use puppet-librarian to manage your modules (poor man’s git-submodules) https://github.com/rodjek/librarian-puppet https://github.com/theforeman/kafo
  • 7. The Chicken & Egg Problem kafo - getting started ▸ Never give up, never surrender!: depending on your kafo gem it might not (yet) be as easy as: root@foreman:~# cd /var/tmp/ root@foreman:/var/tmp# i=my-installer; mkdir $i; cd $i; kafofy $i ▸ It’s more like: i=my-installer; mkdir $i && cd $i && kafofy $i && mkdir /etc/$i && cat > /etc/$i/$i.yaml << EOF > --> :log_dir: /var/log/$i > :log_name: configuration.log > :log_level: info > :no_prefix: false > :mapping: {} > :answer_file: /etc/$i/answers.yaml > :installer_dir: $(pwd) > :modules_dir: $(pwd)/modules > :default_values_dir: /tmp > :colors: true > :kafo_modules_dir: /usr/lib/ruby/vendor_ruby/kafo/modules > EOF
  • 8. The Chicken & Egg Problem get the modules ▸ delete the modules directory root@foreman:/var/tmp/my-installer# rm -Rf modules/ ▸ create a Puppetfile root@foreman:/var/tmp/my-installer# cat Puppetfile forge "http://forge.puppetlabs.com" mod 'puppetlabs/stdlib' mod 'ntp', :git => 'git://github.com/puppetlabs/puppetlabs-ntp.git' ▸ run the librarian root@foreman:/var/tmp/my-installer# librarian-puppet install --clean root@foreman:/var/tmp/my-installer# ll modules total 16 drwxr-xr-x 4 root root 4096 Jan 29 12:25 ./ drwxr-xr-x 7 root root 4096 Jan 29 12:17 ../ drwxr-xr-x 7 root root 4096 Jan 29 12:25 ntp/ drwxr-xr-x 6 root root 4096 Jan 29 12:24 stdlib/ ▸ next: package it, install it
  • 9. Foreman Components foreman ▸ ▸ ▸ ▸ ▸ rails application apache mod_passenger Webinterface REST API unattended resources – rendered templates database REST API unattended resources foreman frontend apache mod_passenger Port 80 HTTP Port 443 HTTPS 9
  • 10. Foreman Components smart-proxy ▸ WEBrick based REST server to manage supporting infrastructure Port 8443 HTTPS WEBrick server puppet CA puppet apache mod_passenger Port 8140 HTTPS BMC DHCP TFTP DNS ipmitool ISC dhcpd tftpd nsupdate Port 67 UDP Port 69 UDP 10
  • 11. Foreman Components placement of foreman components ▸ ▸ ▸ ▸ flows at each side to local puppet and smart proxy all VLANs directly access puppet ca all VLANs directly access foreman unattended resources we need DNS only once (so let’s limit TSIG key distribution) VLAN D Site2 mgmt VLAN2 fw VLAN C Site2 Smartproxy, puppet, DHCP VLAN A Site1 mgmt VLAN1 fw Foreman Smartproxy, puppet, CA, DNS, DHCP VLAN B Site1 11
  • 12. Foreman Components optimizing comms flows ▸ limit access to the smartproxy and foreman to local clients only ▸ open dedicate flow from proxy to foreman and puppet VLAN D Site2 mgmt VLAN2 fw VLAN C Site2 smartproxy, puppet, DHCP, Proxy VLAN A Site1 mgmt VLAN1 fw Foreman smartproxy, puppet, CA, DNS, DHCP VLAN B Site1 12
  • 13. Foreman Components optimizing comms flows ▸ install apache mod_rewrite on remote smartproxy ▸ rewrite/proxy unattended resources ▸ rewrite/proxy puppet CA resources ... rewrite_rule => [ ‘^/unattended/(.*)$ http://foreman.mysite.com/unattended/$1 [P]’, ] rewrite_rule => [ ‘^/([^/]+/certificate.*)$ https://puppetca.mysite.com:8140/$1’, ] ... 13
  • 14. Foreman Components foreman customization ▸ ▸ ▸ we must identify proxied servers foreman url must be customized templates must be adapted ▸ enable tokens (default in 1.4) ▸ create parameter in hostgroups for each segment (unattended_url in 1.4 does not seam to help here…) ▸ adapt templates 14
  • 15. Resistance is futile Integrating foreman into corporate infrastructure Integrating foreman into corporate infrastructure is: ▸ not a technical issue ▸ mostly even not a security issue ▸ It’s about convincing people to do things differently ▸ It’s about responsibilities ▸ It’s about fear ▸ It’s about laziness 15
  • 16. Resistance is futile The one with the wrong <enter vendor name> DHCP product The corporate DHCP does not provide a proper API and changes are distributed across the DHCP infrastructure in a slow, asynchronous manner… Deploy your own DHCP server: - You must be able to create and delete leases instantly - You only need it to bootstrap your servers. Later a static NIC configuration can be applied using your favorite cfgmgmt. No, it’s not that static – we can use ENC variables to update IP addresses. - Repeat: I won’t create my leases manually and I won’t wait for changes to be replicated until I power-on my server 16
  • 17. Resistance is futile The one with the DHCP caused Zombiecalypse You are about to deploy your own DHCP but people complain that your DHCP will nuke the corporate datacenter and will cause an epic loss of revenue… Ask for dedicated VLANs and for ip-helper configs on routers and firewalls - Your DHCP is limited to your VLANs only - You only need one DHCP server - It’s not an evil plan to make the guy running the corporate DHCP redundant 17
  • 18. Resistance is futile The one with static DNS You kindly ask for TSIG keys to create your A and PTR records automatically but the DNS is managed manually and there is no TSIG key although dynamic updates are enabled… Make a deal: you won’t talk about the missing TSIG keys and get your key or keytab and permissions right after the guy fixed the security issue. Ask for dedicated zones and for credentials which allow you to manage your zones using nsupdate - Alternatively ask for delegation of your zones and setup a dedicated DNS server (protected by keys) 18
  • 19. FAIL! Foreman HA ▸ use pacemaker/corosync to provide basic resilience for postgreSQL and puppetDB, puppetCA ▸ If you scale out, you might setup a nice pg-pool2 cluster ▸ puppetmasters could be ran active active as well as the foreman rails application (keep memcached in mind) ▸ on pure smartproxies no pacemaker cluster is required. A simple failover using VRRP (via keepalived) should be sufficient – if you replicate the tftp and dhcp data (for puppet you’ll have to do the exercise anyhow.) HA IP(s) HA IP(s) puppetDB puppetDB Apache mod_passenger Apache mod_passenger postgreSQL postgreSQL DRBD DRBD pacemaker pacemaker corosync node1 node2 19
  • 20. Best practices ▸ use separate IP addresses for each service so you can split up stuff later on ▸ If you can’t use DHCP the bootdisk plugin might be an option (currently .deb package 1.2.3 is broken for 1.4 but version plugin source is ready for 1.4) ▸ LDAP or kerberos5 (1.4) for user authentication ▸ use Locations for filtering ▸ classes are not tight to locations so you better use the same set of classes and import only once from you master puppet master  ▸ use the column plugin for better overview ▸ ENC and smart variables are nice – ever configured dhcp pool as yaml hash? Use smart variables as switches, and for simple datatypes only - do the complex stuff in service modules - ideally by using data in modules 20
  • 21. Wishlist ...secret guide to world domination ▸ integrate the reverse proxy feature into smart-proxy (there is a ticket for that somewhere) ▸ implement iso image provisioning based vm installation in conjunction with the bootdisk plugin ▸ support more configuration management stacks ▸ better support for discovery, ipmi and hardware provisioning (like HW-Raid) 21
  • 22. Thank You! Contact Nils Domrose Senior Systems Engineer inovex GmbH Office cologne Schanzenstr. 6-20 51063 Köln nils.domrose@inovex.de 22