2012-12-30 13 views
6

Mam pudełko bazowe CentOS w Vagrant, że stoję z manifestem marionetki. Oto co jest w manifeście do tej pory:Manifestacja marionetki - komendy "sudo"?

class base { 
    exec { "sudocmd": 
     path => ["/usr/bin/","/usr/sbin/","/bin"], 
     command => "sudo yum update -y", 
    } 

    package { "man": 
     ensure => present, 
    } 

    package { "bind": 
     ensure => present, 
    } 

    package { "bind-utils": 
     ensure => present, 
    } 
} 

include base 

Ale kiedy mówię vagrant up, pojawia się błąd, że sudocmd yum update wyszedł z 1. Szukałem w internecie, ale nie znalazłem rozwiązanie to jeszcze. Jakaś pomoc?

======== EDYCJA ========= Przeczytałem odpowiedzi i zgadzam się - dzięki chłopaki. Po prostu używam tego na dev boxie, żeby się rozejrzeć i potrzebowałem go, żeby być na bieżąco, zanim zacznę nad nim pracować.

Odpowiedz

3

Tak więc Puppet nie jest przeznaczony do wykonywania zadań, takich jak aktualizacja yum. Jest to narzędzie do zarządzania konfiguracją, a nie coś, co całkowicie zastępuje tego rodzaju zadanie. Poza tym napotkasz wiele problemów z tym. Co się stanie, jeśli marionetka zostanie zemonizowana? Czy wpłynie to negatywnie na nasze środowisko produkcyjne? Co się stanie, jeśli użytkownik przypadkowo uruchomi Puppet i zaktualizuje pakiet, który łamie nasze skrypty (JDK, MySQL, PHP itp.). O ile mi wiadomo, nie ma na to rozwiązania, ponieważ tak naprawdę nie jest to uważane za problem. Scott Pack over na Serverfault podał bardzo opisową odpowiedź na podobne pytanie.

11

W przypadku lalki, nie powinieneś używać sudo, po prostu uruchom polecenie yum bezpośrednio. Zwykle polecenia będą domyślnie uruchamiane jako root, ale możesz określić, który użytkownik.

exec { "sudocmd": 
    path => ["/usr/bin/","/usr/sbin/","/bin"], 
    command => "yum update -y", 
    user => root, 
} 

Jednak zalecamy, aby nie używać dowolnego rodzaju zakaz warunkowego exec z lalek. To będzie działać za każdym razem, gdy biegnie kukiełka. Jako Forrest already said nie jest to przeznaczenie marionetki. Nie użyłbym lalek dla yum update, a moje exec s zawsze mają creates, onlyif, refreshonly lub unless, aby zapewnić, że działają tylko w razie potrzeby.