How to install Puppet and Puppet Dashboard

november 12th, 2010

I’ve been using a lot of time on puppet lately. I had to setup a Puppetmaster with Puppet Dashboard, all running on passenger. I didn’t find any good howtos on the subject, so i’ll write one myself. Here is a step by step guide for how to setup a puppetmaster-server with puppet dashboard on a Ubuntu Server. I’m using the latest version of puppet from gems (2.6.2) instead of the one that ships with ubuntu (0.25.4). I’m also using mysql for the databases.

Puppetmaster:

First of all install rubygems and libmysql:

apt-get install rubygems1.8 libopenssl-ruby1.8 mysql-server libmysql-ruby

Create the database:

mysql> create database puppet;
mysql> grant all privileges on puppet.* to puppet@localhost identified by ‘password’;

Install puppet:

gem install rubygems-update
/var/lib/gems/1.8/bin/update_rubygems
gem install puppet activerecord

Deploy /etc/puppet/puppet.conf with the following content (adapt for your needs, see the comments):

[main]
# Basic config:
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/etc/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
pluginsync=false
templatedir=$confdir/templates

#Puppetmaster-config:
[master]
storeconfigs = true
# MySQL-configuration:
dbadapter = mysql
dbuser = puppet
dbpassword = password
dbserver = localhost
dbsocket = /var/run/mysqld/mysqld.sock
# SSL-config:
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY
# Reports to puppet-dashboard for each run:
reports = http, store
reporturl = http://localhost:3000/reports

# Puppet client config enables reporting from the client
# This HAS to be enabled on ALL clients you want reports from
[agent]
report = true

You should also deploy init-scripts for puppet (not puppetmaster, it will run through apache) if needed, and logrotate if needed, here is my /etc/logrotate.d/puppet:

/var/log/puppet/*log {
missingok
create 0644 puppet puppet
compress
rotate 4

postrotate
[ -e /etc/init.d/puppetmaster ] && /etc/init.d/puppetmaster restart >/dev/null 2>&1 || true
[ -e /etc/init.d/puppet ] && /etc/init.d/puppet reload > /dev/null 2>&1 || true
endscript
}

Start puppetmasterd with «–mkusers» the first time to create the puppet-group and user:

puppetmasterd –mkusers

Puppet Dashboard

Now it’s time to install Puppet Dashboard. We’ll install this using Puppetlabs’ apt-repo. This will install Puppet Dashboard to /usr/share/puppet-dashboard.

Add puppetlabs’ apt-repo by adding the following lines to your /etc/apt/sources.list:

deb http://apt.puppetlabs.com/ubuntu lucid main
deb-src http://apt.puppetlabs.com/ubuntu lucid main

Fetch puppetlabs’ GPG-key and import it into apt:

gpg –recv-key 4BD6EC30
gpg -a –export 4BD6EC30 | sudo apt-key add –

Run apt-get update and install puppet-dashboard:

apt-get update
apt-get install puppet-dashboard

Create the database:

mysql -p
mysql > create database dashboard;
mysql > GRANT ALL PRIVILEGES ON dashboard.* to ‘dashboard’@’localhost’ IDENTIFIED BY ‘password’;

Edit /etc/puppet-dashboard/database.yml with the proper settings, i will assume that you want to use the production enviroment for the rest of this howto:

production:
database: dashboard
username: dashboard
password: password
encoding: utf8
adapter: mysql

Initialize the database:

rake RAILS_ENV=production db:migrate

Passenger

Now we’ve finished the basic setup of the Puppetmaster and Puppet Dashboard. Now it’s time to install passenger and make everything run through apache.

First of all, install passenger (it will also install dependencies such as apache):

apt-get install libapache2-mod-passenger

Enable SSL:

a2enmod ssl

Change the ownership of /etc/puppet/rack/config.ru to puppet:puppet:

chown puppet:puppet /etc/puppet/rack/config.ru

Copy /usr/share/puppet-dashboard/vendor/rails/railties/dispatches/config.ru to /usr/share/puppet-dashboard/config.ru and set the proper ownership:

cp /usr/share/puppet-dashboard/vendor/rails/railties/dispatches/config.ru /usr/share/puppet-dashboard/config.ru
chown www-data:www-data /usr/share/puppet-dashboard/config.ru

Deploy /etc/apache2/sites-enabled/puppetmaster with the following content (remember to edit hostname, tune as you see fit):

# You probably want to tune these settings
PassengerHighPerformance on
PassengerMaxPoolSize 12
PassengerPoolIdleTime 1500
# PassengerMaxRequests 1000
PassengerStatThrottleRate 120
RackAutoDetect Off
RailsAutoDetect Off

Listen 8140


SSLEngine on
SSLProtocol -ALL +SSLv3 +TLSv1
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP

SSLCertificateFile /etc/puppet/ssl/certs/puppet.domain.tld.pem
SSLCertificateKeyFile /etc/puppet/ssl/private_keys/puppet.domain.tld.pem
SSLCertificateChainFile /etc/puppet/ssl/ca/ca_crt.pem
SSLCACertificateFile /etc/puppet/ssl/ca/ca_crt.pem
# If Apache complains about invalid signatures on the CRL, you can try disabl$
# CRL checking by commenting the next line, but this is not recommended.
SSLCARevocationFile /etc/puppet/ssl/ca/ca_crl.pem
SSLVerifyClient optional
SSLVerifyDepth 1
SSLOptions +StdEnvVars

DocumentRoot /etc/puppet/rack/public/
RackBaseURI /

Options None
AllowOverride None
Order allow,deny
allow from all

Then deploy /etc/apache2/sites-enabled/puppet-dashboard with the following content:

# Dashboard configuration
Listen 3000


DocumentRoot /usr/share/puppet-dashboard/public/

# Use the production-enviroment:
SetEnv RAILS_ENV production
RackBaseURI /

Options None
AllowOverride AuthConfig
Order allow,deny
Allow from all

ServerSignature On
# Logs
ErrorLog /var/log/apache2/dashboard.domain.tld_error.log
LogLevel warn
CustomLog /var/log/apache2/dashboard.domain.tld_access.log combined

Then you just restart apache2, make sure it starts at boot and you should be good to go.

Puppet Dashboard should then be accessible via http://puppet.domain.tld:3000 while puppet should run properly on port 8140 (Test with a client).

UFW

I’ll also add a quick set of commands for securing the server, i’m using Ubuntu’s uncomplicated firewall, edit the rules to fit your IP-series, these rules will close down all ports on the server except port 22, 3000 and 8140 which will be open for specific ip-ranges:

ufw default deny
ufw allow from 192.168.0.0/24 to any port 22
ufw allow from 192.168.0.0/24 to any port 8140
ufw allow from 192.168.0.0/24 to any port 3000
ufw enable

This concludes this howto, i hope you will find it useful.

-Eivind

Juju-framework

november 5th, 2010

En av våre kunder har nettopp releaset et lite minimalistisk PHP-rammeverk som kan være verdt å ta en titt på.

Dette kan hentes på github: https://github.com/bond/juju-framework

Eksempler på bruk:

Bond Consulting

Hvordan sette opp IPv6 på din VPS

oktober 30th, 2010

Da vi nå tilbyr IPv6 på våre VPS’er er det på plass med en Howto for hvordan du setter opp IPv6 på din VPS.

Deler av denne artikkelen er basert på Introduction to IPv6 addressing skrevet av Eirik hos Blix Solutions, vår nettleverandør.

Introduksjon til IPv6

IPv6 bruker 128bits-adresser som blir oversatt til hexadesimal. aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh hvor aaa,bbb osv kan ha verdier fra 0000 til ffff.

En IPv6-adresse ser slik ut: 2001:1ad8:ab::1/128

Man kan forenkle adressene ved å bruke «::» for å la ledende 0-tall bli utelatt, men kun en gang. 2001:1ad8:ab::1/128 er egentlig 2001:1ad8:00ab:0000:0000:0000:0000:0001/128.
Som med IPv4 kan man også skrive IPv6-adresser med prefikslengde:
2001:1ad8:ab::/128 – 1 adresser
2001:1ad8:ab::/127 – 2 adresser
2001:1ad8:ab::/126 – 4 adresser
2001:1ad8:ab::/125 – 8 adresser
2001:1ad8:ab::/124 – 16 adresser
..
2001:1ad8:ab::/120 – 256 adresser
..
2001:1ad8:ab::/115 – 8192 adresser
..
2001:1ad8:ab::/64 – ca 1.84*10^19 adresser (18,446,744,073,709,551,616 adresser) Host1 sine kunder vil få tildelt hvert sitt /64-nett.
..
2001:1ad8:ab::/48 – ca 1.21*10^24 adresser
De gyldige verdiene 0000-ffff i dette /48-nettet er 2001:1ad8:00ab:xyzw::, hver av disse består av 65536 /64-nett, som igjen består av 65536 /80-nett osv.

Dagens policy er å gi et /48-nett til en tjenesteleverandør (Host1) og et /56 eller /64-nett til kunden. Host deler da ut /64-nett til sine kunder ved forespørsel.

Hvordan sette opp en IPv6-ip på din VPS

Sette ip i kommandolinje (midlertidig, vil forsvinne ved reboot):


ip -f inet6 addr add 2a02:20c8:1140:XXXX::1/64 dev eth0
ip -f inet6 route add 2a02:20c8:1140::1 dev eth0
ip -f inet6 route add 2001::/3 via 2a02:20c8:1140::1 dev eth0

XXXX skal erstattes med IP-serien du har fått tildelt av support.

Sette ip ved å endre /etc/network/interfaces (permanent, vil også fungere etter reboot):< Her er det viktig at man IKKE fjernet de eksisterende instillingene, følgende instillinger skal settes inn ETTER de eksisterende nettverksinstillingene. Som i forrige metode skal XXXX byttes ut med ip-serien du har fått tildelt.


iface eth0 inet6 static
address 2a02:20c8:1140:XXXX::1
netmask 64
#Add the gateway
up ip -f inet6 route add 2a02:20c8:1140::1 dev eth0
up ip -f inet6 route add 2000::/3 via 2a02:20c8:1140::1
#Security, do not accept autoconfiguration.
up sysctl net.ipv6.conf.all.accept_ra_defrtr=0
up sysctl net.ipv6.conf.default.accept_ra=0
#Trenger du flere ip-adresser?:
up ip -f inet6 addr add 2a02:20c8:1140:XXXX::2/64 dev eth0

Etter dette så skal IPv6 fungere på din VPS, du kan teste det ved å pinge ipv6.host1.no:

ping6 ipv6.host1.no

BETA: IPv6 på VPS!

oktober 29th, 2010

Host1 har nå etter å ha fått en forespørsel startet tidlig beta-testing av IPv6 på våre VPS’er.

Kunder med VPS hos Host1 kan nå maile support for å få tildelt IPv6-adresser til bruk på sin VPS (i tillegg til den eksisterende IPv4-adressen).

Denne tjenesten er da under testing, vi kan dermed ikke tilby noen oppetidsgaranti på IPv6.

Mer informasjon (og veiledning for oppsett av IPv6 på din VPS) kommer iløpet av helgen.

BETA: Web-portal for VPS-kunder.

oktober 29th, 2010

Screenshot av web-portalen.

Screenshot av web-portalen.


Host1 tester i disse dager en ny web-portal for VPS-kunder.

Gjennom denne vil våre kunder få tilgang til console for sin VPS, samt mulighet for å stoppe, starte og reboote maskinen ved behov.

Ta kontakt med support for beta-tilgang.

Webhotell flyttet til servere i Norge!

september 23rd, 2010

Host1 har nå fullført flyttingen av webhotell-kundene til servere i Norge (Oslo).

Flyttingen gikk smertefritt, de aller fleste kontoene skal nå være flyttet til de nye serverne. Noen kunder har ikke blitt flyttet, de vil bli kontaktet i morgen for å avtale tidspunkt for flytting av deres kontoer.

Her følger litt info om de nye serverne.

Hanna:

Hostnavn: hanna.host1.no
cPanel: https://hanna.host1.no:2083
Mailserver (SSL): hanna.host1.no
IP: 178.255.146.195

Ida

Hostnavn: ida.host1.no
cPanel: https://ida.host1.no:2083
Mailserver (SSL): hanna.host1.no
IP: 178.255.146.196

Du kan finne mer info om vårt nettverk (på vår wiki). (Se OSL1 og OSL2).

Send eventuelle spørsmål om flyttingen til support@host1.no

-Host1

Host1 flytter alle webhotell til Norge.

september 19th, 2010

Host1 flytter nå alle sine webhotell til Norge for å få bedre kontroll på våre servere pluss bedret responstid. Flyttingen vil bli gjennomført Onsdag 22 September fra klokken 22:00.

Informasjon:

Kunder som er berørt vil motta en mail med informasjon om flytteprosessen.

Kunder som har sitt webhotell på serveren Cora vil bli flyttet til serveren Hanna. Informasjon om denne serveren finner man på vår wiki: http://host1.no/wiki/Hanna

Kunder som har sitt webhotell på serveren Dina vil bli flyttet til serveren Ida. Informasjon om denne serveren finner man på vår wiki: http://host1.no/wiki/Ida

suphp

Kunder som for tiden er på vår server Cora vil merke en endring i oppsettet. Vi tar nå i bruk suphp på våre servere. Dette vil si at alle php-scripter kjøres som brukeren som eier scriptene (deg). Dette vil gjøre at man slipper å chmod’e mapper til 777 for at opplasting o.l skal fungere. Dette vil bedre sikkerheten og gjøre installasjon av scripter enda enklere.

Det som er viktig å merke seg er at alle mapper og filer ha korrekte tillatelser for at ette skal fungere. Vi vil selvsagt ordne dette for alle våre kunder under flyttingen, men det er viktig at dere alltid setter korrekte tillatelser i fremtiden.

Mapper skal ha 755 (rwx/rx/rx).
Filer skal ha 644 (rw/r/r)

Nedetid?
Flyttingen vil ikke medføre merkbar nedetid for våre kunder. Det eneste man vil merke av problemer er å bli sendt til den gamle serveren i noen minutter etter flyttingen.

Ekstern DNS

Kunder som bruker ekstern DNS (Andre navneservere enn Host1 sine) vil måtte oppdatere sin dns klokken 22 Onsdag 22 September, eller flytte domenet til Host1 sine navneservere innen Tirsdag 21 September. Ta kontakt med support for assistanse.

IP-adressene til de nye serverne er:

Hanna: 178.255.146.195
Ida: 178.255.146.196

Spørsmål

Spørsmål sendes til support@host1.no

Ny server

september 7th, 2010

Vi sitter for tiden og setter opp våre nye server, gina. Her kan dere se (et litt uklart) bilde av serveren i racket:

Specs:
2*8Core AMD Opteron 6100 @ 2Ghz
32GB DDR3 1333MHZ ECC-registrert RAM.
4*2TB HDD i RAID-10
2*PSU
2*1000Mbit NIC

Dette var siste punkt som måtte på plass før vi kan starte flyttingen av alle Host1 sine tjenester til Norge. Iløpet av den kommende mnd vil alle webhotell (som for tiden står i tyskland) bli flyttet til servere i Norge slik at alle våre kunder vil kunne dra nytte av vårt gode her i Norge.

Host1 tilbyr nå gratis domene med alle webhotell!

september 4th, 2010

Fra og med i dag tilbyr Host1 nå gratis .com/.net/.org-domener med alle sine webhotell hvis man betaler for 1 år eller mer av gangen. Sjekk våre oppdaterte priser og pakker her: Host1 Webhotell

Host1 lanserer flashdemonstrasjoner!

august 25th, 2010

Host1 lanserte i dag nye flashdemonstrasjoner. Host1 tilbyr nå flashdemonstrasjoner for følgende temaer:

* cPanel
* WHM
* Fantastico AutoInstaller
* FTP
* Epost

Foreløpig vil demonstrasjonene være på engelsk, vi sikter på å få disse oversatt senere.

Flashdemonstrasjonene kan sees på https://host1.no/client/knowledgebase.php