Novas boxes vagrant publicadas

Publiquei novas boxes vagrant em meu repositório do atlas, são elas GitLab-CE, Puppetserver e PCP.

https://atlas.hashicorp.com/gutocarvalho

Essas boxes foram criadas utilizando Packer 0.12.2, Virtualbox 5.14.1, Vagrant 1.9.0 e CentOS 7.3.1611.

Box GitLab CE v1.0.0

Essa box é traz o GitLab CE instalado em um CentOS 7 para facilitar testes do GitLab.

https://atlas.hashicorp.com/gutocarvalho/boxes/centos7x64-gitlab-ce/versions/1.0.0

Versões:

  • CentOS 7.3.1611
  • Puppet Agent 1.9.0
  • GitLab CE 8.16.4

Para instalar a box digite o comando abaixo no terminal

vagrant box add gutocarvalho/centos7x64-gitlab-ce

Crie um diretório para o projeto

mkdir gitlab-ce; cd gitlab-ce

Crie um arquivo Vagrantfile no diretorio com o conteúdo abaixo

 # -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.hostname = "gitlab.hacklab"
  config.vm.box = "gutocarvalho/centos7x64-gitlab-ce"
  config.vm.network "private_network", ip: "192.168.250.45"
  config.vm.provider "virtualbox" do |virtualbox|
    virtualbox.customize [ "modifyvm", :id, "--cpus", "2" ]
    virtualbox.customize [ "modifyvm", :id, "--memory", "2048" ]
  end
end

Suba a vm

vagrant up

Depois que a VM subir acesse o endereço e siga as instruções.

http://192.168.250.45 

Info sobre o projeto

https://gitlab.com/gutocarvalho/packer-centos-gitlab-ce

Box PuppetServer v2.0.0

Essa box é traz o Puppet Server 2.7 instalado em um CentOS 7 para facilitar testes do Puppet e Puppetserver.

https://atlas.hashicorp.com/gutocarvalho/boxes/centos7x64-puppetserver/versions/2.0.0

Versões:

  • CentOS 7.3.1611
  • Puppet Server 2.7.2
  • Puppet Agent 1.9.0

Para instalar a box digite o comando abaixo no terminal

vagrant box add gutocarvalho/centos7x64-puppetserver

Crie um diretório para o projeto

mkdir puppetserver; cd puppetserver

Crie um arquivo Vagrantfile no diretorio com o conteúdo abaixo

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.hostname = "puppetserver.hacklab"
  config.vm.box = "gutocarvalho/centos7x64-puppetserver"
  config.vm.network "private_network", ip: "192.168.250.46"
  config.vm.provider "virtualbox" do |virtualbox|
    virtualbox.customize [ "modifyvm", :id, "--cpus", "2" ]
    virtualbox.customize [ "modifyvm", :id, "--memory", "4096" ]
  end
end

Info sobre o projeto

https://gitlab.com/gutocarvalho/packer-centos7-puppetserver

Box PCP v3.0.0

Essa box contém o projeto PCP que traz uma implementação completa do Puppet 4 com todos os serviços integrados.

https://atlas.hashicorp.com/gutocarvalho/boxes/centos7x64-pcp/versions/3.0.0

Versões:

  • CentOS 7.3.1611
  • Puppet Server 2.7.2
  • Puppet Agent 1.9.0
  • Mcollective 2.10.0
  • Hiera 3.3.0
  • Facter 3.6.0
  • PuppetDB 4.2.4
  • PostgreSQL 9.5.5
  • Puppet Explorer 2.0.0
  • Puppet Board 0.2.0
  • ActiveMQ 5.14.0
  • R10k 2.5.2

Para instalar a box digite o comando abaixo no terminal

vagrant box add gutocarvalho/centos7x64-pcp

Crie um diretório para o projeto

mkdir pcp; cd pcp

Crie um arquivo Vagrantfile no diretorio com o conteúdo abaixo

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|


  if Vagrant.has_plugin?("vagrant-hosts")
    config.vm.provision :hosts do |provisioner|
      provisioner.add_localhost_hostnames = false
      provisioner.autoconfigure = true
      provisioner.sync_hosts = true
      provisioner.add_host '192.168.250.35', ['puppet']
      provisioner.add_host '192.168.250.35', ['puppetdb']
    end
  end

  config.vm.box = "gutocarvalho/centos7x64-pcp"

  # puppet server + puppet agent
  config.vm.define "puppetserver" do |puppetserver|
    puppetserver.vm.hostname = "puppet-pcpm.hacklab"
    puppetserver.vm.network :private_network, ip: "192.168.250.35"
    puppetserver.hostsupdater.aliases = ["puppetboard.hacklab", "puppetexplorer.hacklab"]
    puppetserver.vm.provider "virtualbox" do |v|
      v.customize [ "modifyvm", :id, "--cpus", "2" ]
      v.customize [ "modifyvm", :id, "--memory", "6144" ]
      v.customize [ "modifyvm", :id, "--name", "puppet-pcpm.hacklab" ]
    end
  end

end

Instale os seguintes plugins

vagrant plugin install vagrant-hosts
vagrant plugin install vagrant-hostsupdater

Inicie o projeto

vagrant up

Acesse a vm

vagrant ssh

Info sobre o projeto

https://gitlab.com/gutocarvalho/packer-centos-pcp
https://gitlab.com/puppet-br/pcp
https://gitlab.com/puppet-br/pcp-controlrepo

Calendário 2017 de treinamentos Oficiais de Puppet para o Brasil

Muito leitores e amigos tem me perguntando sobre as datas de treinamentos Puppet para 2017, sim elas já foram marcadas, seguem as datas que temos para o primeiro semestre.

Puppet Fundamentals

São Paulo

Dias 28, 29 e 30 de Março

Brasília

Dias 25, 26 e 27 de Abril

Puppet Practitioner

São Paulo

Dias 23, 24 e 25 de Maio

Puppet Architect

São Paulo

Dias 27 e 28 de Junho

Mais informações no site da Instruct, única ATP (Authorized Training Partner) do Brasil.

http://instruct.com.br

[s]
Guto

Meetup Puppet em Sampa no dia 29 de Setembro

Faça sua inscrição!

http://www.meetup.com/pt-BR/puppet-br/events/232969711/

Vamos conversar sobre DevOps, Infra as Code, Infra Ágil, Puppet e tecnologias como GitLab, Docker e Rancher.

Será um encontro informal no formato Q/A, alguém lança uma pergunta para que os presentes respondam. Vale puxar o notebook, carregar site, demo, hands on, a ideia é ter um bate-papo descontraído sobre esses assuntos.

[s]
Guto

Nova Vagrant BOX com CentOS 7.2.1511 e GitLab CE 8.12.0

Divulgando nova box CentOS 7.2 com GitLab CE 8.12.0 no atlas. Agora fica mais fácil testar a última versão do Gitlab com o menor esforço possível :)

1. Instalando a box

Se você usa vagrant 1.8.x para fazer download da box digite

vagrant box add gutocarvalho/centos7x64-gitlab-ce

Crie um diretório para o projeto

mkdir centos7-gitlab-ce; cd centos7-gitlab-ce

Crie um arquivo Vagrantfile no diretorio com o conteúdo abaixo

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.hostname = "gitlab.hacklab"
  config.vm.box = "gutocarvalho/centos7x64-gitlab-ce"
  config.vm.network "private_network", ip: "192.168.250.44"
  config.vm.provider "virtualbox" do |virtualbox|
    virtualbox.customize [ "modifyvm", :id, "--cpus", "1" ]
    virtualbox.customize [ "modifyvm", :id, "--memory", "2048" ]
    virtualbox.gui = true
  end
  if Vagrant.has_plugin?("vagrant-cachier")
    config.cache.scope = :box
  end
end

Inicie o projeto

vagrant up

Acesse a vm

vagrant ssh

Acesse o GitLab

http://192.168.250.44   

2. Refs

Para acessar a box no atlas

https://atlas.hashicorp.com/gutocarvalho/boxes/centos7x64-gitlab-ce   

O repo git com o código para build da box

https://gitlab.com/gutocarvalho/packer-centos-gitlab

É isso, divirta-se.

[s]
Guto

Vagrant 1.8.5 ssh retrying bugfix

O Vagrant 1.8.5 tem um bug crítico em guests linux, o vagrant simplesmente não consegue terminar o vagrant up por causa de um bug na geração do arquivo authorized_keys que contém as chaves permitidas para acesso ssh por chaves no guest. O problema é que o vagrant está gerando o arquivo com a permissão errada e o subsistema ssh — neste casos — ignora o arquivo por questões de segurança.

Você provavelmente está tendo uma saíde similar após atualizar para o 1.8.5

centos: Waiting for machine to boot. This may take a few minutes...
    centos: SSH address: 127.0.0.1:2222
    centos: SSH username: vagrant
    centos: SSH auth method: private key
    centos: Warning: Remote connection disconnect. Retrying...
    centos:
    centos: Vagrant insecure key detected. Vagrant will automatically replace
    centos: this with a newly generated keypair for better security.
    centos:
    centos: Inserting generated public key within guest...
    centos: Removing insecure key from the guest if it's present...
    centos: Key inserted! Disconnecting and reconnecting using new SSH key...
    centos: Warning: Authentication failure. Retrying...
    centos: Warning: Authentication failure. Retrying...
    centos: Warning: Authentication failure. Retrying...
    centos: Warning: Authentication failure. Retrying...
    centos: Warning: Authentication failure. Retrying...
    centos: Warning: Authentication failure. Retrying...
    centos: Warning: Authentication failure. Retrying...
    centos: Warning: Authentication failure. Retrying...
    centos: Warning: Authentication failure. Retrying...
    centos: Warning: Authentication failure. Retrying...

A solução é simples edite o arquivo public_key.rb

/opt/vagrant/embedded/gems/gems/vagrant-1.8.5/plugins/guests/linux/cap/public_key.rb    

Procure a linha

mv ~/.ssh/authorized_keys.tmp ~/.ssh/authorized_keys

Adicione abaixo dela

chmod 0600 ~/.ssh/authorized_keys

Salve, e suba a VM novamente, isso deve resolver o problema.

Refs

No vagrant 1.8.6 isto estará resolvido, mais info sobre o bug abaixo

[s]
Guto

Rsync Unicode entre Mac e Linux

O problema

Case você use MacOS para trabalhar — com é o meu caso, e também para publicar sites em servidores Linux utilizando rsync, tenho uma dica preciosa para vocês.

Há alguns meses eu criei um novo blog utilizando Hugo, neste blog quando eu criava posts com palavras com acento eu percebia que o link no site quebrava após a cópia para o servidor linux. Inicialmente eu achei que era um problema no Apache HTTPd, eu até setei default chartset e nada de resolver, estava quase jogando a toalha quando resolvi usar o Google de verdade, após alguma pesquisa entendi o problema.

No FAQ ( https://rsync.samba.org/FAQ.html ) do projeto RSYNC já tem a dica de como resolver isso, mas é um pouco obscuro de entender.

rsync recopies the same files

Some people occasionally report that rsync copies too many files when they expect it to copy only a few. In most cases the explanation is that you forgot to include the --times (-t) option in the original copy, so rsync is forced to (efficiently) transfer every file that differs in its modified time to discover what data (if any) has changed.

Another common cause involves sending files to an Microsoft filesystem: if the file's modified time is an odd value but the receiving filesystem can only store even values, then rsync will re-transfer too many files. You can avoid this by specifying the --modify-window=1 option.

Yet another periodic case can happen when daylight-savings time changes if your OS+filesystem saves file times in local time instead of UTC. For a full explanation of this and some suggestions on how to avoid them problem, see this document.

Something else that can trip up rsync is a filesystem changeing the filename behind the scenes. This can happen when a filesystem changes an all-uppercase name into lowercase, or when it decomposes UTF-8 behind your back.

An example of the latter can occur with HFS+ on Mac OS X: if you copy a directory with a file that has a UTF-8 character sequence in it, say a 2-byte umlaut-u (\0303\0274), the file will get that character stored by the filesystem using 3 bytes (\0165\0314\0210), and rsync will not know that these differing filenames are the same file (it will, in fact, remove a prior copy of the file if --delete is enabled, and then recreate it).

You can avoid a charset problem by passing an appropriate --iconv option to rsync that tells it what character-set the source files are, and what character-set the destination files get stored in. For instance, the above Mac OS X problem would be dealt with by using --iconv=UTF-8,UTF8-MAC (UTF8-MAC is a pseudo-charset recognized by Mac OS X iconv in which all characters are decomposed).

If you think that rsync is copying too many files, look at the itemized output (-i) to see why rsync is doing the update (e.g. the 't' flag indicates that the time differs, or all pluses indicates that rsync thinks the file doesn't exist). You can also look at the stats produced with -v and see if rsync is really sending all the data. See also the --checksum (-c) option for one way to avoid the extra copying of files that don't have synchronized modified times (but keep in mind that the -c option eats lots of disk I/O, and can be rather slow).

Em resumo, quando você copia um arquivo do MacOS que usa sistema de arquivos HFS+ para um sistema linux há um problema pois o MacOS usa Unicode do tipo NFD enquanto o Linux usa Unicode do tipo NFC, com isso, dependendo do nome do arquivo, o Linux pode não reconhecer, em especial no meu caso em que um arquivo HTML possuia caracteres especiais.

Como resolver?

Eu copiava os arquivos dessa forma entre meu mac e o servidor linux

rsync -avz --stats --progress --delete /Mac/origem/* usuario@fqdn:/Linux/destino/

O segredo é acrescentar alguns parametros de conversão ao comando

--iconv=utf-8-mac,utf-8

O comando final ficará assim

rsync -avz --stats --progress --delete --iconv=utf-8-mac,utf-8 /Mac/origem/* usuario@fqdn:/Linux/destino/

Com isso meus arquivos são convertidos e transferidos corretamente.

Agora posso usar acento nos títulos dos posts sem receio de quebrar os links.

[s]
Guto

Inscreva-se no DevOpsDays Brasília

É isto mesmo que você leu, vai ter DevOpsDays em Brasília e as inscrições para o evento já estão abertas, são apenas 280 vagas a venda, não perca a oportunidade de participar do evento que criou o termo “devops”.

Site do evento

http://brasilia.devopsdays.com.br

Agenda no site devopsdays.org

https://www.devopsdays.org/events/2016-brasilia/welcome/

Caso queira palestrar no evento o CFP também está aberto

http://brasilia.devopsdays.com.br/about/cfp/

Site para inscrições (eventize)

http://brasilia.devopsdays.com.br/post/registration_open/

Use o código DC61975969 para ganhar 20% de desconto na inscrição (Early Bird), esse desconto é limitado, aproveite!

O que é o DevOpsDays?

O DevOpsDays Brasília, associado e reconhecido pelo DevOpsDays.org, tem como objetivo reunir os interessados no assunto DevOps através da apresentação de palestras, painéis, minicursos e outras atividades. Considerando o aumento do interesse no desenvolvimento de software e cultura Ágil no Brasil, acreditamos que falar sobre DevOps é uma necessidade. O DevOpsDays Brasília 2016 vem preencher essa lacuna, uma vez que esse assunto ainda não foi tratado de forma sistemática em um evento próprio, mesmo com a atual e crescente demanda no Brasil. Pretendemos para esse evento convidar profissionais de empresas e organizações conhecidas no cenário de tecnologia da informação, para assim motivar a ampla participação, não somente de pessoas que já conhecem a cultura DevOps, mas também despertar o interesse daqueles que ainda não conhecem.

Nos vemos lá!

[s]
Guto

Box vagrant para projeto PCP

Criei uma box vagrant para facilitar o uso do PCP.

https://atlas.hashicorp.com/gutocarvalho/boxes/centos7x64-pcp

Essa box contém o PCP com os pacotes nas seguintes versões

  • Pupper Agent 4.6.2
  • Mcollective 2.9.0
  • Hiera 3.2.1
  • Facter 3.4.1
  • Puppet Server 2.6.0
  • PuppetDB 4.2.2
  • R10k 2.4.3
  • PostgreSQL 9.5.4
  • PuppetBoard 0.2.0
  • ActiveMQ 5.14.0

Recomendo usar o vagrant 1.8.4 e virtualbox 5.0.26.

1. Instalando a box

Para instalar a box digite o comando abaixo no terminal

vagrant box add gutocarvalho/centos7x64-pcp

Crie um diretório para o projeto

mkdir pcp; cd pcp

Crie um arquivo Vagrantfile no diretorio com o conteúdo abaixo

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  if Vagrant.has_plugin?("vagrant-hosts")
    config.vm.provision :hosts do |provisioner|
      provisioner.add_localhost_hostnames = false
      provisioner.autoconfigure = true
      provisioner.sync_hosts = true
      provisioner.add_host '192.168.250.35', ['puppet']
      provisioner.add_host '192.168.250.35', ['puppetdb']
    end
  end

  config.vm.box = "centos7-pcp"

  # puppet community platform

  config.vm.define "puppetserver" do |puppetserver|
    puppetserver.vm.hostname = "puppet-pcpm.hacklab"
    puppetserver.vm.network :private_network, ip: "192.168.250.35"
    puppetserver.hostsupdater.aliases = ["puppetboard.hacklab", "puppetexplorer.hacklab"]
    puppetserver.vm.provider "virtualbox" do |v|
      v.customize [ "modifyvm", :id, "--cpus", "2" ]
      v.customize [ "modifyvm", :id, "--memory", "3072" ]
      v.customize [ "modifyvm", :id, "--name", "puppet-pcpm.hacklab" ]
    end
  end

end

Instale os seguintes plugins

vagrant plugin install vagrant-hosts
vagrant plugin install vagrant-hostsupdater

Inicie o projeto

vagrant up

Acesse a vm

vagrant ssh

Divirta-se.

2. refs

Box source

Project PCP

[s]
Guto

Novo PCP liberado com muitas novidades

O time do PCP acaba de finalizar uma atualização que traz as últimas versões de pacotes disponíveis.

  • Pupper Agent 4.6.2
  • Mcollective 2.9.0
  • Hiera 3.2.1
  • Facter 3.4.1
  • Puppet Server 2.6.0
  • PuppetDB 4.2.2
  • R10k 2.4.3
  • PostgreSQL 9.5.4
  • PuppetBoard 0.2.0
  • ActiveMQ 5.14.0

O PCP agora está de casa nova, a partir dessa versão estamos usando o GitLab.com como repositório.

Se tiver dúvidas entre na comunidade PCP no telegram

http://bit.ly/telegram-pcp

Divirta-se!

[s]
Guto

Nova box vagrant com Puppet Server 2.6.0 em CentOS 7

Divulgando nova box CentOS 7.2 com Puppet 4.6.2 e Puppet Server 2.6.0 no atlas. Agora fica mais fácil testar a última versão do Puppet Server com o menor esforço possível :)

1. Instalando a box

Se você usa vagrant 1.8.x para fazer download da box digite

vagrant box add gutocarvalho/centos7x64-puppetserver

Crie um diretório para o projeto

mkdir centos7-puppetserver; cd centos7-puppetserver

Crie um arquivo Vagrantfile no diretorio com o conteúdo abaixo

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.hostname = "puppetserver.hacklab"
  config.vm.box = "gutocarvalho/centos7x64-puppetserver"
  config.vm.network "private_network", ip: "192.168.250.47"
  config.vm.provider "virtualbox" do |virtualbox|
    virtualbox.customize [ "modifyvm", :id, "--cpus", "1" ]
    virtualbox.customize [ "modifyvm", :id, "--memory", "3072" ]
    virtualbox.gui = true
  end
  if Vagrant.has_plugin?("vagrant-cachier")
    config.cache.scope = :box
  end
end

Inicie o projeto

vagrant up

Acesse a vm

vagrant ssh

2. Refs

Para acessar dados da box

https://atlas.hashicorp.com/gutocarvalho/boxes/centos7x64-puppetserver   

O repo git com o código para build da box

https://gitlab.com/gutocarvalho/packer-centos7-puppetserver

É isso, divirta-se.

[s]
Guto