Ich versuche, VMs automatisch mit vorinstalliertem Docker bereitzustellen.
Meine Standard-init.pp sieht folgendermaßen aus:
class { 'apt':
always_apt_update => true,
}
package { [
#'build-essential',
#'vim',
#'curl',
#'zsh',
#'git-core',
#'htop',
#'wget',
#'linux-image-generic-lts-raring',
'python-software-properties'
#'lxc-docker'
]:
ensure => 'installed',
}
apt::ppa { 'ppa:dotcloud/lxc-docker':}
# refresh apt source
exec { "apt-update":
command => "/usr/bin/apt-get update && apt-get install lxc-docker --force-yes",
returns => 100
}
Der letzte Befehl exec gibt zurück (return 100 ist die Standardeinstellung für ein erfolgreiches apt-get-Update, glaube ich):
info: / Stage [main] // Apt :: Ppa [ppa: dotcloud / lxc-docker] / Exec [add-apt-repository-ppa: dotcloud / lxc-docker]: Planen der Aktualisierung von Exec [apt_update] Hinweis: / Stage [main] / Apt :: Update / Exec [apt_update] / gibt zurück: erfolgreich ausgeführt Hinweis: / Stage [main] / Apt :: Update / Exec [apt_update]: Aus 1 Ereignissen 'Aktualisierung' ausgelöst
Wenn ich jedoch ssh in die Box Docker nicht installiert ist und läuft, apt-get install lxc-docker
kann ich es dann installieren. Was mache ich falsch? Ich kann es nicht mit einer Vielzahl unterschiedlicher Konfigurationen zum Laufen bringen.
Exec['apt_update']
für Ihre Pakete eine PPA installieren. Das Erfordernis der PPA vor dem Paket erzwingt nicht die Beziehung zwischen dem Exec und dem Paket.Und hier ist eine alternative, idiomatische Antwort mit
require
:quelle