Docker Lab
Vamos iniciar a estruturação dos ambientes de nossa solução!
A partir daqui já estamos introduzidos nos conceitos do ChatOps, portanto as coisas vão ficar bem mais dinâmicas. :robot:
Imagem Docker
Vamos começar empacotando o bender em uma imagem docker.
Dentro do path bender/ você encontra um Dockerfile
e também um script docker-build.sh
para facilitar um pouco a vida. Abra o script e altere a linha:
dockerhub_user=rodrigogrohl
para seu usuário no Dockerhub.
(Caso você não tenha familiaridade com o Dockerhub, deixarei uma aula na seção Extras)
Alterada a linha, basta executar para gerar nossa imagem: . docker-build.sh
Imagem gerada, vamos executá-la:
docker run --rm \
-e MATTERMOST_ENDPOINT=$MATTERMOST_ENDPOINT \
-e MATTERMOST_INCOME_URL=$MATTERMOST_INCOME_URL \
-e MATTERMOST_TOKEN=$MATTERMOST_TOKEN \
-e HUBOT_LOG_LEVEL=$HUBOT_LOG_LEVEL \
-p 8086:8086 rodrigogrohl/bender
Agora temos dois containers docker em execução, o Mattermost e o Bender!
Docker Compose
Pré-Requisito: Instalação Docker Compose
Compose Mattermost
Vamos começar conhecendo nosso novo recurso, o docker-compose.yml
Na sequência, iremos subir apenas o Mattermost, com o seguinte comando:
docker-compose up -d mattermost
E realizar novamente as configurações necessárias.
Compose Bender
Agora, vamos atualizar as variáveis de ambiente para que o bender tenha os tokens corretos, e subí-lo na sequência:
docker-compose up -d bender
Bender + Netdata
Vamos agora para um rápido um overview sobre o Netdata, e na sequência iremos acoplar esta solução junto ao bender!
Dê uma olhada em nosso novo bender/Dockerfile
:whale:
Netdata Server
Nesta aula, iremos configurar um novo serviço em nosso toolkit!
Já instalamos o netdata junto ao bender, porém, teremos muitos outros serviços em nosso parque, e óbvio que queremos ser notificados, ou pelo menos ter essa opção, para cada um deles, e como fazer isso?
Netdata Escalado
Com o nosso NetData Master, vamos configurar o arquivo de Stream, responsável pela comunicação Slave > Master!
Ou seja... Além do bender, podemos monitorar qualquer outro container ou host e integrá-lo ao Mattermost simplesmente configurando esse Stream.
Vamos gerar nosso API key, uma chave randômica via uuidgen
e começar nosso #HandsON!!
Jenkins
Via HandsOn, e uma imagem com pipelines, faremos essa integração!
Simples! Subiremos um novo Serviço ao nosso laboratório, o Netdata Master, e faremos todos os outros Netdata, enviarem informações a ele!
Com isso temos um ponto único de integração para o Mattermost!
Mattermost > Bender > Jenkins
Aqui vamos interagir com o Jenkins, via Mattermos, obviamente com a ajuda do nosso amigo metálico! Vamos de #HandsOn!
Jenkins > Mattermost
Vamos agora inverter o caminho! Que tal notificações customizadas ao término dos pipelines do Jenkins?
Podemos notificar: sucessos, apenas quebras, ou tudo, e como quisermos! Para isso vamos:
- Instalar e Configurar o Plugin
mattermost-plugin
; - Adicionar notificações em nosso pipeline, como no exemplo abaixo;
mattermostSend color: 'good', message: ":medal_military: Sucesso no pipeline **${env.JOB_NAME}**\nDetalhes: ${env.BUILD_URL}", text: "Mensagem opcional, podemos também **marcar** um @usuario \nPara **alterar a cor** da tag abaixo, utilize os parametros: **good**, **warning**, **danger**, ou qualquer cor em **hexa**: #0099cc"