Icinga 2: Integrierte Hochverfügbarkeit (Webinar vom 07.10.2014)
Puppet und OpenStack - Ein gutes Team
1. www.netways.de // blog.netways.de // @netways
We love Open Source
DEUTSCHE OPENSTACK TAGE – 24.06.2015
PUPPET UND OPENSTACK – EIN GUTES TEAM
BERND ERK | NETWAYS GMBH
2. www.netways.de // blog.netways.de // @netways
We love Open Source
VORSTELLUNG
■ Bernd Erk
Geschäftsführer NETWAYS GmbH
Icinga Co-Founder
■ @gethash
■ bernd.erk@netways.de
3. www.netways.de // blog.netways.de // @netways
We love Open Source
AGENDA
■ Vorstellung NETWAYS
■ Warum Konfigurationsmanagement
■ Vorstellung von Puppet
■ Einführung Puppet DSL
■ Puppet Enterprise
■ Puppet und OpenStack
■ Ausblick
■ Zusammenfassung
■ Fragen & Antworten
5. www.netways.de // blog.netways.de // @netways
We love Open Source
VORSTELLUNG NETWAYS
■ Firmengründung 1995
■ Open Source seit 1997
■ Aktuell 42 Mitarbeiter
■ Spezialisierung in den Bereichen
Open Source Systems Management
und Open Source Datacenter
6. www.netways.de // blog.netways.de // @netways
We love Open Source
NETWAYS KOMPETENZEN
■ Monitoring
■ Graphing
■ Logmanagement
■ Konfigurationsmanagement
■ Reporting
■ Private Cloud
■ Backup
■ Projektmanagement
■ Consulting
■ Managed Services
■ Development
■ Support
■ Betrieb
■ Schulungen
■ Konferenzen
■ Monitoring Hardware
8. www.netways.de // blog.netways.de // @netways
We love Open Source
NETWAYS KONFERENZEN
Open Source Backup Conference
■ 29. – 30. September 2015 in Köln
■ Best Practices für das Backup
Open Source Monitoring Conference
■ 16. – 18. November 2015 in Nürnberg
■ 250 Teilnehmer (2014)
■ Monitoring Best Practices
10. www.netways.de // blog.netways.de // @netways
We love Open Source
WARUM KONFIGURATIONSMANAGEMENT
■ Golden Images
■ Fertige Pakete
■ Manuelle Konfiguration
■ Selbstgebaute Skripte
for i in $(cat host.cfg)
do
ssh user@$i uname -a
done
Häufig verwendete „Automatisierung“
18. www.netways.de // blog.netways.de // @netways
We love Open Source
PUPPET WORKFLOW
SSL-Verschlüsselung
bei jedem
Datentransport
Der Node sendet
normierte Daten
über sich selbst
an den Puppet
Master.
19. www.netways.de // blog.netways.de // @netways
We love Open Source
FACTER
■ Puppet nutzt Facter um Daten über das Hostsystem zu sammeln
■ Facter gibt bei der Ausführung eine Liste von Key-Value Paaren zurück
…
is_virtual => true
kernel => Linux
kernelmajversion => 3.2
kernelrelease => 3.2.0-4-amd64
kernelversion => 3.2.0
lsbdistcodename => wheezy
lsbdistdescription => Debian GNU/Linux 7.8 (wheezy)
lsbdistid => Debian
lsbdistrelease => 7.8
lsbmajdistrelease => 7
lsbminordistrelease => 8
macaddress => 02:00:0a:0a:00:48
macaddress_eth0 => 02:00:0a:0a:00:48
macaddress_eth1 => 02:00:64:00:00:02
macaddress_eth2 => 02:00:64:00:00:11
…
20. www.netways.de // blog.netways.de // @netways
We love Open Source
PUPPET WORKFLOW
SSL-Verschlüsselung
bei jedem
Datentransport
Der Node sendet
normierte Daten
über sich selbst
an den Puppet
Master. Puppet nutzt diese Daten um einen
Katalog zu erstellen, welcher festlegt,
wie der Node konfiguriert sein sollte.
24. www.netways.de // blog.netways.de // @netways
We love Open Source
PUPPET WORKFLOW
SSL-Verschlüsselung
bei jedem
Datentransport
Der Node sendet
normierte Daten
über sich selbst
an den Puppet
Master. Puppet nutzt diese Daten um einen
Katalog zu erstellen, welcher festlegt,
wie der Node konfiguriert sein sollte.
Der Node meldet Konfigurations-
änderungen an den Puppet Master
zurück. Diese werden beispielsweise
über das Puppet Dashboard sichtbar.
25. www.netways.de // blog.netways.de // @netways
We love Open Source
PUPPET WORKFLOW
SSL-Verschlüsselung
bei jedem
Datentransport
Der Node sendet
normierte Daten
über sich selbst
an den Puppet
Master. Puppet nutzt diese Daten um einen
Katalog zu erstellen, welcher festlegt,
wie der Node konfiguriert sein sollte.
Der Node meldet Konfigurations-
änderungen an den Puppet Master
zurück. Diese werden beispielsweise
über das Puppet Dashboard sichtbar.
Puppets offene API kann die Daten
auch an 3rd party Tools senden.
Puppet oder 3rd party Tool
27. www.netways.de // blog.netways.de // @netways
We love Open Source
PUPPET DOMAIN SPECIFIC LANGUAGE (DSL)
■ Ressource – Einzelner Baustein
Jede Ressource hat einen type, einen title und einen Satz an
Attributen mit Werten
Hauptressourcen: user, group, host, cron, exec, file, package,
service
28. www.netways.de // blog.netways.de // @netways
We love Open Source
PUPPET DOMAIN SPECIFIC LANGUAGE (DSL)
■ Manifest – Puppet Datei mit Endung .pp
Möglichkeiten:
Statische Dateien
Dateien mit dynamischem Inhalt (ERB Templates)
Custom Facts
Sprachkonstrukte (Variablen, Arrays, Selektionen, case,
if/else/elsif)
Abhängigkeiten (require, subscribe, before, notify)
29. www.netways.de // blog.netways.de // @netways
We love Open Source
PUPPET DOMAIN SPECIFIC LANGUAGE (DSL)
■ Klasse – Zusammenfassung von Ressourcen
30. www.netways.de // blog.netways.de // @netways
We love Open Source
PUPPET DOMAIN SPECIFIC LANGUAGE (DSL)
■ Module – Zusammenfassung mehrerer Klassen und zugehörigen
Dateien in einem Verzeichnis
modulname
|-- examples – Beispielmanifeste (Alternative: tests)
|-- files – statische Dateien
|-- lib – Custom Facts und Custom Resourcen
|-- manifests – Manifeste eines Moduls (Klassen)
|-- spec – Debugging mit rspec-puppet
|-- templates – Templates für dynamische Dateien
|-- tests – Beispielmanifeste (Alternative: examples)
31. www.netways.de // blog.netways.de // @netways
We love Open Source
PUPPET DOMAIN SPECIFIC LANGUAGE (DSL)
■ Node Deklaration – Modulzuweisung über site.pp
Einzelner Host:
Mehrere Hosts:
Standardzuweisung:
Weitere Abstraktionen (Profile, Rollen, etc.)
32. www.netways.de // blog.netways.de // @netways
We love Open Source
PUPPET DOMAIN SPECIFIC LANGUAGE (DSL)
Weitere Möglichkeiten:
Unterklassen
Klassenparametrisierung
Funktionen (Logging, Hiera, etc.)
Klassenvererbung
Environments, Stages, etc.
39. www.netways.de // blog.netways.de // @netways
We love Open Source
VERWENDUNG VON PACKSTACK
$ sudo yum install git python-yaml -y
$ git clone https://github.com/stackforge/packstack.git
$ cd packstack && sudo python setup.py install
$ packstack --allinone
Only supports Fedora, Red Hat Enterprise Linux (RHEL)
$ packstack --install-hosts=<local ipaddr>
--novanetwork-pubif=<dev>
--novacompute-privif=lo
--novanetwork-privif=lo
--os-swift-install=y
--nagios-install=y
■ Packstack - Utility
40. www.netways.de // blog.netways.de // @netways
We love Open Source
STACKFORGE –> FORGE.PUPPETLABS.COM
“What were previously the StackForge Puppet modules are now officially
the OpenStack Puppet Modules project. This is clear recognition of the
value they bring, as well as the openness and inclusiveness of the
community.”
*https://puppetlabs.com/blog/openstack-kilo-summit-and-looking-forward-to-liberty
41. www.netways.de // blog.netways.de // @netways
We love Open Source
OPENSTACK NETWORK - NEUTRON
■ stackforge/neutron
■ This module supports the following neutron plugins:
Open vSwitch
linuxbridge
cisco-neutron
■ The following platforms are supported:
Ubuntu 12.04 (Precise)
Debian (Wheezy)
RHEL 6
Fedora 18
44. www.netways.de // blog.netways.de // @netways
We love Open Source
OPENSTACK COMPUTE - NOVA
■ stackforge/nova
class { 'nova':
database_connection => 'mysql://nova:a_big_secret@127.0.0.1/nova?charset=utf8',
rabbit_userid => 'nova',
rabbit_password => 'an_even_bigger_secret',
image_service => 'nova.image.glance.GlanceImageService',
glance_api_servers => 'localhost:9292',
verbose => false,
rabbit_host => '127.0.0.1',
}
class { 'nova::compute':
enabled => true,
vnc_enabled => true,
}
class { 'nova::compute::libvirt':
migration_support => true,
}
Supports libvirt, xenserver and vmware compute drivers.
45. www.netways.de // blog.netways.de // @netways
We love Open Source
OPENSTACK IMAGE - GLANCE
■ stackforge/glance
class { 'glance::api':
verbose => true,
keystone_tenant => 'services',
keystone_user => 'glance',
keystone_password => '12345',
sql_connection => 'mysql://glance:12345@127.0.0.1/glance',
}
class { 'glance::registry':
verbose => true,
keystone_tenant => 'services',
keystone_user => 'glance',
keystone_password => '12345',
sql_connection => 'mysql://glance:12345@127.0.0.1/glance',
}
class { 'glance::backend::file': }
Only supports configuring the file, swift and rbd storage backends
46. www.netways.de // blog.netways.de // @netways
We love Open Source
OPENSTACK OBJECT STORAGE - SWIFT
■ stackforge/swift
class { 'swift':
swift_hash_suffix => 'swift_secret',
}
swift::storage::loopback { ['1', '2']:
require => Class['swift'],
}
class { 'swift::storage::all':
storage_local_net_ip => $ipaddress_eth0
}
@@ring_object_device { "${ipaddress_eth0}:6000/1":
region => 1, # optional, defaults to 1
zone => 1,
weight => 1,
}
@@ring_container_device { "${ipaddress_eth0}:6001/1":
zone => 1,
weight => 1,
}
47. www.netways.de // blog.netways.de // @netways
We love Open Source
OPENSTACK DASHBOARD - HORIZON
■ stackforge/horizon
class { 'memcached':
listen_ip => '127.0.0.1',
tcp_port => '11211',
udp_port => '11211',
}
class { '::horizon':
cache_server_ip => '127.0.0.1',
cache_server_port => '11211',
secret_key => '12345',
swift => false,
django_debug => 'True',
api_result_limit => '2000',
}
Only supports Apache using mod_wsgi
48. www.netways.de // blog.netways.de // @netways
We love Open Source
OPENSTACK IDENTIY - KEYSTONE
■ stackforge/keystone
class { 'mysql::server': }
class { 'keystone::db::mysql':
password => 'super_secret_db_password',
allowed_hosts => '%',
}
All the keystone types use the CLI tools and so need to be ran on the keystone node
class { 'postgresql::server': }
class { 'keystone::db::postgresql':
password => 'super_secret_db_password',
}
49. www.netways.de // blog.netways.de // @netways
We love Open Source
OPENSTACK IDENTITY - DRIVERS
58%
28%
8%
5%
2%
3%
3%
56%
29%
11%
0%
1%
1%
0%
64%
15%
5%
0%
2%
0%
0%
0% 10% 20% 30% 40% 50% 60% 70%
SQL
LDAP
AD
Templated
PAM
KVS
Other
Prod
Dev/Prod
POC
*Open Stack User Survey 2015
54. www.netways.de // blog.netways.de // @netways
We love Open Source
ZUSAMMENFASSUNG
■ Vielzahl an unterschiedlichen Komponenten ist für automatisiertes
Deployment eine Herausforderung
■ Puppet bietet größte OpenStack-Unterstützung am Markt
■ Eine breite Basis an OpenStack Komponenten wird supported
https://forge.puppetlabs.com/stackforge
Nicht alle Backends werden unterstützt!
■ Nicht alle Module unterstützen aktuelles Release Kilo
■ Ausprobieren ist einfach
puppet module install stackforge-nova