Varnish – Asennus ja konfigurointi

24 tammikuun, 2013 Jätä kommentti

 

Mikä on varnish?

Varnish on välityspalvelin eli reverse proxy. Se hoitaa internetistä tulleiden pyyntöjen välittämisen palvelimelle tehokkaasti, mikä mahdollistaa palvelimelle suuremman kävijämäärän sekä pienentää sivuston latausnopeutta.

 

Suorituskyvyn testaus

Apachen suorituskykyä kannattaa testata ennen Varnishin asennusta, jotta näkee kuinka paljon Varnish on nopeuttanut palvelimen toimintaa.

Varnishin asennuksen jälkeen luvut voi vaikka nostaa tuhanteen ja 99% pyynnöistä saa silti vastauksen alle viidessä sekunnissa.

Esimerkki

$ab -n 100 -c 100 http://esimerkki.org/

-c HTTP yhteyksien määrä

-n Pyyntöjen määrä

 

Asennus

Asennettaan  Varnish ja konfiguroidaan se jakamaan sisältöä portin 80 kautta. Sisältö haetaan portin 8080 kautta webpalvelimelta (apache).

$sudo apt-get install varnish

muokataan tiedostoa /etc/varnish/default.vcl

$sudo nano /etc/default/varnish

backend default {
.host = ”127.0.0.1”;
.port = ”8080”;
}

Muokataan tiedostoa /etc/default/varnish ja poistetaan risuaidat Alternative 2 kohdasta. Lopputulos näyttää tältä:

$sudo nano /etc/default/varnish

DAEMON_OPTS=”-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m”

 

Apachen konfigurointi

$sudo nano /etc/apache2/ports.conf

NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080

Muutetaan myös Virtual Hostin tiedostoa. Jos käytät muuta Virtual Hostia kuin default, tee muutokset siihen.

$sudo nano /etc/apache2/sites-available/default
<VirtualHost 127.0.0.1:8080>

Lopuksi uudelleen käynnistetään Varnish ja Apache.

$sudo service apache2 restart
$sudo service varnish restart

 

Lisämateriaalia: https://www.varnish-cache.org/docs/2.1/index.html

Kategoriat:Linux Avainsanat: ,

Linux projekti – Mumble-palvelin, lopputestaus ja raportointi, vk 49 ja 50

11 joulukuun, 2012 Jätä kommentti

Projektin viimeistelyksi toistin aiemmin tehdyt asennukset ym. Ubuntu 12.04 live-cd:llä, siltä varalta että palvelimeni asetukset olisivat sotkeneet ylläpitolisäosan asennusta.

Testiasennus, Ubuntu 12.04 live-cd

Ice

Pohjalla oli LAMP-palvelin asennettuna.

$ sudo apt-get update

$ sudo apt-get install php-zeroc-ice

$ sudo service apache2 restart

/home/ubuntu/public_html/index.php

<?php
phpinfo();

?>

Avaa http://localhost/~ubuntu/ Etsi (ctrl+f) ice version. Pitäisi olla esim. 3.4.2, jos löytyy niin Ice on ladattu. Aiemmin käyttämieni ohjeiden mukaan Ice piti lisätä php dynamic extensioneihin. Huomasin, että Ice lisää itsensä oletuksena sinne asennuksen yhteydessä.

Mumble PHP interface

/home/ubuntu/public_html/

$ wget https://github.com/downloads/Kissaki/MumPI/MumPI_2.2.3.tar.gz

$ tar xvf MumPI_2.2.3.tar

MumPIn tekijän mukaan seuraaville kansioille pitää antaa kaikki oikeudet:

/MumPI

/MumPI/data

/MumPI/tmp

$ sudo chmod 777 *directory*

chmod oikeudet

owner/group/others

# 4 = read, 2 = write, 1 = execute

# 4+2 = 6 = read/write

# 4+2+1= 7 = read/write/execute

Avaa http://localhost/~ubuntu/MumPI/install/.

Sama ongelma ilmeni taas. http://localhost/~ubuntu/MumPI/admin/ näyttää pelkkää tyhjää.

$ sudo tail- 10 /var/log/apache2/error.log

[error] [client 127.0.0.1] PHP Warning:  require_once(Ice.php): failed to open stream: No such file or directory in /home/ubuntu/public_html/MumPI/classes/ServerInterface.php on line 6
[error] [client 127.0.0.1] PHP Fatal error:  require_once(): Failed opening required ’Ice.php’ (include_path=’.:/usr/share/php:/usr/share/pear’) in /home/ubuntu/public_html/MumPI/classes/ServerInterface.php on line 6

En löytänyt ratkaisua ongelmalle.

Ylläpito ja hallinta Mumble-clientin kautta

Web-interface ei toiminut, joten tässä on lyhyt opas Mumble-palvelimen ylläpitoon asiakasohjelman kautta.

Ensiksi luodaan Mumble superuser

$sudo dpkg-reconfigure mumble-server

Kirjaudu Mumble-palvelimelle superuserina. Nyt voit muokata käyttäjäoikeuksia ja luoda pysyviä kanavia. Ensiksi kannattaa luoda uusi käyttäjä itsellesi ja antaa sille admin oikeudet, ettei superuseria tarvitse käyttää turhaan.

Käyttäjä pitää kuitenkin ensin rekisteröidä palvelimelle, ennen kun sille voi määritellä oikeuksia. Valikkorivistä Self -> Register.

Kuvassa luotu pysyvä kanava, jossa 2 rekisteröityä käyttäjää.

servutesti

Lisäsin käyttäjän testikanavan admin ryhmään.

oikeudetmumble

Projektin loppuraportti

Alunperin suunnittelin Mumble-palvelimen ylläpidon toteuttamista web-käyttöliittymän kautta, mutta niiden asentaminen epäonnistui useista yrityksistä huolimatta. Asennuksen yhteydessä ilmenneet ongelmat vaativat epäkäytännöllisiä ratkaisuja(jotka eivät välttämättä edes toimineet), mikä kyseenalaistaa Mumble-palvelimen web-käyttöliittymän laatua.

Jatkossa aion hoitaa oman palvelimeni ylläpidon asiakasohjelman kautta ja ellei olosuhteet vaadi nimenomaan web-käyttöliittymää, niin suosittelisin muille samaa.

Projekti eteni aikataulun mukaisesti varsinkin alkuvaiheissa, mutta ongelmien ilmetessä eteneminen hidastui ja projektin vaiheiden toteuttaminen ei mennyt aikataulun mukaisesti.

Itse Mumble-palvelin toimii täydellisesti ja on täysin käyttökelpoinen jokapäiväiseen käyttöön. Palvelimen saa myös salasanan määrittelemällä, jolla voidaan estää ulkopuolisten pääsy palvelimelle.

Jos huomasit virheitä projektin toteuttamisessa tai tiedät ratkaisun ongelmiin, niin jätäthän kommentin.

 

Aiemmat projektin vaiheet:

https://miroseppala.wordpress.com/2012/10/30/linux-projekti-mumble-palvelin-ja-sen-yllapito/

https://miroseppala.wordpress.com/2012/11/13/linux-projekti-mumble-palvelin-viikot-44-45-ja-46/

https://miroseppala.wordpress.com/2012/11/27/linux-projekti-mumble-palvelin-viikot-47-ja-48/

 

Tämä projekti on osana Tero Karvisen Linux-Projekti kurssia

http://terokarvinen.com/2012/aikataulu-%E2%80%93-linux-projekti-ict4tn018-1

Kategoriat:Linux Avainsanat:

Linux keskitetty hallinta – Mumble/mumble-server moduuli

6 joulukuun, 2012 Jätä kommentti

Aihe

Valitsin moduulin aiheen tekemäni Linux projektin mukaan. Alunperin moduuli olisi asentanut mumble web interfacelle tarvittavat osat ja muuttanut asetuksia oikeiksi.

Pluginit eivät kuitenkaan suostuneet toimimaan, joten moduulin aihetta piti muuttaa. Päätin tehdä moduulin joka asentaa mumble clientin ja luo ohjeet palvelimeen yhdistämiselle. Tein myös manifestin mumble-palvelimen asennukselle, ylläpidolle ja muokkaamiselle. Ihanteena oli asentaa moduulin avulla palvelin yhelle koneelle ja clientti(jossa on palvelimen tiedot valmiiksi) muihin koneisiin.

En kuitenkaan saannut selvitettyä, minne Mumble tallentaa palvelimien tiedot, vaikka yritin $ dpkg –listfiles mumble komennolla sitä etsiä. Päädyin luomaan ohjeet kaikkiin asennattaviin koneisiin. Ohjeesta löytyy tiedot, miten Mumble-palvelimeen yhdistetään.

Palvelimen asentaminen yhdelle koneelle ja clientin muihin ei onnistunut, tämä johtui lähinnä ajan puutteesta. En ehtinyt perehtymään erilaisiin ratkaisuihin. Tein kuitenkin manifestin Mumble-palvelinta varten, joka kuitenkin toimii erikseen ajettaessa.

Mumble moduuli

$ tree -A

.
├── files
│ ├── mumblelogin
│ └── mumble-server.ini
└── manifests
├── init.pp
└── murmur.pp

#init.pp
class mumble {
package { ’mumble’:
ensure => installed,
}

file { ’mumblelogin’:
path => ’/tmp/mumblelogin’,
ensure => file,
source => ’/home/user/puppet/modules/mumble/files/mumblelogin’,
}
}

Testaus:

$ sudo puppet apply –modulepath ./modules/ -e ’include mumble’
notice: /Stage[main]/Mumble/File[mumblelogin]/ensure: defined content as ’{md5}9278b9cec74ef097bc8182dc23c76240’
notice: Finished catalog run in 0.16 seconds

Mumble-palvelin manifesti

#installs mumble-server with correct configurations (/etc/mumble-server.ini). Ensures server keeps running
#restarts mumble-server when /etc/mumble-server.ini is modified
#murmur.pp
package { ’mumble-server’:
ensure => present,
before => File [’/etc/mumble-server.ini’],
}

file { ’mumble-server.ini’:
path => ’/etc/mumble-server.ini’,
ensure => present,
source => ’/home/user/puppet/modules/mumble/files/mumble-server.ini’,
require => Package [’mumble-server’],
}

service { mumble-server:
require => Package [’mumble-server’],
ensure => running,
subscribe => File [’/etc/mumble-server.ini’]
}

Testaus:

/puppet/modules/mumble/manifests/

$ sudo puppet apply murmur.pp
notice: /Stage[main]//File[mumble-server.ini]/ensure: defined content as ’{md5}53e5161ea9da10ac7bf21235da38b784’
notice: /Stage[main]//Service[mumble-server]/ensure: ensure changed ’stopped’ to ’running’
notice: /Stage[main]//Service[mumble-server]: Triggered ’refresh’ from 1 events
notice: Finished catalog run in 0.31 seconds

Lähteet:

http://terokarvinen.com/2012/aikataulu-linuxin-keskitetty-hallinta-ict4tn011-2-puppet

http://docs.puppetlabs.com/learning/modules1.html

 

Kategoriat:Linux

Linux projekti – Mumble-palvelin viikot 47 ja 48

27 marraskuun, 2012 2 kommenttia

Viikko 47 ja 48 – Ongelmanratkaisua

Viikolla 46 ilmeni ongelmia MAP:n asennuksen kanssa. Kun asennussivu pyysi tietokannan nimeä, se ei hyväksynyt sitä aluksi. Poistin tietokannan ja tein uuden phpmyadminin kautta oletusasetuksia käyttäen, tällä kertaa MAP hyväksyi kaiken ja loi tarvittavat taulut.


Asennuksen jälkeen MAP:n ylläpitosivu ei kuitenkaan avautunut. Aloin käymään läpi asennusohjeita tarkistaakseni, että olin tehnyt kaikki oikein. Ohjeista ei kuitenkaan löytynyt mitään hyödyllistä. Kokeilin myös ottaa yhteyttä MAP:n ylläpitäjiin IRC:n kautta, mutta kanava vaikutti kuolleelta ja kukaan ei vastannut.

Useiden tuntien pähkäilyn jälkeen päätin kokeilla toista Mumble-palvelin web interfacea(MumPI). Asennus sujui ongelmitta, mutta sama ongelma ilmeni jälleen kerran ja MumPI:n sivu ei auennut. Vasta tässä vaiheessa tajusin alkaa käymään lokeja läpi, kun alkoi näyttämään siltä, että vika on tuskin MAP:ssa.

$ sudo tail -10 /var/log/apache2/error.log

Lokista paljastui heti Iceen ja PHP:n liittyviä virheitä.

PHP Warning: PHP Startup: Unable to load dynamic library
’/usr/lib/php5/20090626/IcePHP.so’ – /usr/lib/php5/20090626/IcePHP.so: cannot
open shared object file: No such file or directory in Unknown on line 0

Käytin tässä olevaa ratkaisua ja apache ei enää ilmoittanut samasta virheestä.

Seuraava virhe johtui siitä, että olin lisännyt /etc/php5/apache2/php.ini tiedoston dynamic extensions kohtaan extension=/usr/lib/php5/20090626+lfs/IcePHP.so

PHP Warning:  Module ’ice’ already loaded in Unknown on line 0

Ratkaisu ongelmaan löytyi täältä. Loki ilmoittaa kuitenkin vielä seuraavista virheistä:

[error] [client …] PHP Warning:  require_once(Ice.php): failed to open stream: No such file or directory in /home/*****/public_html/MumPI/classes/ServerInterface.php on line 6
[error] [client …] PHP Fatal error:  require_once(): Failed opening required ’Ice.php’ (include_path=’.:/usr/share/php:/usr/share/pear’) in /home/*****/public_html/MumPI/classes/ServerInterface.php on line 6

Toistaiseksi en ole saannut vielä ratkaistua näitä ongelmia, mutta muutamat linkit näyttivät lupaavilta.

https://github.com/Kissaki/MumPI/wiki/FAQ 

Kokeilin FAQ:n ratkaisua, mutta virheilmoitus pysyi samana. Ice.php:n lukeminen ei onnistunut.

http://sourceforge.net/projects/phpmumbleadmin/forums/forum/1065855/topic/5488397

Luin langan läpi, mutta en ole ehtinyt kokeilla vielä siinä tehtyjä toimenpiteitä.

 

Jatkotoimenpiteet

Poltin jo uuden Ubuntu 12.04 live CD:n, jotta voin kokeilla kaiken asennusta tyhjältä pohjalta, sillä koneella aiemmin tehdyt asiat mm. mumble-djangolla ovat saattaneet jollain tavalla sotkea asioita. Samalla suoritan lopputestauksen ja katson, voiko tekemäni toimeenpiteet toistaa ja saako niistä saman lopputuloksen.

Pahimmassa tapauksessa, jos en saa minkäänlaista web interfacea toimimaan, kirjoitan lyhyehkön oppaan Mumble-palvelimen hallinnasta shellin kautta. Ennen radikaaleja toimenpiteitä aion kuitenkin yrittää ratkaista ongelmaa etsimällä ratkaisua netistä.

Projekti ei ole edennyt täysin aikataulun mukaan, mutta uskon saavani sen valmiiksi ajoissa.

 

 

Kategoriat:Linux, Uncategorized Avainsanat: , ,

Puppet – Puppet forge/Github module, cookbook

22 marraskuun, 2012 Jätä kommentti

Tässä julkaisussa tehdyt toimenpiteet suoritettiin SSH-yhteyden yli palvelinkoneella, jonka käyttöjärjestelmänä on Ubuntu 12.04.

Puppet Moduuli –  reidmv/openssh

Tämä on yksinkertainen moduuli, joka asentaa openssh-palvelimen. Moduulin sivulla kerrotaan moduulin mukautuvan eri käyttöalustoille (debian/redhat).

Ladataan ja puretaan moduuli. Tutkitaan samalla moduulin rakennetta.

$ wget http://forge.puppetlabs.com/reidmv/openssh/0.0.2.tar.gz
$ tar -xvf 0.0.2.tar.gz
$ cd reidmv-openssh-0.0.2/

$ tree -A

.
├── files
│   ├── debian
│   │   └── sshd_config
│   └── redhat
│       └── sshd_config
├── manifests
│   ├── debian.pp
│   ├── init.pp
│   └── redhat.pp
├── metadata.json
├── Modulefile
├── README.md
└── tests
└── ssh.pp

Modulin hakemistossa olevista tekstitiedostoista ei löytynyt ohjeita moduulin käyttöön. Ne listasivat moduulin perustietoja, kuten version, tekijän ja kuvauksen moduulista. Rakenteesta näkee, että debianille ja redhatille on omat manifestinsa sekä _config tiedostonsa. Katsotaan init.pp ja debian.pp manifesteja:

$cd manifests/

$nano init.pp

class openssh {

case $::osfamily {
’RedHat’: { include openssh::redhat }
’Debian’: { include openssh::debian }
default:  { notify { ”Class[openssh] does not support $::osfamily”: } }
}

}

init.pp näyttäisi suorittavan käyttöjärjestelmän mukaan tarvittavan manifestin ja ilmoittaa, jos käyttöjärjestelmää ei tueta. Seuraavaksi debian.pp

$nano debian.pp

class openssh::debian {

package { ’openssh-server’:
ensure => installed,
before => File[’/etc/ssh/sshd_config’],
}

file { ’/etc/ssh/sshd_config’:
ensure => file,
owner  => ’root’,
group  => ’root’,
mode   => ’0600’,
source => ’puppet:///modules/openssh/debian/sshd_config’,
}

service { ’ssh’:
ensure    => running,
enable    => true,
subscribe => File[’/etc/ssh/sshd_config’],
}

}

Manifesti näyttäisi asentavan openssh-palvelimen ennen config tiedostolla leikkimistä, file kohdassa moduuli muokkaa /etc/ssh/sshd_config tiedoston moduulin mukaiseksi. Viimeiseksi moduuli pitää huolta, että palvelu pysyy käynnissä ja uudelleen käynnistää palvelun config tiedoston muuttuessa. Seuraavaksi testataan toimiiko manifesti:

$ sudo puppet apply –modulepath modules/ -e ’include reidmv-openssh-0.0.2’
Could not parse for environment production: Syntax error at ’.’ at line 1 on node testikone.home

Moduulia ei voinnut ajaa näin, vaikka syntaksin pitäisi olla oikein, sillä muiden moduulien ajaminen onnistui. Päätin ajaa manifestin käsin:

/puppet/modules/reidmv-openssh-0.0.2/manifests

$ sudo puppet apply init.pp
notice: Finished catalog run in 0.02 seconds

$sudo service ssh status

ssh start/running, process 739

Moduuli toimi näin ajettaessa. Tämä moduuli vaikuttaa hyvältä pohjalta laajemmalle moduulille. Vaikka ohjeita ei olekkaan, manifestit ovat sen verran yksinkertaisia, että niistä ymmärtää kunhan osaa perusteet.

Huom. voin vain testata onnistuko manifestin ajaminen, sillä teen nämä testit ssh-yhteyden yli, joten en voi poistaa palvelinta uudelleen asennettavaksi.

Muut ssh moduulit

dhoppe/ssh

Modulin mukana ei tullut mitään tarkkoja ohjeita, hieman ylimalkaista Sample Usage kohtaa README:ssä lukuunottamatta. README:n mukaan module on tarkoitettu ssh:n hallintaan. Manifesteja tutkimalla selvisi, että tällä moduulilla voi palvelun asentamisen ja config tiedostojen muuttamisen lisäksi hallita käyttäjiä ja niiden avaimia. Manifestien ajo onnistui ongelmitta, mutta en päässyt selville sen oikeaoppisesta käytöstä. Käyttöystävällisempänä moduuli olisi varmasti käytännöllinen.
kickstandproject/ssh

Tämä moduuli vaikutti jo huomattavasti monimutkaisemmalta reidmv:n moduuliin verrattuna. Manifesteja löytyy clientille, palvelimelle ja parametreille. Moduulilla pystyy asentamaan ssh clientin ja palvelimen, sekä muokkaamaan asetuksia.  En täysin ymmärtänyt moduulin toimintaa ja sen ajaminenkin jäi minulle epäselväksi. Tässäkin moduulissa oli ongelmana ohjeiden puuttuminen.

Cookbook moduuli

Tein moduulin joka luo hakemistopuun uusia moduuleita varten. Lisäksi moduuli luo symlinkin tiedostosta toiseen.

#init.pp

class hakemistopuu{
file { [ ”/home/mursu/puppet/modules/moduuli”, ”/home/mursu/puppet/modules/moduuli/manifests”,
”/home/mursu/puppet/modules/moduuli/manifests/test”, ”/home/mursu/puppet/modules/moduuli/files” ]:
ensure => ”directory”,
mode => 644,
}

file { ’/home/mursu/puppet/modules/hakemistopuu/manifests/testi’:
ensure => ’link’,
target => ’/home/mursu/puppet/modules/hakemistopuu/manifests/testi2’,
}

}

ajetaan

$ sudo puppet apply –modulepath modules/ -e ’include hakemistopuu’
notice: /Stage[main]/Hakemistopuu/File[/home/mursu/puppet/modules/hakemistopuu/manifests/testi]/ensure: ensure changed ’file’ to ’link’
notice: /Stage[main]/Hakemistopuu/File[/home/mursu/puppet/modules/moduuli]/ensure: created
notice: /Stage[main]/Hakemistopuu/File[/home/mursu/puppet/modules/moduuli/files]/ensure: created
notice: /Stage[main]/Hakemistopuu/File[/home/mursu/puppet/modules/moduuli/manifests]/ensure: created
notice: /Stage[main]/Hakemistopuu/File[/home/mursu/puppet/modules/moduuli/manifests/test]/ensure: created
notice: Finished catalog run in 0.12 seconds

Testataan

$ls -l

rwxrwxrwx 1 root  root   56 Nov 22 19:34 testi -> /home/mursu/puppet/modules/hakemistopuu/manifests/testi2

$ tree -A moduuli/
moduuli/
├── files
└── manifests
└── testi

Kaikki toimi.
Lähteet:

http://terokarvinen.com/2012/aikataulu-linuxin-keskitetty-hallinta-ict4tn011-2-puppet

http://forge.puppetlabs.com/

http://www.puppetcookbook.com/

Kategoriat:Linux

Puppet – Templates, Parametrized Classes, Defined Types

15 marraskuun, 2012 Jätä kommentti

Tässä julkaisussa tehdyt toimenpiteet suoritettiin SSH-yhteyden yli palvelinkoneella, jonka käyttöjärjestelmänä on Ubuntu 12.04.

Templates

Luodaan template tekstitiedostolle, jolla mainostetaan omaa sivustoa.

/home/mursu/puppet/modules/helloworld

$ tree -A

# -A = Print ANSI lines graphic indentation lines, kun viivat eivät näy

.
├── manifests
│   └── init.pp
└── templates
└── helloworld.erb

Luodaan manifesti

$cd manifests/
$nano init.pp

#init.pp
class helloworld{
$sisalto=”miroseppala.wordpress.com”
file {’helloworld’:
path => ’/tmp/helloworld’,
ensure => present,
content => template(’helloworld/helloworld.erb’),
}
}

Luodaan template

$ cd ..

$cd templates/

$nano helloworld.erb

templaten sisältö:

See you at:
<%= sisalto %>!

Ajetaan:

$ sudo puppet apply –modulepath /home/mursu/puppet/modules/ -e ’include helloworld’
notice: /Stage[main]/Helloworld/File[helloworld]/ensure: created
notice: Finished catalog run in 0.02 seconds

Tiedosto on nyt luotu ja sen sisältö näyttää tältä:

$cat /tmp/helloworld
See you at:
miroseppala.wordpress.com!

Parametrized Classes

Muutetaan ssh-clientin oletusporttia

.

├── manifests
│   └── init.pp
└── templates
└── ssh_config.erb

$nano init.pp

    #init.pp
class ssh-client($sshclient_port=22) {

package { ’openssh-client’:
ensure => present,
}

file { ’/etc/ssh/ssh_config’:
ensure => file,
require => Package [’openssh-client’],
content => template(’ssh-client/ssh_config.erb’),
}

service { ’ssh’:
require => Package [’openssh-client’],
ensure     => running,
enable     => true,
hasrestart => true,
hasstatus  => true,
subscribe  => File[’/etc/ssh/ssh_config’],
}
}

$nano ssh_config.erb (näkyvissä vain muutettu osa)

Port <%= sshclient_port %>

testataan

$sudo puppet apply –modulepath /home/mursu/puppet/modules/ -e ’class{”ssh-client”:sshclient_port=>5555}’
notice: /Stage[main]/Ssh-client/File[/etc/ssh/ssh_config]/content: content changed ’{md5}4f6af4bcca0d680838b8f0bcad640446’ to ’{md5}6d62d5bac62f22a444f9ea4ef2f168c7’
notice: /Stage[main]/Ssh-client/Service[ssh]: Triggered ’refresh’ from 1 events
notice: Finished catalog run in 0.42 seconds
$ssh localhost
ssh: connect to host localhost port 5555: Connection refused

Portti muuttui onnistuneesti.

Defined Types

Lainattu

$ tree -A

├── apache
│   ├── manifests
│   │   ├── init.pp
│   │   └── sites.pp
│   └── templates
│       └── vhost-default.conf.erb

init.pp

define apache::vhost(
$port,
$docroot,
$template = ’apache/vhost-default.conf.erb’,
$priority = ’25’,
$servername = ”,
$serveraliases = ”,
$options = ”Indexes FollowSymLinks MultiViews”,
$vhost_name = ’*’
) {

include apache

if $servername == ” {
$srvname = $title
} else {
$srvname = $servername
}
case $operatingsystem {
’centos’, ’redhat’, ’fedora’: { $vdir = ’/etc/httpd/conf.d’
$logdir = ’/var/log/httpd’}
’ubuntu’, ’debian’: { $vdir = ’/etc/apache2/sites-enabled’
$logdir = ’/var/log/apache2’}
default: { $vdir = ’/etc/apache2/sites-enabled’
$logdir = ’/var/log/apache2’}
}
file {
”${vdir}/${priority}-${name}.conf”:
content => template($template),
owner => ’root’,
group => ’root’,
mode => ’755’,
require => Package[’httpd’],
notify => Service[’httpd’],
}
}

sites.pp

apache::vhost {’testhost’:
port => 8081,
docroot => ’/var/www-testhost’,
priority => 25,
servername => ’puppet’,
}

vhost-default.conf.erb

# /etc/puppetlabs/modules/apache/templates/vhost-default.conf.erb
# ************************************
# Default template in module puppetlabs-apache
# Managed by Puppet
# ************************************

Listen <%= port %>
NameVirtualHost <%= vhost_name %>:<%= port %>
<VirtualHost <%= vhost_name %>:<%= port %>>
ServerName <%= srvname %>
<% if serveraliases.is_a? Array -%>
<% serveraliases.each do |name| -%><%= ” ServerAlias #{name}\n” %><% end -%>
<% elsif serveraliases != ” -%>
<%= ” ServerAlias #{serveraliases}” -%>
<% end -%>
DocumentRoot <%= docroot %>
<Directory <%= docroot %>>
Options <%= options %>
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog <%= logdir %>/<%= name %>_error.log
LogLevel warn
CustomLog <%= logdir %>/<%= name %>_access.log combined
ServerSignature Off
</VirtualHost>

testaus

$ sudo puppet apply –modulepath -e apache/manifests/sites.pp
$ curl http://puppet:8081

Lähteet:

http://terokarvinen.com/2012/aikataulu-linuxin-keskitetty-hallinta-ict4tn011-2-puppet

http://docs.puppetlabs.com/learning/templates.html

http://docs.puppetlabs.com/learning/modules2.html

http://docs.puppetlabs.com/learning/definedtypes.html

Kategoriat:Linux Avainsanat:

Linux projekti – Mumble-palvelin viikot 44, 45 ja 46

13 marraskuun, 2012 1 kommentti

Viikko 44 – Ympäristön valmistelu

Käyttöjärjestelmänä palvelinkoneella on Ubuntu 12.04. Koneelle oli jo aiemmin asennettu LAMP-server, aiemman artikkelin mukaisesti. Muutin myös oman käyttäjäkohtaisen sivuni apachen oletussivuksi muokkaamalla /etc/apache2/sites-enabled/mursusivu kohdasta document rootin  DocumentRoot /home/mursu/public_html .

Hankin ilmaisen domainin no-ip:ltä ja asensin No-IP Linux Dynamic Update Clientin näiden ohjeiden mukaisesti, sillä pakettia ei enää löytynyt varastosta. IP pitää päivittää säännööllisin väliajoin, koska staattista IP:tä ei ole saatavilla.

Domainia testatessa ilmeni kuitenkin ongelma. Reititin ei antanut yhdistää suoraan kotiverkossa olevaan palvelimeen, vaan se ohjasi reitittimen ylläpitosivustolle. Ratkaisin ongelman lisäämällä palvelinkoneen lähiverkon osoitteen DMZ listaan, jonka jälkeen lopputulos toimi http://mursu.no-ip.org/.

Viikko 45 – Palvelimen asennus ja ylläpitoratkaisut

Asensin mumble-serverin

$ sudo apt-get update
$ sudo apt-get install mumble-server
$ sudo dpkg-reconfigure mumble-server

Asennuksen asetukset valitsin seuraavasti:

Autostart Mumble-server on boot? Yes

Allow mumble-server to use higher priority? Yes (mumble-palvelin on ainoa palvelu toistaiseksi tarvitsee verkkokaistaa kunnolla)

Lopuksi annoin Mumble-palvelimen superuserille salasanan.

Tutustuin eri ylläpitoratkaisuihin ja vaihtoehdoista MAP – Mumb1e Admin Plugin vaikutti lupaavalta. Tutustuin myös sen vaatimuksiin, lähinnä Iceen.

Viikko 46 – Ylläpitoratkaisun asennus

Avasin aluksi mumble-server.ini

$ cd /etc/

$ sudo nano mumble-server.ini

josta pitää aluksi tarkistaa, että DBUS ei ole käytössä (oletus) ja Ice on enabloitu port 6502 localhostille.

#dbus=system
ice=”tcp -h 127.0.0.1 -p 6502″

Testataan…

netstat -apn | grep 6502

tcp        0      0 127.0.0.1:6502          0.0.0.0:*               LISTEN

porttia kuunnellaan.

Asennetaan Ice

$ sudo apt-get update

$ sudo apt-get install php-zeroc-ice

php.ini pitää muuttaa lataamaan IcePHP lisäosa

$ sudo nano /etc/php5/apache2/php.ini
extension=IcePHP.so kohtaan dynamic extensions
$ sudo service apache2 restart

Testataan toimivuus

$ cd

$ cd public_html

$ nano phpinfo.php

<?php phpinfo(); ?>

selaimeen http://mursu.no-ip.org/phpinfo.php ja etsin kohtaa Ice version. Icestä ei kuitenkaan löytynyt mitään, eli IcePHP.so ei ollut latautunut. Etsin vastausta n. 30min ennen kuin mieleeni tuli pistää php.ini tiedostossa

extension=IcePHP.so
sijaan koko polku
extension=/usr/lib/php5/20090626+lfs/IcePHP.so

PHP ei todennäköisesti löytänyt IcePHP.so:ta default extension directorysta. Muutoksen jälkeen phpinfo.php näytti Ice version 3.4.2. Poistin phpinfo.php:n testin jälkeen tietoturvasyistä.
Seuraavaksi testataan kuunteleeko mumble-server Ice interfacea

$ sudo tail -n10 /var/log/mumble-server/mumble-server.log
<W>2012-11-13 09:31:30.245 MurmurIce: Endpoint ”tcp -h 127.0.0.1 -p 6502” running

Seuraavaksi asennetaan Mumb1e Admin Plugin. Latasin version 2.3.4, lataaminen vaati rekisteröitymistä. Purin tiedoston ja siirsin WinSCP:n avulla tiedostot palvelimelle. Asennus alotetaan avaamalla http://mursu.no-ip.org/map_v2.4.3_2011.12.23_build4209/install/install.php selaimessa. MAP vaatii tietyt käyttäjäoikeudet tiedostoille seuraavan kuvan mukaisesti, komento oli:

$ sudo chmod **** tiedosto

Seuraavaksi syötin käyttäjätietoni kysyttäessä ja siirryin viimeistelemään asennusta. Antamani tietokantatiedot eivät olleet kuitenkaan oikeassa, ja vaikka loin uudet tietokannat niin ongelma ei ratkennut. Perehdyn ongelmaan ensi viikolla. Itse mumble-palvelin kuitenkin toimii.

 

 
Lähteet:

http://mumble.sourceforge.net/Ice

http://mumble.sourceforge.net/Installing_Mumble#Linux

http://en.wiki.mumb1e.de/wiki/Install

Kategoriat:Linux Avainsanat: , , ,

Puppet – Resource ordering, modules and classes, user rights

8 marraskuun, 2012 Jätä kommentti

Tässä julkaisussa tehdyt toimenpiteet suoritettiin SSH-yhteyden yli palvelinkoneella, jonka käyttöjärjestelmänä on Ubuntu 12.04.

Resource ordering

Puppet manifesteissa voi määritellä, missä järjestyksessä resource declarationsit suoritetaan. Järjestystä voidaan määritellä neljällä eri metaparametrillä, jotka ovat: before, require, notify ja subscribe.

Tämä manifesti luo testiviesti nimisen tiedoston ja antaa ilmoituksen ainoastaan, jos tiedosto on olemassa.

  file {’/tmp/testiviesti’:
ensure => present,
content => ”Moi.123”,
}

notify {’/tmp/testiviesti on uusittu’:
require => File[’/tmp/testiviesti’],
}

Subscriben avulla voidaan uudelleen käynnistää esimerkiksi ssh-client, kun sen konfiguraatio tiedostoa muokataan.

    # restart openssh-client when conf is changed
package { ’openssh-client’:
ensure => present,
before => File[’/etc/ssh/ssh_config’],
}

file { ’/etc/ssh/ssh_config’:
ensure => file,
mode => 0600,
source => ’/home/kayttaja/puppet/modules/ssh-client/ssh_config’,
}

service { ’ssh’:
ensure     => running,
enable     => true,
hasrestart => true,
hasstatus  => true,
subscribe  => File[’/etc/ssh/ssh_config’],
}

Classes & modules

Luodaan Class.

 #init.pp
class ssh-client {
package { ’openssh-client’:
ensure => present,
before => File[’/etc/ssh/ssh_config’],
}

file { ’/etc/ssh/ssh_config’:
ensure => file,
source => ’puppet:///modules/ssh-client/ssh_config’,
}

service { ’ssh’:
ensure     => running,
subscribe  => File[’/etc/ssh/ssh_config’],
}
}

Hakemistojen rakenne näyttää tältä:

$ tree
.
└── ssh-client
├── files
│   └── sshd_config
└── manifests
│   └──init.pp

Ajetaan moduuli

$ sudo puppet apply –modulepath /home/kayttaja/puppet/modules/ -e ’include ssh-client’

Moduuli muutti ssh-clientin default portin, testataan sitä.

$ ssh localhost
ssh: connect to localhost port 611: Connection refused

Moduuli muutti portin onnistuneesti.

Käyttäjäoikeudet manifestissa

#chmodtest.pp

file {’chmod’:
path    => ’/tmp/chmodtest’,
ensure  => present,
mode    => 0660,
content => ”I’m a test file. Olen testitiedosto.”,
}
#mode 0640= read ja write omistajalle, read muille ryhmassa
#mode 0660= read ja write omistajalle ja muille ryhmassa
#mode 0740= read, write ja execute omistajalle, read muille ryhmassa

Testataan

$puppet apply chmodtest.pp
notice: Finished catalog run in 0.02 seconds
$ls -l /tmp/
-rw-rw—- 1 kayttaja kayttaja 36 Nov 9 10:15 chmodtest

Lähteet:

https://terokarvinen.com/2012/aikataulu-linuxin-keskitetty-hallinta-ict4tn011-2-puppet

http://docs.puppetlabs.com/learning/ordering.html

http://docs.puppetlabs.com/learning/modules1.html

Last edited by Miro Seppälä on November 9, 2012

Kategoriat:Linux Avainsanat: , , ,

Puppet – Resources and RAL, Manifests

1 marraskuun, 2012 Jätä kommentti

Tässä julkaisussa tehdyt toimenpiteet suoritettiin SSH-yhteyden yli palvelinkoneella, jonka käyttöjärjestelmänä on Ubuntu 12.04.

Asennus

Anna komentoriviin seuraavat komennot:

$ sudo apt-get update
$ sudo apt-get -y install puppet

Puppet resource

Tällä työkalulla voit muokata järjestelmää shellistä. Syntaksi on sama kuin manifesteja kirjottaessa, joten resourcella leikkimällä voi oppia hyvin perusteet manifestien kirjoittamiseen. Komennon tuloste on myös hyvä ottaa ylös työkalua käytettäessä, jotta voit tarvittaessa palauttaa esimerkiksi käyttäjän attribuutit  alkuperäisiin asetuksiin. Esimerkissä otan esille oman käyttäjäni tiedot seuraavalla komennolla:

$ puppet resource user pesukarhu
user { ’pesukarhu’:
ensure  => ’present’,
comment => ’pesukarhu,,,’,
gid     => ’1000’,
groups  => [’adm’, ’dialout’, ’cdrom’, ’plugdev’, ’lpadmin’, ’admin’, ’sambashare’],
home    => ’/home/pesukarhu’,
shell   => ’/bin/bash’,
uid     => ’1000’,
}

Jos puppet resource komennon perään lisää attribuutteja ja arvot niille, voit muokata resourcea tai luoda esimerkiksi uuden käyttäjän.

$ puppet resource user myyra ensure=present comment=”testi myyra” shell=”/bin/zsh” home=”/home/myyra” managehome=true

err: /User[myyra]/ensure: change from absent to present failed: Could not create user myyra: Execution of ’/usr/sbin/useradd -c testi myyra -d /home/myyra -s /bin/zsh -m myyra’ returned 1: useradd: cannot lock /etc/passwd; try again later.

user { ’myyra’:
ensure => ’absent’,
}

Komento ei toiminut ja käyttäjää ei luotu, joten puppetin tuloste ilmoitti, ettei käyttäjää ole. Arvelin virheen johtuvan rajoitetuista oikeuksista, joten suoritin saman komennon uudestaan ja lisäsin komennon eteen sudo.

notice: /User[myyra]/ensure: created
user { ’myyra’:
ensure  => ’present’,
comment => ’testi myyra’,
home    => ’/home/myyra’,
shell   => ’/bin/zsh’,
}

Käyttäjän luominen onnistui ongelmitta. Puppet resourcen käytössä Core Type Cheat Sheetistä on paljon apua.

Puppet manifests

Luodaan manifesti, joka tekee tiedoston:

$ mkdir puppet
$ cd puppet
$ mkdir manifests
$ nano manifests/testfile.pp

nanossa:

file {'testfile':
path => '/tmp/testfile',
ensure => present,
mode => 0640,
content => "I'm a test file. Olen testitiedosto.",
}

testataan…

$ puppet apply testfile.pp
notice: /Stage[main]//File[testfile]/ensure: created
notice: Finished catalog run in 0.02 seconds
$ cat /tmp/testfile
I’m a test file. Olen testitiedosto.

Manifesti toimi ja se loi testitiedoston.

Muutetaan seuraavaksi Ubuntun message of the day manifestin avulla:

$nano motd.pp

file {’motd’:
path    => ’/etc/motd’,
ensure  => present,
mode    => 0644,
content => ”Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-24-generic x86$
* Documentation:  https://help.ubuntu.com/
http://www.miroseppala.wordpress.com”,
}

Manifestin voi testata $ puppet apply motd.pp ja muutokset näkyvät $ nano /etc/motd.

 

Lähteet:

http://terokarvinen.com/2012/puppet-reading-list

http://docs.puppetlabs.com/learning/ral.html

http://docs.puppetlabs.com/learning/manifests.html

Kategoriat:Linux Avainsanat: ,

Linux projekti – Mumble-palvelin ja sen ylläpito

30 lokakuun, 2012 1 kommentti

Projektin aihe, rajaus ja tavoitteet

Projektin aiheena on Mumble-palvelimen ja sen hallinnointiin sekä ylläpitoon tarvittavan ratkaisun asentaminen.

Projektin aikana tutkin eri ylläpitoratkaisuja ja valitsen niistä sopivimman. Koska projektiin sisältyy tutkimista ja eri ratkaisut voivat vaatia enemmän tai vähemmän työtä, Mumble-palvelimen käyttäjien ja ryhmien konfigurointi jää pois, ellei ylimääräistä aikaa jää.

Projektin tavoitteena on toimiva Mumble-palvelin ja sen käytännöllisen ylläpidon aikaan saaminen.

Miksi Mumble-palvelin?

Mumblen avulla käyttäjät voivat puhua toisilleen samalla palvelimella. Kommunikaatio on salattu 256bit AES256-SHA salauksella. Mumblen äänenlaatu on korkea ja puheessa ei ole huomattavaa viivettä matalan latenssi ansiosta.

Kaiken lisäksi ohjelma ja sen käyttämä palvelin ovat ilmaisia. Lyhyesti sanottuna Mumble tarjoaa salatut, korkealaatuiset nettipuhelut ilmaiseksi.

Aikataulu

Viikko 44 Projektin suunnitelu, Mumble-palvelimen ympäristön asennus

Viikko 45 Mumble-palvelimen asennus ja ylläpitoratkaisujen tutkiminen

Viikko 46 Ylläpitoratkaisun valitseminen ja asentaminen

Viikko 47 Mumble-palvelimen käyttäjien, kanavien ja ryhmien konfigurointi

Viikko 48 Testaus ja mahdollisten ongelmien ratkaisu, loppuraportin laatiminen

Viikko 49 Esitelmän valmistelu

Viikko 50 Projektin esittely

Linkit: http://terokarvinen.com/2012/aikataulu-%E2%80%93-linux-projekti-ict4tn018-1

Ohjaaja: Tero Karvinen

Projektin jäsenet: Miro Seppälä

Kategoriat:Linux