<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Odilon Junior</title>
    <link>https://odilon.dev/</link>
    <description>Recent content on Odilon Junior</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Tue, 29 Oct 2024 20:19:37 +0000</lastBuildDate>
    <atom:link href="https://odilon.dev/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Using Container Images to Run your Desktop</title>
      <link>https://odilon.dev/2024/10/29/building-a-desktop-with-bootc/</link>
      <pubDate>Tue, 29 Oct 2024 20:19:37 +0000</pubDate>
      <guid>https://odilon.dev/2024/10/29/building-a-desktop-with-bootc/</guid>
      <description>&lt;p&gt;This post was inspired by &lt;a href=&#34;https://mrguitar.net/?p=2627&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;bootc for Desktops?? Tell me more!&lt;/a&gt;, with the assumption that if KDE is a viable option for bootc why not swaywm?&lt;/p&gt;&#xA;&lt;p&gt;In the past 5 years I&amp;rsquo;ve been playing around rpm-ostree and immutable versions of Fedora, my Dekstop that I&amp;rsquo;m using for Games run Fedora Silverblue since F35. My working laptop is another story, it&amp;rsquo;s running the i3Spin from &lt;a href=&#34;https://fedoraproject.org/spins/i3/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Fedora&lt;/a&gt; and trying to find time to build the Immutable version of i3Spin was challenging.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Running HomeAssistant with Podman</title>
      <link>https://odilon.dev/2022/12/20/homeassistant-with-podman/</link>
      <pubDate>Tue, 20 Dec 2022 20:19:37 +0000</pubDate>
      <guid>https://odilon.dev/2022/12/20/homeassistant-with-podman/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m running my HomeAssistant deployment on top of Podman running inside one PI4 running Fedora 36(soon to be 37).&lt;/p&gt;&#xA;&lt;p&gt;I didn&amp;rsquo;t feel the necessity to use Home Assistant Operating System, since I do prefer to manually install all my plugins and integrations, so for that podman was the best alternative, even though I&amp;rsquo;m not running my HA instance in a rootless mode, Podman was the easiest way for me to setup my instance, since I&amp;rsquo;m using selinux the &lt;code&gt;:Z&lt;/code&gt; flag was enabled while mounting the directory to persist the HA data.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Usando podman com Systemd</title>
      <link>https://odilon.dev/2020/06/30/usando-podman-com-systemd/</link>
      <pubDate>Tue, 30 Jun 2020 22:39:37 +0000</pubDate>
      <guid>https://odilon.dev/2020/06/30/usando-podman-com-systemd/</guid>
      <description>&lt;h3 id=&#34;usando-o-systemd-para-gerenciar-o-podman&#34;&gt;&#xA;  Usando o systemd para gerenciar o podman&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#usando-o-systemd-para-gerenciar-o-podman&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Recentimente eu migrei do Centos 7 para o Centos 8, com isso veio a mudança do Docker para o &lt;a href=&#34;https://odilon.dev/2019/09/09/2019-09-09-docker-rhel8-centos8-fedora30/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Podman&lt;/a&gt;, nessa migração eu troquei o docker-compose pelo Podman+Systemd.&lt;/p&gt;&#xA;&lt;p&gt;Um exemplo da migração seria o do gitea:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e5e5e5;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;font-weight:bold&#34;&gt;version&lt;/span&gt;: &lt;span style=&#34;color:#0ff;font-weight:bold&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;font-weight:bold&#34;&gt;networks&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;font-weight:bold&#34;&gt;gitea&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;font-weight:bold&#34;&gt;external&lt;/span&gt;: &lt;span style=&#34;color:#fff;font-weight:bold&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;font-weight:bold&#34;&gt;services&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;font-weight:bold&#34;&gt;server&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;font-weight:bold&#34;&gt;image&lt;/span&gt;: gitea/gitea:latest&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;font-weight:bold&#34;&gt;environment&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - USER_UID=1000&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - USER_GID=1000&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;font-weight:bold&#34;&gt;restart&lt;/span&gt;: always&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;font-weight:bold&#34;&gt;networks&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - gitea&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;font-weight:bold&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - ./gitea:/data&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - /etc/timezone:/etc/timezone:ro&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - /etc/localtime:/etc/localtime:ro&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;font-weight:bold&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#0ff;font-weight:bold&#34;&gt;&amp;#34;3000:3000&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#0ff;font-weight:bold&#34;&gt;&amp;#34;222:22&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Do YAML do docker-compose, vira o seguinte arquivo para o systemd:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Montando ConfigMap como Script</title>
      <link>https://odilon.dev/2020/03/08/montando-configmap-como-script/</link>
      <pubDate>Sun, 08 Mar 2020 21:39:37 +0000</pubDate>
      <guid>https://odilon.dev/2020/03/08/montando-configmap-como-script/</guid>
      <description>&lt;p&gt;É possivel utilizar um &lt;a href=&#34;https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#create-a-configmap&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Configmap&lt;/a&gt; para executar scripts, com isso podemos diminuir o overhead de layers nas imagens.&lt;/p&gt;&#xA;&lt;p&gt;Para este post vou utilizar o &lt;a href=&#34;https://code-ready.github.io/crc/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Codeready Containers&lt;/a&gt; da Red Hat, o CRC criou um cluster de Openshift 4.3 com a versão v1.16.2 do Kubernetes.&lt;/p&gt;&#xA;&lt;h4 id=&#34;script&#34;&gt;&#xA;  Script&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#script&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;O script é bem simples, ele vai checar as informações do tempo em Brasilia.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e5e5e5;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cat &lt;span style=&#34;color:#0ff;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&amp;#39;EOF&amp;#39; &amp;gt;&amp;gt; tempo.sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0ff;font-weight:bold&#34;&gt;#!/bin/bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0ff;font-weight:bold&#34;&gt;tempo=$(curl -s wttr.in/Brasilia?format=&amp;#34;%l:+%c+%t&amp;#34;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0ff;font-weight:bold&#34;&gt;echo $tempo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0ff;font-weight:bold&#34;&gt;exit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0ff;font-weight:bold&#34;&gt;EOF&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;o-configmap&#34;&gt;&#xA;  O Configmap&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#o-configmap&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e5e5e5;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;oc create cm tempo --from-file=tempo.sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e5e5e5;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;configmap/tempo-cm created&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;O yaml file do CM ficou assim:&lt;/p&gt;</description>
    </item>
    <item>
      <title>NTP no Rhel8 e Centos8</title>
      <link>https://odilon.dev/2019/09/17/2019-09-17-ntp-rhel8-centos8/</link>
      <pubDate>Tue, 17 Sep 2019 15:00:37 +0000</pubDate>
      <guid>https://odilon.dev/2019/09/17/2019-09-17-ntp-rhel8-centos8/</guid>
      <description>&lt;h2 id=&#34;cliente-ntp&#34;&gt;&#xA;  Cliente NTP&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#cliente-ntp&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Nas novas versões baseadas no Red Hat Enterprise Linux, o chrony é o pacote recomendado para implementar o uso do NTP.&lt;/p&gt;&#xA;&lt;p&gt;O pacote já esta disponivel no repositorio base do RHEL8 e Centos8, para instalar só precisamos executar o seguinte comando:&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;yum install chrony -y&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Para habilitar e iniciar podemos utilizar o seguinte comando:&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;systemctl enable --now chronyd&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Para sincronizar o horario com o servidores do NTP BR, temos que inserir as seguindes linhas no arquivo /etc/chrony.conf:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Docker e Container no Rhel8 e Centos8 e Fedora30</title>
      <link>https://odilon.dev/2019/09/09/2019-09-09-docker-rhel8-centos8-fedora30/</link>
      <pubDate>Mon, 09 Sep 2019 20:10:37 +0000</pubDate>
      <guid>https://odilon.dev/2019/09/09/2019-09-09-docker-rhel8-centos8-fedora30/</guid>
      <description>&lt;h3 id=&#34;adeus-docker-olá-crio-e-podman&#34;&gt;&#xA;  Adeus Docker, Olá CRIO e Podman&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#adeus-docker-ol%c3%a1-crio-e-podman&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Docker foi uma ferramenta divisora de aguas para auxiliar na transição de workloads baseados em VM para workloads baseados em containers, quem acompanhou desde o começo sabe o tanto de dor de cabeça que o docker podia proporcionar em produção, principalmente epoca do aufs. Hoje em dia existem varias alternativas ao Docker na hora de implementar container, graças a &lt;a href=&#34;https://www.opencontainers.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Open Container Iniative&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Construindo containers com o Gitlab CI</title>
      <link>https://odilon.dev/2019/04/09/construindo-container-com-gitlab-ci/</link>
      <pubDate>Tue, 09 Apr 2019 11:20:37 +0000</pubDate>
      <guid>https://odilon.dev/2019/04/09/construindo-container-com-gitlab-ci/</guid>
      <description>&lt;p&gt;Hoje em dia construir containers já faz parte do Dia a Dia de qualquer Sysadmin.&lt;/p&gt;&#xA;&lt;p&gt;Após executar algumas vezes ninguém aguenta rodar mais &lt;strong&gt;docker build -t  .&lt;/strong&gt;, principalmente quando sua build tem varias dependências e fica atualizando a lista de pacotes o tempo todo, mesmo com o cache nos layers do docker as vezes fica muito demorado.&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;Para resolver esse problema normalmente utilizamos alguma ferramenta de Continuous Integration, ela será responsável por criar as imagens e enviar para algum repositório.&#xA;Quando utilizamos o gitlab-ci nós podemos abstrair algumas partes do CI/CD, principalmente se utilizamos o registry do gitlab:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Utilizando DaemonSets No Kubernetes</title>
      <link>https://odilon.dev/2019/02/10/utilizando-daemonsets-no-kubernetes/</link>
      <pubDate>Sun, 10 Feb 2019 20:21:37 +0000</pubDate>
      <guid>https://odilon.dev/2019/02/10/utilizando-daemonsets-no-kubernetes/</guid>
      <description>&lt;p&gt;Com o kubernetes nós podemos criar um deploy que vai rodar em todos os nodes do cluster, esse tipo de deploy é conhecido como DaemonSet.&lt;/p&gt;&#xA;&lt;p&gt;O melhor exemplo que me vem a cabeça é algo que aplique uma configuração no kernel da maquina, como por exemplo utilizando o sysctl.&lt;/p&gt;&#xA;&lt;p&gt;Quando rodamos o Elasticsearch no Kubernetes, algumas vezes podemos nós deparar com essa mensagem de erro:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e5e5e5;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;max virtual memory areas vm.max_map_count [65530] likely too low, &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;increase to at least [262144]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Para resolver esse problema o comando abaixo já resolveria:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Criando pods no Kubernetes</title>
      <link>https://odilon.dev/2019/01/09/criando-pod-kubernetes/</link>
      <pubDate>Wed, 09 Jan 2019 11:20:37 +0000</pubDate>
      <guid>https://odilon.dev/2019/01/09/criando-pod-kubernetes/</guid>
      <description>&lt;p&gt;Parar criar um POD no kubernetes podemos utilizar 2 maneiras simples, o &lt;strong&gt;kubectl&lt;/strong&gt; ou um arquivo &lt;strong&gt;yaml&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Para criar utilizando o &lt;strong&gt;kubectl&lt;/strong&gt; podemos utilizar o seguinte comando:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e5e5e5;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ kubectl run nginx --image=nginx --port=&lt;span style=&#34;color:#ff0;font-weight:bold&#34;&gt;80&lt;/span&gt; --labels=&lt;span style=&#34;color:#0ff;font-weight:bold&#34;&gt;&amp;#34;app=nginx&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;deployment.apps &lt;span style=&#34;color:#0ff;font-weight:bold&#34;&gt;&amp;#34;nginx&amp;#34;&lt;/span&gt; created&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Para criar utilizando um arquivo &lt;strong&gt;yaml&lt;/strong&gt; precisamos primeiro criar o arquivo com o seguinte conteudo:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e5e5e5;background-color:#000;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;: extensions/v1beta1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;font-weight:bold&#34;&gt;kind&lt;/span&gt;: Deployment&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;font-weight:bold&#34;&gt;metadata&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;font-weight:bold&#34;&gt;creationTimestamp&lt;/span&gt;: &lt;span style=&#34;color:#fff;font-weight:bold&#34;&gt;null&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;font-weight:bold&#34;&gt;labels&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;font-weight:bold&#34;&gt;app&lt;/span&gt;: nginx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;font-weight:bold&#34;&gt;name&lt;/span&gt;: nginx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;font-weight:bold&#34;&gt;spec&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;font-weight:bold&#34;&gt;replicas&lt;/span&gt;: &lt;span style=&#34;color:#ff0;font-weight:bold&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;font-weight:bold&#34;&gt;selector&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;font-weight:bold&#34;&gt;matchLabels&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;font-weight:bold&#34;&gt;app&lt;/span&gt;: nginx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;font-weight:bold&#34;&gt;strategy&lt;/span&gt;: {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;font-weight:bold&#34;&gt;template&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;font-weight:bold&#34;&gt;metadata&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;font-weight:bold&#34;&gt;creationTimestamp&lt;/span&gt;: &lt;span style=&#34;color:#fff;font-weight:bold&#34;&gt;null&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;font-weight:bold&#34;&gt;labels&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;font-weight:bold&#34;&gt;app&lt;/span&gt;: nginx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;font-weight:bold&#34;&gt;spec&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;font-weight:bold&#34;&gt;containers&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;font-weight:bold&#34;&gt;image&lt;/span&gt;: nginx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;font-weight:bold&#34;&gt;name&lt;/span&gt;: nginx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;font-weight:bold&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;font-weight:bold&#34;&gt;containerPort&lt;/span&gt;: &lt;span style=&#34;color:#ff0;font-weight:bold&#34;&gt;80&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;font-weight:bold&#34;&gt;resources&lt;/span&gt;: {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;font-weight:bold&#34;&gt;status&lt;/span&gt;: {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Depois de criar o arquivo podemos executar o comando para criar o pod&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pipeline com Jenkinsfile</title>
      <link>https://odilon.dev/2018/05/14/pipeline-jenkinsfile/</link>
      <pubDate>Mon, 14 May 2018 11:20:37 +0000</pubDate>
      <guid>https://odilon.dev/2018/05/14/pipeline-jenkinsfile/</guid>
      <description>&lt;p&gt;O Jenkinsfile é a maneira mais recomendada para criar Pipelines no Jenkins, utilizando as melhores práticas podemos colocar o arquivo na raiz de um repositório Git, essa técnica nos permite versionar e controlar a esteira de deploy.&lt;/p&gt;&#xA;&lt;p&gt;A sintaxe utilizada em um Jenkinsfile é o groovy, com esse framework podemos definir o pipeline de forma declarativa.&lt;/p&gt;&#xA;&lt;p&gt;Para criar um projeto utilizando pipeline vamos em Novo Job &amp;gt; Pipeline:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Criando um Pipeline&#34; src=&#34;https://odilon.dev/images/pipeline1.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Utilizando Wildcard com o Letsencrypt</title>
      <link>https://odilon.dev/2018/03/16/utilizando-wildcard-com-o-letsencrypt/</link>
      <pubDate>Fri, 16 Mar 2018 10:33:18 +0000</pubDate>
      <guid>https://odilon.dev/2018/03/16/utilizando-wildcard-com-o-letsencrypt/</guid>
      <description>&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;Essa semana a EFF finalmente anunciou a feature que todos esperavam, &lt;a href=&#34;https://community.letsencrypt.org/t/acme-v2-and-wildcard-certificate-support-is-live/55579&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;wildcard&lt;/a&gt; com letsencrypt.&lt;/p&gt;&#xA;&lt;p&gt;Até agora o certbot não foi atualizado no repositório epel do centos 7.&lt;/p&gt;&#xA;&lt;p&gt;Para utilizar essa nova feature teremos que baixar o executável do certbot-auto direto da EFF.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;wget https://dl.eff.org/certbot-auto&#xA;&#xA;chmod +x certbot-auto&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;E depois executar com os parâmetros para gerar o certificado wildcard.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;./certbot-auto certonly --email email@exemplo.com.br \&#xA;-d exemplo.com.br -d *.exemplo.com.br --keep --renew-by-default \&#xA;--manual --preferred-challenges dns --register \&#xA;--server https://acme-v02.api.letsencrypt.org/directory&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;O cerbot vai pedir que você crie uma entrada TXT no seu serviço de DNS para garantir que você é o dono do domínio, após criar o registro é só configurar no seu nginx ou apache.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Docker no Centos7</title>
      <link>https://odilon.dev/2018/01/15/docker-no-centos7/</link>
      <pubDate>Mon, 15 Jan 2018 15:01:15 +0000</pubDate>
      <guid>https://odilon.dev/2018/01/15/docker-no-centos7/</guid>
      <description>&lt;p&gt;Depois de fazer a configuração inicial na sua VM com Centos 7 usando esse link, o docker será instalado com os seguintes procedimentos:&lt;/p&gt;&#xA;&lt;p&gt;Temos que instalar os seguintes pacotes:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sudo yum install -y yum-utils \&#xA;device-mapper-persistent-data \&#xA;lvm2 -y&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;E instalar o repositorio do docker:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Agora é só instalar o pacote do docker:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sudo yum install docker-ce -y&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Vamos habilitar e iniciar o serviço&lt;/p&gt;</description>
    </item>
    <item>
      <title>Instalando Python 3.5 no Centos7</title>
      <link>https://odilon.dev/2017/10/08/instalando-python-3-5-no-centos7/</link>
      <pubDate>Sun, 08 Oct 2017 14:46:32 +0000</pubDate>
      <guid>https://odilon.dev/2017/10/08/instalando-python-3-5-no-centos7/</guid>
      <description>&lt;p&gt;Para instalar o python 3.5 é necessario instalar alguns pacotes antes, como root execute:&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;Depois iremos baixar o pacote do python, como root execute:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;cd /usr/src&#xA;wget https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tgz&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Descompactando os arquivos:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;tar xzf Python-3.5.4.tgz&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Compilando o pacote:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;cd Python-3.5.4&#xA;./configure&#xA;make altinstall&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Agora nós podemos remover o download do tgz:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;rm -rf /usr/src/Python-3.5.4.tgz&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Para validar se o Python foi instalado, execute:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Centos 7.3 Network Update</title>
      <link>https://odilon.dev/2016/12/13/centos-7-3-network-update/</link>
      <pubDate>Tue, 13 Dec 2016 14:42:20 +0000</pubDate>
      <guid>https://odilon.dev/2016/12/13/centos-7-3-network-update/</guid>
      <description>&lt;p&gt;Com a nova atualização do CentOS um ponto importante do SO será modificado, a interface do rede no VMware pegava um nome que começava com &lt;strong&gt;eno&lt;/strong&gt; e terminava com uma sequencia de números, durante o provisionamento o nome da interface era inserido no arquivo de configuração, exemplo:&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;cat /etc/sysconfig/network-scripts/ifcfg-eno16777984&lt;/code&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;TYPE=Ethernet&#xA;BOOTPROTO=none&#xA;DEFROUTE=yes&#xA;IPV4_FAILURE_FATAL=no&#xA;IPV6INIT=yes&#xA;IPV6_AUTOCONF=yes&#xA;IPV6_DEFROUTE=yes&#xA;IPV6_FAILURE_FATAL=no&#xA;NAME=eno16777984&#xA;ONBOOT=yes&#xA;HWADDR=MAC&#xA;IPADDR0=&#xA;PREFIX0=&#xA;GATEWAY0=&#xA;DNS1=&#xA;DNS2=&#xA;DOMAIN=&#xA;IPV6_PEERDNS=yes&#xA;IPV6_PEERROUTES=yes&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Para não ter problema durante o próximo boot ou restart do serviço de rede, você pode remover a linha &lt;strong&gt;NAME=eno16777984&lt;/strong&gt;, garanta que o HWADDR possui o MAC correto da sua interface, com isso você não ter problema com a interface não pegando IP.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Puppet run com Foreman</title>
      <link>https://odilon.dev/2016/05/03/puppet-run-com-foreman/</link>
      <pubDate>Tue, 03 May 2016 14:41:28 +0000</pubDate>
      <guid>https://odilon.dev/2016/05/03/puppet-run-com-foreman/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Run Button on Foreman&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Habilitando o botão run do foreman para empurrar as configurações remotamente.&lt;/p&gt;&#xA;&lt;p&gt;Puppet Client:&lt;/p&gt;&#xA;&lt;p&gt;Em uma maquina provisionada pelo foreman só precisamos editar o arquivo puppet.conf para colocar o puppet em modo de escuta&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;listen = true&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;echo “listen = true” &amp;raquo; /etc/puppet/puppet.conf&lt;/p&gt;&#xA;&lt;p&gt;Em uma versão instalada separadamente temos que adicionar permissão para o /run:&lt;/p&gt;&#xA;&lt;p&gt;Adicione no /etc/puppet/auth.conf :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;path /run&#xA;auth any&#xA;method save&#xA;allow foremanfqn&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Foreman Server&lt;/p&gt;</description>
    </item>
    <item>
      <title>Keepalived ipv6</title>
      <link>https://odilon.dev/2016/04/29/keepalived-ipv6/</link>
      <pubDate>Fri, 29 Apr 2016 14:40:39 +0000</pubDate>
      <guid>https://odilon.dev/2016/04/29/keepalived-ipv6/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Keepalived com ipv6&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Precisava fazer um HA de uma aplicação em ipv6, usar o ha-proxy não era uma opção, foi considerado a utilização do Nginx para fazer o balanceamento por meio de upstream, só que um IP flutuante era a melhor escolha para o projeto.&lt;/p&gt;&#xA;&lt;p&gt;Usuario como base o Centos7, precisaremos instalar alguns pacotes e preferencialmente atualizar o SO:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;yum update -y&#xA;yum install epel-release -y&#xA;yum install keepalived -y&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Vamos mover o arquivo default de configuração do keepalived:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Restauração GRUB Fedora Core 2 Vmware</title>
      <link>https://odilon.dev/2016/04/12/restauracao-fedora-core-2-vmware/</link>
      <pubDate>Tue, 12 Apr 2016 14:40:02 +0000</pubDate>
      <guid>https://odilon.dev/2016/04/12/restauracao-fedora-core-2-vmware/</guid>
      <description>&lt;p&gt;Cheguei nesse problema ao tentar migrar uma VM legado do XenServer para o Vmware ESXI 6.0&lt;/p&gt;&#xA;&lt;p&gt;Esse era o erro que aparecia &lt;code&gt;grub install dev hda1 not found or not a block device&lt;/code&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;Dar um boot na VM com um disco live, montar o disco raiz no /mnt&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;mount /dev/sda1 /mnt&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Temos que mountar tambem o /sys/ /dev/ e /proc/:&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;mount --bind /dev/ /mnt/dev&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;mount --bind /proc/ /mnt/proc&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;mount --bind /sys/ /mnt/sys&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ghost Blog no Centos 7</title>
      <link>https://odilon.dev/2015/04/22/ghost-blog-no-centos-7/</link>
      <pubDate>Wed, 22 Apr 2015 14:37:56 +0000</pubDate>
      <guid>https://odilon.dev/2015/04/22/ghost-blog-no-centos-7/</guid>
      <description>&lt;p&gt;A &lt;a href=&#34;https://www.digitalocean.com/?refcode=058e9c4d625a&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;DigitalOcean&lt;/a&gt; oferece uma oneclick droplet com o Ghost ja instalado e configurado para ir direto para produção, mas a droplet vem com o Ubuntu 14.04, prefiro usar o CentOs para produção.&lt;/p&gt;&#xA;&lt;p&gt;O post &lt;a href=&#34;http://odilhao.me/configurando-o-centos-7-depois-de-instalado/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Configurando o Centos 7 depois de instalado&lt;/a&gt; mostra como fazer as primeiras configuraçõs no nosso servidor lab.&lt;/p&gt;&#xA;&lt;p&gt;O &lt;a href=&#34;https://ghost.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;ghost&lt;/a&gt; é feito em nodejs, para rodarmos ele iremos instalar os seguintes pacotes:&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;yum install nodejs npm unzip git -y&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Nos utilizaremos o nginx como proxy reverso para receber as conexões, ele rodara na porta 80 e passara as requisições para o nodejs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configurando o Centos 7 depois de instalado</title>
      <link>https://odilon.dev/2015/04/20/configurando-o-centos-7-depois-de-instalado/</link>
      <pubDate>Mon, 20 Apr 2015 14:36:23 +0000</pubDate>
      <guid>https://odilon.dev/2015/04/20/configurando-o-centos-7-depois-de-instalado/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Instalando o Epel&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;A primeira coisa a ser feita é instalaar o epel&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;sudo yum install epel-release&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Agora vamos fazer o update dos pacotes do SO&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;sudo yum update&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Configurando o Firewall&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Um mudança consideravel agora no Centos7 é a remoção do iptables e a adição do FirewallD, como essa maquina vai estar exposta diretamente para a internet nos precisamos de um firewall para bloquear alguns acessos em serviços que deverão estar expostos só em loopback.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Instalando RVM &#43; Ruby &#43; Rails</title>
      <link>https://odilon.dev/2015/04/17/instalando-rvm-ruby-rails/</link>
      <pubDate>Fri, 17 Apr 2015 14:33:39 +0000</pubDate>
      <guid>https://odilon.dev/2015/04/17/instalando-rvm-ruby-rails/</guid>
      <description>&lt;h1 id=&#34;centos&#34;&gt;&#xA;  &lt;strong&gt;Centos&lt;/strong&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#centos&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;p&gt;Primeiro será necessario instalar os pacotes do grupo de desenvolvimento, para isso podemos instalar via groupinstall ou instalando os pacotes manualmente.&lt;/p&gt;&#xA;&lt;p&gt;Para instalar usando o groupinstall&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;yum groupinstall &#39;Development Tools&#39;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Para instalar os pacotes de forma separada usaremos&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;yum install gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison iconv-devel&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Depois disso iremos aceitar a chave gpg do RVM&lt;/p&gt;</description>
    </item>
    <item>
      <title>About</title>
      <link>https://odilon.dev/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://odilon.dev/about/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m a Software Engineer at &lt;a href=&#34;https://redhat.com&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Red Hat&lt;/a&gt;, working with &lt;a href=&#34;https://www.redhat.com/en/technologies/management/satellite&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Satellite&lt;/a&gt; and &lt;a href=&#34;https://theforeman.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Foreman&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m a i3wm user and also a member of &lt;a href=&#34;https://docs.fedoraproject.org/en-US/i3/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;I3-SIG&lt;/a&gt; in &lt;a href=&#34;https://fedoraproject.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Fedora&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Contact</title>
      <link>https://odilon.dev/contact/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://odilon.dev/contact/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m @Odilhao at #libera and on twitter.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Projects</title>
      <link>https://odilon.dev/projects/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://odilon.dev/projects/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://copr.fedorainfracloud.org/coprs/odilhao/polybar&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Polybar&lt;/a&gt; RPM on Fedora COPR - &lt;a href=&#34;https://github.com/Odilhao/polybar&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Github Repo&lt;/a&gt;  - &lt;strong&gt;Retired, Fedora now got a polybar package in upstream.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rss</title>
      <link>https://odilon.dev/index.xml</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://odilon.dev/index.xml</guid>
      <description></description>
    </item>
    <item>
      <title>Talks</title>
      <link>https://odilon.dev/talks/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://odilon.dev/talks/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=4yknmxjNTRg&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Pulpcon 2022&lt;/a&gt; - &lt;a href=&#34;https://odilon.dev/talks/State_of_Pulpcore_RPM.pdf&#34; &gt;State of Pulpcore RPMs&lt;/a&gt;&#xA;&lt;a href=&#34;https://www.youtube.com/watch?v=OFmOqFPUz38&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Pulpcon 2023&lt;/a&gt; - &lt;a href=&#34;https://odilhao.github.io/pulpcon-2023/1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Building Pulp RPMs with PEP 517 compliant packages&lt;/a&gt;&#xA;&lt;a href=&#34;https://www.youtube.com/watch?v=75R9D83Q8yw&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Pulpcore 2024&lt;/a&gt; - &lt;a href=&#34;https://odilhao.github.io/pulpcon-2024/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Packaging Pulp RPMs 2024 Edition&lt;/a&gt;&#xA;DevOpsDays Brasília 2024 PTBR - &lt;a href=&#34;https://odilon.dev/talks/Bootable_containers_pt-br.pdf&#34; &gt;Utilizando Imagens de Containers para fazer deploy e atualização dos seus servidores&lt;/a&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
