SlideShare a Scribd company logo
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

More Related Content

What's hot

openstack+cephインテグレーション
openstack+cephインテグレーションopenstack+cephインテグレーション
openstack+cephインテグレーション
OSSラボ株式会社
 
Full Stack Automation with Katello & The Foreman
Full Stack Automation with Katello & The ForemanFull Stack Automation with Katello & The Foreman
Full Stack Automation with Katello & The Foreman
Weston Bassler
 
Openstack Neutron, interconnections with BGP/MPLS VPNs
Openstack Neutron, interconnections with BGP/MPLS VPNsOpenstack Neutron, interconnections with BGP/MPLS VPNs
Openstack Neutron, interconnections with BGP/MPLS VPNs
Thomas Morin
 
KVM High Availability Regardless of Storage - Gabriel Brascher, VP of Apache ...
KVM High Availability Regardless of Storage - Gabriel Brascher, VP of Apache ...KVM High Availability Regardless of Storage - Gabriel Brascher, VP of Apache ...
KVM High Availability Regardless of Storage - Gabriel Brascher, VP of Apache ...
ShapeBlue
 
OpenStackトラブルシューティング入門
OpenStackトラブルシューティング入門OpenStackトラブルシューティング入門
OpenStackトラブルシューティング入門
VirtualTech Japan Inc.
 
DevConf 2014 Kernel Networking Walkthrough
DevConf 2014   Kernel Networking WalkthroughDevConf 2014   Kernel Networking Walkthrough
DevConf 2014 Kernel Networking Walkthrough
Thomas Graf
 
Kubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive OverviewKubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive Overview
Bob Killen
 
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
Toru Makabe
 
Linux host orchestration with Foreman, Puppet and Gitlab
Linux host orchestration with Foreman, Puppet and GitlabLinux host orchestration with Foreman, Puppet and Gitlab
Linux host orchestration with Foreman, Puppet and Gitlab
Ben Tullis
 
Neutron-to-Neutron: interconnecting multiple OpenStack deployments
Neutron-to-Neutron: interconnecting multiple OpenStack deploymentsNeutron-to-Neutron: interconnecting multiple OpenStack deployments
Neutron-to-Neutron: interconnecting multiple OpenStack deployments
Thomas Morin
 
The Prowess of Prow
The Prowess of Prow  The Prowess of Prow
The Prowess of Prow
Hemani Katyal
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
John Lynch
 
Podman Overview and internals.pdf
Podman Overview and internals.pdfPodman Overview and internals.pdf
Podman Overview and internals.pdf
Saim Safder
 
Linux Networking Explained
Linux Networking ExplainedLinux Networking Explained
Linux Networking Explained
Thomas Graf
 
OpenStack API's and WSGI
OpenStack API's and WSGIOpenStack API's and WSGI
OpenStack API's and WSGI
Mike Pittaro
 
Kubernetes Helm: Why It Matters
Kubernetes Helm: Why It MattersKubernetes Helm: Why It Matters
Kubernetes Helm: Why It Matters
Platform9
 
alphorm.com - Formation Linux LPIC-1/Comptia Linux+
alphorm.com - Formation Linux LPIC-1/Comptia Linux+alphorm.com - Formation Linux LPIC-1/Comptia Linux+
alphorm.com - Formation Linux LPIC-1/Comptia Linux+
Alphorm
 
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
OpenStack Korea Community
 
Deploying CloudStack and Ceph with flexible VXLAN and BGP networking
Deploying CloudStack and Ceph with flexible VXLAN and BGP networking Deploying CloudStack and Ceph with flexible VXLAN and BGP networking
Deploying CloudStack and Ceph with flexible VXLAN and BGP networking
ShapeBlue
 
OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月
OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月
OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月
VirtualTech Japan Inc.
 

What's hot (20)

openstack+cephインテグレーション
openstack+cephインテグレーションopenstack+cephインテグレーション
openstack+cephインテグレーション
 
Full Stack Automation with Katello & The Foreman
Full Stack Automation with Katello & The ForemanFull Stack Automation with Katello & The Foreman
Full Stack Automation with Katello & The Foreman
 
Openstack Neutron, interconnections with BGP/MPLS VPNs
Openstack Neutron, interconnections with BGP/MPLS VPNsOpenstack Neutron, interconnections with BGP/MPLS VPNs
Openstack Neutron, interconnections with BGP/MPLS VPNs
 
KVM High Availability Regardless of Storage - Gabriel Brascher, VP of Apache ...
KVM High Availability Regardless of Storage - Gabriel Brascher, VP of Apache ...KVM High Availability Regardless of Storage - Gabriel Brascher, VP of Apache ...
KVM High Availability Regardless of Storage - Gabriel Brascher, VP of Apache ...
 
OpenStackトラブルシューティング入門
OpenStackトラブルシューティング入門OpenStackトラブルシューティング入門
OpenStackトラブルシューティング入門
 
DevConf 2014 Kernel Networking Walkthrough
DevConf 2014   Kernel Networking WalkthroughDevConf 2014   Kernel Networking Walkthrough
DevConf 2014 Kernel Networking Walkthrough
 
Kubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive OverviewKubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive Overview
 
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
 
Linux host orchestration with Foreman, Puppet and Gitlab
Linux host orchestration with Foreman, Puppet and GitlabLinux host orchestration with Foreman, Puppet and Gitlab
Linux host orchestration with Foreman, Puppet and Gitlab
 
Neutron-to-Neutron: interconnecting multiple OpenStack deployments
Neutron-to-Neutron: interconnecting multiple OpenStack deploymentsNeutron-to-Neutron: interconnecting multiple OpenStack deployments
Neutron-to-Neutron: interconnecting multiple OpenStack deployments
 
The Prowess of Prow
The Prowess of Prow  The Prowess of Prow
The Prowess of Prow
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
 
Podman Overview and internals.pdf
Podman Overview and internals.pdfPodman Overview and internals.pdf
Podman Overview and internals.pdf
 
Linux Networking Explained
Linux Networking ExplainedLinux Networking Explained
Linux Networking Explained
 
OpenStack API's and WSGI
OpenStack API's and WSGIOpenStack API's and WSGI
OpenStack API's and WSGI
 
Kubernetes Helm: Why It Matters
Kubernetes Helm: Why It MattersKubernetes Helm: Why It Matters
Kubernetes Helm: Why It Matters
 
alphorm.com - Formation Linux LPIC-1/Comptia Linux+
alphorm.com - Formation Linux LPIC-1/Comptia Linux+alphorm.com - Formation Linux LPIC-1/Comptia Linux+
alphorm.com - Formation Linux LPIC-1/Comptia Linux+
 
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
 
Deploying CloudStack and Ceph with flexible VXLAN and BGP networking
Deploying CloudStack and Ceph with flexible VXLAN and BGP networking Deploying CloudStack and Ceph with flexible VXLAN and BGP networking
Deploying CloudStack and Ceph with flexible VXLAN and BGP networking
 
OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月
OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月
OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月
 

Similar to Deploying Foreman in Enterprise Environments

OpenNebula, the foreman and CentOS play nice, too
OpenNebula, the foreman and CentOS play nice, tooOpenNebula, the foreman and CentOS play nice, too
OpenNebula, the foreman and CentOS play nice, too
inovex GmbH
 
[k8s] Kubernetes terminology (1).pdf
[k8s] Kubernetes terminology (1).pdf[k8s] Kubernetes terminology (1).pdf
[k8s] Kubernetes terminology (1).pdf
Frederik Wouters
 
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 ...
FOSDEM'17: Disaster Recovery Management with ReaR (relax-and-recover) & DRLM ...
Didac Oliveira
 
Bare metal Hadoop provisioning
Bare metal Hadoop provisioningBare metal Hadoop provisioning
Bare metal Hadoop provisioning
GoDataDriven
 
Nrpe - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core
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
Nagios
 
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.
NRPE - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core 4 and others.
Marc Trimble
 
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...
A Detailed Look At cassandra.yaml (Edward Capriolo, The Last Pickle) | Cassan...
DataStax
 
Cfgmgmt Challenges aren't technical anymore
Cfgmgmt Challenges aren't technical anymoreCfgmgmt Challenges aren't technical anymore
Cfgmgmt Challenges aren't technical anymore
Julien Pivotto
 
Free radius billing server with practical vpn exmaple
Free radius billing server with practical vpn exmapleFree radius billing server with practical vpn exmaple
Free radius billing server with practical vpn exmaple
Chanaka Lasantha
 
Cobbler, Func and Puppet: Tools for Large Scale Environments
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
ViSenze - Artificial Intelligence for the Visual Web
 
Cobbler, Func and Puppet: Tools for Large Scale Environments
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 Zhang
 
Install MariaDB on IBM i - Tips, troubleshooting, and more
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 Flohr
 
the NML project
the NML projectthe NML project
the NML project
Lei Yang
 
Kdump
KdumpKdump
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
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 Luther
 
Building Apache Cassandra clusters for massive scale
Building Apache Cassandra clusters for massive scaleBuilding Apache Cassandra clusters for massive scale
Building Apache Cassandra clusters for massive scale
Alex Thompson
 
Containers with systemd-nspawn
Containers with systemd-nspawnContainers with systemd-nspawn
Containers with systemd-nspawn
Gábor Nyers
 
RAC-Installing your First Cluster and Database
RAC-Installing your First Cluster and DatabaseRAC-Installing your First Cluster and Database
RAC-Installing your First Cluster and Database
Nikhil Kumar
 
DoS and DDoS mitigations with eBPF, XDP and DPDK
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 Marinov
 
图文详解安装Net backup 6.5备份恢复oracle 10g rac 数据库
图文详解安装Net backup 6.5备份恢复oracle 10g rac 数据库图文详解安装Net backup 6.5备份恢复oracle 10g rac 数据库
图文详解安装Net backup 6.5备份恢复oracle 10g rac 数据库
maclean liu
 

Similar to Deploying Foreman in Enterprise Environments (20)

OpenNebula, the foreman and CentOS play nice, too
OpenNebula, the foreman and CentOS play nice, tooOpenNebula, the foreman and CentOS play nice, too
OpenNebula, the foreman and CentOS play nice, too
 
[k8s] Kubernetes terminology (1).pdf
[k8s] Kubernetes terminology (1).pdf[k8s] Kubernetes terminology (1).pdf
[k8s] Kubernetes terminology (1).pdf
 
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 ...
FOSDEM'17: Disaster Recovery Management with ReaR (relax-and-recover) & DRLM ...
 
Bare metal Hadoop provisioning
Bare metal Hadoop provisioningBare metal Hadoop provisioning
Bare metal Hadoop provisioning
 
Nrpe - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core
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
 
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.
NRPE - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core 4 and others.
 
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...
A Detailed Look At cassandra.yaml (Edward Capriolo, The Last Pickle) | Cassan...
 
Cfgmgmt Challenges aren't technical anymore
Cfgmgmt Challenges aren't technical anymoreCfgmgmt Challenges aren't technical anymore
Cfgmgmt Challenges aren't technical anymore
 
Free radius billing server with practical vpn exmaple
Free radius billing server with practical vpn exmapleFree radius billing server with practical vpn exmaple
Free radius billing server with practical vpn exmaple
 
Cobbler, Func and Puppet: Tools for Large Scale Environments
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
 
Cobbler, Func and Puppet: Tools for Large Scale Environments
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
 
Install MariaDB on IBM i - Tips, troubleshooting, and more
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
 
the NML project
the NML projectthe NML project
the NML project
 
Kdump
KdumpKdump
Kdump
 
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
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
 
Building Apache Cassandra clusters for massive scale
Building Apache Cassandra clusters for massive scaleBuilding Apache Cassandra clusters for massive scale
Building Apache Cassandra clusters for massive scale
 
Containers with systemd-nspawn
Containers with systemd-nspawnContainers with systemd-nspawn
Containers with systemd-nspawn
 
RAC-Installing your First Cluster and Database
RAC-Installing your First Cluster and DatabaseRAC-Installing your First Cluster and Database
RAC-Installing your First Cluster and Database
 
DoS and DDoS mitigations with eBPF, XDP and DPDK
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
 
图文详解安装Net backup 6.5备份恢复oracle 10g rac 数据库
图文详解安装Net backup 6.5备份恢复oracle 10g rac 数据库图文详解安装Net backup 6.5备份恢复oracle 10g rac 数据库
图文详解安装Net backup 6.5备份恢复oracle 10g rac 数据库
 

More from inovex GmbH

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegen
inovex GmbH
 
Are you sure about that?! Uncertainty Quantification in AI
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 GmbH
 
Why natural language is next step in the AI evolution
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 GmbH
 
WWDC 2019 Recap
WWDC 2019 RecapWWDC 2019 Recap
WWDC 2019 Recap
inovex GmbH
 
Network Policies
Network PoliciesNetwork Policies
Network Policies
inovex GmbH
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learning
inovex GmbH
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungen
inovex GmbH
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeten
inovex GmbH
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetes
inovex GmbH
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systems
inovex GmbH
 
Azure IoT Edge
Azure IoT EdgeAzure IoT Edge
Azure IoT Edge
inovex GmbH
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreihen
inovex GmbH
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenten
inovex GmbH
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?
inovex GmbH
 
Dev + Ops = Go
Dev + Ops = GoDev + Ops = Go
Dev + Ops = Go
inovex GmbH
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Project
inovex GmbH
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretability
inovex GmbH
 
Performance evaluation of GANs in a semisupervised OCR use case
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 GmbH
 
People & Products – Lessons learned from the daily IT madness
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 GmbH
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
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 GmbH
 

More from inovex GmbH (20)

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegen
 
Are you sure about that?! Uncertainty Quantification in AI
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
 
Why natural language is next step in the AI evolution
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
 
WWDC 2019 Recap
WWDC 2019 RecapWWDC 2019 Recap
WWDC 2019 Recap
 
Network Policies
Network PoliciesNetwork Policies
Network Policies
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learning
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungen
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeten
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetes
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systems
 
Azure IoT Edge
Azure IoT EdgeAzure IoT Edge
Azure IoT Edge
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreihen
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenten
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?
 
Dev + Ops = Go
Dev + Ops = GoDev + Ops = Go
Dev + Ops = Go
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Project
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretability
 
Performance evaluation of GANs in a semisupervised OCR use case
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
 
People & Products – Lessons learned from the daily IT madness
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
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
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
 

Recently uploaded

Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Tatiana Kojar
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
HarisZaheer8
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
Postman
 
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3
FREE A4 Cyber Security Awareness  Posters-Social Engineering part 3FREE A4 Cyber Security Awareness  Posters-Social Engineering part 3
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3
Data Hops
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
saastr
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
Shinana2
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
ScyllaDB
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
Edge AI and Vision Alliance
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
Alex Pruden
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 

Recently uploaded (20)

Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
 
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3
FREE A4 Cyber Security Awareness  Posters-Social Engineering part 3FREE A4 Cyber Security Awareness  Posters-Social Engineering part 3
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 

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