Top Banner
Cloud Provisioning mit Juju
43

Cloud Provisioning mit Juju

Aug 07, 2015

Download

Internet

Frank Müller
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Cloud Provisioning mit Juju

Cloud Provisioningmit Juju

Page 2: Cloud Provisioning mit Juju

Frank Müller

OldenburgBaujahr 1965

EntwicklerFachautor

[email protected]@themue

Page 3: Cloud Provisioning mit Juju

Bereitgestellte Infrastruktur ...

Page 4: Cloud Provisioning mit Juju

... ist nichts ohne bereitgestellte Dienste

Page 5: Cloud Provisioning mit Juju

mysql

wordpress

Bekanntes Szenario

auf individuellen

Servern

Page 6: Cloud Provisioning mit Juju

Höhere Komplexität in Clouds

wordpress

mediawikihaproxy-w mediawiki memcached

haproxy-b wordpress mysql

wordpressvarnish

Page 7: Cloud Provisioning mit Juju

Ein mühsamer Weg

Page 8: Cloud Provisioning mit Juju

Juju - Open Source Tool zur Automatisierung von Clouds

http://jujucharms.com

Page 9: Cloud Provisioning mit Juju

Plattformen

Page 10: Cloud Provisioning mit Juju

Plattformen

mediawiki

wordpress

AWS Azure OpenStack Joyent ...

haproxy-w mediawiki memcached

haproxy-b wordpress mysql

wordpressvarnish

Page 11: Cloud Provisioning mit Juju

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" ...

Page 12: Cloud Provisioning mit Juju

juju bootstrap

Bootstrap

Page 13: Cloud Provisioning mit Juju

Bootstrap

API

State

Provisioner

...

Zentrale Funktionen

Page 14: Cloud Provisioning mit Juju

Provisionierung

Page 15: Cloud Provisioning mit Juju

juju deploy juju-gui juju deploy wordpress juju deploy mysql juju expose juju-gui

Bootstrap

juju-gui wordpress mysql

Page 16: Cloud Provisioning mit Juju

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)

Page 17: Cloud Provisioning mit Juju

Relationen

Page 18: Cloud Provisioning mit Juju

juju add-relation wordpress mysql juju expose wordpress

Bootstrap

juju-gui wordpress mysql

Page 19: Cloud Provisioning mit Juju

Konfiguration

Page 20: Cloud Provisioning mit Juju

juju set mysql dataset-size=50% juju set wordpress tuning=optimized

Bootstrap

juju-gui wordpress* mysql*

Page 21: Cloud Provisioning mit Juju

Skalieren

Page 22: Cloud Provisioning mit Juju

juju deploy memcached juju add-relation wordpress memcached juju add-unit wordpress

wordpress*

Bootstrap

juju-gui wordpress* mysql*

memcached

Page 23: Cloud Provisioning mit Juju

Varianten

Page 24: Cloud Provisioning mit Juju

Unit

Unit

Unter- geordnete

Unit

Unit

Unit

Unit

ContainerDirekte AbhängigkeitStandard

Page 25: Cloud Provisioning mit Juju

Vom Charm zur Unit

Individuelle Agenten Machiner / Uniter

Zentrale Agenten Provisioner / Firewaller

Unit

Charm

Page 26: Cloud Provisioning mit Juju

Komfort alsGeschenk

Page 27: Cloud Provisioning mit Juju

Juju GUI (1)

Page 28: Cloud Provisioning mit Juju

Juju GUI (2)

Page 29: Cloud Provisioning mit Juju

Bundles

Page 30: Cloud Provisioning mit Juju

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

Page 31: Cloud Provisioning mit Juju

Charms

Page 32: Cloud Provisioning mit Juju

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 / snapshotrestore / optimize ...

Page 33: Cloud Provisioning mit Juju

Barebone Charm mit Charm Tools

juju charm create vanilla

Page 34: Cloud Provisioning mit Juju

Charm metadata.yaml

name: wordpress summary: WordPress is a ... maintainer: Marco Ceppi <[email protected]> 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

Page 35: Cloud Provisioning mit Juju

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 ...

Page 36: Cloud Provisioning mit Juju

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

Page 37: Cloud Provisioning mit Juju

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

Page 38: Cloud Provisioning mit Juju

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

Page 39: Cloud Provisioning mit Juju

Tools in Action-Skripten

• action-get um Parameter abzufragen

• action-set für Rückgabewerte

• action-fail zum Signalisieren von Fehlern

Page 40: Cloud Provisioning mit Juju

Action-Kommandos

juju action defined mysql

juju action do mysql/0 snapshot filename=out.tar.gz

juju action fetch <ID>

juju action status <ID>

Page 41: Cloud Provisioning mit Juju

Einige Charms

ceph

mediawiki mongodb

cassandra

rails

mysql

wordpress

rabbitmq

haproxy

apache2

hadoopsquid

hbase

couchdb

postgresqlnfsntp

Page 42: Cloud Provisioning mit Juju

Viel Spaß in den Wolken

Page 43: Cloud Provisioning mit Juju

Bildquellen 123RFiStockphotoeigene Quellen