Puppeteers Blog

Hieran debuggauksesta

Toisinaan Puppet-koodissa on tarve tehdä haku Hierasta, mutta se ei toimi odotetulla tavalla. Näissä tapauksissa auttaa "puppet lookup"-komento: $ puppet lookup --node www.domain.com --explain bacula::filedaemon::backup_files Data Binding "hiera" Found key: "bacula::filedaemon::backup_files" value: [ "/etc", "/var/lib/puppet/ssl", "/var/backups/local" ] Erikoista kyllä, tämä komento löytää ainoastaan ne Hieran hierarkian tasot, jotka perustuvat faktoihin: --- :backends: - yaml :hierarchy: […]

Windowsin paikallisten ryhmäkäytäntöjen muokkaus Puppetilla

Monia Windowsien asetuksia on perinteisesti muokattu ryhmäkäytänteillä ("Group Policy"). Vaikka ryhmäkäytänteiden teho onkin melko rajallinen, pystyy niillä tekemään yhtä ja toista. Microsoft on kuitenkin Powershell DSC:n kuitenkin siirtymässä tilan hallintaan perustuviin modernimpiin ratkaisuja, joten Group Policyt jäänevät lähivuosina historiaan. Tästä huolimatta ryhmäkäytänteitä hyödynnetään yhä erityisesti Active Directory -toimialueiden ("domain") kanssa silloin, kun halutaan standardisoida työasemien […]

Windowsin järjestelmätiedostojen ylikirjoittaminen Puppetilla

Windowsin järjestelmätiedostoja ei useinkaan pysty muuttamaan käsin - tai Puppetilla - ilman niiden suojaustason alentamista. Ongelma on siinä, että järjestelmätiedostojen omistaja on usein (pseudo)käyttäjä "TrustedInstaller", eikä edes administrator-tason käyttäjillä ole niihin kirjoitusoikeutta. Onneksi rajoitukset voi kiertää melko suoraviivaisesti käyttämällä takeown.exe -komentoa sekä puppetlabs/acl -moduulia. Alla on muokattu erästä Group Policyn XML-tiedostoa, jonka merkistökoodaus oli siinä […]

Powershelliä UNIX-ylläpitäjille, osa 12

Toisinaan tulee tarpeelliseksi etsiä yhdestä tai useammasta tiedostosta jotakin merkkijonoa ja tulostaa täsmäävä rivi sekä tiedosto, jossa se on, sekä rivinumero. GNU grepillä tämä onnistuu triviaalisti komennolla "grep -HN <pattern>": $ grep -Hn REXML *.rb group_policy.rb:71: dFile = REXML::Document.new( File.new("#{dDir}\#{array[0][0]}.admx")) group_policy.rb:72: eFile = REXML::Document.new( File.new("#{eDir}\#{array[0][0]}.adml")) group_policy.rb:154: dFile = REXML::Document.new( File.new("#{dDir}\#{sys_tShort}.admx")) group_policy.rb:155: eFile = REXML::Document.new( File.new("#{eDir}\#{sys_tShort}.adml")) […]

Powershelliä UNIX-ylläpitäjille, osa 11

Windowsin tuoteavain ("Product Key") löytyy esiasennetuissa koneissa usein koneen pohjasta, mutta entäpä jos Windows onkin jälkiasennettu, tai koneen pohjassa oleva tarra ei edustakaan todellisuutta? Jos tällainen kone soseutuu, ei tuoteavainta löydy tietenkään mistään fyysisestä paikasta, ja tuloksena on kone ilman Windowsia; tämä voi toki olla toivottavakin asiaintila, mutta lähdetään siitä oletuksesta, ettei näin ole. Tuoteavain […]

Powershelliä UNIX-ylläpitäjille, osa 10

Windowsin käynnistyviin ohjelma- ja kirjastotiedostoihin liittyy paljon erilaista metatietoa, esimerkiksi ohjelman versionumero, julkaisija yms. Näiden metatietojen tarkastelu on toisinaan hyödyllistä, etenkin ohjelmistoja testattaessa. Alla OpenVPN:n bin -kansion sisältö kokonaisuudessaan: PS C:Program FilesOpenVPNbin> Get-ChildItem Directory: C:Program FilesOpenVPNbin Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 7.3.2016 16:40 1753440 libeay32.dll -a--- 7.3.2016 16:40 226432 liblzo2-2.dll -a--- […]

Powershelliä UNIX-ylläpitäjille, osa 9

Toisinaan on tarpeen lisätä tekstitiedoston loppuun rivejä. UNIX:ssa tämä onnistuu helposti echo-komennolla: $ echo matti >> vpn.pass $ echo salasana >> vpn.pass $ cat vpn.pass matti salasana Sama onnistuu Powershellissä, mutta ei suinkaan Write-Host -komennolla, joka olisi echo-komennon lähin vastine, vaan Add-Content -komennolla: > Add-Content vpn.pass -Value matti > Add-Content vpn.pass -Value salasana > Get-Content […]

Powershelliä UNIX-ylläpitäjille, osa 8

Tietyn nimisten tiedostojen (tai tyyppisten) poistaminen hakemistosta on melko suoraviivaista GNU findilla: $ ls README.txt stderr.log stdout.log $ find . -maxdepth 1 -type f -name "*.log" -exec rm -f {} + $ ls README.txt Valinta "maxdepth 1" estää findia poistamasta tiedostoja mahdollisista alihakemistoista. Toinen vaihtoehto on putkittaa tiedostolistaus xargsille: $ ls README.txt stderr.log stdout.log $ […]

Powershelliä UNIX-ylläpitäjille, osa 7

Tulosteiden uudelleenohjaus ja paluuarvojen käsittely toimii lähes samoin *NIX-shelleissä ja Windowsin Powershellissä. Alla tarkistetaan Linuxin systemctl-komennolla olemassa olevan ("openvpn") ja olemattoman ("fake") palvelun tila, ohjataan sekä tuloste että virhetuloste bittitaivaaseen ja tulostetaan komennon paluuarvo: $ systemctl status openvpn > /dev/null 2>&1 $ echo $? 0 $ systemctl status fake > /dev/null 2>&1 $ echo $? […]

Powershelliä UNIX-ylläpitäjille, osa 6

UNIX-tyyppisissä käyttöjärjestelmissä on tulee usein tarve etsiä jostain hakemistosta lähiaikoina (alla minuutin sisällä) muuttuneet tiedostot: $ find /var/log/ -mmin -1 /var/log/debug /var/log/user.log /var/log/auth.log /var/log/syslog Sama onnistuu myös Powershellissä ainakin kahdella tavalla, joista ensimmäinen on toiminnallisesti identtinen yllä olevan komennon kanssa: PS C:UsersAdministratorDownloads> Get-ChildItem . -Recurse|Where-Object { $_.LastWriteTime -ge $(Get-Date).AddMinutes(-120) }|Select LastWriteTime, Name LastWriteTime Name ------------- […]

Useiden resurssien luonti lista-parametrien avulla

Toisinaan tulee tarve luoda useita samankaltaisia resursseja, joissa vain jonkin yksittäisen ominaisuuden arvo muuttuu. Esimerkiksi intranetin webbipalvelimeen voi joutua sallimaan yhteydet palomuurin läpi sekä sisäverkon että VPN:n osoiteavaruudesta. Vaikka Puppet ei suoraan tuekaan iteraatiota, sitä voi emuloida antamalla resurssin nimeksi ($title) listan merkkijonon sijaan. Esimerkiksi Puppet-Finlandin webserver-moduulissa on parametrit $allow_address_ipv4 ja $allow_address_ipv6. Ne voivat saada […]

Powershelliä UNIX-ylläpitäjille, osa 5

Windowsissa tekstimuotoisia lokitiedostoja UNIX:in tapaan ole, vaan niitä vastaa EventLog, jonka sisältöä voi tutkia kätevästi PowerShellillä. EventLogin lokit (Logs) voi listata seuraavasti: PS C:> Get-EventLog -List Max(K) Retain OverflowAction Entries Log ------ ------ -------------- ------- --- 20 480 0 OverwriteAsNeeded 3 787 Application 20 480 0 OverwriteAsNeeded 0 HardwareEvents 512 7 OverwriteOlder 0 Internet Explorer […]

Puppet-moduulien laadunvarmistus, osa 1: automaattiset tarkistustyökalut

Puppet-moduulien laatu pysyy korkeana, kun syntaksi- ja tyylivirheitä päästetä edes versionhallintaan asti. Puppet-koodin syntaksivirheet löytyvät helposti: $ puppet parser validate <tiedosto> ERB-templateiden virheet saa selvitettyä seuraavalla tavalla: $ erb -P -x -T '-' <tiedosto>|ruby -c JSON-tiedostojen (metadata.json) virheet etsiminen vaatii hieman kikkailua: $ cat <tiedosto>|json_pp -f json -t null Tyylivirheitä voi etsiä puppet-lint -työkalulla: $ […]

Käyttöjärjestelmäerojen hallinta Puppetissa, osa 1

Puppet-moduulit on melko helppo rakentaa siten, että ne saa helposti toimimaan eri käyttöjärjestelmissä ja käyttöjärjestelmäversioissa. Alla ovat itse hyväksi toteamani kolme korkea tason tapaa käyttöjärjestelmäerojen hallintaan kevyimmästä raskaimpaan: Params-luokan käyttö Käyttöjärjestelmäriippuvaisten aliluokkien käyttö Uuden moduulin rakentaminen Menetelmillä 1 ja 2 pystyy käytännössä hallitsemaan kaikki Unix-tyyppisten käyttöjärjestelmien väliset erot. Menetelmää 3 ei juuri tarvita, paitsi jos […]

Augeas-resurssien luonnista ja debuggaamisesta

NOTE: this article is now also available in English. Puppetin Augeas-resurssilla voidaan muokata konfiguraatiotiedostojen osia sen sijaan, että hallittaisiin koko tiedostoa esim. templatella tai staattisella tiedostolla. Koko tiedoston hallinta tuottaa yleensä varmemmin ja vähemmällä vaivalla halutun lopputuloksen, mutta erityisesti luettelomaisten konfiguraatiotiedostojen tapauksessa Augeas-resurssi on erittäin käyttökelpoinen. Augeaksen käyttö ei-triviaaleissa tapauksissa on kuitenkin varsin haastavaa, ja […]

Powershelliä UNIX-ylläpitäjille, osa 4

Lisävinkkejä tuli keksittyä nopeammin kuin alunperin osasin uumoillakaan. Näille on ollut käyttöä jo useaan kertaan. Prosessin ID:n löytäminen: $ ps aux|grep <nimi> > Get-Process -Name <nimi> Prosessin tappaminen PID:n perusteella $ kill <pid> > Stop-Process -Id <pid> Prosessin tappaminen nimen perusteella $ pkill <nimi> > Stop-Process -Name <nimi> Powershelliä UNIX-ylläpitäjille -artikkelisarjan muut osat: Osa 1 […]

Powershelliä UNIX-ylläpitäjille, osa 3

Powershelliä konffatessa on tullut taas törmättyä useisiin varsin käyttökelpoisiin komentoihin. Alla ei-kattava lista, sillä lisää on luvassa sopivalla hetkellä. Hakemiston poistaminen rekursiivisesti: $ rm -rf <hakemisto> > Remove-Item -Recurse -Path <hakemisto> Tiedoston viimeisten rivien näyttäminen: $ cat <tiedosto>|tail -n <rivien_määrä> > Get-Content <tiedosto> -Last <rivien_määrä> Tiedoston ensimmäisten rivien näyttäminen $ cat <tiedosto>|head -n <rivien_määrä> > […]

Powershelliä UNIX-ylläpitäjille, osa 2

Alla on varsin hyvä vertailu Bashin ja Powershellin komennoista englanniksi (EDIT: sivu on sittemmin valitettavasti poistunut): BASH and PowerShell Quick Reference Kuten näkyy, Powershellissä on valmiina melko suuri määrä UNIX-tyyppisiä komentojen aliaksia. Aliakset viittaavat kuitenkin Powershell-komentoihin, joten esimerkiksi niiden valitsimet poikkeavat merkittävästi UNIX-komentojen vastaavista. Powershelliä UNIX-ylläpitäjille -artikkelisarjan muut osat: Osa 1 Osa 2 Osa 3 […]

Powershelliä UNIX-ylläpitäjille, osa 1

Windows-työasemien ja -palvelinten ylläpidosta voi tehdä huomattavasti tehokkaampaa ja hauskempaa Windows Powershellillä. Aiempaan Windowsin komentoriviin (cmd.exe) verrattuna Powershell on varsin ylivoimainen. Tietyt toimet ovat Powershellissä jopa helpompia kuin Unixin komentorivissä kuten Bashissa. Powershellissä käsitellään tekstirivien tai binääridatan sijaan objekteja. joita voidaan putkittaa komennolta toiselle. Objektien käsittely on usein huomattavasti yksinkertaisempaa kuin tekstin, koska komennoissa voidaan […]

Määriteltyjen resurssien luonti suoraan Puppet-luokista

Jotkin Puppet ENC:t (External Node Classifier), hyvänä esimerkkinä Foreman, eivät tue määriteltyjen resurssien (Defined Resource Types) käyttöä suoraan, vaan kaikki konfiguraatiot pitää sisällyttää Puppet-luokkiin. Myös Hieran kanssa määritellyt resurssit ovat hieman ongelmallisia, koska ne pitää erikseen luoda create_resources funktiolla. Eräs ratkaisu on määrittää kaikki create_resources -funktiot site.pp-tiedostossa (sovellettu täältä): create_resources('mysqldump::backup',hiera('mysqldump_backups', {})) Tämän lähestymistavan ongelma on […]

Categories

#aad #Access #acl #alertmanager #ansible #ansible module development #Apache #API #augeas #authentication #authorization #automation #automatization #aws #azure #backup #bash #bitbucket #buildbot #cache #centos #cloud #cloud-init #cloudflare #cloudfront #cluster #connectionsJpa #control repo #custom fact #database #debian #devops #digital sovereignty #DNS #docker #domain mode #duplo #edenred #ejabberd #email #encryption #erb #europe #eyaml #fabric #facter #facts #fargate #fedora #file #finnish #foreman #freeipa #git #github #gitlab #gnome #google #grafana #hammer #hiera #IAM #import #infinispan #Infrastructure as Code #ipmi #irc #jboss #jdk #jenkins #JMESPath #json #kanban #keycloak #letsencrypt #librarian-puppet #librenms #linkedin #Linux #Location #loop #marketing #mautic #Mellon #mfa #microsoft #monitoring #mysql #nagios #network-manager #oauth #oauth2 #office365 #oidc #openshift #open source #openvpn #oxygen #packer #paranormal #pdk #people #php #pkcs7 #pomodoro #Powershell #preseed #presentation #profiles #prometheus #provisioning #puppet #puppet-bolt #puppet-litmus #puppetboard #puppetdb #Puppetfile #puppetserver #puppet types and providers #pxeboot #qemu #quality #r10k #rds #recruitment #redirect #Restrict #Reverse Proxy #robotframework #roles #rspec #ruby #SAML #selinux #sem #shell #showsql #snmp #snmpd #software developement #spam #ssh #sso #standardization #systemd #systemd-resolved #teams #terraform #twilio #ubuntu #user-data #vagrant #vanity awards #variable #vim #virtualbox #visualstudio #webdevelopment #wildfly #Windows #wireguard #wordpress #workflow #x11 #xmpp #zimbra
We are
 Puppeteers
menucross-circle