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ä>
> Get-Content tiedosto -First <rivien_määrä>
Tiedoston rivien määrän laskeminen:
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:
Powershelliä UNIX-ylläpitäjille, osa 2
Alla on varsin hyvä vertailu Bashin ja Powershellin komennoista englanniksi (EDIT: sivu on sittemmin valitettavasti poistunut):
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:
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 viitata objektien ominaisuuksiin, eikä syötettä tarvitse UNIX:in komentorivien tapaan ensin siistiä ja pilkkoa lukuisilla komennoilla (esim. sed, cut, tr ja awk) oleellisen tiedon erottelemiseksi.
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 se, että uudet määritellyt resurssit pitää muistaa lisätä site.pp-tiedostoon.
Yksinkertaisempi ja myös Foremanin kanssa toimiva ratkaisu on luoda määritellyt resurssit suoraan Puppet-moduulin pääluokasta (sovellettu täältä):
Hakemistorakenteen luonti rekursiivisesti Puppetilla
Puppetin File-resurssilla hallitaan tyypillisesti yksittäisiä tiedostoja, hakemistoja tai linkkejä. Tämä on ongelmallista, jos hallittava tiedosto on syvän hakemistorakenteen alla, eikä hakemistorakennetta ole luotu esimerkiksi ohjelman asennuksen yhteydessä. File-resurssi osaa kuitenkin luoda useita tiedostoja, kun sen otsakkeelle ($title) annetaan merkkijonon sijaan lista-tyyppinen muuttuja. Alla esimerkki bind-moduulista
file { [ '/var/named/chroot',
'/var/named/chroot/var',
'/var/named/chroot/var/named',
'/var/named/chroot/Var/named/data' ]:
ensure => directory,
owner => root,
group => "${::os::params::admingroup}",
mode => 755,
require => Class['bind::install'],
}
Bindin zone-tiedostoja ei voi asentaa, ennen kuin hakemisto /var/named/chroot/var/named/data on olemassa. Siis zone-tiedostoon pitää lisätä riippuvuus (Require) yllä olevan luettelon viimeiseen tiedostoon: