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

Criando instalador USB do MacOS Sierra

Para quem leu o último artigo e ficou curioso sobre como criar um instalador do Sierra para o MacOS, segue um tutorial em pt_BR para te ajudar.

Requisitos

É requisito desse tutorial ter o App que instala o MacOS Sierra em seu sistema, esse instalador deve aparecer no Launchpad ou no diretório de aplicativos.

Se você quiser baixar a versão GM use o link abaixo

https://beta.apple.com/sp/betaprogram/guide

É necessário ter um dispositivo USB.

1. Dispostivo USB

Reserve um dispositivo USB de 16 GB para utilizar como instalador, de preferência USB 3 — quanto mais rápido melhor.

Se existem arquivos importantes copie para outro local pois o processo de criação do instalador irá apagar todos os dados do USB Stick.

2. Rename no dispositivo

Insira seu USB Stick e liste os dispositivo conectados no terminal

diskutil list

Depois de identificar o nome do seu dispositivo faça o rename

sudo diskutil rename "GUTO 16G" SierraInstaller

O comando acima foi um exemplo, troque “GUTO 16G” pelo nome real do seu dispositivo

3. Criando o instalador

Este é o processo que irá criar o instalador

3.1 GM Build

Se estiver usando a versão GM rode o comando abaixo no seu terminal

sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/SierraInstaller --applicationpath /Applications/Install\ macOS\ Sierra.app --nointeraction &&say Done

A versão GM já é um build fechado, muito próximo do que será apresentado no dia 20, apenas pequenas correções serão adicionadas até dia 20 na versão definitiva.

3.2 Public Beta Build

Se estiver usando a versão Public Beta, rode o comando abaixo no terminal

sudo /Applications/Install\ macOS\ Sierra\ Public\ Beta.app/Contents/Resources/createinstallmedia --volume /Volumes/SierraInstaller --applicationpath /Applications/Install\ macOS\ Sierra\ Public\ Beta.app --nointeraction &&say Done

3.3 Developer Preview Beta Build

Se estiver usando a versão Developer Preview Beta, rode o comando abaixo no terminal

sudo /Applications/Install\ 10.12\ Developer\ Preview.app/Contents/Resources/createinstallmedia --volume /Volumes/SierraInstaller --applicationpath /Applications/Install\ 10.12\ Developer\ Preview.app --nointeraction &&say Done

4. Processo de criação

Após rodar o comando você terá uma saída similar a esta

Erasing Disk: 0%… 10%… 20%… 30%…100%…
Copying installer files to disk…
Copy complete.
Making disk bootable…
Copying boot files…
Copy complete.
Done.

Isso pode demorar dependendo da velocidade do seu USB Stick.

5. Instalando via USB

Após a criação do instalador, você verá no Finder o instalador disponível como dispositivo externo, agora você só precisa reiniciar segurando OPTION e escolher o instalador USB na hora do boot.

Refs

[s]
Guto

Aquecimento para o MacOS Sierra

1. Compatibilidade

1.1 Hardware

A primeira coisa que você precisa saber é que o MacOS Sierra vai funcionar com Macs late 2009 pra frente. Clique em “/About” e veja se seu computador será compatível com o Sierra.

Modelo mínimo

  • MacBook: late 2009 and later
  • MacBook Air: 2010 and later
  • MacBook Pro: 2010 and later
  • iMac: late 2009 and later
  • Mac Mini: 2010 and later
  • Mac Pro: 2010 and later

1.2 Software

Vale conferir se todos os softwares que você usa para trabalho ou lazer funcionarão no MacOS Sierra, acesse o site do fabricante, pesquise no google, acompanhe a galera que já está usando o Beta, isso é importante, é melhor adiar o upgrade do que atualizar e ficar sem um recurso importante no seu sistema.

Eu por exemplo atualizei pro El Capitan cedo demais e fiquei sem o TotalFinder, meu Bartender ficou funcionando parcialmente, as libs que eu usava para gerar PDFs no terminal não funcionavam mais, o discador da Huawei que eu usava para conectar meu modem USB 4G da Vivo não funcionava mais, muita coisa parou e me pegou de surpresa, eu tive que fazer downgrade, foi um grande tempo perdido. Tome todas as medidas para checar se tudo que usa é realmente compatível com o Sierra, fica a dica!

2. Atualize seus Apps

Nos dias próximos ao lançamento praticamente todos os seus Apps principais vão te informar de atualizações relacionadas a compatibilidade com o Sierra, aceite e faça todas as atualizações antes do upgrade.

3. Faxina

Aproveite para fazer aquela faxina no disco para liberar espaço para o upgrade, o El Capitan — por exemplo — necessita de 8.8 GB do disco livre para instalação, portanto, recomendo que tenha pelo menos 15 GB livre no disco para fazer esse upgrade pro Sierra com tranquilidade, remover aplicativos que você não usa ajuda bastante.

Se você não reinicia o seu MacOS há muitos dias, semanas ou meses — como eu faço — é uma boa pedida reiniciar para limpar caches e arquivos temporários do disco.

Você pode usar um App como o CleanMyMac3 para rodar uma rotina completa de limpeza e manutenção do MacOS e pode até remover APPs por ele. Caso não use o CleanMyMac, o Magican é uma opção free muito boa que tem inclusive scanner anti-trojan.

http://www.magicansoft.com/

Recomendo também rodar um antimalware para remover qualquer traço de softwares indesejados no seu sistema, a malwarebytes oferece um free que é muito eficaz.

https://www.malwarebytes.com/mac-download/

Se você desligou o rootless do El Capitan — csrutil — ative novamente antes do upgrade.

Por fim, rode uma rotina de verificação do disco usando o disk utility e com isso você estará quase pronto.

4. Backup

Antes de pensar em fazer o upgrade faça um backup completo no Time Machine, isso vai te dar segurança caso algo não funcione como deveria, com o backup você poderá fazer o restore do seu ambiente.

Eu faço sempre dois backups, um com o Time Machine e outro como CCC (Carbon Copy Cloner).

5. Conta no Apple ID

Após o upgrade o Sierra vai te pedir sua conta do iCloud, a partir do Sierra isso vai ser obrigatório devido a integrações com o Universal Clipboard e auto-unlock do MacOS — por proximidade — com Apple Watch, então, se você ainda não criou uma conta, crie antes da instalação.

6. Atualização Limpa

As dicas acima foram para aqueles que vão realizar o upgrade do El Capitan para o Sierra, preservando os dados, contudo, há quem prefira fazer uma instalação limpa através de um usb stick. Eu normalmente opto por essa técnica. Para uma instalação limpa é necessário criar um instalador USB.

Abaixo alguns bons tutoriais que ensinam a fazer isso:

http://www.macworld.com/article/3092900/macs/how-to-create-a-bootable-macos-sierra-installer-drive.html
http://www.imore.com/how-make-bootable-macos-sierra-installer-drive
http://michaelcrump.net/create-macos-sierra-boot-disk/
http://osxdaily.com/2016/06/15/make-macos-sierra-beta-usb-boot-drive/

Faça seu backup, crie o instalador e depois faça a instalação.

7. Refs

Minhas imagens no Docker Hub

Criando minhas primeiras imagens para começar a estudar Docker de verdade.

Hub do Guto

https://hub.docker.com/u/gutocarvalho/

As duas imagens “-systemd” são bases para as imagens “-puppet”. A ideia é utilizar essas imagens para validar módulos Puppet dentro um pipeline que vai envolver dentre outras coisas do GitLab + GitLab CI.

Imagens disponíveis

Centos 7 + Puppet 4.6.2

https://hub.docker.com/r/gutocarvalho/centos-puppet/    

Ubuntu 16.04 + Puppet 4.6.2

  https://hub.docker.com/r/gutocarvalho/ubuntu-puppet/    

Vou postando minhas aventuras por aqui.

[s]
Guto