Cloud Provisioning

mit Juju
Frank Müller
Oldenburg

Baujahr 1965

Entwickler

Fachautor

frank.mueller@canonical.com

@themue
Bereitgestellte Infrastruktur ...
... ist nichts ohne bereitgestellte Dienste
mysql
wordpress
Bekanntes
Szenario
auf
individuellen
Servern
Höhere Komplexität in Clouds
wordpress
mediawikihaproxy-w mediawiki memcached
haproxy-b wordpress mysql
wordpressvarnish
Ein mühsamer Weg
Juju - Open Source Tool zur
Automatisierung von Clouds
http://jujucharms.com
Plattformen
Plattformen
mediawiki
wordpress
AWS Azure OpenStack Joyent ...
haproxy-w mediawiki memcached
haproxy-b wordpress mysql
wor...
juju generate-config
# ~/.juju/environments.yaml
# https://jujucharms.com/docs/config-aws.html
amazon:
type: ec2
# region: u...
juju bootstrap
Bootstrap
Bootstrap
API
State
Provisioner
...
Zentrale
Funktionen
Provisionierung
juju deploy juju-gui
juju deploy wordpress
juju deploy mysql
juju expose juju-gui
Bootstrap
juju-gui wordpress mysql
Deploy mit Constraints
• arch (amd64, arm, i386, arm64, ppc64)

• container (none, lxc, kvm)

• cpu-cores / cpu-power / me...
Relationen
juju add-relation wordpress mysql
juju expose wordpress
Bootstrap
juju-gui wordpress mysql
Konfiguration
juju set mysql dataset-size=50%
juju set wordpress tuning=optimized
Bootstrap
juju-gui wordpress* mysql*
Skalieren
juju deploy memcached
juju add-relation wordpress memcached
juju add-unit wordpress
wordpress*
Bootstrap
juju-gui wordpres...
Varianten
Unit
Unit
Unter-
geordnete
Unit
Unit
Unit
Unit
Container
Direkte
Abhängigkeit
Standard
Vom Charm zur Unit
Individuelle Agenten
Machiner / Uniter
Zentrale Agenten
Provisioner / Firewaller
Unit
Charm
Komfort

	 als

Geschenk
Juju GUI (1)
Juju GUI (2)
Bundles
Status
juju status
machines:
"0":
agent-state: started
agent-version: 1.12.0
dns-name: 15.185.88.51
instance-id: "1736045"...
Charms
Charm-Bestandteile
Bauplan
aus
statischen
und
dynamischen
Anteilen
Metadaten
Konfigurationsoptionen
Unit Hooks
install / co...
Barebone Charm mit Charm Tools
juju charm create vanilla
Charm metadata.yaml
name: wordpress
summary: WordPress is a ...
maintainer: Marco Ceppi <marco@ceppi.net>
description: |
T...
Hooks - Wordpress install
#!/bin/bash
set -xe
add-apt-repository ppa:charmers/charm-helpers
apt-get update && apt-get -y u...
Wichtige Umgebungsvariablen für Hooks
• JUJU_HOOK_NAME

• JUJU_API_ADDRESSES

• JUJU_ENV_NAME / JUJU_ENV_UUID

• JUJU_UNIT...
Tools in Hooks
• juju-log für Logging

• juju-reboot für Reboots, zum Beispiel nach einem Upgrade

• unit-get <private-add...
actions.yaml definiert Actions
pause:
description: Pause the database.
...
resume:
description: Resume a paused database.
....
Tools in Action-Skripten
• action-get um Parameter abzufragen

• action-set für Rückgabewerte

• action-fail zum Signalisi...
Action-Kommandos
juju action defined mysql
juju action do mysql/0 snapshot filename=out.tar.gz
juju action fetch <ID>
juju a...
Einige Charms
ceph
mediawiki mongodb
cassandra
rails
mysql
wordpress
rabbitmq
haproxy
apache2
hadoop
squid
hbase
couchdb
p...
Viel Spaß in den Wolken
Bildquellen
123RF

iStockphoto

eigene Quellen
Nächste SlideShare
Wird geladen in …5
×

Cloud Provisioning mit Juju

466 Aufrufe

Veröffentlicht am

Talk about cloud provisioning with Juju given at the DevOpsCon 2015 in Berlin.

Veröffentlicht in: Internet
0 Kommentare
2 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
466
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
9
Aktionen
Geteilt
0
Downloads
2
Kommentare
0
Gefällt mir
2
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Cloud Provisioning mit Juju

  1. 1. Cloud Provisioning
 mit Juju
  2. 2. Frank Müller Oldenburg Baujahr 1965 Entwickler Fachautor frank.mueller@canonical.com @themue
  3. 3. Bereitgestellte Infrastruktur ...
  4. 4. ... ist nichts ohne bereitgestellte Dienste
  5. 5. mysql wordpress Bekanntes Szenario auf individuellen Servern
  6. 6. Höhere Komplexität in Clouds wordpress mediawikihaproxy-w mediawiki memcached haproxy-b wordpress mysql wordpressvarnish
  7. 7. Ein mühsamer Weg
  8. 8. Juju - Open Source Tool zur Automatisierung von Clouds http://jujucharms.com
  9. 9. Plattformen
  10. 10. Plattformen mediawiki wordpress AWS Azure OpenStack Joyent ... haproxy-w mediawiki memcached haproxy-b wordpress mysql wordpressvarnish
  11. 11. juju generate-config # ~/.juju/environments.yaml # https://jujucharms.com/docs/config-aws.html amazon: type: ec2 # region: us-east-1 # access-key: <secret> # secret-key: <secret> # image-stream: "released" ...
  12. 12. juju bootstrap Bootstrap
  13. 13. Bootstrap API State Provisioner ... Zentrale Funktionen
  14. 14. Provisionierung
  15. 15. juju deploy juju-gui juju deploy wordpress juju deploy mysql juju expose juju-gui Bootstrap juju-gui wordpress mysql
  16. 16. Deploy mit Constraints • arch (amd64, arm, i386, arm64, ppc64) • container (none, lxc, kvm) • cpu-cores / cpu-power / mem • root-disk • instance-type • networks / tags (nur für MaaS)
  17. 17. Relationen
  18. 18. juju add-relation wordpress mysql juju expose wordpress Bootstrap juju-gui wordpress mysql
  19. 19. Konfiguration
  20. 20. juju set mysql dataset-size=50% juju set wordpress tuning=optimized Bootstrap juju-gui wordpress* mysql*
  21. 21. Skalieren
  22. 22. juju deploy memcached juju add-relation wordpress memcached juju add-unit wordpress wordpress* Bootstrap juju-gui wordpress* mysql* memcached
  23. 23. Varianten
  24. 24. Unit Unit Unter- geordnete Unit Unit Unit Unit Container Direkte Abhängigkeit Standard
  25. 25. Vom Charm zur Unit Individuelle Agenten Machiner / Uniter Zentrale Agenten Provisioner / Firewaller Unit Charm
  26. 26. Komfort
 als
 Geschenk
  27. 27. Juju GUI (1)
  28. 28. Juju GUI (2)
  29. 29. Bundles
  30. 30. Status juju status machines: "0": agent-state: started agent-version: 1.12.0 dns-name: 15.185.88.51 instance-id: "1736045" series: precise ... services: wordpress: charm: cs:precise/wordpress-42 exposed: true units: wordpress/0: agent-state: started agent-version: 1.12.0 machine: "1" open-ports: - 80/tcp public-address: 15.185.89.236
  31. 31. Charms
  32. 32. Charm-Bestandteile Bauplan aus statischen und dynamischen Anteilen Metadaten Konfigurationsoptionen Unit Hooks install / config-changed / start
 upgrade-charm / stop Relation Hooks x-relation-joined / x-relation-changed
 x-relation-departed / x-relation-broken Actions z.B. pause / snapshot
 restore / optimize ...
  33. 33. Barebone Charm mit Charm Tools juju charm create vanilla
  34. 34. Charm metadata.yaml name: wordpress summary: WordPress is a ... maintainer: Marco Ceppi <marco@ceppi.net> description: | This will install and setup WordPress ... categories: ["applications"] requires: db: interface: mysql nfs: interface: mount cache: interface: memcache provides: website: interface: http peers: loadbalancer: interface: reversenginx
  35. 35. Hooks - Wordpress install #!/bin/bash set -xe add-apt-repository ppa:charmers/charm-helpers apt-get update && apt-get -y upgrade apt-get -y install php5-memcache mysql-client pwgen php5 php5-fpm php-apc mailutils php-mail sysstat php5-mysql php5-mcrypt charm-helper-sh php5-curl rsync nfs-common git-core mktemp modprobe nfs || true ...
  36. 36. Wichtige Umgebungsvariablen für Hooks • JUJU_HOOK_NAME • JUJU_API_ADDRESSES • JUJU_ENV_NAME / JUJU_ENV_UUID • JUJU_UNIT_NAME • JUJU_RELATION / ..._ID • JUJU_REMOTE_UNIT
  37. 37. Tools in Hooks • juju-log für Logging • juju-reboot für Reboots, zum Beispiel nach einem Upgrade • unit-get <private-address | public-address> zur Abfrage von Adressinformationen • config-get zur Abfrage der Konfiguration • open-port / close-port / opened-ports für die Verwaltung von Ports • relation-set / relation-get / relation-list / relation-ids für die Verwaltung von Relationen
  38. 38. actions.yaml definiert Actions pause: description: Pause the database. ... resume: description: Resume a paused database. ... snapshot: description: Take a snapshot of the database. params: outfile: type: string description: The filename to write to. required: [outfile] additionalProperties: false
  39. 39. Tools in Action-Skripten • action-get um Parameter abzufragen
 • action-set für Rückgabewerte
 • action-fail zum Signalisieren von Fehlern
  40. 40. Action-Kommandos juju action defined mysql juju action do mysql/0 snapshot filename=out.tar.gz juju action fetch <ID> juju action status <ID>
  41. 41. Einige Charms ceph mediawiki mongodb cassandra rails mysql wordpress rabbitmq haproxy apache2 hadoop squid hbase couchdb postgresql nfs ntp
  42. 42. Viel Spaß in den Wolken
  43. 43. Bildquellen 123RF iStockphoto eigene Quellen

×