Nie zawsze, nie wszystkie informacje są dostępne w takiej formie jak powinny być. Czasem trzeba dodać nowe fakty, nowe rozwiązania. Jak je przesłać na klienta? Możemy skorzystać z opcji synchronizacji wtyczek (ang. plugin) w sekcji „main”:
pluginsync=true
Efekt:
Jun 25 16:03:52 ziutus puppet-agent[18319]: Starting Puppet client version 2.6.4
Jun 25 16:03:53 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/facter]/ensure) created
Jun 25 16:03:54 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/facter/iptables.rb]/ensure) defined content as '{md5}47bbd812e6fd7a7bdff3435c50b4687d'
Jun 25 16:03:56 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/provider]/ensure) created
Jun 25 16:03:57 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/provider/firewall]/ensure) created
Jun 25 16:03:58 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/provider/firewall.rb]/ensure) defined content as '{md5}f4c747685c2c8ef97fe78732c8153c75'
Jun 25 16:04:01 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/provider/firewall/ip6tables.rb]/ensure) defined content as '{md5}37ccb43da0c5950d33213a1082bde094'
Jun 25 16:04:03 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/provider/firewall/iptables.rb]/ensure) defined content as '{md5}09095f4df985ff6beea50e8db5c36fb7'
Jun 25 16:04:03 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/test]/ensure) removed
Jun 25 16:04:05 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/type/firewall.rb]/ensure) defined content as '{md5}babcbf3938183329b6b78795f8abaf2b'
Jun 25 16:04:05 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/type/iptables.rb]/ensure) removed
Jun 25 16:04:05 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/util]/ensure) created
Jun 25 16:04:07 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/util/firewall.rb]/ensure) defined content as '{md5}0adc814705c4f92a8191ff274801f708'
Jun 25 16:04:08 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/util/ipcidr.rb]/ensure) defined content as '{md5}225adf61f5de40fa04b4e936e388b801'
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:
gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /tmp/$(mktemp) --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --batch --list-keys 99D4C4262
Pewnie dopisze małego patch-a do apt-key aby nie musieć tak rzeźbić…
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:
#! /bin/bash
DOT_DIR=/tmp
OUTPUT_DIR=/tmp
dot -Tpng $DOT_DIR/expanded_relationships.dot -o $DOT_DIR/expanded_relationships.png
dot -Tpng $DOT_DIR/relationships.dot -o $DOT_DIR/relationships.png
dot -Tpng $DOT_DIR/resources.dot -o $DOT_DIR/resources.png
wskazówka: nie musisz tego robić na kliencie, możesz przegrać pliki na serwer centralny i tam skonwertować.
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
Zmieniamy sftp-server dostępny standardowo na wbudowany sftp:
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp -l VERBOSE
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…)
Plusy:
* wbudowane rozwiązanie
Dostawałem dużo mail-i jak poniżej:
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
Message-Id: <20120609180001.ADE45276C55@xxx.linuxexpert.pl>
Date: Sat, 9 Jun 2012 22:00:01 +0400 (MSK)
/usr/share/sendmail/sendmail: 1267: /usr/sbin/sendmail-msp: not found
Rozwiązaniem okazało się:
sudo apt-get --purge remove sendmail-base sendmail-cf sendmail-doc
Czemu nie robią dobrze pakietów jak kiedyś?
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…
Kolejna witryna WordPress