Używam marionetki do dystrybucji kluczy SSH, tak jak:
ssh_authorized_key { "[email protected]":
ensure => present,
key => 'xxxx',
type => 'ssh-rsa',
user => 'deploy',
}
Plik ~ / .ssh / Author_keys ostatecznie zawiera mieszankę kluczy z wielu klas, co jest pożądanym rezultatem. Jednak jeśli klucz zostanie ręcznie dodany do $ HOME / .ssh / uprawnione_ klucze, Puppet pozostawi go na swoim miejscu. Czy istnieje sposób na zawsze usunięcie dowolnego klucza, który nie został wyraźnie zdefiniowany w manifeście?
Mam wersję marionetkową 2.7.1.
Odpowiedzi:
Począwszy od wersji Puppet 3.6 można teraz usuwać niezarządzane klucze autoryzowane SSH za pomocą
user
typu. Na przykład,źródło
Zamiast korzystać z
ssh_authorized_key
zasobów, postanowiłem zdefiniowaćauthorized_keys
zasób, który pobiera listę wszystkich kluczy SSH dla jednego użytkownika. Definicja wygląda następująco:$ssh_keys
parametr przyjmuje wszystkie niezbędne klucze jako listę.authorized_keys.erb
Szablon wygląda tak:Stosowanie
Warunkowe dodawanie kluczy SSH (na przykład w różnych klasach) jest również łatwe dzięki
+>
operatorowi Puppet :Dzięki tej metodzie użytkownik nigdy nie będzie miał kluczy, które nie są wyraźnie określone w konfiguracji Puppet. Ciąg kluczy jest używany w uprawnionych kluczach tak, jak jest, więc dodawanie opcji i ograniczeń jest banalne.
Z przyjemnością usłyszę, czy inni z powodzeniem zastosowali tę metodę!
źródło
Powinieneś być w stanie to zrobić za pomocą metatype zasobów . NA PRZYKŁAD
Ustawienie
noop => true,
uniemożliwia usunięcie. Zamiast tego marionetka zgłosi to, co zostanie usunięte. Jeśli tego chcesz, usuń instrukcję noop .Dyskutowana jest idealna składnia do wykonywania operacji na niezarządzanych zasobach .
EDYCJA: Jak wspomniano w komentarzach, ta odpowiedź nie działa.
źródło
puppet-agent[9895]: (/Stage[main]//Resources[ssh_authorized_key]) Failed to generate additional resources using 'generate': Attribute 'user' or 'target' is mandatory.
próbowałem dodać użytkownika, a potem mówiCould not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter user
. Jakieś pomysły?Na Puppet Forge opublikowano moduł na licencji Apache, wersja 2.0, który oferuje tę możliwość.
Jednak opiera się na concat Puppet zamiast szablonów.
https://github.com/nightfly19/puppet-ssh_keys/tree/master/manifests
Zamiast przekazywania tablicy kluczy jako parametru definiujesz osobne wpisy dla każdego klucza.
Inne podejście niż Mikko, ale taki sam wynik netto.
źródło