20 de nov. de 2020

configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.


```bash
sudo yum install libmpc-devel mpfr-devel gmp-devel

cd ~/Downloads
curl ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-4.9.2/gcc-4.9.2.tar.bz2 -O
tar xvfj gcc-4.9.2.tar.bz2

cd gcc-4.9.2
./configure --disable-multilib --enable-languages=c,c++
make -j 4
make install
```

Oficial GCC GNU https://ftp.gnu.org/gnu/gcc/gcc-4.9.4/


19 de nov. de 2020

[SUDOERS]: sorry, you must have a tty to run sudo

+ sudo npm install

sudo: sorry, you must have a tty to run sudo

Build step 'Execute shell' marked build as failure

Set build name.

..

..

..

..

[WS-CLEANUP] Deleting project workspace...[WS-CLEANUP] done


Finished: FAILURE


You said that you want one particular user to not require a tty. That's the default behavior. Nevertheless, you can explicitly set that like this:

# visudo


#### Jenkins
Defaults:jenkins !requiretty

22 de out. de 2020

Permitir regras de iptables para agentes Zabbix

    

     Como habilitar a porta Zabbix em diferentes firewalls Linux. Por exemplo, nosso servidor Zabbix rodando em IP: 172.22.22.100, precisamos habilitar Zabbix-agent.d porta TCP/10050 nos cliente



iptables -I OUTPUT 1 -p tcp -s 172.22.22.100 --dport 10051 -j ACCEPT

iptables -I INPUT 1 -p tcp -s 172.22.22.100 --dport 10050 -j ACCEPT


AD-HOC com Ansible

$$ ansible -i inventory/hosts nodes -a "iptables -I OUTPUT 1 -p tcp
-s 172.22.22.100--dport 10051 -j ACCEPT"


$$ ansible -i inventory/hosts nodes -a "iptables -I INPUT 1 -p tcp
-s 172.22.22.100 --dport 10050 -j ACCEPT"


Teste com NMAP 

PORT STATE SERVICE
10050/tcp open unknown


RedHat / Centos

Caso esteja com o firewall habilitado

firewall-cmd --new-zone=zabbix --permanent
firewall-cmd --permanent --zone=zabbix --add-source=10.10.0.5/32
firewall-cmd --permanent --zone=zabbix --add-port=10050/tcp
firewall-cmd --reload

14 de out. de 2020

OTRS6 Community - Kernel::System::Email::SMTP Could not send message to server: 550, Start mail input; end with .

Erro: 

12 Kernel::System::Email::SMTP Could not send message to server: 550,
Start mail input; end with <CRLF>.<CRLF> ! 14/10/2020 18:01:03
13 Kernel::System::Email Error sending message using backend
'Kernel::System::Email::SMTPTLS'. 14/10/2020 18:01:03
14 Kernel::System::MailQueue Message could not be sent! Error message:
Could not send message to server: 550, Start mail input; end with <CRLF>.
<CRLF> ! 14/10/2020 18:01:03
15 Kernel::System::MailQueue Permanent sending problem or we reached
the sending attempt limit. Message will be removed

Links úteis para resolução do problema: 


Para atualizar os módulos execute 

$  perl -MCPAN -e shell

Verifique os módulos que estão com algum BUG ou possuem versões superiores

$ /opt/otrs/bin/otrs.CheckModules.pl

Exemplo:

o Net::SMTP........................ok (v2.31)
Please consider updating to version 3.11 or higher: This version fixes email sending (bug#14357).

Comando para atualização: 

cpan[1]> upgrade Net::SMTP


Módulos do OTRS atualizados

# /opt/otrs/bin/otrs.CheckModules.pl
o Apache::DBI......................ok (v1.12)
o Apache2::Reload..................ok (v0.13)
o Archive::Tar.....................ok (v1.92)
o Archive::Zip.....................ok (v1.30)
o Crypt::Eksblowfish::Bcrypt.......ok (v0.009)
o Crypt::SSLeay....................ok (v0.64)
o Date::Format.....................ok (v2.24)
o DateTime.........................ok (v1.04)
o DBI..............................ok (v1.627)
o DBD::mysql.......................ok (v4.023)
o DBD::ODBC........................ok (v1.50)
o DBD::Oracle......................Not installed! (optional - Required to connect to a Oracle database.)
o DBD::Pg..........................ok (v2.19.3)
o Digest::SHA......................ok (v5.85)
o Encode::HanExtra.................ok (v0.23)
o IO::Socket::SSL..................ok (v2.068)
o JSON::XS.........................ok (v3.01)
o List::Util::XS...................ok (v1.27)
o LWP::UserAgent...................ok (v6.26)
o Mail::IMAPClient.................ok (v3.37)
o IO::Socket::SSL................ok (v2.068)
o Authen::SASL...................ok (v2.15)
o Authen::NTLM...................ok (v1.09)
o ModPerl::Util....................ok (v2.000011)
o Net::DNS.........................ok (v0.72)
o Net::LDAP........................ok (v0.56)
o Net::SMTP........................ok (v3.11)
o Template.........................ok (v2.24)
o Template::Stash::XS..............ok (undef)
o Text::CSV_XS.....................ok (v1.00)
o Time::HiRes......................ok (v1.9725)
o XML::LibXML......................ok (v2.0018)
o XML::LibXSLT.....................ok (v1.80)
o XML::Parser......................ok (v2.41)
o YAML::XS.........................ok (v0.54)


8 de out. de 2020

Ansible: Playbook para desinstalar apache e firewall

Estrutura dos arquivos: 

[root@ansible-master Projeto2_managing_includes]# tree
.
├── ansible.cfg
├── desinstall-playbook.yml
├── inventory
├── playbook.yml
├── tasks
│   └── enviroment.yaml
└── vars
└── variables.yml

2 directories, 6 files


Arquivo variables.yml

firewall_pkg: firewalld
firewall_svc: firewalld
web_pkg: httpd
web_svc: http


Playbook para desinstalar serviços: 

---
- name: Desinstall playbook web
hosts: web-hosts
vars_files:
- vars/variables.yml
tasks:
- name: Remove index file
file:
path: /var/www/html/index.html
state: absent

- name: Daemon reload
systemd:
name: "{{ item }}"
state: stopped
daemon_reload: yes
with_items:
- "{{ firewall_pkg }}"
- "{{ web_pkg }}"
register: var
- name: register var
debug: msg="{{ var }}"
- name: Remove web service and firewalld
yum:
name:
- "{{ firewall_pkg }}"
- "{{ web_pkg }}"
state: absent



Execução e saída: 


[root@ansible-master Projeto2_managing_includes]# ansible-playbook desinstall-playbook.yml

PLAY [Desinstall playbook web] *************************************************************************

TASK [Gathering Facts] *********************************************************************************
ok: [172.25.250.21]

TASK [Remove index file] *******************************************************************************
changed: [172.25.250.21]

TASK [Daemon reload] ***********************************************************************************
changed: [172.25.250.21] => (item=firewalld)
changed: [172.25.250.21] => (item=httpd)

TASK [register var] ************************************************************************************
ok: [172.25.250.21] => {
"msg": {
"changed": true,
"msg": "All items completed",
"results": [
.................


TASK [Remove web service and firewalld] ****************************************************************
changed: [172.25.250.21]

PLAY RECAP *********************************************************************************************
172.25.250.21 : ok=5 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0




3 de out. de 2020

Fix rpmdb: Thread died in Berkeley DB library [CentOS 8]

Fix rpmdb: Thread died in Berkeley DB library [CentOS 8]

Sintomas

Se você vir erros de rpmdb durante o gerenciamento de pacotes (durante as operações yum / rpm), como este:


[root@a-node ~]# yum clean all
Failed to set locale, defaulting to C.UTF-8
error: rpmdb: BDB0113 Thread/process 2456/140690658715456 failed: BDB1507 Thread died in Berkeley DB library
error: db5 error(-30973) from dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db5 -  (-30973)
error: cannot open Packages database in /var/lib/rpm
Error: Error: rpmdb open failed
[root@a-node ~]# yum make cache
Failed to set locale, defaulting to C.UTF-8
error: rpmdb: BDB0113 Thread/process 2456/140690658715456 failed: BDB1507 Thread died in Berkeley DB library
error: db5 error(-30973) from dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db5 -  (-30973)
error: cannot open Packages database in /var/lib/rpm


Isso significa que o banco de dados RPM está corrompido.

Solução

Siga estas etapas para fazer backup e reconstruir o banco de dados rpmdb:

[root@a-node ~]# mkdir /var/lib/rpm/backup
[root@a-node ~]# cp -a /var/lib/rpm/__db* /var/lib/rpm/backup/
[root@a-node ~]# rm -f /var/lib/rpm/__db.[0-9][0-9]*
[root@a-node ~]# rpm --quiet -qa
[root@a-node ~]# rpm --rebuilddb
error: could not delete old database at /var/lib/rpmold.2590
[root@a-node ~]# rpm --rebuilddb
[root@a-node ~]# yum clean all
Failed to set locale, defaulting to C.UTF-8
26 files removed
[root@a-node ~]# dnf install mariadb
Failed to set locale, defaulting to C.UTF-8
CentOS-8 - AppStream                                                    2.1 MB/s | 5.8 MB     00:02    
CentOS-8 - Base                                                         541 kB/s | 2.2 MB     00:04    
CentOS-8 - Extras                                                        11 kB/s | 8.1 kB     00:00    
Last metadata expiration check: 0:00:01 ago on Sat Oct  3 15:57:20 2020.
Package mariadb-3:10.3.17-1.module_el8.1.0+257+48736ea6.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!







30 de set. de 2020

Remote: HTTP Basic: Access denied [Windows]

 

Para corrigir o erro de Access denied ao se conectar no GITLAB utilizando o windows é simples, basta seguir as etapas mencionadas logo abaixo. 

$

remote: HTTP Basic: Access denied

fatal: Authentication failed for 'https://xpo.gov.br/repositorio/XPTO/ansible.git/'

Abra o Menu Iniciar do Windows e procure por Gerenciador de Credenciais. Ao abrir a janela do Gerenciador, clique em Credenciais do Windows.

Abaixo na lista de credenciais, irá existir as várias credenciais salvas pelo Windows, dentre elas uma lista de credenciais genéricas, que é onde as credenciais do GitLab são salvas. Basta identificar a linha referente ao seu repositório e excluí-la, ou atualizar a senha ali mesmo.








28 de set. de 2020

[DevOps #03] - Prometheus

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

Acesse esse post no meu GitHub

Resumo

Tópicos

Prometheus

  • O que é Prometheus?
    • Recursos
    • Componentes
    • Arquitetura
    • Em que cenário devo utilizar?
    • Em que cenários não devo utilizar?
  • Instalando e configurando o Prometheus
    • Configurando o Prometheus
    • Configurando um exporter
  • Modelo de dados do Prometheus
    • O que são dados de série temporal?
  • Tipos de métricas

Grafana

  • O que é Grafana?
  • Instalação e configuração da Grafana
  • Construindo um dashboard no Grafana com dados do Prometheus

Prometheus e grafana

Oque é Prometheus?

O Prometheus é um kit de ferramentas de monitoramento e alerta de sistemas de código aberto originalmente criado no SoundCloud. Desde o seu início em 2012, muitas empresas e organizações adotaram o Prometheus, e o projeto tem uma comunidade de desenvolvedores e usuários muito ativa. Agora é um projeto autônomo de código aberto e mantido independentemente de qualquer empresa. Para enfatizar isso, e para esclarecer a estrutura de governança do projeto, a Prometheus se juntou à Cloud Native Computing Foundation em 2016 como o segundo projeto hospedado, depois do Kubernetes.

Para visões gerais mais elaboradas do Prometheus, consulte os recursos vinculados na seção de mídia.

Recursos

As principais características do Prometheus são:

  • um modelo de dados multidimensional com dados de série temporal identificados por nome de métrica e pares chave/valor;
  • PromQL, uma linguagem de consulta flexível para aproveitar essa dimensionalidade;
  • nenhuma dependência de armazenamento distribuído;
  • nós de servidor único são autônomos;
  • a coleta de série temporal acontece por meio de um modelo pull sobre HTTP;
  • pushing time series é suportado por meio de um gateway intermediário;
  • alvos são descobertos por meio de descoberta de serviço ou configuração estática;
  • vários modos de suporte para gráficos e painéis.

Componentes

O ecossistema Prometheus consiste em vários componentes, muitos dos quais são opcionais:

  • o servidor principal do Prometheus, que coleta e armazena dados de séries temporais
  • bibliotecas cliente para instrumentar o código do aplicativo
  • um portal push para apoiar empregos de curta duração
  • exportadores de fins especiais para serviços como HAProxy, StatsD, Graphite, etc.
  • um alertmanager para lidar com alertas
  • várias ferramentas de suporte

A maioria dos componentes do Prometheus são escritos em Go, tornando-os fáceis de construir e implantar como binários estáticos.

Arquitetura

Este diagrama ilustra a arquitetura do Prometheus e alguns de seus componentes do ecossistema:

Arquitetura Prometheus

O Prometheus extrai métricas, diretamente ou por meio de um gateway intermediário para trabalhos de curta duração. Ele armazena todas as amostras coletadas localmente e executa regras sobre esses dados para agregar e registrar novas séries temporais de dados existentes ou gerar alertas. Grafana ou outros consumidores de API podem ser usados ​​para visualizar os dados coletados.

Em que cenário devo utilizar?

O Prometheus funciona bem para registrar qualquer série temporal puramente numérica. Ele se adapta tanto ao monitoramento centrado na máquina quanto ao monitoramento de arquiteturas orientadas a serviços altamente dinâmicas. Em um mundo de microsserviços, seu suporte para coleta e consulta de dados multidimensionais é um ponto forte particular.

O Prometheus foi projetado para ter confiabilidade,para ser o sistema que você acessa durante uma interrupção para permitir o diagnóstico rápido de problemas. Cada servidor Prometheus é autônomo, não dependendo do armazenamento de rede ou de outros serviços remotos. Você pode confiar nele quando outras partes de sua infraestrutura estão quebradas e não precisa configurar uma infraestrutura extensa para usá-la

Em que cenários não devo utilizar?

A Prometheus valoriza a confiabilidade. Você sempre pode ver quais estatísticas estão disponíveis sobre o seu sistema, mesmo em condições de falha. Se você precisa de 100% de precisão, como para faturamento por solicitação, o Prometheus não é uma boa escolha, pois os dados coletados provavelmente não serão detalhados e completos o suficiente. Nesse caso, seria melhor usar algum outro sistema para coletar e analisar os dados para faturamento e o Prometheus para o restante do seu monitoramento.

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

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.

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: