Jak skopiować pliki na wszystkie maszyny za pomocą Puppet Master?


12

Zainstalowałem puppetmaster w Ubuntu 11.04 i zainstalowałem puppet u wszystkich moich klientów. Dołączyłem do wszystkich moich klientów marionetek z mistrzem marionetek. Czy jest możliwe skopiowanie pliku do wszystkich tych klientów marionetek z Master Puppet?

Na przykład:

Mam plik o nazwie datas.xls na moim pulpicie (Puppet Master). Jak skopiować te pliki do wszystkich moich klientów marionetek w następującej lokalizacji (/ home / operator1 / Desktop / Backup /)?

Aktualizacja:

  • Cześć, nadal nie można udostępnić pliku.
  • Jak zmodyfikować ten wiersz, puppet:///modules/module_name/datas.xlsplik do skopiowania znajduje się w tej lokalizacji /etc/puppet/modules/mymodule/manifests/datas.xls?

Błąd na kliencie: (rozwiązany)

root@testing:~# puppetd --test 
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class sudo at /etc/puppet/manifests/site.pp:2 on node testing.chn.jd.com
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run

Błąd 2 na kliencie:

root@tme13:~# puppetd --test
err: Could not run Puppet configuration client: Could not retrieve local facts: bad URI(is not URI?): http://169.254.169.254/2008-02-01/meta-data/<HTML><HEAD><TITLE>HTTP access denied</TITLE></HEAD><BODY><img src/

Nowa aktualizacja:

Jak zastosować ten moduł do wszystkich węzłów? Tak, że plik zostanie skopiowany do wszystkich węzłów.


... ale nie zadałeś już tego pytania? askubuntu.com/questions/61080/…
fossfreedom

Tak, ale rozwiązanie już nie działa.
karthick87

Również nie jest to bardzo jasne, użytkownik skopiował zawartość z niektórych stron internetowych.
karthick87

Nadal nie jest to powód, aby zadawać nowe pytanie (?) Btw Skopiowałem ten link z linku, który dał mi Jorge i kazał mi go c / p;) afaik, co jest w tej odpowiedzi, nadal działa !?
Rinzwind,

Odpowiedzi:


24

Kukiełka jest trochę potworem, który pomaga ci się skupić, więc uczenie się na przykładzie nie jest niczym złym. Poniżej zakładam, że używasz modułów - w komentarzu powiedz, jeśli nie jesteś, lub jeśli potrzebujesz więcej informacji o tym, jak złożyć moduł razem.

Załóżmy, że uruchamiasz nowy moduł o nazwie mymodule. W katalogu domowym marionetek (zwykle /etc/puppet) w głównym marionetce należy utworzyć katalog manifestów i plików:

mkdir -p modules/mymodule/manifests
mkdir -p modules/mymodule/files

Następnie utwórz plik w tym katalogu o nazwie init.ppi wprowadź:

class myfile {
    file { '/home/operator1/Desktop/Backup':
        ensure => directory,
        mode => '0755',
        owner => 'operator1',
        group => 'operator1',
    }

    file { "/home/operator1/Desktop/Backup/datas.xls":
        mode => "0644",
        owner => 'operator1',
        group => 'operator1',
        source => 'puppet:///modules/module_name/datas.xls',
    }
}

Następnie umieść datas.xlsplik w katalogu modułu files- w tym przykładzie w modules/mymodule/files/. (Uwaga: może istnieć również templateskatalog szablonów ).

W manifests/site.pppliku musisz zaimportować moduł i dołączyć klasę, wykonując coś takiego:

import 'mymodule'

node base {
    include myfile
}

node server1 inherits base {}
node server2 inherits base {
    # extra config here
}

Upewnij się, że wszystkie twoje węzły dziedziczą od podstawy i to powinno być wszystko, co musisz zrobić. Począwszy od kukiełki 0.25 możesz używać wyrażeń regularnych w nazwie węzła, np .:

node server[0-9] inherits base {}

Daj mi znać w komentarzach, jeśli potrzebujesz dodatkowych wyjaśnień.

Konfigurowanie klienta do rozmowy z mistrzem marionetek

Na kliencie musisz wykonać:

sudo apt-get install puppet

Następnie edytuj /etc/default/puppeti zmień START=nona START=yes.

Edytuj /etc/puppet/puppet.confi dodaj wiersz do [main]sekcji, aby powiedzieć mu, gdzie znaleźć mistrza marionetek:

server=puppet.mydomain.com

Następnie możemy wykonać uruchomienie testowe sudo puppetd --test. Jeśli pojawią się błędy klucza, może być konieczne przejście do głównego serwera kukiełkowego i podpisanie klucza klienta. Aby sprawdzić dokładną nazwę, którą możesz zrobić, sudo puppetca --lista następnie sudo puppetca --sign server1.mydomain.com(lub inną nazwę serwera z polecenia list).

Teraz rozpocznij służbę marionetek sudo service puppet starti powinieneś być daleko. Usługa lalek będzie działać co godzinę, więc jeśli zaktualizujesz swoje przepisy na marionetki, wszyscy klienci również zostaną zaktualizowani.

Usuwanie plików

W oryginalnym pytaniu zauważam, że chciałeś wiedzieć, jak usunąć pliki. Zmodyfikowałbyś manifests/init.ppto

file { "/home/operator1/Desktop/Backup/datas.xls":
    ensure => absent,
}

Inne przydatne wskazówki

Jeśli masz problemy, możesz zrobić kilka rzeczy. Na dowolnej maszynie z zainstalowaną marionetką możesz sprawdzić swoją składnię, uruchamiając

puppet --parseonly --ignoreimport myfile.pp

lub sprawdź wszystko, wyjmując --ignoreimportflagę, ale może to prowadzić do śmiesznych komunikatów o błędach, które tak naprawdę nie są błędami, które znalazłem. Możesz również uruchomić program kukiełkowy na żywo na maszynie klienta kukiełkowego, wykonując:

sudo puppetd --test

który pokazuje różne przydatne dane wyjściowe, z błędami i ostrzeżeniami podświetlonymi w różnych kolorach. Jeśli chcesz jeszcze więcej szczegółów, możesz uruchomić:

sudo puppetd --test --debug

ale generalnie generuje tyle mocy wyjściowej, że trudno się z nią przedzierać, więc rób to tylko wtedy, gdy już wypróbowałeś poprzednie kroki i utknąłeś i musisz zobaczyć, jak wszystko jest zrobione.

Zauważ, że jest to oparte na marionetce 0.25.x, której obecnie używam w pracy, a także wersji w Ubuntu 10.04. Kod lalek w sekcji głównej na pewno nadal będzie działał, ale późniejsze wersje lalek mają nowe flagi, które mogą pomóc w debugowaniu danych wyjściowych.


Pozwól mi wypróbować to rozwiązanie dziś wieczorem i daj znać o aktualizacjach. Wielkie dzięki :)
karthick87

Jak zmodyfikować ten wiersz, puppet:///modules/module_name/datas.xlsplik do skopiowania znajduje się pod tą lokalizacją/etc/puppet/modules/mymodule/manifests/datas.xls
karthick87,

Plik, który ma zostać skopiowany, należy umieścić /etc/puppet/modules/mymodule/files/datas.xls- zaktualizuję odpowiedź, aby była bardziej zrozumiała.
Hamish Downer

Ok, dziękuję. jak uruchomić manifesty?
karthick87

Jak zastosować ten moduł do wszystkich węzłów od puppetmaster? Zamiast stosować go silnie do każdego węzła, uruchamiającpuppet agent --test
karthick87
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.