Taglinux

Puppet package-file-service example

I am writing this post as part of course Linuxin keskitetty hallinta held by Tero Karvinen. In this post I will create new package-file-service module and install apache2 by puppet.

If you need to help for installing puppet I recommend you beginning training puppet here:
http://nikokiuru.com/2013/11/hello-puppet/

Otherwise, let’s begin to install Apache2 by puppet!

Create new module

First create new module and init.pp file inside manifests:

$ mkdir -p modules/apache2/manifests/
$ nano modules/apache2/manifests/init.pp

And the code in init.pp:

class apache2 {
  package {"apache2":
    ensure => "installed",
  }

  service {"apache2":
    ensure => "running",
    enable => "true",
    require => Package["apache2"],
  }
}

Apply our puppet module by command:

$ puppet apply --modulepath modules/ -e 'class {"apache2":}'

Test module

We can test that Apache2 is running by command:

$ sudo service apache2 status

Result:
Apache2 is running

Source

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

Puppet templates and facter facts hello world

I am writing this post as part of course Linuxin keskitetty hallinta held by Tero Karvinen. In this post I will write hello world module which use puppet templates and facter facts (ex. my hardware details).

See your computer details

When we run facter command, we will see our computer details. Read more: http://www.puppetcookbook.com/posts/list-facter-facts.html

$ facter -p

Create new module

Create new view for hardware_details module:

$ mkdir -p modules/hardware_details/templates/
$ nano modules/hardware_details/templates/details.erb

The code in details.erb:

Hardware model: <%= @hardwaremodel %>
Kernel version: <%= @kernelmajversion %>
Puppet version: <%= @puppetversion %>
Ruby version: <%= @rubyversion %>

Create new directory:

$ mkdir modules/hardware_details/manifests

Do next class in file modules/hardware_details/manifests/init.pp:

class hardware_details {
  file { '/tmp/hardwareDetail':
    content => template('hardware_details/details.erb'),
  }
}

Run puppet module:

$ puppet apply --modulepath modules/ -e 'class {"hardware_details":}'

Test module

Last we verify that module works right:

$ less /tmp/hardwareDetails

My result:
Hardware model: x86_64
Kernel version: 3.2
Puppet version: 2.7.11
Ruby version: 1.8.7

Hello Puppet!

I am writing this post as part of course Linuxin keskitetty hallinta held by Tero Karvinen. In this post I will write hello world puppet module.

Install Puppet

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

Puppet oneliner

$ puppet apply -e 'file { "/tmp/helloPuppet": content => "Hello Puppet!" }'

Create new hello module

$ mkdir -p modules/hello/manifests/
$ nano modules/hello/manifests/init.pp

Do next class in file init.pp:

class hello {
  file { '/tmp/helloPuppet':
    content => "Hello Puppet!\nPuppet module working as well!"
  }
}

Run puppet module:

$ puppet apply --modulepath modules/ -e 'class {"hello":}'

Last we verify that module works right:

$ less /tmp/helloPuppet

Result

Hello Puppet!
Puppet module working as well

Source

http://terokarvinen.com/2013/hello-puppet-revisited-%E2%80%93-on-ubuntu-12-04-lts

Hei Puppet!

Kirjoitan tämän artikkelin osana Tero Karvisen vetämää Linuxin keskitetty hallinta -kurssia. Tehtäväksi saimme luoda lyhyen Hei maailma! esimerkin puppetilla.

Puppet on työkalu Linuxin keskitettyyn hallintaan. Puppetilla voimme luoda omia moduuleja, joille voimme koodata tiettyjä tehtäviä, ja Puppet pitää huolen siitä, että se pitää sen ja orja-tietokoneet ajantasalla. Puppet on hyvä työkalu kun hallitset useita Linux-tietokoneita, joille tarvitset samoja ominaisuuksia. Puppetin avulla et joudu jokaiselle tietokoneelle tekemään erillisiä asennuksia / konfiguraatioita, vaan pystyt hoitamaan sen keskitetysti, jolloin työtehokkuus paranee.

Työvaiheet:
1. Asennetaan puppet.
2. Testataan asennus.
3. Luodaan uusi puppet moduuli.

Ensimmäseksi asennetaan puppet:

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

Yhdenrivin Puppet testi

Puppetin toiminnan voimme testaa Tero Karvisen artikkelissa Hello Puppet revisited – on Ubuntu 12.04 LTS mainitsemalla yhden rivin testillä:

$ puppet apply -e 'file { "/tmp/heiPuppet": content => "Hei Puppet!" }'

Puppet vastaa:

notice: /Stage[main]//File[/tmp/heiPuppet]/ensure: defined content as '{md5}306f13b60c36a7fbd6fee421fec478f6'
notice: Finished catalog run in 0.01 seconds

Kun ajamme komennon uudestaan saamme tulokseksi:

notice: Finished catalog run in 0.01 seconds

Ajettuamme komento uudestaan, puppet ei sano tehneensä mitään. Tämä johtuu siitä, että kaikki oli ajantasallaan, eli tiedosto /tmp/heiPuppet oli olemassa, ja siellä lukee “Hei Puppet!”.

Luo uusi Puppet moduuli

Seuraavaksi teemme yksinkertaisen puppet moduulin, joka hoitaa tämän saman operaation. Puppet moduulit ovat siis ohjelmia, joiden avulla puppettia hallinnoidaan.

Tehdään uusi heipuppet moduuli (HUOM! Moduulin nimi tulee kirjoittaa pienellä!). Ensimmäiseksi tehdään seuraava kansiorakenne puppet moduulia varten, ja tehdään manifestsin alle init.pp -tiedosto, jonne puppetin ohjelmointi suoritetaan:

$ mkdir -p modules/heipuppet/manifests/
$ nano modules/heipuppet/manifests/init.pp

Kirjoitetaan seuraava koodinpätkä init.pp -tiedostoon:

class heipuppet {
  file { '/tmp/heiPuppet':
    content => "Hei Puppet!\nTämä tiedoston teki meidän Puppet moduuli!"
  }
}

Moduulin voit ajaa seuraavalla komennolla:

$ puppet apply --modulepath modules/ -e 'class {"heipuppet":}'

Ja näin meidän /tmp kansioon on onnistuneesti syntynyt heiPuppet tiedosto.

Lähde

http://terokarvinen.com/2013/hello-puppet-revisited-%E2%80%93-on-ubuntu-12-04-lts

Ruby on Rails Linuxissa

Tämän ohjeen mukaisesti on saatu testatusti toimimaan oma kehitysympäristöni Xubuntu 13.10 saucy. Ubuntu 12.04 LTS ei aikaisemman testin perusteella toiminut, mutta tulen lähipäivinä päivittämään tämän ohjeen toimimaan myös sillä.

Asennetaan Ruby on Rails

Testattuani asentaa Ruby on Rails moneen eri linuxin levityspakettiin tai niiden eri versioihin, olen tullut siihen johtopäätökseen että järkevintä on asentaa RVM (Ruby Version Manager), jonka kautta hallitaan Rubya. RVM löytyy myös pakettivarastosta, mutta siellä on tällä hetkellä vanha ja buginen versio, joten järkevintä on asentaa se RVM:n repositorista:

$ sudo apt-get update
$ sudo apt-get -y install curl
$ sudo curl -L https://get.rvm.io | bash -s stable --ruby --autolibs=enable --auto-dotfiles

Luodaan RVM:lle alias, jotta pystymme kutsumaan sitä myös jatkossa:

$ source $HOME/.rvm/scripts/rvm

Asennetaan rails:

$ sudo gem install rails

Hei Rails!

Luodaan “Hei Maailma” rails projekti:

$ mkdir -p /home/niko/public_html/
$ cd /home/niko/public_html/
$ rails new hello-rails

Asennetaan Apache2

$ sudo apt-get -y install apache2
$ sudo a2enmod rewrite
$ sudo a2enmod userdir
$ sudo service apache2 restart

Asennetaan Phusion Passenger

$ sudo apt-get -y install libapache2-mod-passenger

Luodaan apacheen uusi virtualhost:

$ sudoedit /etc/apache2/sites-available/hello-rails.conf

Kirjoita seuraava koodi hello-rails -tiedostoon (korvaa home-kansion käyttäjä omalla):

<VirtualHost *:80>
  RailsEnv development
  ServerName hello-rails
  DocumentRoot /home/niko/public_html/hello-rails/public/
</VirtualHost>

Hyväksy uusi sivusi, ja lataa Apache:n asetukset uudestaan:

$ sudo a2ensite hello-rails.conf
$ sudo service apache2 restart

Testaus

Otetaan sivustoon yhteyttä curlilla, todistaaksemme railsin toimivuuden:

$ curl -I hello-rails

Tulos:

HTTP/1.1 200 
Date: Thu, 05 Dec 2013 16:10:47 GMT
Server: Apache/2.4.6 (Ubuntu)
X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.13
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-UA-Compatible: chrome=1
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: d63000a5-d953-4346-bf1f-4a9c4ff4f8db
X-Runtime: 0.009467
Set-Cookie: request_method=HEAD; path=/
ETag: "9fdff472a0cc0802ae8009cd2322f2da"
Status: 200
Content-Type: text/html; charset=utf-8

Lähteet

https://rvm.io/rvm/install

© 2017 Niko Kiuru

Theme by Anders NorenUp ↑