devops

Test Kitchen – overview sul testing di infrastrutture

Ultimamente mi tocca, con molto piacere, rispolverare un pò di argomenti passati sulla parte di test di infrastrutture tramite Chef.

Al posto di scrivermi il solito spiegone in markdown direi che un post ci sta tutto ūüôā

Iniziamo con scegliere il framework

5924439

e il DSL da utilizzare per i nostri test.

InSpecLogo

Userò InSpec. Riporto il link della documentazione dove sono elencati vari costrutti e metodi da utilizzare.

In .kitchen.yml, all’interno del cookbook, selezioniamo il verifier

verifier:
  name: inspec

Il file da editare è test/smoke/default/default_test.rb.

Di seguito un pò di test fatti per verificare il ruolo di base di alcuni server

  • Controllo di un nameserver in /etc/resolv.conf
describe file('/etc/resolv.conf') do
  its('content') { should match(/^nameserver\ 8.8.8.8$/) }
end
  • Controllo NTP
[
 /^server\ ntp1.inrim.it.*/,
 /^server\ ntp2.inrim.it.*/
].each do |ntp|
 describe file('/etc/ntp.conf') do
 its('content') { should match(ntp) }
 end
end
  • Selinux √® disabilitato?
describe command('getenforce') do
 it { should exist }
 its('matcher') { should eq 'Permissive' }
end

Ora lanciamo ‘kitchen verify’ e verifichiamo il risultato dei test

File /etc/resolv.conf
 ‚úĒ content should match /^nameserver\ 8.8.8.8$/
 File /etc/resolv.conf
 ‚úĒ content should match /^nameserver\ 8.8.4.4$/
 File /etc/ntp.conf
 ‚úĒ content should match /^server\ ntp1.inrim.it.*/
 File /etc/ntp.conf
 ‚úĒ content should match /^server\ ntp2.inrim.it.*/

Test Summary: 4 successful, 0 failures, 0 skipped
Advertisements
big data, devops, Devops Kung-fu, mongodb

Devops trends from MongoDB, Grafana and spammed mailbox. Update #1

Hi all!

this is the first update from my new Big data¬†experimental project…

How can I be updated with devops trend technologies without reading tons of blog?

I started to collect¬†raw data from Twitter timeline and Gmail spammed mailbox¬†that receives messages¬†from websites for job seekers and others like Stack Exchange…

This is the result¬†and the first day of data collecting…I am curious to see what happens with tons of data and some adjustments…

Link to Grafana dashboard

http://www.congruit.io/

screen-shot-2017-03-06-at-11-11-20

devops

Docker containers high availability using Congruit

Congruit cannot be cool if it does not control Docker containers. From today it does! At moment is still an experimental feature but it seems to work fine.

logomakr_9879lg

Start Congruit in friend mode

congruit -debug -friend -token \

foobar -debug \

-gitrepo https://github.com/Congruit/example-stockroom.git \

-ssl_cert /vagrant/insecure-domain.crt  \

-ssl_key /vagrant/insecure-domain.key

With¬†these¬†arguments your Congruit instance starts and waits for a work to do…

screen-shot-2017-01-04-at-22-18-51

Start Congruit in Supervisor mode..

Supervisor mode is used to control Congruit “friends” via HTTPS.

-gitrepo https://github.com/Congruit/stockroom-docker-clu-controller.git  


-supervisor  -debug

You can find instructions to start and monitor two Docker containers here.

You will find an example of the workplace for managing Dockers in a Linux Centos7 down below:

[
 {
 "places": ["centos7" , "docker_is_not_installed"],
 "works": ["docker_package_yum"]
 },
 {
 "places": ["docker_is_not_running_systemd"],
 "works": ["docker_start_systemd"]
 },
 {
 "places": ["docker_tomcat_image_is_not_present"],
 "works": ["docker_pull_tomcat"]
 },
 {
 "places": ["everywhere", "docker_tomcat_is_not_running"],
 "works": ["run_tomcat_docker"]
 }
]
Configuration Management, devops, Linux

Anno nuovo, configuration management nuovo…

Buon anno a tutti i lettori di devopsrecipes.info ūüôā

Qualche giorno fa, approfittando dell’apparente calma lavorativa tipica delle feste natalizie, ho deciso di studiare GO (https://golang.org/).

Molto figo, ma soprattutto, usare i puntatori mi ha fatto tornare indietro nel tempo quando “smanettavo” pesantemente¬†in C.

Quel che √® uscito fuori, tra un p√≤ i programmi pieni di “foo” e “foobar” senza senso, √® stato Congruit. Un nuovo configuration management tool scritto in GO ma che opera prettamente in Bash…

Link al repo Github

logomakr_9879lg

Naturalmente √® molto minimale ma ha un non so che di “Bash” che lo colora molto di Sys-admin.

Diciamo che nell’ottica Devops √® un p√≤ pi√Ļ Ops. Pull request al repo sono benvenute ūüėČ

Saluti

automate, chef, devops, liferay, vagrant

Cluster Liferay? Vagrant up @ Liferay Symposium Italy 2016

Salve a tutti,

dopo ormai svariati anni che lavoro sulle metodologie Devops, con una particolare attenzione al configuration management, penso sempre che alcune tecniche non possano pi√Ļ stupire/interessare una platea di persone altamente specializzate.

Invece il feedback di quanto mostrato oggi, al Liferay Symposium 2016 tenutosi a Milano, √® stato molto positivo ( grazie anche alla spettacolare partecipazione di Alessio Biancalana aka dottorblaster http://dottorblaster.it/ e Claudio Umana ).

Di cosa si è parlato?

Il tema era molto semplice, come dare agli sviluppatori la possibilità di tirare su un cluster Liferay in pochi minuti.

Effetto demo… dovevo avere un exit strategy nel caso in cui la demo si rompesse.. Eccolo qui:

https://www.youtube.com/watch?v=VofvrMGaBqc

Tool Devops utilizzati?

Ho optato per, un ormai consolidato binomio, Vagrant + Chef.

L’architettura?

Ormai, in azienda, sanno tutti che sono un fan di Ha-Proxy per cui l’ho posizionato davanti a tutto.

clustat

Screen Shot 2016-11-09 at 19.48.04.png

Sotto, i due backend Apache Tomcat con la versione enterprise di Liferay Portal 6.2 EE sp14, che comunicano tramite multicast.

default.admin.password=liferay
default.admin.screen.name=Admin
default.admin.email.address.prefix=admin
default.admin.first.name=Test
default.admin.last.name=Test
setup.wizard.enabled=false
users.reminder.queries.enabled=false
terms.of.use.required=false

web.server.display.node=true
org.quartz.jobStore.isClustered=true

cluster.link.enabled=true
ehcache.cluster.link.replication.enabled=true
lucene.replicate.write=true
net.sf.ehcache.configurationResourceName=/ehcache/hibernate-clustered.xml
ehcache.multi.vm.config.location=/ehcache/liferay-multi-vm-clustered.xml

dl.store.impl=com.liferay.portlet.documentlibrary.store.AdvancedFileSystemStore
dl.store.file.system.root.dir=<%=node[‘sourcesense_liferay’][‘data_nfs_mount’]%>/document_library

cluster.link.autodetect.address=192.168.50.4:3306

jdbc.default.driverClassName=com.mysql.jdbc.Driver
jdbc.default.url=jdbc:mysql://<%=node[‘sourcesense_mysql’][‘db_host’]%>/<%=node[‘sourcesense_mysql’][‘database’]%>?useUniCode=true&characterEncoding=UTF-8&useFastDateParsing=false
jdbc.default.username=<%=node[‘sourcesense_mysql’][‘dbuser’]%>

Sotto ancora, una macchina con NFS per il disco dati condiviso, e Mysql Server.

Ho versionato il tutto su https://github.com/lucky-sideburn/demo-liferay  dichiarando nel Vagrantfile, nodi come questo:

liferaynode01.vm.provision :chef_solo do |chef|
chef.roles_path = ‘./chef/roles’
chef.data_bags_path = ‘./chef/data_bags’
chef.run_list = [
‘role[java]’,
‘recipe[sourcesense_liferay]’
]
end

 Il codice usato per la demo lo trovate qui:

https://github.com/lucky-sideburn/demo-liferay

Sarebbe bello scorporare i vari cookbook e condividerli nella community Chef ūüôā Per cui prendetene e cheffizzatene tutti!

ciao!