Chciałem dodać do puppet-a dodawanie klucza dla repozytoriów apt ale okazało się żeby sprawdzić czy dany klucz jest już w bazie systemu to trzeba zrobić magię podobną do tej poniżej:
Czasem trudno dość, jakie zależności między obiektami / elementami stworzyliśmy dla naszego klienta (ang. node). Rozwiązanie jest proste, na kliencie dodajemy do pliku konfiguracyjnego dyrektywy:
[agent]
graph=true
graphdir=/tmp
Konwersja plików może być dokonana przy pomocy programu dot:
Większość administratorów, wolałaby wiedzieć co puppet chce zrobić zanim pozwoli mu mieszać na serwerach produkcyjnych. Można to w miarę łatwo zobaczyć korzystając z opcji –noop:
root@ziutus:~# puppetd --test --noop
info: Caching catalog for gateway.linuxexpert.pl
info: Applying configuration version '1340171431'
notice: /Stage[main]//Node[gateway.linuxexpert.pl]/Phpldapadmin::Server[127.0.0.1]/Exec[/usr/local/bin/merge_config_files.sh /etc/phpldapadmin/config_main.php /etc/phpldapadmin/config.d/ /etc/phpldapadmin/config.php]/returns: is notrun, should be 0 (noop)
notice: /Stage[main]/Rsyslog/Service[rsyslog]/enable: is false, should be true (noop)
notice: /Stage[main]/Knockd/Service[knockd]/ensure: is stopped, should be running (noop)
notice: /Stage[main]//Node[gateway.linuxexpert.pl]/Ssh_authorized_key[root_ziutus]/ensure: is present, should be absent (noop)
notice: Finished catalog run in 6.35 seconds
Następnie tworzymy grupę sftp, dodajemy do niej użytkowników i konfigurujemy zasady dla tych użytkowników:
Match group sftp
X11Forwarding no
ChrootDirectory %h
AllowTcpForwarding no
ForceCommand internal-sftp
Wady rozwiązania:
* nie działa scp
* nie działa rsync (możesz oczywiście zbudować w chroot środowisko dla rsync ale nie o to chodzi w łatwych rozwiązaniach…)
Jeżeli plik /etc/nologin istnieje sshd nie pozwoli na logowanie zdalne na inne konto niż root. Więc jeżeli macie dostęp do konsoli lokalnej możecie na 100% zablokować logowanie na root-a, natomiast jeżeli macie tylko ssh (mały serwerek gdzieś podpięty), pomyśle o tym 2 razy…