O Projeto Software Livre Bahia (PSL-BA) é um movimento aberto que busca, através da força cooperativa, disseminar na esfera estadual os ideais de liberdade difundidos pela Fundação Software Livre (FSF), possibilitando assim a democratização do acesso a informação, através dos recursos oferecidos pelo Software Livre. Esta busca tem seus alicerces fundados na colaboração de todos, formando um movimento sinérgico que converge na efetivação dos ideais de Liberdade, Igualdade, Cooperação e Fraternidade.
O Projeto Software Live Bahia é formado pela articulação de indivíduos que atuam em instituições publicas e privadas, empresas, governos ou ONGs, e demais setores da sociedade. Além disso o projeto não é subordinado a qualquer entidade ou grupo social, e não estabelece nenhuma hierarquia formal na sua estrutura interna.
DevOps Brasil – Agregador de blogs
25 de Maio de 2015, 2:00 - sem comentários aindaHá algum tempo tenho sentido dificuldade de encontrar um espaço para congregar material e reunir interessados sobre esse assunto, pois tudo era muito pulverizado pela internet. Logo, como eu também venho da comunidade Software Livre, resolvi “enviar o patch” para corrigir isso e agora apresento a você uma proposta.
DevOps Brasil é um planet, um agregador de blogs, a ideia é reunir postagens sobre o assunto devops e assim fortalecer ainda mais os interessados no assunto, trocando experiência e provocando ainda mais o networking. Lendo materiais na internet, encontrei seus textos e resolvi lhe convidar para iniciar esse projeto comigo. Topa participar?
Nesse planet, as postagens aparecem resumidas, ou seja, o leitor para ler a versão completa clicará no assunto, que por sua vez será redirecionado para seu blog pessoal. Resumindo, a ideia do planet não é centralizar as visitas, mas sim possibilitar sua distribuição.
Entrar no Planet
Para adicionar seu blog aqui é muito simples. Basta submeter seu pedido via um merge request no repositório do planet devops-br.
O arquivo a ser manipulado é o config.ini, ele é auto-explicativo, mas caso tenha problemas basta seguir o exemplo do blog “techfree.com.br” que já está configurado nesse arquivo.
Blogs DevOps.
Seu pedido será avaliado, e caso aceito, seu blog será automaticamente consultado e as postagens sobre DevOps aparecerão aqui no planet.
Atenção! Caso seu blog não seja apenas sobre DevOps, em seu cadasto coloque o endereço feed da categoria que utiliza em seu blog para falar sobre devops. Assim apenas o conteúdo de DevOps será enviado para o planet, evitando textos sobre outro assunto no planet.
Para facilitar nossa convivência no planet, temos algumas regras simples:
- Seja cordial em suas postagens.
- Evite palavrões
- Evite fugir do assunto do texto
- Evite copiar texto sem sua devida permissão
Docker – Mapeamento de portas (Vídeo)
18 de Maio de 2015, 3:04 - sem comentários aindaNesse vídeo você verá como é possível acessar os serviços hospedados nos containers docker por diversas formas.
Lançamento do 1.6.1 Docker com várias correções de segurança
10 de Maio de 2015, 3:43 - sem comentários aindaApós diversas notificações de vulnerabilidades urgentes, a equipe de segurança do Docker resolveu lançar rapidamente uma nova versão com soluções para os casos reportados.
Segue abaixo as falhas encontradas, que já foram resolvidas na versão 1.6.1:
[CVE-2015-3629] Symlink traversal on container respawn allows local privilege escalation
O libcontainer da versão 1.6.0 introduziu mudanças que facilitaram a fuga da montagem do namespace no respawn do container. Isso permite que imagens maliciosas possam escrever arquivos no sistema host, ou seja, que escape do container.
Descoberto por Tõnis Tiigi.
[CVE-2015-3627] Insecure opening of file-descriptor 1 leading to privilege escalation
O file descriptor passado pelo libcontainer para o processo com PID 1 do container foi encontrado com possibilidade de ser aberto antes de ser executado o chroot, sendo assim permitindo abertura insegura de symlink traversal. Isso permite que containers maliciosos possam escalar o privilégio localmente.
Descoberto por Tõnis Tiigi.
[CVE-2015-3630] Read/write proc paths allow host modification & information disclosure
Muitos caminhos abaixo de /proc estavam com permissão de escrita para o container, permitindo a manipulação de configurações globais do sistema. Esses caminhos incluíam /proc/asound, /proc/timer_stats, /proc/latency_stats, e /proc/fs.
Ao permite escrita no /proc/fs, verificou-se que volumes CIFS podem ser forçados a um “protocol downgrade attack” por um usuário root no sistema operacional dentro do container.
Descoberto por Eric Windisch do time de segurança do Docker
[CVE-2015-3631] Volume mounts allow LSM profile escalation
Ao permitir que volumes possam sobrescrever arquivos do /proc dentro de um namespace, um usuário pode específicar arbitrariamente politicas para o módulo de segurança do Linux, incluindo setar uma política de não-confinada sob o AppArmonr ou uma política “docker_t” que seria gerenciada pelo SELinux.
Descoberto por Eric Windisch do time de segurança do Docker
Todas as falhas foram corrigidas no Docker 1.6.1! Usuários que utilizam imagens inseguras estão encorajados a atualizar o seu docker urgentemente.
Atualizando seu Docker no Debian
É muito simples, basta executar os comandos abaixo:
# wget http://ftp.br.debian.org/debian/pool/main/d/docker.io/docker.io_1.6.1+dfsg1-1_amd64.deb
# dpkg -i docker.io_1.6.1+dfsg1-1_amd64.deb
# rm docker.io_1.6.1+dfsg1-1_amd64.deb
O que é docker? (Vídeo)
2 de Maio de 2015, 11:17 - sem comentários aindaA ideia é demonstrar o que é Docker, principalmente para aquelas pessoas que ainda não conhecem e não perceberam ainda como isso pode ser interessante para suas atividades.
Por hoje é só! Fiquem atentos para novas postagens sobre DevOps.
Monitorando automaticamente o Docker com Zabbix
27 de Abril de 2015, 0:59 - sem comentários aindaDocker é uma ferramenta perfeita para criar automaticamente ambientes para novos serviços. Esse processo de criação é muito fácil e em alguns casos é feita automaticamente por outra ferramenta ou script.
Problemas podem acontecer e a equipe de TI precisa estar preparada para descobrir isso antes que cause indisponibilidade.
Problema
Como o time de monitoramento poderá acompanhar esse rápido processo de criação e manter todos esses ativos no sistema de monitoramento? Nos precisamos monitorar automaticamente todos os containers.
Solution
Eu desenvolvi alguns scripts para listar containers, adicionar eles no Zabbix usando a funcionalidade LLD e monitorar todos esses novos hosts.
Infelizmente nos precisamos de acesso especial para monitorar essas informações no Docker, por conta disso eu usei sudo e job cron do root.
Abaixo os itens monitorados por essa solução:
- Porcentagem de CPU usado
- Porcentagem de memória usada
- Bytes enviados e recebidos por segundo
- Pacotes enviados e recebidos
- Pacotes enviados e recebidos, mas descartados
- Pacotes enviados e recebidos com erros
Quer conhecer a solução antes de testar? Olhe esse vídeo!
Eu testei no seguinte ambiente:
- python 2.7.9
- docker 1.6
- zabbix agent and server 2.4
Se você testar em um diferente, por favor me avise.
Automatically monitoring of docker using Zabbix
27 de Abril de 2015, 0:49 - sem comentários aindaDocker is a perfect tool to quickly create many environments to new services. That creation process is so easy, in some cases this is done automatically by other tool or script.
Problems can happens and IT team should be ready to figure it out before causing unavailability.
Problem
How can a monitoring team follow this quickly creation process and keep all this new assets in monitoring system? We need to automatically monitor all containers.
Solution
I developed some scripts to list docker containers, add it in Zabbix using LLD feature and monitor these new hosts.
Unfortunately we need special access to monitor that information in docker, so I used sudo and root cron job.
Follow the items monitored by this solution:
- CPU used percent
- Memory used percent
- Bytes received and sent per second
- Packages received and sent
- Packages received and sent, but dropped
- Packages received and sent with erros
Do you wanna know the solution before test? Take a look at the video:
I tested tested in the follow environment:
- python 2.7.9
- docker 1.6
- zabbix agent and server 2.4
If you test in a different one, please let me know.
Lançamento do Docker 1.6
20 de Abril de 2015, 9:12 - sem comentários aindaO Docker continua crescendo muito rápido e com pouco mais de 2 meses, lança uma nova versão recheada de novidades.
Entre as novidades desse lançamento temos: Label para containers, cliente Docker para Windows, driver para log. Isso sem contar com os lançamentos do compose 1.2, Swarm 0.2 e machine 0.2. Vamos detalhar um pouco esse mega release.
Label para containers
Esse recurso é muito interessante a nível de organização e agrupamento. Uma vez que as tags tem um papel quase como “versionamento”, as labels assumem a marcação que pode incluir “assuntos”, “funcionalidades”, “ambiente” e afins nos containers. Pode parecer pouca coisa para quem usa o Docker para uma situação específica, mas para grandes soluções é uma ajuda e tanto.
Quer aprender a usar? Leia aqui.
Cliente Docker para Windows
Finalmente parece que a Microsoft conseguiu entrar em alguma tendência no momento certo, pois está apostando fortemente no Docker. A demonstração disso foi a submissão de 70 pull requests. Assim como no MAC, O Windows somente poderá ser utilizado como cliente remoto que deve ser conectar a um Docker “Server”, que ainda é só pode ser instalado nativamente apenas no GNU/Linux.
Muitos amantes do GNU/Linux podem ficar tristes com essa declaração, mas a grande funcionalidade do Docker que é “Faça uma vez, rode em qualquer lugar” talvez dependa desse suporte nativo mais amplo da Microsoft. Isso levando em consideração que ela cumpra sua promessa de manter a compatibilidade.
Você pode ler mais sobre isso no blog da Azure.
Driver para log
Tem havido um número crescente de propostas para uma API de registro que lhe permitiria enviar logs de containers para outros sistemas, como Syslog ou um terceiro. Esse novo driver de log segue o mesmo conceito de storage e exec já presente no Docker.
A opção docker run –log-driver tem três possibilidades:
json-file (padrão): Que é basicamente o que já usado no Docker atualmente. Todos os logs dos containers são armazenados na pasta /var/lib/docker/containers/<Containers ID>/<container id>-json.log
syslog: Como o próprio nome já revela, é uma forma de enviar esse log via syslog do host “hospedeiro”. Veja como funciona:
# docker run -d –log-driver=syslog gomex/debian:padrao echo “Hello”
c2ed7a98583c82a90111ffba5fb89e73dcd6e681a03c921da538a84ffd7216d0
No /var/log/syslog estará assim:
Apr 17 23:29:18 gondor docker[15432]: c2ed7a98583c: Hello
Perceba que temos tanto o nome aplicação docker como o ID resumido do container, o que é o suficiente para fazer uma boa gerência desse log. Ótimo para quem deseja minimizar o máximo de processos em execução no container, mas não abre mão de um log centralizado e organizado.
none: Como o próprio nome também já revela, é uma forma de não gerar log do container para o host “hospedeiro”. Essa opção é ótima para containers que geram logs desnecessários.
Outros lançamentos
A comunidade Docker promoverá alguns Meetups para apresentação das novidades do Swarm, Compose e Machine. Não perca!
Referência:
https://blog.docker.com/2015/04/docker-release-1-6/
Criação automatizada de imagens Docker (GitHub e Docker Hub)
13 de Abril de 2015, 11:40 - sem comentários aindaComo expliquei no artigo anterior sobre Docker, o processo de criação de imagens no Docker é bem simples, mas requer algum esforço e acompanhamento para saber se ele concluiu corretamente e esse resultado será visualizado em linha de comando, normalmente imagem a imagem. Um trabalha “manual”.
Criação em massa
Quando você trabalha com muitas imagens, e a mudança dessas imagens é constante, você precisará de uma solução mais automatizada e de um processo mais simples pra viabilizar a criação dessas imagens. É nesse momento que entra o serviço de automatização de criação das imagens do Docker Hub junto ao GitHub.
Automação de builds
O Docker Hub tem um serviço de Automação da criação de imagens (Build), com integração com GitHub, ou seja, toda vez que você efetuar um commit e push no Dockerfile do seu repositório será realizado automaticamente um novo build da imagem, já armazenando no Docker Hub e apresentando o log de criação dessa imagem. Praticamente uma integração contínua da sua imagem
Para configurar isso é muito simples. Basta seguir os passos abaixo:
- Crie uma Conta no Docker Hub e efetue login.
- Link sua conta do GitHub através do menu “Link Accounts”.
- Configure o build automatizado.
- Escolha o projeto GitHub que deseja utilizar. Lembre-se que ele precisa ter um
Dockerfile
para efetuar a build. - Escolha a branch que você quer efetuar a build (Por padrão é usada a branch
master
). - Dê um nome a esse build automatizado.
- Opcionalmente, aplique uma tag Docker tag para a build.
- Especifique onde o
Dockerfile
está localizado. O padrão é “/"
.
Uma vez o build automatizado é configurado ele será ativado automaticamente e em poucos minutos você pode visualizar sua imagem Docker Hub. Ela será mantida sincronizada com base no Dockerfile do seu repositório GitHub até que você desative o Build automatizado em questão.
Visualizando a situação da build
Se você quiser visualizar a situação do seu build automatizado, basta acessa o menu “Build detail” na sua imagem dentro da sua conta do Docker Hub, assim conseguirá visualizar o status da sua build e todo o histórico.
Como funciona a atualização
Vale lembrar que você o build automatizado não será ativado com o comando “docker push"
, você apenas poderá enviar modificação, e por consequência efetuar automaticamente o build dessa imagem, através do git commit e push para o repositório previamente configurado no link entre GitHub e Docker Hub.
Você pode criar múltiplos builds automatizados por repositório e configurar ele para apontar para um específico Dockerfile ou branch diferente.
Build Triggers
É possível ativar o build automatizado a partir de uma url. Basta habilitar o “Build triggers” em sua build automatizada. Agora você conseguirá gerar uma build por demanda e não apenas com base em commit e push.
Atenção!
Vale a pena lembrar que todo processo descrito aqui não leva em consideração repositórios e imagens privadas. Caso seja sua situação de não publicizar esse trabalho, tenha cuidado com relação a isso.
Referência
https://docs.docker.com/userguide/dockerrepos/
Docker poderia substituir o gerenciador de pacotes?
3 de Abril de 2015, 22:17 - sem comentários aindaA utilização de containers, que tem hoje o Docker como principal representante, tem aumentado rapidamente com sua facilidade e portabilidade de liberação de aplicações prontas. Com base nisso, fica a seguinte pergunta: “Poderia a tecnologia de containers, como o Docker, ser utilizada para resolver o nosso antigo problema com gerenciador de pacotes? Alguns acreditam que containers podem ser um caminho para resolver a “dor de cabeça” no gerenciamento de dependência e incompatibilidade entre distribuições e versões do mesmo sistema.
No campo do “sim”: O pessoal do CoreOS, que são criadores de uma distribuições GNU/Linux, que gira inteiramente em torno de containers, e não dos pacotes, como unidade básica de modularidade.
Kelsey Hightower, Engenheiro Chef do CoreOS, diz que a empresa oferece “prova viva que não é apenas possível, como pode lidar melhor com designer de sistema e eficiência.” Contudo ele acredita que gerenciador de pacotes ainda é utilizável, “principalmente para construção de um sistema operacional a partir de um conjunto discreto de componentes que devem executar em conjunto. Esta é uma área onde os gerenciadores de pacotes do GNU/Linux brilham.” CoreOS não utiliza um gerenciador de pacotes típico, como apt ou yum, mas sim um sistema portage.
Kelsey alega que substituir inteiramente um sistema de gerenciador de pacotes de proposito genérico para o Docker ou outro gerenciador de container pode ser difícil, em parte porque o Docker não tem mecanismo para solucionar dependência. “Onde Docker brilha é no empacotamento e distribuição de aplicações” ele diz. (Docker se recusou a responder esse artigo, alegando restrição de tempo.)
Com ênfase maior da Red Hat em containers, é lógico que a empresa também poderá ver containers como um substituto para o gerenciamento de pacotes.
Lars Herrmann, gerente geral do “Red Hat Enterprise Linux” e “Red Hat Enterprise Virtualization” na Red Hat, acredita que é possível que o gerenciador de pacote seja substituído por containers, “mas esse não é o melhor caminho”.
Além da gerência de dependência, diz Herrmann em um email, que um gerenciador de pacote provem mais três outros “boons”: Instruções de onde será instalado o software em seu sistema, metadados estruturados para tornar fácil dizer o que e onde será instalado, e um mecanismo para verificar softwares instalados com base no metadado do gerenciador de pacotes.
Herrmann diz “Estes valores aplicam-se ainda em um mundo ‘container-centric’ ” O que significa que todas essas funções precisam ser replicados pelos containers. “Além disso, é preciso haver uma maneira fácil de ‘olhar’ para dentro desses containers, afim de verificar o que está lá dentro, e assim identificar quaisquer problemas conhecidos.”
Da mesma forma, o gerenciamento de pacotes abrange funções internas que os próprios containers ainda não lidam. De acordo com Herrmann, o Docker “agrega os pacotes para uma aplicação ou microservice inteiro; isso não ajuda obter os componentes certos para um container de forma funcional. Obviamente, essa tarefa não requer diretamente os gerenciadores de pacotes existentes, mas eles fazem um grande trabalho, então por que não usá-los?
Bryant Cantrill, CTO da Joyent (outra empresa até o pescoço no mundo do container) Também vê os containers e gerenciadores de pacotes servindo para funções separadas, desde que “uma imagem Docker está em uma camada de abstração mais elevado do que um pacote apt ou yum” Ele escreveu isso por e-mail.
Dito isso, ele acredita que o Docker poder tornar o empacotamento obsoleto, como o gerenciamento de pacote fez obsoleto a forma manual de desempacotar arquivos (como arquivos TAR) e assim se tornar um novo padrão de formato para aplicações. “Um engenheiro que conheço a muito tempo, coloca o Docker de forma diferente: Docker é ELF do século 21. (ELF é o ‘Executable and Likable Format‘ que é como o binário é representado em sistemas UNIX) De qualquer maneira, Docker parece prestes a se tornar o padrão de fato para a forma como se cria imagem para sistemas. Eu acho que isso é uma clara vitória tanto para desenvolvedores, como para os operadores de infraestrutura.”
Esse artigo é uma tradução livre do artigo “Could Docker replace package management?” da Infoworld. Encontrei esse artigo e achei interessante para levantar esse debate. Comentem, o que acham disso? Realmente o Docker, ou qualquer outro gerenciador de containers pode ser um sucessor do gerenciador de pacotes?
Minha opinião
Eu acho que containers é um bom caminho para “tornar” obsoleto o gerenciamento de pacotes, mas ainda não está pronto. As duas soluções vão coexistir durante algum tempo, mas realmente acho que o nível de abstração subirá um pouco mais em médio prazo, pois não acredito que teremos tempo para resolver manualmente instalações de dependência para soluções complexas.
Assim como hoje é possível compilar os pacotes manualmente, acho que no futuro continuaremos podendo instalar “da moda antiga”, mas o uso da solução de containers prontos, customizáveis e portáveis será quase uma necessidade. Talvez isso faça o conceito de distribuição perder relevância, mas é algo que ainda não tenho como certo em minha reflexão ainda e fica para outro texto.
Ressuscitando seu celular após falha em mudança de flash
30 de Março de 2015, 15:16 - sem comentários aindaComo sou muito curioso e meu instinto hacker as vezes fala mais alto, comecei a futucar cada vez mais profundamente meu celular e testar algumas loucuras nele.
Em uma dessas tentativas, mesmo após ter feito backup, meu celular ficava com tela toda preta e nem aparecia a logo da empresa fornecedora no meu celular Pensei logo: “Pronto, perdi meu celular. Ganhei um peso de papel bem caro”.
Eu modifiquei o boot.img dele por uma imagem possivelmente defeituosa, mas eu jurava que ainda assim eu conseguiria acessar o recovery e ao menos restaurar o backup. Me enganei!
Acessando o fórum XDA Developers eu pude encontrar MUITA documentação do que poderia ser feito para resolver e tentei de tudo, mas nada parecia funcionar e meu nervosismo pela minha falha tornou minha busca no fórum bem mais complicada.
Felizmente eu consegui recolocar a flash de fábrica de volta no meu celular, eu segui os passos abaixo.
Firmware
Baixe o firmware relacionado ao seu celular, o meu é Xperia M e você pode pegar ele aqui aqui, mas caso o seu seja outro, basta procurar. A extensão dele é “ftf” e o meu firmware tinha 710 MB de tamanho.
Flasthtools
Primeiro precisamos baixar ele! Apenas baixe e coloque em uma pasta a sua escolha.
Ele vai reclamar que precisa da biblioteca libusb. Que pode ser obtida aqui. Depois de baixar vamos compilar e instalar com os comandos abaixo:
# tar xjvf libusbx-1.0.18.tar.bz2
# cd libusbx-1.0.18
# ./configure
# make
# make install
# ldconfig
O Flashtools precisa das bibliotecas no /usr/lib, mas a instalação da lib coloca ela no /usr/local/lib. Você pode mover para o local desejado, eu preferi criar link simbólico:
# ln -s /usr/local/lib/libusb-1.0.so /usr/lib/libusbx-1.0.so
# ln -s /usr/local/lib/libusb-1.0.so.0.1.0 /usr/lib/libusbx-1.0.so.0.1.0
Coloque o firmaware obtido no passo anterior na pasta firmawares do Flashtools.
Pronto! Agora inicie o seu flashtools como root. Ele abrirá uma tela pedindo pra mover a pasta firmwares de onde você baixou para /root/.flashTool/firmwares. Pode mover, isso mesmo mover, pois caso ele perceba que ainda existe a pasta firmawares no local hoje você executa o flashtools ele não abrirá o software corretamente.
Ele vai abrir uma tela mais ou menos assim:
Clique no ícone do raio e selecione a opção “flashmode”:
Na próxima tela selecione o firmware desejado:
Caso queira mudar mais alguma coisa, fique a vontade, eu não precisei mudar nada Basta clicar no botão “Flash”.
Agora aparecerá uma tela como essa, solicitando que seu celular entre em flashmode:
No caso do meu celular, eu arranquei a bateira, recoloquei ela, coloquei o cabo USB e pressionei o botão de volume para baixo até que o software flashtool reconhece ele
Depois ele começou o envio da flash. Bastou e esperar e meu celular estava prontinho para eu recomeçar tudo de novo
Muito obrigado a Nicklas Van Dam, que me ajudou MUITO lá no fórum XDA
Embarque na viagem das cooperativas do ano
29 de Março de 2015, 0:00 - sem comentários aindaEm Novembro de 2014 a Colivre, cooperativa de tecnologias livres, empresa na qual sou sócio ganhou o prêmio de cooperativa do ano 2014 na categoria de Inovação e Tecnologia, este prêmio nos deu o direito a uma viagem de integração entre as cooperativas vencedoras, nesta viagem a Colivre foi representada por mim e Daniela Feitosa, neste post faço um breve relato desta viagem.
No dia 24 de Março chegamos a Brasília, lá visitamos a OCB, fomos recepcionados por Fernanda Belisário e Gabriela Prado, elas nos deram boas-vindas e convidaram para assistir a uma palestra de Martha Gabriel sobre estratégia de marketing, Marta falou da importância de cuidar da sua marca, pegadas digitais, sombra e diversos outros conceitos de marketing.
No mesmo dia, à noite, houve o lançamento da Agenda Institucional do Cooperativismo 2015 com a presença de representantes da Ocergs-Sescoop/RS, sistema OCB, senadores, deputados, presidentes e superintendentes de unidades estaduais. A agenda apresenta as principais demandas do sistema cooperativo Brasileiro aos poderes Legislativo, Executivo e Judiciário para o ano de 2015.
No dia 25, já em Porto Alegre, visitamos a Escoop - Faculdade de Tecnologia do Cooperativismo, lá ouvimos uma bela apresentação do senhor presidente do Sistema Ocergs-Sescoop/RS, Vergilio Perius, explicou sobre o sistema cooperativista, explanou sobre o surgimento das cooperativas no Brasil e nos ensinou bastante sobre os 7 princípios do cooperativismo, dando destaque especial a importância da intercooperação.
Em seguida o coordenador Derli Schmidt detalhou o funcionamento e a missão da escola, mostrando os cursos disponíveis e a metodologia de ensino altamente preocupada com a qualidade do ensino, com um viés acadêmico, preocupada em produzir conhecimento inédito e de qualidade sobre cooperativismo no Brasil. Nossa visita foi noticiada no site da Ocergs/RS.
No dia seguinte, 26 de Março, visitamos a Sicredi Pioneira, fomos recebidos pelo senhor Mário José Konzen, vice-presidente da cooperativa, ele nos falou sobre o início do sistema Sicredi e a força do movimento cooperativista na cidade de Nova Petrópolis/RS, a “Capital Nacional do Cooperativismo”. Citou detalhes do programa “A união faz a vida”, uma iniciativa do Sicredi com o objetivo de promover práticas de educação focadas nos princípios da cooperação e cidadania.
Em seguida, Mário Konza, nos convidou a conhecer a Cooebompa, uma cooperativa escolar formada por alunos da Escola Bom Pastor, uma iniciativa interessantíssima que deixou todos os representantes das cooperativas campeâs com os olhos brilhando de emoção. Tivemos a oportunidade de assistir a Assembléia Geral Ordinária e ver um show de organização e determinação! O professor e coordernador do projeto, Everaldo Marini, faz um belo trabalho e merece todo o apoio possível para continuar com o projeto.
Da lá seguimos ao Memorial Padre Amstad, o senhor Mário nos falou da vida desde padre, criador do sistema de crédito cooperativo no Brasil.
Na sequência visitamos a Cooperativa Piá, uma cooperativa agropecuária de leite e frutas, o presidente, Gilberto Kny, relatou a história da cooperativa e destacou a preocupação com os seus associados, em sua maioria pequenos produtores. A nossa comitiva experimentou alguns dos produtos da Piá, como iogurte e leite achocolatado, todos acharam uma delícia, infelizmente não pude experimentar já que não consumo leite ou derivados. A Piá bem que poderia produzir algo à base de soja ou alguma alternativa ao leite.
Saindo da Cooperativa Piá fomos conhecer um dos produtores associados, conhecemos a fazenda “Sítio do Leite”, eles produzem leite e dizem que fazer parte da cooperativa facilita a vida pois não precisam se preocupar com a venda já que a Piá garante a compra de toda a produção.
Dia seguinte, 27 de Março, último dia de viagem, visitamos o CAS, Centro Admistrativo Sicredi, vimos o funcionamento da cooperativa, seus princípios e valores, conhecemos a Biblioteca do sistema e o Datacenter. O Datacenter ocupa um andar inteiro do prédio e tem uma infraestrutura impressionante, mantida inteiramente pela equipe do Sicredi.
Ainda no Sicredi, seguimos para um almoço em grupo e partimos para o aeroporto de volta para casa chegando ao fim desta viagem ao mundo cooperativista na presença de ótimas pessoas, dedicadas a criar um mundo melhor, mais humano, mais justo, mais cooperativo.
Deixo um agradecimento especial ao sistema OCB pela ótima organização do evento e pelo convite, Belmira Oliveira, Fernanda Belisário, Gabriela Prado, Igor Vianna, Patricia Resende e Sheila Malta Santos.
Muito obrigado!
Agradeço também a todos os membros da nossa comitiva, representantes das cooperativas campeâs, foram momentos de muito aprendizado:
- Leonel Fernandes e Celio Humberto da Coopatos
- Amauri Weber e Michael Bueno da Sicredi Vale do Piquiri
- Shirley Rodrigues e Ana Paula Ramos da Querubim Saúde
- Édio Signor e Daniel Cremonese da Coopercarga
- Irinaldo Barreto e Márcio Antônio da Coopertransc
Um agradecimento especial a Sheila Malta Santos (OCB) pela imagem utilizada no título deste post, este desenhado foi criado por ela durante o vôo de ida ao evento.
Valeu Sheila, ficou muito bom!
Embarque na viajem das cooperativas do ano
29 de Março de 2015, 0:00 - sem comentários aindaEm Novembro de 2014 a Colivre, cooperativa de tecnologias livres, empresa na qual sou sócio ganhou o prêmio de cooperativa do ano 2014 na categoria de Inovação e Tecnologia, este prêmio nos deu o direito a uma viajem de integração entre as cooperativas vencedoras, nesta viajem a Colivre foi representada por mim e Daniela Feitosa, neste post faço um breve relato desta viajem.
No dia 24 de Março chegamos a Brasília, lá visitamos a OCB, fomos recepcionados por Fernanda Belisário e Gabriela Prado, elas nos deram boas-vindas e convidaram para assistir a uma palestra de Martha Gabriel sobre estratégia de marketing, Marta falou da importância de cuidar da sua marca, pegadas digitais, sombra e diversos outros conceitos de marketing.
No mesmo dia, à noite, houve o lançamento da Agenda Institucional do Cooperativismo 2015 com a presença de representantes da Ocergs-Sescoop/RS, sistema OCB, senadores, deputados, presidentes e superintendentes de unidades estaduais. A agenda apresenta as principais demandas do sistema cooperativo Brasileiro aos poderes Legislativo, Executivo e Judiciário para o ano de 2015.
No dia 25, já em Porto Alegre, visitamos a Escoop - Faculdade de Tecnologia do Cooperativismo, lá ouvimos uma bela apresentação do senhor presidente do Sistema Ocergs-Sescoop/RS, Vergilio Perius, explicou sobre o sistema cooperativista, explanou sobre o surgimento das cooperativas no Brasil e nos ensinou bastante sobre os 7 princípios do cooperativismo, dando destaque especial a importância da intercooperação.
Em seguida o coordenador Derli Schmidt detalhou o funcionamento e a missão da escola, mostrando os cursos disponíveis e a metodologia de ensino altamente preocupada com a qualidade do ensino, com um viés acadêmico, preocupada em produzir conhecimento inédito e de qualidade sobre cooperativismo no Brasil. Nossa visita foi noticiada no site da Ocergs/RS.
No dia seguinte, 26 de Março, visitamos a Sicredi Pioneira, fomos recebidos pelo senhor Mário José Konzen, vice-presidente da cooperativa, ele nos falou sobre o início do sistema Sicredi e a força do movimento cooperativista na cidade de Nova Petrópolis/RS, a “Capital Nacional do Cooperativismo”. Citou detalhes do programa “A união faz a vida”, uma iniciativa do Sicredi com o objetivo de promover práticas de educação focadas nos princípios da cooperação e cidadania.
Em seguida, Mário Konza, nos convidou a conhecer a Cooebompa, uma cooperativa escolar formada por alunos da Escola Bom Pastor, uma iniciativa interessantíssima que deixou todos os representantes das cooperativas campeâs com os olhos brilhando de emoção. Tivemos a oportunidade de assistir a Assembléia Geral Ordinária e ver um show de organização e determinação! O professor e coordernador do projeto, Everaldo Marini, faz um belo trabalho e merece todo o apoio possível para continuar com o projeto.
Da lá seguimos ao Memorial Padre Amstad, o senhor Mário nos falou da vida desde padre, criador do sistema de crédito cooperativo no Brasil.
Na sequência visitamos a Cooperativa Piá, uma cooperativa agropecuária de leite e frutas, o presidente, Gilberto Kny, relatou a história da cooperativa e destacou a preocupação com os seus associados, em sua maioria pequenos produtores. A nossa comitiva experimentou alguns dos produtos da Piá, como iogurte e leite achocolatado, todos acharam uma delícia, infelizmente não pude experimentar já que não consumo leite ou derivados. A Piá bem que poderia produzir algo à base de soja ou alguma alternativa ao leite.
Saindo da Cooperativa Piá fomos conhecer um dos produtores associados, conhecemos a fazenda “Sítio do Leite”, eles produzem leite e dizem que fazer parte da cooperativa facilita a vida pois não precisam se preocupar com a venda já que a Piá garante a compra de toda a produção.
Dia seguinte, 27 de Março, último dia de viajem, visitamos o CAS, Centro Admistrativo Sicredi, vimos o funcionamento da cooperativa, seus princípios e valores, conhecemos a Biblioteca do sistema e o Datacenter. O Datacenter ocupa um andar inteiro do prédio e tem uma infraestrutura impressionante, mantida inteiramente pela equipe do Sicredi.
Ainda no Sicredi, seguimos para um almoço em grupo e partimos para o aeroporto de volta para casa chegando ao fim desta viajem ao mundo cooperativista na presença de ótimas pessoas, dedicadas a criar um mundo melhor, mais humano, mais justo, mais cooperativo.
Deixo um agradecimento especial ao sistema OCB pela ótima organização do evento e pelo convite, Belmira Oliveira, Fernanda Belisário, Gabriela Prado, Igor Vianna, Patricia Resende e Sheila Malta Santos.
Muito obrigado!
Agradeço também a todos os membros da nossa comitiva, representantes das cooperativas campeâs, foram momentos de muito aprendizado:
- Leonel Fernandes e Celio Humberto da Coopatos
- Amauri Weber e Michael Bueno da Sicredi Vale do Piquiri
- Shirley Rodrigues e Ana Paula Ramos da Querubim Saúde
- Édio Signor e Daniel Cremonese da Coopercarga
- Irinaldo Barreto e Márcio Antônio da Coopertransc
Um agradecimento especial a Sheila Malta Santos (OCB) pela imagem utilizada no título deste post, este desenhado foi criado por ela durante o vôo de ida ao evento.
Valeu Sheila, ficou muito bom!
O porquê de escolhermos o Puppet
28 de Março de 2015, 5:54 - sem comentários aindaNa organização que trabalho foi colocada a demanda de implantar um ferramenta de gerência de configuração, pois nosso ambiente sofre de uma grande carência em documentar suas mudanças, proporcionar uma documentação atualizada, isso sem falar na velocidade de atendimento de novas demandas ser prejudicada pela necessidade de atividade repetitiva/operacional majoritariamente manual.
Depois de uma longa etapa de analise preliminar iniciamos a comparação entre três soluções que poderia atender nossas expectativas: Chef, Puppet e Salt.
Dentre vários critérios analisados, levantamos cinco pontos que julgamos ser os mais relevantes para nossa realidade:
- Complexidade de instalação
- Curva de aprendizado
- Orquestrador
- Dashboard
- Quem utiliza
Com base nisso, instalamos cada solução, testamos o que ela poderia fazer para nos ajudar e refletirmos com base nos pontos já informados acima. Segue abaixo o resultado da nossa análise.
Complexidade de instalação
Puppet
A instalação dos pacotes puppetmaster(servidor) e puppet(clientes) na sua versão open-source não revelou-se muito complicada. Sua documentação oficial orienta inicialmente instalar o pacote puppetlabs-release com a versão referente ao sistema operacional. A única ressalva com relação à essa etapa é a escolha do pacote para o servidor, pois o puppetmaster é recomendável somente para ambiente menores, com pouca carga, pois seu servidor web embutido (webrick) suporta poucos nós clientes para um ambiente mais escalável deve-se optar pelo puppetmaster-passenger.
Apesar de orquestrador ser um critério analisado mais adiante, a complexidade de sua instalação está dentro do escopo desse critério. Embora a documentação oficial não faça nenhuma recomendação explicita ao uso do MCollective como orquestrador na versão Opensource, na Enterprise ela já vem embutida, somando isso ao fato dele já possuir plugins nativos para o Puppet pesou na escolha dessa ferramenta para a tarefa de orquestração.
Na versão Opensource do Puppet, o orquestrador não é configurado por padrão, houve um esforço maior na sua instalação e configuração. Há dependência da instalação e configuração de um Midleware, sistema de mensageira (Apache ActiveMQ).
Tivemos dificuldade com relação a falta de orientação para cenários mais complexos, por exemplo, com relação a questão de segurança na comunicação do midleware.
Salt
Basta instalar os pacotes salt-master(servidor) e salt-minion(clientes), fazer uma simples configuração para que os nós clientes reconheçam o master, posteriormente o master autenticar chaves publicas dos clientes e o ambiente já estará pronto para ser utilizado.
O orquestrador faz parte da solução Salt, sendo assim, a facilidade na instalação apresentada até então abrange também o orquestrador.
Chef
Sua instalação, com a exceção do cliente (chef-client), foi dificultada por alguns fatores.
- Na topologia cliente-servidor, o chef se diferencia das demais em virtude dele ser composto por 3 itens: Server; Workstation e Nodes, que apesar da documentação oficial explicar a função de cada um deles, a mesma não dá uma orientação sobre sua instalação.
- Com relação ao pacote para servidor (chef-server), no site oficial é disponibilizado apenas para Ubuntu e RHEL, e eles não demonstram nenhum interesse manter uma versão para o Debian no lado do servidor.
Conclusão desse critério
Adotando a topologia cliente-servidor, visto que todas os softwares analisados permitem também a opção standalone, ou seja, em modo autônomo, o Salt demonstrou-se a mais simples, o Chef mais complexa, ficando o puppet com complexidade intermediária. A opção pelo modelo cliente-servidor foi feita em virtude da gerência centralizada e a possibilidade do acompanhamento das modificações nos agentes através de um painel (dashboard), item que será melhor detalhado mais adiante.
Curva de aprendizado
Antes de iniciarmos a discussão desse critério, faz-se necessário a contextualização de alguns aspectos sobre gerenciamento ou automação de configurações, referentes aos três softwares examinados.
Em todos eles, as configurações são codificadas estaticamente através de arquivos chamados: Manifest no Puppet, Formulas no Salt e Cookbooks no Chef. Nessa parte não houve muita dificuldade de compreensão, não necessitando de um conhecimento muito avançado à nível de programação ou de linguagem específica, apesar de que, no Chef os Cookbooks podem ser escritos também em Ruby puro.
O interessante é que em todos eles utilizam algum conceito de linguagens de Orientação à Objetos como por exemplo, suporte a funcionalidade de heranças.
Outro detalhe não menos importantes e bem intuitivo, consiste em que todos eles possuem utilitários responsáveis pela obtenção de informação dos agentes: Facter no Puppet, Grains no Salt e Ohai no Chef, com os quais descrevem as propriedades dos sistemas operacionais, permitindo filtros na definição de estados das configurações assim como na orquestração.
Nesse critério, houve um empate técnico, pois todas são semelhantes no que diz respeito às definições de gerenciamento ou automatização de configurações, com perspectiva bastante compreensíveis.
Orquestrador
Segundo o Guto Carvalho (slide 5 da palestra Orquestração com MCollective): “Orquestrar significa invocar ações de forma paralela ou não, em tempo real, em diversos servidores de um datacenter, fazendo isto de forma automatizada, eficiente e controlada”. Orquestração não é gerenciamento de configuração e sim um tipo diferente de automatização em que ambos se complementam. Diferencia-se da seguinte forma, enquanto que na gerência de configurações, os estados desejados de um sistema é modelado, na orquestração, as ações são executadas remotamente sob demanda.
Nesse critério somente o Puppet e o Salt serão discutidos, visto que o Chef não possui orquestrador integrado como no Salt, nem mesmo tem em sua documentação alguma menção à nenhum utilitário externo desse tipo, como o Puppet tem o MCollective como exemplo, no seu caso, o uso da ferramenta como o knife com ssh, a qual está mais para execução remota, seria o que mais se aproximaria de orquestração.
Puppet
O MCollective, orquestrador adotado pelo mesmo, é uma ferramenta bem simples de utilizar, com bastantes plugins disponíveis, inclusive para o próprio Puppet. Ele disponibiliza diversas funcionalidades, como instalação de pacotes, gerência de serviços, shell (interpretador de comandos) e etc, além de ser extensível através de protocolo RPC. A complexidade de sua instalação, pelo fato do mesmo ser um outro software(pacote), com configuração própria e necessidade de instalar um pacote agent e client para cada plugin disponível, somando-se a depência de um midlleware, no caso o ActiveMQ, que também demanda uma instalação separada.
Salt
No Salt, da mesma forma que o MCollective, seu orquestrador, disponibiliza uma infinidade de módulos, oferecendo funcionalidades como: instalação de pacotes, gerência de serviços, shell (interpretador de comandos) e etc. além de ser extensível. O fato de já vir integrado e configurado, inclusive com seu middleware (ZeroMQ) cuja a leveza de sua biblioteca serve como framework de concorrência, sem falar no fato da comunicação ser nativamente segura entre o master.
Conclusão desse critério
o Salt levou uma grande vantagem nesse item, por essa funcionalidade já vir integrada e utilizar técnicas que permitem escalabilidade e velocidade na execução remota de suas tarefas, com uma linguagem bastante homogênea em virtude de sua agregação, ao contrário do MCollective no Puppet, ficando em segundo lugar como opção nesse item.
Dashboard
Após toda contextualização sobre automatização ou gerenciamento de configurações e orquestração, esse item é de fundamental importância para o nosso ambiente. O envio de relatórios, classificação externa e acompanhamento do ciclo de vida dos ativos em tempo real, ou seja, toda a visibilidade do que acontece no nosso ambiente após aplicação de alguma nova configuração. Tudo isso é esperado em um Dashboard.
Nesse quesito apenas uma ferramenta externa atendeu nossas expectativas. O Foreman é a ferramenta ideal para nosso ambiente, pois consiste em um gerenciamento do ciclo de vida desde provisionamento, configuração para orquestração e monitoramento. Tem interação nativa com o Puppet e sua interface web oferece várias informações com gráficos e formatos bastantes intuitivos, assim como muito mais recursos que os prórpios painéis oferecidos pelos próprios projetos das três ferramentas observadas.
A documentação do Foreman mencionar suporte também para o Salt e Chef, mas com limitação de certos recursos, isso sem falar na interação nativa que ele tem apenas com o Puppet, a qual contribuiu para promovê-lo como opção mais vantajosa em comparação às outras duas ferramentas nesse item.
Quem usa
Observamos quais as organizações/empresas que usam todas as três soluções e chegamos a conclusão que o Puppet tem um conjunto de usuários mais próximos da nossa organização, além de ter um número de “grandes players” bem superior as outras.
Conclusão final
Com base em tudo que foi explanado até então, principalmente no que tange a quem usa a ferramenta e existência de um ótimo suporte ao Dashboard que atende nossas expectativas, fica evidente que a solução que mais atende nossa necessidade é de fato o Puppet, mesmo o Salt tendo demonstrado ser uma alternativa bem mais simples.
Fonte
Esse texto foi construído com base no relatório final apresentado pelo bolsista Péricles Júnior, que trabalha na Coordenação de Redes e Infraestrutura de Superintendência de Tecnologia da Informação da Universidade Federal da Bahia.
O porquê escolhemos o puppet
28 de Março de 2015, 2:54 - sem comentários aindaNa organização que trabalho foi colocada a demanda de implantar um ferramenta de gerência de configuração, pois nosso ambiente sofre de uma grande carência em documentar suas mudanças, proporcionar uma documentação atualizada, isso sem falar na velocidade de atendimento de novas demandas ser prejudicada pela necessidade de atividade repetitiva/operacional majoritariamente manual.
Depois de uma longa etapa de analise preliminar iniciamos a comparação entre três soluções que poderia atender nossas expectativas: Chef, Puppet e Salt.
Dentre vários critérios analisados, levantamos cinco pontos que julgamos ser os mais relevantes para nossa realidade:
- Complexidade de instalação
- Curva de aprendizado
- Orquestrador
- Dashboard
- Quem utiliza
Com base nisso, instalamos cada solução, testamos o que ela poderia fazer para nos ajudar e refletirmos com base nos pontos já informados acima. Segue abaixo o resultado da nossa análise.
Complexidade de instalação
Puppet
A instalação dos pacotes puppetmaster(servidor) e puppet(clientes) na sua versão open-source, não revelou-se muito complicada. Sua documentação oficial, orienta inicialmente instalar o pacote puppetlabs-release, com a versão referente ao sistema operacional. A única ressalva com relação à essa etapa, é a escolha do pacote para o servidor, pois o puppetmaster é recomendável somente para ambiente menores, com pouca carga, pois seu servidor web embutido (webrick) suporta poucos nós clientes, para um ambiente mais escalável deve-se optar pelo puppetmaster-passenger.
Apesar de orquestrador ser um critério analisado mais adiante, a complexidade de sua instalação está dentro do escopo desse critério. Embora a documentação oficial não faça nenhuma recomendação explicita ao uso do MCollective como orquestrador na versão Opensource, na Enterprise ela já vem embutida, somando isso ao fato dele já possuir plugins nativos para o Puppet, pesou na escolha dessa ferramenta para a tarefa de orquestração.
Na versão Opensource do Puppet, o orquestrador não é configurado por padrão, houve um esforço maior na sua instalação e configuração. Há dependência da instalação e configuração de um Midleware, sistema de mensageira (Apache ActiveMQ).
Tivemos dificuldade com relação a falta de orientação para cenários mais complexos, por exemplo, com relação a questão de segurança na comunicação do midleware.
Salt
Basta instalar os pacotes salt-master(servidor) e salt-minion(clientes), fazer uma simples configuração para que os nós clientes reconheçam o master, posteriormente o master autenticar chaves publicas dos clientes e o ambiente já estará pronto para ser utilizado.
O orquestrador faz parte da solução Salt, sendo assim a facilidade na instalação apresentada até então abrange também o orquestrador.
Chef
Sua instalação, com a exceção do cliente (chef-client), foi dificultada por alguns fatores.
- Na topologia cliente-servidor, o chef se diferencia das demais em virtude dele ser composto por 3 itens: Server; Workstation e Nodes, que apesar da documentação oficial explicar a função de cada um deles, a mesma não dá uma orientação sobre sua instalação.
- Com relação ao pacote para servidor (chef-server), no site oficial é disponibilizado apenas para Ubuntu e RHEL, e eles não demonstram nenhum interesse manter uma versão para o Debian no lado do servidor.
Conclusão desse critério
Adotando a topologia cliente-servidor, visto que todas os softwares analisados permitem também a opção standalone, ou seja, em modo autônomo, o Salt demonstrou-se a mais simples, o Chef mais complexa, ficando o puppet com complexidade intermediária. A opção pelo modelo cliente-servidor foi feita em virtude da gerência centralizada e a possibilidade do acompanhamento das modificações nos agentes através de um painel (dashboard), item que será melhor detalhado mais adiante.
Curva de aprendizado
Antes de iniciarmos a discussão desse critério, faz-se necessário a contextualização de alguns aspectos sobre gerenciamento ou automação de configurações, referentes aos três softwares examinados.
Em todos eles, as configurações são codificadas estaticamente através de arquivos chamados: Manifest no Puppet, Formulas no Salt e Cookbooks no Chef. Nessa parte não houve muita dificuldade de compreensão, não necessitando de um conhecimento muito avançado à nível de programação ou de linguagem específica, apesar de que, no Chef os Cookbooks podem ser escritos também em Ruby puro.
O interessante é que em todos eles utilizam algum conceito de linguagens de Orientação à Objetos como por exemplo, suporte a funcionalidade de heranças.
Outro detalhe não menos importantes e bem intuitivo, consiste em que todos eles possuem utilitários responsáveis pela obtenção de informação dos agentes: Facter no Puppet, Grains no Salt e Ohai no Chef, com os quais descrevem as propriedades dos sistemas operacionais, permitindo filtros na definição de estados das configurações assim como na orquestração.
Nesse critério, houve um empate técnico, pois todas são semelhantes no que diz respeito às definições de gerenciamento ou automatização de configurações, com perspectiva bastante compreensíveis.
Orquestrador
Segundo o Guto Carvalho (slide 5 da palestra Orquestração com MCollective): “Orquestrar significa invocar ações de forma paralela ou não, em tempo real, em diversos servidores de um datacenter, fazendo isto de forma automatizada, eficiente e controlada”. Orquestração não é gerenciamento de configuração e sim um tipo diferente de automatização em que ambos se complementam. Diferencia-se da seguinte forma, enquanto que na gerência de configurações, os estados desejados de um sistema é modelado, na orquestração, as ações são executadas remotamente sob demanda.
Nesse critério somente o Puppet e o Salt serão discutidos, visto que o Chef não possui orquestrador integrado como no Salt, nem mesmo tem em sua documentação alguma menção à nenhum utilitário externo desse tipo, como o Puppet tem o MCollective como exemplo, no seu caso, o uso da ferramenta como o knife com ssh, a qual está mais para execução remota, seria o que mais se aproximaria de orquestração.
Puppet
O MCollective, orquestrador adotado pelo mesmo, é uma ferramenta bem simples de utilizar, com bastantes plugins disponíveis, inclusive para o próprio Puppet. Ele disponibiliza diversas funcionalidades, como instalação de pacotes, gerência de serviços, shell (interpretador de comandos) e etc, além de ser extensível através de protocolo RPC. A complexidade de sua instalação, pelo fato do mesmo ser um outro software(pacote), com configuração própria e necessidade de instalar um pacote agent e client para cada plugin disponível, somando-se a depência de um midlleware, no caso o ActiveMQ, que também demanda uma instalação separada.
Salt
No Salt, da mesma forma que o MCollective, seu orquestrador, disponibiliza uma infinidade de módulos, oferecendo funcionalidades como: instalação de pacotes, gerência de serviços, shell (interpretador de comandos) e etc. além de ser extensível. O fato de já vir integrado e configurado, inclusive com seu middleware (ZeroMQ) cuja a leveza de sua biblioteca serve como framework de concorrência, sem falar no fato da comunicação ser nativamente segura entre o master.
Conclusão desse critério
o Salt levou uma grande vantagem nesse item, por essa funcionalidade já vir integrada e utilizar técnicas que permitem escalabilidade e velocidade na execução remota de suas tarefas, com uma linguagem bastante homogênea em virtude de sua agregação, ao contrário do MCollective no Puppet, ficando em segundo lugar como opção nesse item.
Dashboard
Após toda contextualização sobre automatização ou gerenciamento de configurações e orquestração, esse item é de fundamental importância para o nosso ambiente. O envio de relatórios, classificação externa e acompanhamento do ciclo de vida dos ativos em tempo real, ou seja, toda a visibilidade do que acontece no nosso ambiente após aplicação de alguma nova configuração. Tudo isso é esperado em um Dashboard.
Nesse quesito apenas uma ferramenta externa atendeu nossas expectativas. O Foreman é a ferramenta ideal para nosso ambiente, pois consiste em um gerenciamento do ciclo de vida desde provisionamento, configuração para orquestração e monitoramento. Tem interação nativa com o Puppet e sua interface web oferece várias informações com gráficos e formatos bastantes intuitivos, assim como muito mais recursos que os prórpios painéis oferecidos pelos próprios projetos das três ferramentas observadas.
A documentação do Foreman mencionar suporte também para o Salt e Chef, mas com limitação de certos recursos, isso sem falar na interação nativa que ele tem apenas com o Puppet, a qual contribuiu para promovê-lo como opção mais vantajosa em comparação às outras duas ferramentas nesse item.
Quem usa
Observamos quais as organizações/empresas que usam todas as três soluções e chegamos a conclusão que o Puppet tem um conjunto de usuários mais próximos da nossa organização, além de ter um número de “grandes players” bem superior as outras.
Conclusão final
Com base em tudo que foi explanado até então, principalmente no que tange a quem usa a ferramenta e existência de um ótimo suporte ao Dashboard que atende nossas expectativas, fica evidente que a solução que mais atende nossa necessidade é de fato o Puppet, mesmo o Salt tendo demonstrado ser uma alternativa bem mais simples.
Fonte
Esse texto foi construído com base no relatório final apresentado pelo bolsista Péricles Júnior, que trabalha na Coordenação de Redes e Infraestrutura de Superintendência de Tecnologia da Informação da Universidade Federal da Bahia.
Criando imagens Docker (Dockerfile)
27 de Março de 2015, 8:09 - sem comentários aindaNo artigo anterior sobre Docker, eu falei sobre como modificar uma imagem docker usando COMMIT, mas propositalmente não comentei que essa não é a melhor prática Evitei tocar nesse assunto para não frustrar o aprendizado, pois é necessário aprender como funciona o COMMIT, com DIFF e afins.
A melhor forma de modificar uma imagem Docker é recriando ela, ou seja, modificando seu Dockerfile, ou criando um Dockerfile com a imagem escolhida como base e nesse artigo falaremos sobre tudo isso.
Dockerfile
Dockerfile é um arquivo, que contém um conjunto de instruções necessárias para se criar uma imagem Docker, ou seja, com posse do Dockerfile de uma determinada imagem, basta modificar o que deseja e recriar a imagem “do zero”, isso pode demorar um pouco mais, mas essa imagem será muito mais “enxuta” e você terá controle total do seu estado, o que seria bem mais difícil no modelo de efetuar commit de um container.
Caso não tenha o Dockerfile, você pode usar uma imagem a sua escolha como base e então criar a sua imagem como uma camada acima.
Sintaxes básicas
FROM : É a imagem base. Normalmente é usada com nome de distribuição (Debian, Ubuntu e afins), pois não precisaremos criar toda estrutura, certo?
MAINTAINER : É onde se especifica o autor da imagem.
RUN : São as instruções que serão executadas para criação da imagem em questão.
ENTRYPOINT : Especifica o que o que será executado ao iniciar o container. Ele age como precedente a sintaxe CMD, ou seja, caso o ENTRYPOINT seja “top”, o CMD pode ser “-b” que nesse caso ele executaria o top em modo batch. Uma vez que o ENTRYPOINT não seja especificado, e um CMD seja usado, o ENTRYPOINT padrão é “/bin/sh -c
“.
EXPOSE : Usado para informar qual porta o container docker irá “escutar”. Docker use essa informação para interconexão entre containers, ao utilizar links. EXPOSE não define qual porta será exposta para o hospedeiro ou tornar possível o acesso externo para portas do container em questão. Para expor essas portas utilize em tempo de inicialização da imagem a flag -p ou -P.
Para explicação mais exaustiva das sintaxes já explanadas e outras novas, acesse essa documentação.
Exemplo
Crie uma pasta com o comando abaixo:
# mkdir nginx
Entre nessa pasta:
# cd nginx
E então crie um arquivo chamado “Dockerfile” com o seguinte conteúdo:
FROM debian
MAINTAINER Rafael Gomes <gomex@riseup.net>
RUN apt-get update
RUN apt-get install -y nginx
ENTRYPOINT ["/usr/sbin/nginx"]
EXPOSE 80
Com esse Dockerfile, temos:
- Uma imagem com base na imagem do Debian, ou seja, não precisamos nos preocupar com o sistema básico.
- O autor dessa imagem sou eu
- Primeiro eu atualizo a base do apt-get e então instalo o nginx.
- Ao iniciar essa imagem ela executará o nginx automaticamente.
- A porta exposta para possível interconexão entre containers é a porta 80.
Nesse link tem um ótimo documento explicando as boas práticas na criação de um Dockerfile.
Criando a imagem
Com o Dockerfile preenchido, execute o comando abaixo para criar sua imagem:
# docker build -t gomex/nginx .
No lugar de “gomex” coloque o seu usuário da nuvem pública do docker e no lugar de “nginx” o nome da sua imagem.
Ao terminar, pode efetuar o push para a nuvem pública e assim proporcionar a distribuição da sua imagem:
# docker push gomex/nginx
Pronto! Agora já tem sua imagem prontinha, totalmente “enxuta” e disponível para que outra pessoa possa baixar e utilizar.
Por hoje é só pessoal, logo teremos mais artigos sobre Docker. Fiquem atentos.