16 de set. de 2020

[DevOps #02] - Rundeck

Rundeck

Olá pessoal, espero que estejam bem! Este é o segundo post da série semana DevOps, hoje iremos conhecer o rundeck, com um breve resumo e logo em seguida partiremos para a prática(hands-on)...

Acesse esse post no meu GitHub



Resumo

Tópicos

  • O que é o Rundeck?
  • O Rundeck é gratuito?
    • Rundeck Enterpise (fka Rundeck Pro)
  • Recursos destaques do Rundeck
  • Como o Rundeck difere do Jenkins?
  • O Jenkins pode integrar com o Rundeck?
  • Instalação do rundeck
  • Criação de um projeto
  • Adicionando um node
  • Executando scripts
  • Registro de logs

O que é o Rundeck?

Rundeck é uma ferramenta de código aberto que ajuda a definir, implantar e gerenciar automação. Ele fornece console da web, ferramentas CLI e uma API da web. Ele é escrito em Java e permite que você execute tarefas em um conjunto de nós. A política de controle de acesso baseado em função oferece mais flexibilidade para gerenciar diferentes permissões de acesso do usuário. As automações de processos são definidas como jobs. Você pode definir cada etapa do fluxo de trabalho, que pode ser um trabalho em si ou qualquer tarefa. O usuário pode fornecer opções de entrada na definição do trabalho. Essas opções podem ser usadas no fluxo de trabalho do trabalho como uma variável. Os valores das opções podem ser padrão, de múltipla escolha ou protegidos. O Rundeck é mais como uma ferramenta de orquestração que pode ser usada para gerenciar servidores ou ambientes em nuvem. Ele oferece suporte e se integra bem às ferramentas e práticas modernas de DevOps.

Rundeck operation

O Rundeck foi projetado para aceitar a realidade de que infraestrutura e ferramentas heterogêneas são um fato da vida em qualquer organização de tamanho considerável. É por isso que a Rundeck não obriga a substituir os scripts, comandos ou ferramentas que você usa hoje. Você usa o Rundeck para executar fluxos de trabalho em sua automação existente (por exemplo, Ansible, Puppet, Chef, Jenkins, Docker, Kubernetes, ferramentas legadas e todos os seus scripts / APIs personalizados) ou automatizar rapidamente procedimentos manuais anteriores. Com o Rundeck, você pode reutilizar as habilidades de automação que já possui e adicionar novas conforme necessário.

O Rundeck é gratuito?

Rundeck Open Source é um software de código aberto gratuito licenciado sob a Apache Software License v2.0 , e você pode participar do projeto no GitHub. Para aqueles que escrevem e executam trabalhos Rundeck em pequena escala (por exemplo, uso limitado ou dentro de uma equipe), o Rundeck de código aberto oferece os recursos de que você precisa, gratuitamente.

Rundeck Enterpise (fka Rundeck Pro)

O foco do Rundeck Enterprise, é tornar o Rundeck pronto para produção em escala empresarial. O Rundeck Enterprise, desenvolvido com base no Rundeck de código aberto, é o pacote de software e serviços para executar o Rundeck como um serviço de nível empresarial.

Construído e testado para a empresa, o Rundeck Enterprise inclui recursos exclusivos (incluindo clustering / HA, fluxo de trabalho avançado, gerenciamento de ACL aprimorado, painéis / visualização aprimorados) e plug-ins exclusivos. Suporte profissional e serviços de integração também fazem parte do pacote de assinatura Rundeck Enterprise.

Recursos destaques do Rundeck

  • Execução de comando distribuído
  • Fluxo de trabalho (incluindo passagem de opções, condicionais, tratamento de erros e várias estratégias de fluxo de trabalho)
  • Sistema de execução plugável (SSH e WinRM por padrão; Powershell disponível)
  • Modelo de recursos plugável (obtenha detalhes de sua infraestrutura de sistemas externos)
  • On-demand (Web GUI, API ou CLI) ou execução de trabalho agendada
  • Armazenamento de chaves seguro para senhas e chaves
  • Política de controle de acesso baseado em função com suporte para LDAP / ActiveDirectory / SSO
  • Ferramentas de edição / gerenciamento de políticas de controle de acesso
  • Histórico e registros de auditoria
  • Use qualquer linguagem de script

Como o Rundeck difere do Jenkins?

Em palavras simples, Jenkins é empregado para desenvolvimento e Rundeck, para operações. Ambas as ferramentas compartilham certos recursos comuns, pois a interface de trabalho fornecida é para autoatendimento.

Rundeck2

O Jenkins pode se integrar ao Rundeck?

O Jenkins pode lidar com as compilações para o ciclo de integração contínua de desenvolvimento e o acionamento do Rundeck é necessário para controlar a orquestração distribuída na implantação. Plugins estão disponíveis para a integração do Jenkins com o Rundeck. Quando definimos um trabalho no Jenkins, podemos especificar a tarefa para acionar um trabalho após verificar o status de execução de determinado trabalho.

Da mesma forma, se os privilégios de administrador do Jenkins forem fornecidos ao Rundeck, ele poderá acessar os artefatos de trabalho. Assim, o Rundeck pode pegar os artefatos do trabalho do Jenkins e pode acionar a implantação. O mecanismo de reversão com Rundeck funciona bem quando uma implantação não funciona conforme o esperado. Podemos escolher quaisquer artefatos salvos do Jenkins como artefatos de implantação.

Instalação do rundeck

Para este laborátorio irei utilizar o Centos 7.8, na GCP. Para instalações personalizadas e/ou instalações em derivações do debian, docker ou execução via jar consulte a documentação oficial clicando aqui.

Requisitos de sistema

Sistemas operacionais suportados:

  • Red Hat Enterprise Linux
  • Oracle Linux
  • CentOS
  • Ubuntu
  • Windows Server

Recursos mínimos:

  • JAVA 8 or 11 Installed.
  • 2 CPUs
  • 2 CPUs per instance
  • 4 GB RA
  • 20 GB hard disk
  • Database

  • Mariadb version
  • Mysql version
  • Postgres version
  • Oracle version

Log store

  • Sistema de arquivo
  • Armazenamento de objetos compatível com S3

Amazon EC2

  • Tamanho da instância de m3.medium ou maior
  • Um tamanho de instância de m3.xlarge ou maior se houver mais de 100 hosts

Root (ou administrador no Windows) não é necessário ou recomendado.

Se houver necessidade de acesso root, configure o usuário Rundeck para ter acesso via sudo.

Instalando em distribuições CentOS ou Red Hat Linux

Instale com yum

Você pode os comandos abaixo para adicionar o repo Rundeck yum e instalar o Rundeck:

rpm -Uvh http://repo.rundeck.org/latest.rpm
sudo yum install rundeck java

Iniciando Rundeck

sudo service rundeckd start

Saída

[root@srvcloud /]# sudo service rundeckd start
Starting rundeckd (via systemctl):                         [  OK  ]

Para verificar se o serviço foi iniciado corretamente, abra os registros de log:

tail -f /var/log/rundeck/service.log

Logando pela primeira vez

  • Navegue para http: // localhost: 4440 / em um navegador
  • Faça login com o nome de usuário admin e senha admin Rundeck agora está instalado e funcionando!

Login Rundeck

Página inicial

Criando seu primeiro projeto

Como pode ser visualizado na imagem abaixo, existem diversas funcionalidades que podem ser definidas no escopo do projeto. Vale conferir, para este momento irei deixar todas essas opções como padrão.

Criando seu primeiro projeto

Adicionando nós ao projeto

Fonte dos nós

Executando comandos aleatórios

Execução de comandos

Opções de configurações dentro do projeto

Configurações

Criação de JOB

Criando job

Editando o workflow

Existem muitas opções nessa funcionalidade, vale a pena explorá-las uma a uma. Uma opção bem interessante é a de adicionar opções dentro do job e escolhe-las no momento da execução, essas opções podem ser definidas dentros dos scripts de execução.

workflow

passo

Execução do JOB criado

Execução do job

Registro de atividades

Registro de logs

Lisa de tarefas

Lista de tarefas

Por hoje é isso, espero que este post tenha sido útil para lhe dar um norte e conhecer esta ferramenta e quem sabe utilizá-la no ambiente em que trabalha.

Rundeck em 10 minutos



Rundeck

Fontes de apoio

Fonte1

Fonte2

15 de set. de 2020

[DevOps #01] - Jenkins

Olá pessoal, espero que estejam bem! Este é o primeiro post da série semana DevOps, hoje iremos conhecer o jenkins, com um breve resumo e logo em seguida partiremos para a prática(hands-on)...

Acesse esse post no meu GitHub

Resumo

  • Tópicos

    • Oque é o Jenkins?
    • Hudson e Jenkins
    • Automação Jenkins
    • Como funciona o Jenkins
    • Oque é uma Pipelines Jenkins
      • Por que Pipeline?
      • Conceitos de pipeline
    • Instalação do Jenkins
    • Jenkins para CI / CD

Oque é o Jenkins?

Jenkins oferece uma maneira simples de configurar uma integração contínua e ambiente de entrega contínua para quase qualquer combinação de linguagens e repositórios de código-fonte

Jenkins oferece uma maneira simples de configurar um ambiente de integração contínua ou entrega contínua ( CI / CD ) para quase qualquer combinação de linguagens e repositórios de código-fonte usando pipelines, além de automatizar outras tarefas de desenvolvimento de rotina. Embora o Jenkins não elimine a necessidade de criar scripts para etapas individuais, ele oferece uma maneira mais rápida e robusta de integrar toda a sua cadeia de ferramentas de construção, teste e implantação do que você pode construir facilmente.

Integração contínua

"Don't break the night building!" é uma regra fundamental nas lojas de desenvolvimento de software que publicam uma versão diária do produto recém-construída para seus testadores. Antes do Jenkins, o melhor que um desenvolvedor poderia fazer para evitar quebrar a compilação noturna era compilar e testar cuidadosamente e com sucesso em uma máquina local antes de confirmar o código. Mas isso significava testar as mudanças de uma pessoa isoladamente, sem os compromissos diários de todos os outros. Não havia nenhuma garantia firme de que a construção noturna sobreviveria ao commit.

Hudson e Jenkins

Em 2004, Kohsuke Kawaguchi foi desenvolvedor Java na Sun. Kawaguchi se cansou de quebrar compilações em seu trabalho de desenvolvimento e queria encontrar uma maneira de saber, antes de enviar o código para o repositório, se o código iria funcionar. Então Kawaguchi construiu um servidor de automação em e para Java para tornar isso possível, chamado Hudson. Hudson se tornou popular na Sun e se espalhou para outras empresas como código aberto.

Em 2011, uma disputa entre a Oracle (que havia adquirido a Sun) e a comunidade independente de código aberto Hudson levou a uma bifurcação com a mudança de nome, Jenkins . Em 2014, Kawaguchi se tornou CTO da CloudBees, que oferece produtos de entrega contínua baseados em Jenkins.

Ambos os garfos continuaram existindo, embora Jenkins fosse muito mais ativo. Hoje, o projeto Jenkins ainda está ativo. O site da Hudson foi fechado em 31 de janeiro de 2020.

Em março de 2019, a Linux Foundation, juntamente com a CloudBees, o Google e várias outras empresas, lançou uma nova fundação de software de código aberto chamada Continuous Delivery Foundation ( CDF ). Os colaboradores do Jenkins decidiram que seu projeto deveria se juntar a esta nova fundação. Kawaguchi escreveu na época que nada de significativo mudaria para os usuários.

Em janeiro de 2020, Kawaguchi anunciou que estava mudando para sua nova startup, a Launchable . Ele também disse que estaria oficialmente se afastando de Jenkins, embora permanecesse no Comitê de Supervisão Técnica da Fundação de Entrega Contínua, e mudaria sua função na CloudBees para um consultor.

Vídeo relacionado: Como fornecer código mais rápido com CI / CD

Como fornecer código mais rápido com CI / CD

Automação Jenkins

Hoje, Jenkins é o servidor de automação de código aberto líder com cerca de 1.600 plug-ins para oferecer suporte à automação de todos os tipos de tarefas de desenvolvimento. O problema que Kawaguchi estava tentando resolver originalmente, integração contínua e entrega contínua de código Java (ou seja, construção de projetos, execução de testes, análise de código estático e implantação) é apenas um dos muitos processos que as pessoas automatizam com o Jenkins. Esses 1.600 plug-ins abrangem cinco áreas: plataformas, UI, administração, gerenciamento de código-fonte e, mais frequentemente, gerenciamento de construção.

Como funciona o Jenkins

Jenkins é distribuído como um arquivo WAR e como pacotes de instalação para os principais sistemas operacionais, como um pacote Homebrew, como uma imagem Docker e como código-fonte . O código-fonte é principalmente Java, com alguns arquivos Groovy, Ruby e Antlr.

Você pode executar o WAR do Jenkins autônomo ou como um servlet em um servidor de aplicativos Java, como o Tomcat. Em ambos os casos, ele produz uma interface de usuário da web e aceita chamadas para sua API REST.

Quando você executa o Jenkins pela primeira vez, ele cria um usuário administrativo com uma senha longa e aleatória, que você pode colar em sua página inicial da Web para desbloquear a instalação.

Oque é uma Pipelines Jenkins?

Jenkins Pipeline (ou simplesmente "Pipeline" com "P" maiúsculo) é um conjunto de plug-ins que suporta a implementação e integração de pipelines de entrega contínua no Jenkins.

Um pipeline é um modelo definido pelo usuário de um pipeline de CD. O código de um Pipeline define todo o seu processo de construção, que normalmente inclui estágios para construir um aplicativo, testá-lo e, em seguida, entregá-lo.

Um pipeline de entrega contínua (CD) é uma expressão automatizada do seu processo para obter o software do controle de versão direto para seus usuários e clientes. Cada mudança em seu software (committed in source control) passa por um processo complexo para ser liberada. Esse processo envolve a construção do software de maneira confiável e repetível, bem como o progresso do software construído (chamado de "construção") por meio de vários estágios de teste e implantação.

O Pipeline fornece um conjunto extensível de ferramentas para modelar pipelines de entrega simples a complexos "como código" por meio da sintaxe de linguagem específica de domínio DSL do Pipeline .

A definição de um Jenkins Pipeline é escrita em um arquivo de texto (denominado a Jenkinsfile) que, por sua vez, pode ser confirmado em um repositório de controle de origem do projeto. Esta é a base de "Pipeline-as-code"; tratar o pipeline do CD como uma parte do aplicativo a ser versionada e revisada como qualquer outro código.

Criar um Jenkinsfilee comprometê-lo com o controle de origem fornece uma série de benefícios imediatos:

  • Cria automaticamente um processo de construção de Pipeline para todas as ramificações e solicitações pull.

  • Revisão / iteração de código no pipeline (junto com o código-fonte restante).

  • Trilha de auditoria para o pipeline.

  • Fonte única de verdade [ 3 ] para o Pipeline, que pode ser visualizada e editada por vários membros do projeto.

Embora a sintaxe para definir um Pipeline, na IU da web ou com um, Jenkinsfile seja a mesma, geralmente é considerada a prática recomendada definir o Pipeline em a Jenkinsfile e fazer o check-in no controle de origem.

Por que Pipeline?

Jenkins é, fundamentalmente, um mecanismo de automação que suporta vários padrões de automação. O Pipeline adiciona um conjunto poderoso de ferramentas de automação ao Jenkins, dando suporte a casos de uso que vão desde a integração contínua simples até pipelines de CD abrangentes. Ao modelar uma série de tarefas relacionadas, os usuários podem tirar proveito dos muitos recursos do Pipeline:

  • Código : os pipelines são implementados no código e normalmente verificados no controle de origem, dando às equipes a capacidade de editar, revisar e iterar em seu pipeline de entrega.

  • Durável : os pipelines podem sobreviver a reinicializações planejadas e não planejadas do mestre Jenkins.

  • Pausável : os pipelines podem, opcionalmente, parar e aguardar a entrada ou aprovação humana antes de continuar a execução do pipeline.

  • Versátil : os pipelines oferecem suporte a requisitos complexos de CD do mundo real, incluindo a capacidade de fazer fork / join, loop e realizar trabalho em paralelo.

  • Extensível : O plugin Pipeline suporta extensões personalizadas para seu DSL e múltiplas opções para integração com outros plugins.

Embora Jenkins sempre tenha permitido formas rudimentares de encadear Jobs de Freestyle para executar tarefas sequenciais, Pipeline torna esse conceito um cidadão de primeira classe em Jenkins.

Com base no valor central de extensibilidade do Jenkins, o Pipeline também é extensível tanto por usuários com Bibliotecas compartilhadas Pipeline quanto por desenvolvedores de plug-ins.

O fluxograma abaixo é um exemplo de um cenário de CD facilmente modelado no Jenkins Pipeline:

Fluxograma

Conceitos de pipeline

Os conceitos a seguir são aspectos-chave do Jenkins Pipeline, que estão intimamente ligados à sintaxe do Pipeline.

Pipeline

Um pipeline é um modelo definido pelo usuário de um pipeline de CD. O código de um Pipeline define todo o seu processo de construção, que normalmente inclui estágios para construir um aplicativo, testá-lo e, em seguida, entregá-lo. Além disso, um pipeline stage é uma parte fundamental da sintaxe declarativa do pipeline.

Node

Um nó é uma máquina que faz parte do ambiente Jenkins e é capaz de executar um Pipeline. Além disso, um node bloco é uma parte fundamental da sintaxe do Pipeline com script.

Stage

Um stage bloco define um subconjunto conceitualmente distinto de tarefas realizadas por todo o Pipeline (por exemplo, estágios "Build", "Test" e "Deploy"), que é usado por muitos plug-ins para visualizar ou apresentar o status /progresso do Jenkins Pipeline.

Step

Uma única tarefa. Fundamentalmente, uma etapa diz a Jenkins o que fazer em um determinado momento (ou "etapa" do processo). Por exemplo, para executar o comando shell make uso da sh etapa: sh 'make'. Quando um plugin estende o Pipeline DSL, normalmente significa que o plugin implementou uma nova etapa

Leia mais clicando aqui

SO utilizado no guia CentOS 7.8 na AWS

[isweluiz@jenkins ~]$ cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)

Instalação do Jenkins:

Script de instalação resumido

#!/bin/bash
sudo yum install -y java-1.8.0-openjdk-devel
sudo yum install -y wget
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
sudo yum install -y jenkins
systemctl enable jenkins ; systemctl start jenkins
sudo yum install nginx -y
sudo setsebool -P httpd_can_network_connect 1
sudo setsebool -P httpd_can_network_relay 1

Install java-1.8.0-openjdk-devel

sudo yum install -y java-1.8.0-openjdk-devel

Install wget:

sudo yum install -y wget

Download the repo:

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo

Import the required key:

sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key

Install Jenkins:

sudo yum install -y jenkins

Enable eand start jenkins

systemctl enable jenkins ; systemctl start jenkins

Acesse o IP do host na porta 8080

http://54.163.0.252:8080/login?from=%2F

Acesse o diretório mencionado na página de login para desbloquear o jenkins

cat /var/lib/jenkins/secrets/initialAdminPassword 43fcfd0931ac49e4b1cf39713170a581

Unlock Jenkins

Crie seu usuário na próxima tela

Create user

Plugins Jenkins

Plugins install

Jenkins Dashboard

Jenkins Dashboard

Instalando nginx para fazer um proxy_pass

sudo yum install nginx -y

Adicione a linha abaixo no arquivo de configuração do nginx dentro do bloco server {}

proxy_pass http://localhost:8080;

location / {

    proxy_pass http://127.0.0.1:8080;

}

Habilitando o roteamento de porta no SElinux

sudo setsebool -P httpd_can_network_connect 1

sudo setsebool -P httpd_can_network_relay 1

Reinicie o nginx

systemctl restart nginx

Jenkins para CI / CD

No geral, o Jenkins oferece uma maneira simples de configurar um ambiente de CI / CD para praticamente qualquer combinação de linguagens e repositórios de código-fonte usando pipelines, bem como automatizar uma série de outras tarefas de desenvolvimento de rotina. Embora o Jenkins não elimine a necessidade de criar scripts para etapas individuais, ele oferece uma maneira mais rápida e robusta de integrar sua cadeia inteira de ferramentas de construção, teste e implantação do que você poderia construir facilmente.

Fontes do resumo teórico

infoworld

jenkins.io

linuxacademy

13 de set. de 2020

LDAP and JBoss EAP - securing the management console

[root@master openldap]# cat console.ldif 
dn: uid=isweluiz,ou=people,dc=redhat,dc=com
changetype: add
objectclass: top
objectclass: inetorgperson
uid: isweluiz
cn: Luiz 
sn: Eduardo
userPassword: isweluiz


Editing the file host.xml or host-master.xml case you're running JBoss as a domain mode.

 <security-realms> 

               . . .
               <security-realm name="LDAPRealm">
                 <authentication>
                    <ldap connection="ldapconnection" base-dn="ou=People,dc=keycloak,dc=org">
                       <username-filter attribute="uid"/>
                    </ldap>
                 </authentication>
             </security-realm>
 
</security-realms>
<outbound-connections>
       <ldap name="ldapconnection" url="ldap://localhost:10389" search-dn="uid=admin,ou=system" search-credential="secret"/>
</outbound-connections>

Last change, is setting the LDAPRealm on the management-interfaces:
<management-interfaces>
            <http-interface security-realm="LDAPRealm" http-upgrade-enabled="true">
                <socket-binding http="management-http"/>
            </http-interface>
</management-interfaces>
 Now start JBoss check the you are able to log in the management console (http://localhost:9990 by default) with any of the two users you have created.












18 de ago. de 2020

[Errno 14] yum fails with HTTP/HTTPS Error 404

Typical Cause

This issue generally occurs if client system is able to communicate with given server but could not find or access the requested package on the server.

Resolution

This issue can occur due to corruption of local client cache, try to clear cache on client system:

rm -fr /var/cache/yum/*
yum clean all 

If it does not help, see the section below for other known issues

https://access.redhat.com/articles/1320623


15 de ago. de 2020

[LIVE] - Visão geral do ((OTRS 6 )) Community Edition para atendentes #01

6 de ago. de 2020

Erro: /bin/bash^M: bad interpreter: No such file or directory (Linux)

Este problema ocorre devido as diferenças no registro da quebra de linha feito pelo Windows e pelo Linux. Para resolver, vamos utilizar uma expressão regular e o comando SED:

Explicando rapidamente o que este comando faz:

  • sed: nome do programa que estamos utilizando (sed = Stream Editor);
  • -e <expressão regular>: Adiciona um comando a ser executado no script. Pode ser utilizado varias vezes, para adicionar multiplos comandos;
  • -i: Salva as alterações do arquivo. Gera um backup automatico se você fornecer uma extensão;
  • ‘s/\r$//’: Remove os caracteres de Carriage Return (\r) que estão no arquivo, deixando apenas os Line Feed (\n). O que vai resolver o problema.

24 de jul. de 2020

A caixa de ferramentas do shelleiro

Olááá, meu caro! Espero que você esteja bem! 
    Abaixo eu deixo uma tabela com comandos que considero essenciais para o "shelleiro", o cara to terminal rsrs. Logo abaixo da tabela deixo um link para um livro que comprei há bastante tempo, gostei muito e recomendo a você que busca expandir seus conhecimentos em shell script. 

ComandoFunçãoOpções úteis
catMostra arquivo-n, -s
cutExtrai campo-d -f, -c
dateMostra data-d, +'...'
diffCompara arquivos-u, -Nr, -i, -w
echoMostra texto-e, -n
findEncontra arquivos-name, -iname, -type f, -exec, -or
fmtFormata parágrafo-w, -u
grepEncontra texto-i, -v, -r, -qs, -n, -l, -w -x, -A -B -C
headMostra início-n, -c
odMostra caracteres-a, -c, -o, -x
pasteParaleliza arquivos-d, -s
printfMostra textonenhuma
revInverte textonenhuma
sedEdita texto-n, -f, s/isso/aquilo/, p, d, q, N
seqConta números-s, -f
sortOrdena texto-n, -f, -r, -k -t, -o
tacInverte arquivonenhuma
tailMostra final-n, -c, -f
teeArquiva fluxo-a
trTransforma texto-d, -s, A-Z a-z
uniqRemove duplicatas-i, -d, -u
wcConta letras-c, -w, -l, -L
xargsGerencia argumentos-n, -i




Leitura recomendada

18 de jun. de 2020

Hands On - Administração do ((OTRS 6)) Community Edition

Grafana com SSL e redirect para porta 80

Olá, meu caro, este é mais um post rápido e direto, quando estamos trabalhando em ambientes de produção com aplicações web, que passam parâmetros de usuário e senha é crucial que tenhamos conexão criptografada e certificados sobre uma conexão criptografada. O ponto mencionado anteriormente é apenas um dos muitos pontos de segurança que precisam ser parametrizados. Nos passos abaixo nós fazemos a configuração de um certificado e redirecionamento da porta 3000 (porta de execução padrão do grafana) para a porta 80. 

Imagem 1 -  Logo grafana 


Estou executando os comandos como usuários root, porém é importante se certificar de que a aplicação está executando com um usuário isolado e com permissões restritas dentro do sistema. Crie um usuário para a aplicação e dê permissão a este usuário para seus arquivos. 




Imagem 2 -  Navegando seguro
Imagem 2 -  Navegando seguro 


Listando os certificados:

# ls -la /etc/ssl/
total 20
drwxr-xr-x.  2 root root   57 Jun 17 14:12 .
drwxr-xr-x. 82 root root 8192 Jun 18 11:30 ..
lrwxrwxrwx.  1 root root   16 Jun 12 11:33 certs -> ../pki/tls/certs
-rw-r--r--.  1 root root 2690 Aug  8  2018 server.crt
-rw-r--r--.  1 root root 1679 Aug  8  2018 server.key


Edite o arquivo /etc/grafana/grafana.ini e altere os parâmetro abaixo para ficar da seguinte maneira.

Antes:

;protocol = http
;http_port = 3000
;cert_file = 
;cert_key =


Depois:

protocol = https
http_port = 3000
cert_file = /etc/certs/server.crt
cert_key = /etc/certs/server.key


Agora bastas reiniciar o Servidor do Grafana.

#sudo -u grafana systemctl restart grafana-server

Fazendo redirect da porta 3000 para porta 80

#iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000


Visualizando as regras NAT de redirecionamento criadas:

# iptables -L -t nat -n -v
Chain PREROUTING (policy ACCEPT 3393 packets, 282K bytes)
 pkts bytes target     prot opt in     out     source               destination
 702K   61M PREROUTING_direct  all  --  *      *       0.0.0.0/0            0.0.0.0/0
 702K   61M PREROUTING_ZONES_SOURCE  all  --  *      *       0.0.0.0/0            0.0.0.0/0
 702K   61M PREROUTING_ZONES  all  --  *      *       0.0.0.0/0            0.0.0.0/0
    4   208 REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 redir ports 3000
    6   312 REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443 redir ports 3000





Leitura recomendada:

16 de jun. de 2020

Calculadora para Terminal $..


Olá meu caro, o intuito desse post é ser bem simples e direto, se precisar de alguma informação mais específica podem encontrar acessando Guialinux.



Para calcular a soma de dois números:
[root@master ~]# expr 9990 + 150
10140

Para calcular a diferença de dois números:
[[root@master ~]# expr 8080 - 100
7980

Para multiplicar dois números: Note que \ é usada para impedir que o shell interprete o operador *.
[root@master ~]# expr 5 \* 2
10

Observações

  • O comando expr só trabalha nas operações aritméticas com números inteiros. Use a linguagem bc para números com ponto flutuante.
  • O comando dc também pode ser usado para operações aritméticas.

11 de jun. de 2020

Criando uma rotação de arquivo de log no Linux com logrotate


Olá, meu caro!

O logrotate já é o responsável por administrar os logs de muitas aplicações, se você for até a pasta onde  estão as configurações e listar, verá algo como na saída abaixo:



[root@master logrotate.d]# cd /etc/logrotate.d/
[root@master logrotate.d]# ls -la
total 72
drwxr-xr-x.   2 root root  249 May 11 06:24 .
drwxr-xr-x. 141 root root 8192 Jun 11 16:19 ..
-rw-r--r--    1 root root   91 Nov 27  2019 bootlog
-rw-r--r--.   1 root root  160 Sep 19  2018 chrony
-rw-r--r--    1 root root  194 Nov 27  2019 httpd
-rw-r--r--    1 root root  172 Sep 29  2016 iscsiuiolog
-rw-r--r--    1 root root  165 Apr  1 00:31 libvirtd
-rw-r--r--    1 root root  142 Apr  1 00:31 libvirtd.qemu
-rw-r--r--    1 root root  893 Apr  2 14:51 mariadb
-rw-r--r--    1 root root  106 Apr 10  2018 numad
-rw-r--r--.   1 root root  408 Aug  3  2017 psacct
-rw-r--r--    1 root root  115 Apr  2 10:24 samba
-rw-r--r--    1 root root   71 Apr  2 10:17 subscription-manager
-rw-r--r--    1 root root  224 Nov 27  2019 syslog
-rw-r--r--    1 root root   32 Dec  9  2013 up2date
-rw-r--r--.   1 root root  100 Oct 30  2018 wpa_supplicant
-rw-r--r--    1 root root  103 Apr  2 12:56 yum
/var/www/logs/*.log {
    daily
    missingok
    dateext
    dateformat _%Y-%m-%d
    dateyesterday
    rotate 90
    compress
    delaycompress
    compressext
    notifempty
    create 0640 www-data www-data
    sharedscripts
    postrotate
           [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
    endscript
    
  
[root@master logrotate.d]#  cd /etc/logrotate.d/
[root@master logrotate.d]#  touch securelog
[root@master logrotate.d]#  chmod 644 securelog; chown root:root securelog
[root@master logrotate.d]#  vi securelog

/var/log/secure.log
{
daily
maxsize 100M
rotate 4
}

Arquivos padrões do logrotate

/var/lib/logrotate.status
/etc/logrotate.conf

Arquivos de configurações do logrotate de amostra
/var/log/messages {
    rotate 5
    weekly
    postrotate
        /usr/bin/killall -HUP syslogd
    endscript
}

"/var/log/httpd/access.log" /var/log/httpd/error.log {
    rotate 5
    mail www@my.org
    size 100k
    sharedscripts
    postrotate
        /usr/bin/killall -HUP httpd
    endscript
}

/var/log/news/* {
    monthly
    rotate 2
    olddir /var/log/news/old
    missingok
    postrotate
        kill -HUP 'cat /var/run/inn.pid'
    endscript
    nocompress
}


Detalhe de cada opção que pode ser utilizada com o logrotate