A simple recipe for MongoDB clusters

Hi everybody!

my task of today, was to configure a MongoDB with redundancy and high availability…

I decided to write my own Chef cookbook to configure “replica”

Below the most important parts:

Install MongoDB packages

Screen Shot 2016-10-14 at 21.13.03.png

Use template for the main configuration file

screen-shot-2016-10-14-at-21-15-04

Enable Linux service of MongoDB at the boot

screen-shot-2016-10-14-at-21-15-57

What about the replica’s configuration?

I suggest to use a custom LWRP that execute rs.initiate() to declare the replica set, rs.add(); to add primary and secondary servers, rs.addArb() to add arbiter servers. You can loop over hashes like this:

foobar => { “secondaries” => [“mynode01:27017″,”mynode02:27017”]}

and a Chef provider like this

screen-shot-2016-11-09-at-21-38-31

I need to test my cluster, so let’s prepare a Vagrant file like this in order to manage all virtual machines concurrently

screen-shot-2016-10-14-at-21-23-16

Finally, Haproxy as reverse proxy and load balancer! Use autodiscovery (https://github.com/hw-cookbooks/haproxy) in order to find automatically the backends and “health check” to point to the right node after a new primary server’s promotion.

screen-shot-2016-10-14-at-21-25-20

 

Ad maiora!

Advertisements

Come costruire un sistema anti-intrusione con notifica su HipChat

Salve a tutti i lettori di devopsrecipes.info!

è da un pò di tempo che volevo dare un’occhiata alla libreria OpenCV ( in particolare per la parte di face detection e video streaming capture da webcam ) e perchè no, montiamo il tutto su un Raspberry Pi!

Questo è quello che è venuto fuori 🙂

img_20160908_201751

Di seguito, il video di un test casalingo ( appena viene puntata la webcam su un volto umano, scatta subito la notifica verso HipChat )

How to

Procuratevi le seguenti cose:

  1. un Rasperry Pi
  2. una webcam
  3. una chiavetta USB wireless ( insomma… fate in modo che il vostro Raspberry esca su internet )

Una volta recuperati tutti gli oggetti…

  1. Installate OpenCV sul Raspberry. Se state utilizzando Raspbian potete anche installare i pacchetti libopencv-dev python-opencv senza dover compilare.
  2. Potete prendere come esempio FaceDetection in cui troverete uno script in Python con un pò di commenti utili e uno script shell per inviare i messaggi su HipChat.
  3. Se usate il send_message.sh, inserite ROOM_ID e AUTH_TOKEN corretti.
  4. Lanciate face.py ed il gioco è fatto. Commentate cv2.imshow(frame,gray) nel caso in cui non abbiate interfaccia grafica, oppure esportate il display su un altro computer per fare tutte le prove necessarie.

Link Utili:

Un getting started su come leggere lo stream video della vostra webcam

Un tutorial su come eseguire “face detection” con OpenCV

 

Saluti!

 

 

 

Perchè gli automobilisti 2.0 si accollano di meno ai semafori

Untitled

Non volevo crederci ma i dati di questo grafico sono stati verificati, o almeno a me, è capitato di poterli riscontrare empiricamente.

Il merito o demerito è tutto di Facebook e Whatsapp perchè distraggono anche gli utenti più nevrotici, quelli della classe U.A.N. (utenti abbienti nervosetti). Più che distratti, sono così affamati di feedback da non poter aspettare l’arrivo alla meta. Di solito mi scatto un selfie per far capire che sto guidando e non risponderò mai (non voglio incappare in quella che chiamo “sensazione di finta repulsione all’accollo” per cui, chi ti attacca il pippone/pilotto su Whatsapp, si possa sentire ignorato visto che le mie riposte sono composte solo da monosillabi e strane crasi).

Oppure al posto di ridere ahahahahahaha ridi tipo jhhjhjhkhihihkhhjhzqzqzqzq.

Quindi meglio troncare la conversazione e parlare dopo con calma.

Ted1-jpg.jpg

Finalmente, le mie ferie sono arrivate e ho deciso di interrompere i post smanettoni per quelli finalizzati al solo cazzeggio. Come questo che sto scrivendo (l’argomento trattato è un pò stupido lo so… però manca parecchio alla cena e devo ingannare il tempo scrivendo).

Gli step per questo esperimento sono molto semplici e i prerequisiti facilissimi da soddisfare.

  1. Un’automobile. Ho scelto la Peugeot 106 Rally di cui c’ho sempre avuto la fissa… mai comprata perchè famiglia, amici e fidanzatine varie me l’hanno sempre descritta come una macchina coatta anni 90. E’ molto figa invece.peugeot-106-rallye-5
  2. Un paio di freni per fermarvi ad un semaforo. Non fate come Anthony Hopkins in Indian – La grande sfida, che andate a cannone… E’ molto pericoloso per la salute e l’esperimento non funziona…Indian-La-grande-sfida-2005-604x340
  3. Un’automobile in coda alla vostra che contenga un conducente (se i conducenti sono più di uno l’esperimento è compromesso). Dallo specchietto retrovisore assicuratevi che la sua testa stia in rotta di collisione con uno smartphone. Ignorate chi manda messaggi audio da Whatsapp (quest’ultimi hanno una buona reattività al colore verde del semaforo)cellulare-alla-guida.jpg
  4. Non intralciate il traffico ma, abbiate una piccola esitazione nel partire ad un semaforo verde..abbiate una di quelle esitazioni che un tempo vi sarebbe costata una fastidiosa suonata di clacson e un probabile, simpatico, mattutino e poco 2.0 vaffanculo.maxresdefault

Scommetto un kebab che è andato tutto liscio!

Bella per tutti.

On how to annoy those who interrupt your Zen moment at the beach with the radio at a very high volume…

Due to the success achieved with the last post, we decided to translate it into English so that you all can enjoy it! Have fun!

A summer greeting to all the followers of devopsrecipes.info 😉

My holidays are getting closer and soon I’ll be away from the city chaotic life… In my backpack, besides a couple of big bottle of Peroni beers this year I’ll bring a “FM pirate Radio transmitter” just in case somebody annoys my nap at the beach by listening to the radio at a too high volume (so common in Italy, ain’t it?) intolerable! if you have taken drugs, it is very likely the music you hear doesn’t come from the neighbor’s speakers, then I suggest you to go and buy an Ice cream at the nearest cafe.

listening-to-old-time-radio-on-the-beach

If you wanna equip yourself with this powerful weapon, get the following things, or buy a Radio transmitter on Amazon (though is not cool to buy or download the app 😛 ):

  1. A Raspberry PI
  2. A portable power supply for smartphones (solar energy would be perfectfoglioline)
  3. A wireless pen drive
  4. A PHP script for the web interface management, like this https://github.com/lucky-sideburn/piratepiwave.git
  5. A software to grant the FM signal, for ex: https://github.com/rm-hull/pifm
  6. Last but not least, your smartphone!

Why point 4?

I was too lazy to fiddle around with GPIO to connect a LCD screen and a frequency controller, so I preferred to control the transmitter via my Smartphone.

  1. At first let’s install a web-server Apache + Php on our Raspbian Jessie Lite (of course everyone is free to use the favourite OS or web-server)
  2. If you are lazy it is also possible to use my PHP script https://github.com/lucky-sideburn/piratepiwave.git (I am not a web-developer so YES the graphic interface is super basic and not cool!)
  3. Install https://github.com/rm-hull/pifm in /usr/local/pifm (in the docs you will find wich GPIO you need to use to hook a handcrafted antenna made of metallic wire)
  4. Configure the wireless network interface controller in order to connect to your Smartphone hotspot (from the Admin panel you will get the assigned IP)
  5. Set everything to autostart on boot, attach the external battery to the Raspberry, once ready from your smartphone launch a http://$ipdelraspberry.

What shall we play on the “Zen moment harasser” radio?

Either you can copy and paste your fav audio tracks on /usr/local/pifm/sounds and modify the path of the file you want to use in the PHP script.

How do I select the FM frequencies? 

… or you can use the handy bar on top if you want to tune on a radio.

Screen Shot 2016-08-15 at 11.25.27.png

Or you can create buttons like these, with the selected radio frequencies

Screen Shot 2016-08-15 at 11.28.20.png

There you are, the final result!

IMG_20160815_113020

Happy holiday!!!

Come dare fastidio a chi ascolta la radio in spiaggia ( a volume molto alto ) e interrompe il vostro momento zen

Un saluto estivo a tutti i lettori di devopsrecipes.info 😉

Le mie vacanze si avvicinano e presto potrò finalmente allontanarmi dal caos cittadino… Nel mio zaino, oltre ad set di birre ricercatissime ( una paio di Peroni da 66 ) quest’anno ci sarà anche un trasmettitore radio FM pirata, nel caso qualcuno disturbi il mio sonno sentendo la radio ad alto volume… Se vi siete drogati, è molto probabile che la musica che sentite non è trasmessa da alcun vicino, per cui andate a prendervi un Calippo.

listening-to-old-time-radio-on-the-beach

Procuratevi più o meno le seguenti cose, oppure compratevi un trasmettitore radio su Amazon ( però sappiate che è poco fico comprarlo già fatto o scaricare app )

  1. Un Raspberry PI
  2. Un alimentatore portatile per smartphone ( meglio se ad energia solare)
  3. Una pennetta wireless
  4. Uno script in php per la gestione tramite interfaccia web (https://github.com/lucky-sideburn/piratepiwave.git)
  5. Il software https://github.com/rm-hull/pifm per l’erogazione del segnale FM
  6. Il vostro smartphone

Perchè il punto 4?

Non mi andava assolutamente di smanettare troppo con le GPIO per collegare uno schermo LCD e un regolatore di frequenza, per cui ho preferito controllare il trasmettitore tramite il mio telefono.

  1. Per prima cosa installiamo un web-server Apache + Php sulla nostra Raspbian Jessie Lite ( naturalmente ognuno è libero di usare il sistema operativo e/o web-server che preferisce )
  2. Se siete pigri potete anche prendere il mio script php https://github.com/lucky-sideburn/piratepiwave.git ( non sono un web-developer quindi si, l’interfaccia grafica non è cool )
  3. Installate https://github.com/rm-hull/pifm in /usr/local/pifm ( nella documentazione trovate a quale GPIO agganciare un’antenna fatta con un filo )
  4. configurate scheda di rete di Wifi per collegarsi all’hotspot del vostro smartphone ( dal pannello di amministrazione ricaverete l’ip assegnato )
  5. mettete tutto in autostart al boot, agganciate batteria esterna al raspino e dal vostro smartphone date un http://$ipdelraspberry

Cosa facciamo suonare sulla radio del “disturbatore momento zen”?

Copiate le vostre tracce audio preferite ( pure teknone spinto ) in /usr/local/pifm/sounds e modificate il puntamento al file audio che troverete nello script php.

Come seleziono le frequenze FM?

Potete usare la comodissima barra in alto

Screen Shot 2016-08-15 at 11.25.27.png

Oppure farvi dei tastini tipo questi con le frequenze radio già impostate

Screen Shot 2016-08-15 at 11.28.20.png

Questo è il risultato finale

IMG_20160815_113020

buone vacanze!

 

Cooking on Windows Sever..

Hi guys!

I have to manage Windows Server 2008 using Chef..

First of all, I need to choose the strategy for bootstrapping the new node and I am going to use an unattended bootstrap..

Configuring network card to talk with 33.33.33.10 (my Chef server)

Screen Shot 2016-08-04 at 18.19.09

Download and install  chef-client for Windows from https://downloads.chef.io/chef-client/windows/

Screen Shot 2016-08-04 at 15.41.06.png

Copy client.rb and validation.pem to c:\chef and launch chef-client from the command line.

This my new Windows node!

Screen Shot 2016-08-04 at 18.09.15

Let’s prepare a simple cookbook named mywindows:

knife cookbook create mywindows

Let’s insert the following resources in recipes/default.rb

#Modify the hosts file
template "C:\\Windows\\System32\\drivers\\etc\\hosts" do
  source "hosts.erb"
  action :create
end

 

#Restart an array of services
[ "Dnscache" , "UxSms" ].each do |s|
 service s do
    action :restart
   end
end

 

#Update Group Policy
execute 'gpupdate' do
  command "gpupdate.exe"
end

 

#Create a key into the registry
windows_registry 'HKCU\Software\Test' do
  values 'MySuperKEy' => Time.now
  action :create
end

 

#Install Putty
windows_package 'Putty' do
  source 'C:\\putty-0.60-installer.exe'
  installer_type :inno
  action :install
end

 

#Enable a Windows Feature
windows_feature "WindowsServerBackup" do
  action :install
end

Run chef-client and all works fine!

Screen Shot 2016-08-04 at 18.34.08.png

Bye!

 

Install Chef Server on Suse Linux Enterprise 11

Hi Folks!

Today I dealt with a problem… and I found a solution because Chef is a great tool!

At moment there is not an RPM for Suse Linux available from the official website, but this does not matter 🙂

Problem: Install Chef Server, Chefdk, Chef-manage into a Suse Linux Enterprise 11 virtual machine without installing the rpm packages of RHEL systems.

Screen Shot 2016-08-02 at 19.02.17.png

This is what you can do:

  1. Dowload the following packages:
    • chef-server-core-12.8.0-1.el6.x86_64.rpm,
    • chefdk-0.16.28-1.el6.x86_64.rpm,
    • chef-manage-2.4.1-1.el6.x86_64.rpm
  2. Extract all stuff from RPM with:
    • rpm2cpio  chef-manage-2.4.1-1.el6.x86_64.rpm   | cpio -idmv

  3. Move content of the extraction to the correct folders: /opt/{chef,chef-manage,opscoode}
  4. Set PATH=”/opt/opscode/bin:/opt/chefdk/bin/:/data/opt/chef-manage/bin:$PATH” in your profile login script
  5. chef-server-ctl reconfigure
  6. chef-manage-ctl reconfigure
  7. again chef-server-ctl reconfigure

At the end all services are up and running

Screen Shot 2016-08-02 at 19.12.35.png

and my workstation too 🙂