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.
c3video for debconf #1
11 de Agosto de 2015, 12:41 - sem comentários aindaSome context
DebConf has provided live streaming and recordings from talks since 2004. We used to work with a set of scripts which worked together with Pentabarf for most of videoteam tasks, including volunteer shifts coordination, reviewing process, encoding and deployment.
Things has changed since DebConf14, when Pentabarf was replaced by Summit as the conference management system. Without those old Pentabarf features and hacks we had to invent new ways of dealing with the video workflow in DebConf. We gave veyepar a try in 2014, and we will probably do it again in DebConf15. However, for a long term solution we are considering the software stack from CCC Video Operation Center, which so far I see as a free, solid and community-oriented mix of Debian-friendly tools.
I will be reporting the progress on setting up and testing the CCC software strucutre for DebConf. Having the opportunity of being in DebCamp together with other videoteam folks will certainly make things easier :)
Setting up the CCC Ticket Tracker
C3TT is a ticket/tracker system used by CCC for reviewing/encoding process.
The web side of C3TT is written in PHP and can be cloned from http://git.fem.tu-ilmenau.de/cccongress.git. Some documentation is available at https://repository.fem.tu-ilmenau.de/trac/c3tt/wiki and from https://c3voc.de/wiki/c3tracker.
What I've done so far to get it working:
Installing some dependencies:
$ apt-get install postgresql-9.4 php5-pgsql php5-xsl postgresql-contrib-9.4 php5-xmlrpc php5
Creating database and users:
$ su -s /bin/bash postgres $ createuser -DRS dc15 $ createdb -O dc15 c3tt $ psql postgres=# ALTER ROLE dc15 WITH PASSWORD 'xxx';
Basic site config using lighttpd:
$HTTP["host"] =~ "c3tt\.your\.host" { server.document-root = "/var/www/c3tt/Public/" alias.url = ("/javascript/" => "/var/www/js/") url.rewrite-once = ( ".*\.(js|ico|gif|jpg|png|css)$" => "$0", "^(.*?)$" => "index.php/$1",) }
Running the installer script:
$ php -q Install/install.php
This will ask you some questions, then will create the config file and populate the database. At this point you should be able to access the ticket track system from your browser.
The set of scripts from C3TT doesn't need to be installed in the same host as the web side, they communicate via XML/RPC. In a next post I will report the installation and initial setup for these scripts.
Elixir in Debian, MiniDebconf at FISL, and Debian CI updates
5 de Agosto de 2015, 1:13 - sem comentários aindaIn June I started keeping track of my Debian activities, and this is my July update.
Elixir in Debian
Elixir is a functional language built on top of the Erlang virtual machine. If features imutable data structures, interesting concurrency primitives, and everything else that Erlang does, but with a syntax inspired by Ruby what makes it much more aproachable in my opinion.
Those interested in Elixir for Debian are encouraged to hang around in #debian-elixir on the OFTC IRC servers. There are still a lot of things to figure out, for example how packaging Elixir libraries and applications is going to work.
MiniDebconf at FISL, and beyond
I helped organize a MiniDebconf at this year’s FISL, in Porto Alegre on the 10th of July. The whole program was targetted at getting more people to participate in Debian, so there were talks about translation, packaging, and a few other more specific topics.
I myself gave two talks: one about Debian basics, “What is Debian, and how it works”, and second one on “packaging the free software web”, which I will also give at Debconf15 later this month.
The recordings are available (all talks in Portuguese) at the Debian video archive thanks to Holger Levsen.
We are also organizing a new MiniDebconf in October as part of the Latinoware schedule.
Ruby
We are in the middle of a transition to switch to Ruby 2.2 as default in Debian unstable, and we are almost there. The Ruby transition is now on hold while GCC 5 one is going on, but will be picked up as soon as were are done with GCC 5.
ruby-defaults has been uploaded to experimental for those that want to try having Ruby 2.2 as default before that change hits unstable. I myself have been using Ruby 2.2 as default for several weeks without any problem so far, including using vagrant on a daily basis and doing all my development on sid with it.
I started taking notes about Ruby interpreter transitions work to make sure that knowledge is registered.
I have uploaded minor security updates of both ruby2.1 and ruby2.2 to unstable. They both reached testing earlier today.
I have also fixed another bug in redmine, which I hope to get into stable as well as soon as possible.
gem2deb has seen several improvements through versions 0.19, 0.20, 0.20.1 and 0.20.2.
I have updated a few packages:
- ruby-rubymail
- ruby-ferret
- ruby-omniauth
- ruby-hashie
- ruby-rack-accept
- chef-zero
- nailgun-agent
- ruby-serialport
- ruby-gnome2
- ruby-mysql2
- ruby-dataobjects-postgres
- ruby-standalone
- thin
- ruby-stringex
- ruby-i18n
Two NEW packages, ruby-rack-contrib and ruby-grape-logging ,were ACCEPTED into the Debian archive. Kudos to the ftp-master team who are doing an awesome job reviewing new packages really fast.
Debian Continuous Integration
This month I have made good progress with the changes needed to make debci work as a distributed system with one master/scheduler node and as many worker nodes (running tests) as possible.
While doing my tests, I have submitted a patch to lxc and updated autodep8 in unstable. At some point I plan to upload both autodep8 and autopkgtest to jessie-backports.
Sponsoring
I have sponsored a few packages:
- ruby-rack-mount, ruby-grape-entity, and ruby-grape for Hleb Valoshka.
- redir and tmate twice for Lucas Kanashiro.
- lxc to wheezy-backports for Christian Seiler.
Minha visão da Agenda Digital do MinC
2 de Agosto de 2015, 3:45 - sem comentários aindaFui convidado para participar do evento Agenda Digital do Ministério da Cultura. E esse encontro me surpreendeu desde sua organização a seus resultados. Tudo muito simples e direto, mas com conquistas tão expressivas. Não há dúvidas que esse foi um dos melhores eventos de TI que já participei.
De forma colaborativa, chegamos a conclusão de quais seriam os temas mais importantes para se debater e passamos então para o ponto que eu julgo ter sido um dos mais importantes para o sucesso desse evento; Os desafios.
Os desafios não eram hipotéticos. Eram demandas concretas do governo, todos focados em soluções livres e maduras. Alguns dos desafios foram sendo moldados e refatorados ao longo do evento, outros chegamos a conclusão que não valiam a pena ser conduzido naquele momento e teve até desafios novos que apareceram em conversas na mesa do café.
Tivemos palestras pela manhã, oficinas pela tarde e “mão na massa” a noite, que normalmente se alongava pela madrugada, a base de muito energético e muita adrenalina para conclusão dos desafios.
Os desafios realizados foram; Migração de domínio Active Directory para Samba4, que foi o nosso maior esforço do evento, tirando várias noites de sono da galera; Criação de imagem Docker do portal servicos.gov.br, que antes levava quase 1 hora para provisionar, a partir de agora levará poucos minutos; Analise do monitoramento do MinC, que teve como resultado um relatório preliminar dos problemas estruturais nessa coleta de dados; E por fim, mas não menos importante, o serviço de log centralizado com ELK, que possibilitou o “ponta pé inicial” para a coleta centralizada de toda essa informação que hoje se encontra pulverizada na instituição.
Os resultados apresentados vão muito além das tecnologias apresentadas, pois um grupo muito coeso e interessado demonstrou que é possível fazer mudança quando se tem vontade e pessoas interessadas. Acho que esse evento entra pra história, pois pode ser um “ponta pé inicial” para uma mudança drástica na forma de como o governo escolhe e operacionaliza suas tecnologias.
Agradeço imensamente o convite e fico aqui disposto para novas interações.
Segue abaixo os links para as palestras gravadas ao longo do evento:
Falando em transmissão e gravação de palestras, encontramos esse software livre, que foi nossa salvação para esse tipo de atividade.
Segue abaixo outras postagens de opinião sobre esse evento:
http://gutocarvalho.net/octopress/2015/08/01/minha-visao-da-agenda-digital/
V Fórum da Internet no Brasil acontecerá a partir do dia 15/07 em Salvador
6 de Julho de 2015, 14:31 - sem comentários aindaEntre os dias 15 e 17 de julho, a cidade de Salvador sediará o V Fórum da Internet no Brasil, evento organizado pelo Comitê Gestor da Internet no Brasil (CGI.br), com o objetivo de debater os atuais e futuros desafios da Internet. O Fórum é um espaço aberto de discussão para toda a sociedade e reunirá representantes de organizações da sociedade civil, de setores governamentais, empresários e pesquisadores que apresentarão suas visões em torno do tema "Evolução da Governança da Internet: Empoderando o Desenvolvimento Sustentável".
A programação inclui mesas, painéis e trilhas temáticas. O primeiro dia contará com a mesa de abertura, que terá a presença do secretário executivo do CGI.br, com o painel de abertura "Evolução da Governança da Internet: Empoderando o desenvolvimento sustentável" e com as trilhas temáticas Desafios da Inclusão Digital, Economia da Internet, Cibersegurança e Confiança e Internet e Direitos Humanos. No segundo dia haverá o painel "Marco Civil da Internet e regulamentação da Neutralidade de Rede" além de uma conferência sobre os 20 anos do CGI.br que dará ênfase sobre o tema da Diversidade, um dos pontos dos Princípios para a Governança e Uso da Internet.
Já no terceiro dia, será apresentado o seminário "Desafios para o desenvolvimento da Internet no Brasil", o painel "Infraestrutura física para o desenvolvimento sustentável da Internet no Brasil" e a plenária final, como relato final das trilhas temáticas. O evento é uma etapa preparatória para o décimo encontro anual do Internet Governance Forum (IGF), que acontecerá em novembro, em João Pessoa (PB).
As inscrições são gratuitas. Para mais informações acesse o site oficial do Fórum através do endereço: http://forumdainternet.cgi.br/
Upgrades to Jessie, Ruby 2.2 transition, and chef update
2 de Julho de 2015, 20:26 - sem comentários aindaLast month I started to track all the small Debian-related things that I do. My initial motivation was to be concious about how often I spend short periods of time working on Debian. Sometimes it’s during lunch breaks, weekends, first thing in the morning before regular work, after I am done for the day with regular work, or even during regular work, since I do have the chance of doing Debian work as part of my regular work occasionally.
Now that I have this information, I need to do something with it. So this is probably the first of monthly updates I will post about my Debian work. Hopefully it won’t be the last.
Upgrades to Jessie
I (finally) upgraded my two servers to Jessie. The first one, my home server, is a Utilite which is a quite nice ARM box. It is silent and consumes very little power. The only problem I had with it is that the vendor-provided kernel is too old, so I couldn’t upgrade udev, and therefore couldn’t switch to systemd. I had to force systemv for now, until I can manage to upgrade the kernel and configure uboot to properly boot the official Debian kernel.
On my VPS things are way better. I was able to upgrade nicely, and it is now running a stock Jessie system.
fixed https on ci.debian.net
pabs had let me know on IRC of an issue with the TLS certificate for ci.debian.net, which took me a few iterations to get right. It was missing the intermediate certificates, and is now fixed. You can now enjoy Debian CI under https .
Ruby 2.2 transition
I was able to start the Ruby 2.2 transition, which has the goal of switch to Ruby 2.2 on unstable. The first step was updating ruby-defaults adding support to build Ruby packgaes for both Ruby 2.1 and Ruby 2.2. This was followed by updates to gem2deb (0.18, 0.18.1, 0.18.2, and 0.18.3) and rubygems-integration . At this point, after a few rebuild requests only 50 out of 137 packages need to be looked at; some of them just use the default Ruby, so a rebuild once we switch the default will be enough to make it use Ruby 2.2, while others, specially Ruby libraries, will still need porting work or other fixes.
Updated the Chef stack
Bringing chef to the very latest upstream release into unstable was quite some work.
I had to update:
- ruby-columnize (0.9.0-1)
- ruby-mime-types (2.6.1-1)
- ruby-mixlib-log 1.6.0-1
- ruby-mixlib-shellout (2.1.0-1)
- ruby-mixlib-cli (1.5.0-1)
- ruby-mixlib-config (2.2.1-1)
- ruby-mixlib-authentication (1.3.0-2)
- ohai (8.4.0-1)
- chef-zero (4.2.2-1)
- ruby-specinfra (2.35.1-1)
- ruby-serverspec (2.18.0-1)
- chef (12.3.0-1)
- ruby-highline (1.7.2-1)
- ruby-safe-yaml (1.0.4-1)
In the middle I also had to package a new dependency, ruby-ffi-yajl, which was very quickly ACCEPTED thanks to the awesome work of the ftp-master team.
Random bits
- Sponsored a upload of redir by Lucas Kanashiro
- chake, a tool that I wrote for managing servers with chef but without a central chef server, got ACCEPTED into the official Debian archive.
- vagrant-lxc , a vagrant plugin for using lxc as backend and lxc containters as development environments, was also ACCEPTED into unstable.
- I got the deprecated ruby-rack1.4 package removed from Debian
Aprenda a criar repositórios de pacotes Debian
29 de Junho de 2015, 3:00 - sem comentários aindaNeste post irei mostrar como configurar um repositório de pacotes Debian GNU/Linux usando dput + mini-dinstall + nginx. O Debian é um sistema operacional livre criado e mantido por um grupo independente de desenvolvedores espalhados pelo mundo, o projeto foi iniciado em 1993 e tem sido desenvolvido abertamente desde então sempre seguindo o espírito do projeto GNU.
Uma das características mais interessantes do Debian é o seu sistema de gerenciamento de pacotes.
“Um sistema de gerenciamento de pacotes é uma coleção de ferramentas que oferece um método automático para instalar, atualizar, configurar e remover pacotes de um sistema operacional. É tipicamente usado em sistemas operacionais tipo Unix, que consistem de centenas de pacotes distintos, para facilitar a identificação, instalação e atualização” (fonte: Wikipédia)
O sistema de gerenciamento de pacotes Debian chamado APT foi criado originalmente pelos desenvolvedores do projeto e lançado pela primeira vez em 9 Março de 1999 no Debian 2.1 (Slink) e conta hoje com um total de 44893 pacotes (44 mil !!!) em seus repositórios oficiais. Esta enorme quantidade de softwares disponíveis nos repositórios oficiais do projeto torna extremamente simple pesquisar, instalar, atualizar ou remover qualquer coisa do computador.
Os pacotes disponibilizados nos repositórios oficiais do Debian passam por um rígido controle de qualidade liderado pelos desenvolvedores oficiais do projeto e aberto à contribuição de qualquer pessoa. Então se você está empacotando algo veja o Guia do Novo Mantenedor Debian para saber como incluir isso nos repositórios oficiais.
Mas se isso não for possível ou se você não puder esperar o pacote entrar no Debian seja por qual motivo for, então a solução será criar um repositório pessoal ou Private Package Archive (PPA). É isto que será descrito aqui a partir de uma solução proposta inicialmente por Stefano Zacchiroli em seu blog no post howto: uploading to people.d.o using dput.
Configurando o servidor para receber pacotes
- Sistema Operacional: Debian Wheezy
- Domínio: debian.joenio.me
Acesse o servidor via SSH
e instale o mini-dinstall
:
mini-dinstall is a tool for installing Debian packages into a personal APT repository
# apt-get install mini-dinstall
Crie o diretório onde os pacotes serão copiados:
$ mkdir -p ~/debian.joenio.me/mini-dinstall/incoming
Crie o arquivo ~/.mini-dinstall.conf
:
[DEFAULT]
mail_on_success = false
incoming_permissions = 0750
architectures = all, i386, amd64
archive_style = flat
dynamic_reindex = 1
archivedir = /home/joenio/debian.joenio.me/
generate_release = 1
release_label = Joenio
release_description = Unofficial Debian packages maintained by Joenio Costa
verify_sigs = 0
Preparando a estação de trabalho para enviar pacotes
- Sistema Operacional: Debian Testing
Instale o dput
em seu computador:
dput allows you to put one or more Debian packages into the archive
# apt-get install dput
Exporte sua chave pública GnuPG
para para o arquivo signing.asc
.
$ gpg --armor --output signing.asc --export D5609CBE
Copie o arquivo signing.asc
para o servidor:
$ scp signing.asc debian.joenio.me:~/debian.joenio.me/
Crie arquivo ~/.dput.cf
em seu $HOME
:
[debian.joenio.me]
fqdn = debian.joenio.me
method = scp
login = *
incoming = ~/debian.joenio.me/mini-dinstall/incoming
allow_unsigned_uploads = 0
post_upload_command = ssh debian.joenio.me mini-dinstall -b && sign-remote --no-batch debian.joenio.me:debian.joenio.me/unstable/Release
Os pacotes serão assinados com a chave GnuPG
ao serem enviados pelo dput
ao
servidor. Isso será feito pelo script sign-remote
disponível
aqui. Copie este arquivo em seu computador e adicione a
localização dele ao $PATH
, se não sabe do que estou falando leia
isso.
O dput
irá reclamar se a distribuição do pacote não for unstable, isto é
definido no arquivo changelog
do pacote, veja o capítulo 4 Required files
under the debian directory no Guia do Novo Mantenedor Debian
para entender como fazer isso.
Bem, aqui já temos tudo pronto para fazer upload dos nossos pacotes ao servidor, basta executar o seguinte comando:
$ dput debian.joenio.me <pacote>.changes
Isto irá copiar o pacote .deb e o arquivo .changes dele, irá atualizar os
arquivos Sources e Packages com as informações do pacote e irá assinar o
arquivo Release com a chave pública GnuPG
.
Disponibilizando acesso ao repositório publicamente
Até aqui já temos um repositório com pacotes hospedados, mas sem acesso público
aos pacotes ninguém poderá utilizá-lo. Para resolver isto vamos configurar
acesso via HTTP
usando o servidor web Nginx.
Instale o Nginx
no servidor:
# apt-get install nginx
Crie o arquivo de configuração /etc/nginx/sites-available/debian.joenio.me
:
server {
server_name debian.joenio.me;
access_log /var/log/nginx/debian.joenio.me.access.log;
location / {
root /home/joenio/debian.joenio.me;
autoindex on;
}
}
Habilite o arquivo de configuração e reinicie o serviço:
# cd /etc/nginx/sites-enabled/
# ln -s /etc/nginx/sites-available/debian.joenio.me
# service nginx restart
Com o Nginx
configurado e rodando já temos o repositório e seus pacotes
disponíveis no seguinte endereço:
Testando o repositório e instalando pacotes
Para usar este repositorio adicione as seguintes entradas no
/etc/apt/sources.list
do computador local:
deb http://debian.joenio.me unstable/
deb-src http://debian.joenio.me unstable/
Adicione a chave de assinatura ao banco de dados de segurança do APT
:
# wget -O - http://debian.joenio.me/signing.asc | apt-key add -
Atualize a lista de pacotes e teste a instalação de algum pacote disponível no repositório:
# apt-get update
# apt-get install <pacote>
Pronto, temos o nosso próprio repositório de pacotes Debian disponível publicamente. Você pode agora publicar qualquer pacote que esteja criando e divulgar o endereço do repositório para que outros usuários Debian possam instalar os seus pacotes mais facilmente.
Na wiki do Debian em How to setup a Debian repository tem uma lista de ferramentas para configuração de repositórios Debian, não usei a maioria das ferramentas listadas lá, mas dentre elas o aptly parece uma boa opção para criar repositório pessoal de pacotes Debian e pode ser uma boa alternativa para o setup descrito aqui neste post.
Computação Brasil #27: Software Livre
24 de Junho de 2015, 17:29 - sem comentários aindaA Computação Brasil é revista publicada pela Sociedade Brasileira de Computação (SBC), e publica edições temáticas cobrindo assuntos importantes na Computação. A ultima edição, de número 27, é dedicada ao Software Livre.
Citando o editorial, escrito pelo professor Paulo Roberto Freire Cunha, presidente da SBC:
Software Livre é hoje um assunto importantíssimo para toda a sociedade, ultrapassando a questão ideológica e tornando-se um ecossistema complexo e de interesse global, que inclui pesquisa científica, educação, tecnologia, segurança, licença de uso e políticas públicas.
Um ponto fundamental é o impacto que ele gera no mercado, atuando hoje como um facilitador para milhares de startups em todo o mundo. Por isso, tem um papel essencial num país como o Brasil, onde o sucesso do empreendedorismo e da inovação tecnológica está diretamente ligado à redução de custos, à criatividade e à flexibilidade.
Para destacar o assunto, a revista traz diversos especialistas que mostrarão as mais recentes análises e pesquisas sobre Software Livre, com o propósito de estimular o leitor a fazer uma reflexão sobre o futuro do desenvolvimento de plataformas com código aberto e suas aplicações em diferentes frentes.
Eu e o Paulo escrevemos juntos 2 textos para esta edição. O primeiro, com co-autoria da professora Christina Chavez, que foi minha orientadora de doutorado, é sobre Controle de Qualidade em projetos de software livre. O segundo, em autoria com o Rodrigo Maia, é sobre a reformulação do Software Público Brasileiro, projeto no qual trabalhamos juntos desde a metade e 2014.
A versão online da revista é meio tosca, se como eu você não tiver Flash instalado (não tenho idéia de como seja a versão com Flash). Mas a versão em PDF é bem razoável.
Será que esse modelo de containers é um Hype?
12 de Junho de 2015, 1:34 - sem comentários aindaNa informática tudo as vezes parece muito fluído. Coisas nascem rapidamente e morrem as vezes na mesma velocidade. Algumas tecnologias que prometem muito e as vezes se percebe que grande parte é uma grande obra de marketing ou algo parecido.
Quando a ideia de trabalhar com containers me foi apresentada, através do uso do Docker, e como as pessoas já estavam eufóricas fora do Brasil sobre esse assunto, me deixou um pouco com a antena ligada, que talvez fosse esse mais hype da nossa área. Sendo assim fui pesquisar com certo receio.
Ao testar pela primeira vez seu uso, percebi que tinha grande potencial, que tecnicamente a ideia é muito boa e toda cadeia de serviço que vem embutido no modelo faz muito sentido para a nova cultura DevOps que vem se desenhando há certo tempo.
Talvez você não confie nas minhas previsões, pois sou somente um soteropolitano comedor de acarajé Talvez as notícias abaixo deixem você mais convencido:
Containers and Microservices Force VMware To Ship A Linux Distribution
Veja que estamos falando da grande VMWare, que é dona de uma enorme fatia de mercado.
Intel takes on CoreOS with its own container-based Linux
A Intel não me parece ser uma empresa que aposta em hypes E criar sua própria distribuição GNU/Linux para atender essa demanda de mercado quer dizer muita coisa pra mim.
Google gets a jump on Microsoft and Amazon with Container Engine
Nem preciso falar do tamanho da Google, não é? Sei que ela acaba testando muita coisa, e uma parte acaba por ser Hype mesmo (Google Glass?), mas ela usar como serviço indica bastante coisa pra mim.
Microsoft Unveils New Container Technologies for the Next Generation Cloud
Assim como a Google, a Microsoft está apostando nesse modelo para seu serviço e vale lembrar que de todas essas empresas, a MS é a empresa mais conservadora, ou seja, se até mesmo a MS está apostando nisso, quem pode duvidar desse sucesso?
Zyne is now in Debian
9 de Junho de 2015, 16:05 - sem comentários aindaZyne is a modular synthetizer written in Python. Anyone can create and extend its modules using the Pyo library. Zyne's GUI is coded using WXPython and will look nicely in GNU/Linux, Mac and Windows systems. It's written by the same author of Pyo, and together with Cecilia and Soundgrain is part of an amazing set of libre tools for sound synthesis and electronic music composition.
Zyne loading 6 of its 14 default modules
Zyne package is result of a successful one-day event called MicroDebconf Brasilia 2015, being created during a track about packaging and QA leaded by Eriberto Mota and Antonio Terceiro.
Troubleshooting Docker
8 de Junho de 2015, 1:36 - sem comentários aindaO Docker é uma solução muito recente e talvez por isso que tenha tão pouca documentação sobre coisas não triviais. Com base nisso, farei um pequeno resumo dos passos que pode seguir para analisar seu ambiente para encontrar a causa raiz em caso do problema.
Parâmetro PS
Como o básico, temos o comando “docker ps” ele nos mostra o estado dos containers. Ele por padrão (sem parâmetros) mostra quais estão em execução, mas com os parâmetro -a ele mostra todos os containers, incluindo os que não estão em execução:
Os containers que tiverem a informação “Exited” na coluna “STATUS” não estão mais em execução e o número que aparece entre parentes é o código de saída do processo, ou seja, qualquer coisa diferente de “0” indica um problema.
Log
Você pode analisar o log também. O Docker por padrão envia logs via syslog, ou seja, acesse o arquivo de log geral do seu GNU/Linux, que no caso do Debian é o “/var/log/syslog”:
# tail -f /var/log/syslog | grep -i “docker”
Logs
Diferente de apenas analisar o log do host docker, você pode ver o resultado do comando executando no container. Isso pode ser muito útil para entender a saída de erro, que normalmente não aparece no log do syslog:
# docker logs <container ID>
No meu caso abaixo, ficou fácil:
Stats
Caso você suspeite de uso irresponsável dos recursos, pode usar o parâmetro “stats” do docker. Com o comando abaixo listará todos os containers e seus respectivos usos do recurso do host:
docker ps -q | xargs docker stats
Sysdig
Não conhece Sysdig? Veja esse vídeo.
Caso esteja usando Debian, será necessário instalar o pacote mais novo. Você pode fazer tudo com o comando abaixo:
# wget http://ftp.us.debian.org/debian/pool/main/s/sysdig/sysdig_0.1.99-1_amd64.deb ; wget http://ftp.us.debian.org/debian/pool/main/s/sysdig/sysdig-dkms_0.1.99-1_all.deb ; dpkg -i sysdig*
Depois será necessário reiniciar o módulo do sysdig:
# rmmod sysdig-probe; modprobe sysdig-probe
Processamento
Para analisar o alto consumo de processador é simples. Use o comando abaixo:
# sudo sysdig -pc -c topprocs_cpu
O parâmetro “-pc” adiciona o contexto de containers, ou seja, é o mesmo comando padrão de processamento do sysdig, porém com o adendo sobre containers.
Veja o retorno desse comando:
Eu executei um grep recursivo no container “trusting_mayer” apenas para efeito de teste. E veja nosso container como o processo que mais consome processador.
Rede
É possível saber quem são os maiores utilizadores de recurso de redes com o comando abaixo:
# sysdig -pc -c topprocs_net
Veja o retorno:
Resumindo. Uso de rede não é o problema aqui, certo?
Caso tenha interesse em saber quais as conexões abertas nesse momento, use o comando abaixo:
# sysdig -pc -c topconns
Veja o retorno:
Interessado em ir um pouco mais fundo nessa analise? Que tal ver os dados que trafegam nessas conexões?
# sysdig -A -cecho_fds container.name=tender_elion and fd.port=80
No lugar de “tender_elion” coloque o nome do seu container e o mesmo para a porta.
Veja o retorno:
Como podemos ver, é apenas o apt-get instalando pacotes.
Disco
E se o problema for algo relacionado a uso do disco?
Com o comando abaixo é possível ter uma pista:
# sysdig -pc -c topprocs_file
Veja o retorno:
Podemos ver que tem alguém ali consumindo bastante disco.
E se eu quiser mais informação sobre quais são os arquivos maiores e afins?
# sysdig -pc -c topfiles_bytes
Veja o retorno:
Agora temos mais informações.
Segurança
Suspeitou de algum problema de segurança? Analise todos os comandos executados, tanto no host, como no container com o comando abaixo:
# sysdig -pc -c spy_users
Veja o retorno:
Mais logs
Quer analisar todos os logs em apenas um tela? Simples assim:
# sysdig -pc -cspy_logs
Veja o retorno:
Muito dado, certo? Quer ver os logs de um container em específico?
# sysdig -pc -cspy_logs container.name=condescending_einstein
Lembre-se de mudar o nome do container.
Veja o retorno:
Com todo esses dados, acho que agora sua analise da causa raiz do problema fique mais fácil.
Referência
https://sysdig.com/let-light-sysdig-adds-container-visibility/
http://www.sysdig.org/wiki/
Docker – Compose (Vídeo)
2 de Junho de 2015, 1:25 - sem comentários aindaSeguindo a série de vídeos sobre Docker, com esse vídeo você verá o que é Docker Compose e como usá-lo.
Corretor ortográfico para VIM
1 de Junho de 2015, 12:52 - sem comentários aindaVocê usa VIM para criação de textos (LaTeX ou afins)? Sempre sentiu falta de um corretor ortográfico? Seus problemas se acabaram!!!
Preparando ambiente:
# cd ~ ; mkdir corretor ; cd corretor
Baixando a base de palavras:
# wget http://extensions.libreoffice.org/extension-center/vero-verificador-ortografico-e-hifenizador-em-portugues-do-brasil/pscreleasefolder.2012-01-04.1563120832/2.1.2/vero_pt_br_v212aoc.oxt
# unzip -x vero_pt_br_v212aoc.oxt
Aplicando no vim
Acesse o vim com o comando abaixo:
# vim
No vim digite:
:mkspell pt pt_BR
Obs: Pode demorar um pouco e dará alguns erros de arquivos duplicados, ok?
# cp pt.utf-8.spl /usr/share/vim/vim*/spell/
Usando o corretor no vim
Dentro do vim execute o seguinte comando:
set spell spelllang=pt,en
Caso queira que o corretor seja habilitado automaticamente sempre que acessar o vim:
# echo ‘set spell spelllang=pt,en’ >> ~/.vimrc
Pronto
Segurança no Docker
1 de Junho de 2015, 2:40 - sem comentários aindaQuando pensamos sobre segurança no Docker, é importante relembrar que a exploração de uma falha nesse ambiente podem ter efeitos catastróficos. Ainda mais quando é algo automatizado.
A ideia é ter certeza que o ambiente e o processo executado é o mais seguro possível.
Vou apresentar algumas configurações iniciais que podem ser analisadas para tornar seu ambiente ainda mais seguro.
Restrição de acesso
No que tange a isolamento, o Docker tem muito a acrescentar e esse ponto não se limita ao fato das aplicações estarem separadas a nível de disco e processo. Podemos sair da dicotomia “root e não root”, pois entre um usuário sem permissão e o usuário root existe todo um gradiente de permissões que podem, e devem, ser analisadas e removidas caso não seja necessária.
Desde o kernel 2.2, as permissões foram divididas e chamadas de “capabilities”, que no docker podem ser “ligadas” ou “desligadas” por container. Isso permite que o ambiente tenha “a menor permissão necessária”, que é quase um mantra na área de segurança.
Para conhecer a lista de capabilities, segue o seguinte link.
No Docker, caso você não especifique nada sobre adicionar ou remover capabilities, a lista abaixo será aplicada no container:
- CHOWN
- DAC_OVERRIDE
- FSETID
- FOWNER
- MKNOD
- NET_RAW
- SETGID
- SETUID
- SETFCAP
- SETPCAP
- NET_BIND_SERVICE
- SYS_CHROOT
- KILL
- AUDIT_WRITE
Caso deseje remover permissão MKNOD, por exemplo, use o seguinte comando:
# docker run –cap-drop=MKNOD …
Caso deseja adicionar, LEASE por exemplo, use o seguinte comando:
# docker run –cap-add=LEASE …
Restrição de sistema de arquivo
Quando um container é instanciado é criado um novo ponto de montagem com arquivo da imagem usada para esse novo ambiente.
Esse espaço de disco da imagem é montado como somente leitura e assim uma camada superior é criada para receber as modificações que ocorrerem desde então. Caso queira aplicar essas modificações na imagem, pode usar o parâmetro “commit” para tal ação.
As modificações podem ser armazenadas em tags diferentes e assim se tornaria mais fácil fazer “rollback” das modificações, caso seja necessário. Pra usar tag é muito simples:
# docker tag <número ou nome da tag> <nome da imagem>
Multi Level Security
Com o Docker é possível manipular configurações do “MCS labels” para evitar que um container acesse indevidamente dados de outro container, por uma questão de má configuração ou exploração de alguma vulnerabilidade. Podemos aplicar um label a um processo baseado no nível de informação que você deseja que ele tenha acesso.
docker run -d –security-opt label:level:TopSecret httpd
Quer aprender um pouco mais sobre MLS? Leia aqui.
Outras medidas de segurança “fora” do Docker
As versões modernas do Kernel Linux podem ser complementadas com variadas ferramentas de segurança adicionais, tal como TOMOYO, AppArmor, SELinux e GRSEC, que podem funcionar perfeitamente com Docker, algumas inclusive já tem templates de configuração específicos para containers.
Você pode definir políticas customizadas de segurança com essas ferramentas. Basta ler seus respectivos manuais.
Referências:
https://d3oypxn00j2a10.cloudfront.net/assets/img/Docker%20Security/WP_Intro_to_container_security_03.20.2015.pdf
https://docs.docker.com/reference/run/#runtime-privilege-linux-capabilities-and-lxc-configuration
https://github.com/docker/docker/blob/master/daemon/execdriver/native/template/default_template.go
http://docs.docker.com/articles/security/
Docker Compose 1.3.0 – O que vem por ae
30 de Maio de 2015, 23:36 - sem comentários aindaA comunidade Docker está muito ansiosa com o lançamento da nova versão do docker-compose. Com isso vamos adiantar logo quais as novidades que podem aparecer no próximo lançamento.
Labels
Com o advento da funcionalidade de labels do Docker 1.6, o compose agora passa usar essas marcações ao invés de manipular o nome do container, como era feito anteriormente para gerenciar os containers. Isso é muito bom para performance, inclusive
Sem containers intermediários
Não será mais necessário utilizar containers intermediários quando um ambiente é recriado. Isso torna o docker-compose menos complexo e mais resiliente a falhas.
Recriação inteligente de containers
Como funcionalidade experimental, o compose recriará apenas containers que tiveram configuração modificada no docker-compose.yml. Isso se tornará um padrão no futuro, mas hoje é executado dessa forma apenas se usado o parâmetro “–x-smart-recreate” no comando “docker-compose up”.
Busca inteligente de configuração
Quando invocado o docker-compose dentro de um subdiretório do projeto, o compose verificará se existe docker-compose.yml nas pastas acima, até encontrar o arquivo de configuração
Adição de novos parâmetros do Docker na configuração
Nem todos os parâmetros do Docker já são permitidos no docker-compose, sendo assim novas opções serão lançadas nessa versão:
- dockerfile: Permitir usar um arquivo Dockerfile alternativo.
- labels: Permitir adição de metadados nos containers.
- extra_host: Permitir adição de entradas no “/etc/hosts” do container.
- pid: Permitir utilização do mesmo PID namespace do host.
- cpuset: Permitir especificação de qual CPU o container estará restrito a utilizar.
- read_only: Permitir montagem do container como apenas leitura.
- security_opt: Permitir especificações de segurança.
- log_driver: Permitir especificar driver para log.
Correção de bugs
Alguns bugs foram corrigidos nessa versão, mas não encontrei uma lista organizada para mostrar aqui
Gostou? Quer usar?
Lembre-se que ainda não é instável, ok? Outra coisa importante atentar é que essa versão trás uma mudança na infraestrutura interna do compose, ou seja, caso você já tenha um ambiente hoje gerido pelo compose 1.2.0, você precisará adequar seu ambiente antigo, caso deseje atualizar a versão.
A adequação é muito simples:
docker-compose migrate-to-labels
Caso não tenha nenhum problema em apagar os containers, pode fazer isso, assim o compose instanciará novos containers já no modelo novo.
Pra ba ixar o compose novo, continua muito simples:
# curl -L https://github.com/docker/compose/releases/download/1.3.0rc1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
Referência:
https://github.com/docker/compose/releases/tag/1.3.0rc1
Universidade Católica do Salvador lança Campus Virtual com a plataforma Noosfero
29 de Maio de 2015, 23:38 - sem comentários aindaUma mesa redonda sobre "Comunicação, Redes Sociais e Educação", realizada na manhã desta sexta-feira (29), no Campus de Pituaçu, marcou o lançamento do Campus Virtual da Universidade Católica do Salvador (UCSal). Participaram do debate o reitor Pe. Mauricio Ferreira, o assessor técnico e de modernização da UCSal, prof. Arnaldo Bispo, o coordenador do curso de Direito, prof. Raimundo Andrade, o editor do Correio 24 horas, Wladmir Lima, e o representante da Colivre, que foi responsável pela implantação do Campus Virtual, Vicente Aguiar. Na plateia, professores, coordenadores de curso, funcionários e convidados da comunidade externa participaram da apresentação e debateram sobre o impacto do crescimento das redes sociais digitais e como elas podem ser utilizadas a favor do ensino.
Sobre o Campus Virtual
O Campus Virtual é ambiente digital integrado de rede social e desenvolvimento acadêmico. Para isso, foi reunido, de forma inovadora, o conceito de rede social acadêmica, com um ambiente virtual de aprendizagem e sites institucionais numa mesma plataforma.
Nesse novo ambiente digital da UCSal, cada estudante, professor e funcionário terá seu perfil exclusivo e completamente personalizável e com ele poderá adicionar amigos, criar galeria de imagens e interagir com toda a comunidade acadêmica. Poderá, ainda, construir seu próprio blog, criar comunidades e fóruns, além de compartilhar artigos e projetos de pesquisa.
Por utilizar a plataforma de software livre Noosfero, o Campus Virtual da UCSal oferece um ambiente extremamente flexível, no qual as funcionalidades são colocadas de forma fácil nas mãos dos usuários, possibilitando mais autonomia na criação e organização de sites e comunidades virtuais da UCSal na internet.
Focada na horizontalidade, no compartilhamento de conteúdos e na liberdade do usuário, o Campus Virtual se torna uma rede de integração, compartilhamento cientifico e aprendizagem colaborativa entre os alunos, professores, pesquisadores e funcionários.
Fonte: www.ucsal.br