<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Posts on Matheus Fazolli</title>
        <link>https://blog.zollitech.com.br/posts/</link>
        <description>Recent content in Posts on Matheus Fazolli</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <copyright>&lt;a href=&#34;https://creativecommons.org/licenses/by-nc/4.0/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Zolli Tech&lt;/a&gt;</copyright>
        <lastBuildDate>Fri, 06 Sep 2024 00:09:38 +0000</lastBuildDate>
        <atom:link href="https://blog.zollitech.com.br/posts/index.xml" rel="self" type="application/rss+xml" />
        
        <item>
            <title>Lightweight Directory Access Protocol (LDAP)</title>
            <link>https://blog.zollitech.com.br/posts/2024/09/lightweight-directory-access-protocol-ldap/</link>
            <pubDate>Fri, 06 Sep 2024 00:09:38 +0000</pubDate>
            
            <guid>https://blog.zollitech.com.br/posts/2024/09/lightweight-directory-access-protocol-ldap/</guid>
            <description>Lightweight Directory Access Protocol (LDAP) O que é o LDAP? LDAP é um protocolo de acesso a diretórios leves. ELE NÃO É UM ACTIVE DIRECTORY, ele é um protocolo de busca. Resumidamente, você armazena dados e as aplicações buscam esses dados&amp;hellip; bem como se fosse um banco de dados em forma de árvores usado para buscas utimizadas.
Estrutura do LDAP Deixarei 3 nomenclaturas para exemplicar e resumir boa parte da estrutura do LDAP.</description>
            <content type="html"><![CDATA[<h2 id="lightweight-directory-access-protocol-ldap">Lightweight Directory Access Protocol (LDAP)</h2>
<h3 id="o-que-é-o-ldap">O que é o LDAP?</h3>
<p>LDAP é um protocolo de acesso a diretórios leves. ELE NÃO É UM ACTIVE DIRECTORY, ele é um protocolo de busca. Resumidamente, você armazena dados e as aplicações buscam esses dados&hellip; bem como se fosse um banco de dados em forma de árvores usado para buscas utimizadas.</p>
<h3 id="estrutura-do-ldap">Estrutura do LDAP</h3>
<p>Deixarei 3 nomenclaturas para exemplicar e resumir boa parte da estrutura do LDAP. Porém, seguiremos com foco na solução OPENLDAP, assim conseguimos seguir uma linha de raciocinio para configuração e exemplo.</p>
<ul>
<li><strong>1 - ObjectClass</strong>:
<ul>
<li>É uma <strong>CLASSE</strong> que contém um conjunto de <strong>ATRIBUTOS</strong> necessários para criar um dado.</li>
<li>Você só pode inserir um dado no LDAP usando uma ObjectClass, e consequentemente, os atributos que <strong>ela permitir</strong>.</li>
<li>Existem dois tipos: <strong>AUXILIARY</strong> &amp; <strong>STRUCTURAL</strong>.</li>
<li>TODO registro precisa de uma <strong>STRUCTURAL</strong>.</li>
<li>Uma <strong>AUXILIARY</strong> adiciona novos <em>atributos</em>.</li>
</ul>
</li>
</ul>
<p><strong>REPRESENTAÇÃO DE UMA CLASSE</strong><!-- raw HTML omitted --></p>
<ul>
<li>Classe STRUCTURAL</li>
</ul>
<p>👇🏻 <em>Atributos</em></p>
<p><strong>NAME</strong>: &rsquo;nomedaclasse'</p>
<p><strong>SUP</strong>: &rsquo;top&rsquo; (superior a essa classe)</p>
<p><strong>STRUCTURAL</strong>: (tipo da classe)</p>
<p>👇🏻 Tipos de atributos que podem ser usados<!-- raw HTML omitted -->
<strong>MUST</strong>: (tipo must -o dado que obrigariatoriamente deve conter-)</p>
<p><strong>MAY</strong>: (tipo may -o que pode passar opcionalmente-)</p>
<ul>
<li>Classe AUXILIARY</li>
</ul>
<p>👇🏻 <em>Atributos</em></p>
<p><strong>NAME</strong>: &rsquo;nomedaclasse'</p>
<p><strong>SUP</strong>: &rsquo;top&rsquo; (superior a essa classe)</p>
<p><strong>AUXILIARY</strong>: (tipo da classe)</p>
<p>👇🏻 Tipos de atributos que podem ser usados</p>
<p><strong>DESC</strong>: (abstracao de uma conta com atributos posix)</p>
<p><strong>MUST</strong>: (tipo must -o dado que obrigariatoriamente deve conter-)</p>
<p><strong>MAY</strong>: (tipo may -o que pode passar opcionalmente-)
<!-- raw HTML omitted -->
<!-- raw HTML omitted --></p>
<ul>
<li><strong>2 - Attribute</strong>:
<ul>
<li>Os <em>Atributos</em> são o que as <em>ObjectClass</em> tem de informação (conforme exemplo das classes acima). São os dados que a aplicação pode utilizar quando se conectar com o LDAP.</li>
</ul>
</li>
</ul>
<p><strong>EXEMPLO DE DADOS QUE PODEMOS CONTER NO ATRIBUTO MUST</strong><!-- raw HTML omitted -->
cn=matheus<!-- raw HTML omitted -->
uid=matheus<!-- raw HTML omitted -->
uidNumber=9000<!-- raw HTML omitted -->
gidNumber=9000<!-- raw HTML omitted -->
homeDirectory=/home/matheus
<!-- raw HTML omitted -->
<!-- raw HTML omitted --></p>
<ul>
<li><strong>3 - Schemas</strong>:
<ul>
<li>O schema nada mais é como se fosse um plugin, ele é um arquivo que contém a descrição de várias Classes(objectclasses). Exemplo: um arquivo que contenha todas as informações para importar determinado atributo em uma objectclasses (arquivo ldif).</li>
</ul>
</li>
</ul>
<p><strong>EXEMPLO DE ARVORE LDAP</strong>
<img alt="diagrama" src="../img/diagrama-exemplo.png"></p>
<h3 id="openldap">OPENLDAP</h3>
<p>O OpenLDAP é uma solução open source de implementação do LDAP em um ambiente.</p>
<h4 id="estrutura-do-openldap">ESTRUTURA DO OPENLDAP</h4>
<ul>
<li>Access Control (ACL) - Controle de quem pode executar qual ação dentro do ldap.
Sintaxe do atributo OLC Access (utilizado pelo ACL).</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>olcAccess: to&lt;what&gt;by&lt;who&gt;&lt;accesslevel&gt;
</span></span></code></pre></div><p>tipos de utilização do <strong>&quot;&lt;what<!-- raw HTML omitted -->&gt;&quot;</strong>: <!-- raw HTML omitted -->
dn.<strong>base</strong>=&ldquo;ou=people,o=suffix&rdquo; 👈🏻 tudo que esteja no mesmo DN<!-- raw HTML omitted -->
dn.<strong>one</strong>=&ldquo;ou=people,o=suffix&rdquo; 👈🏻 tudo que tenha o DN como pai<!-- raw HTML omitted -->
dn.<strong>subtree</strong>=&ldquo;ou=people,o=suffix&rdquo; 👈🏻 tudo abaixo do DN, incluindo o DN<!-- raw HTML omitted -->
dn.<strong>children</strong>=&ldquo;ou=people,o=suffix&rdquo; 👈🏻 tudo abaixo do DN<!-- raw HTML omitted --></p>
<p>tipos de utilização do <strong>&quot;&lt;who<!-- raw HTML omitted -->&gt;&quot;</strong>: <!-- raw HTML omitted --></p>
<table>
<thead>
<tr>
<th>UTILIZACAO</th>
<th>PARA QUEM</th>
</tr>
</thead>
<tbody>
<tr>
<td>*</td>
<td>Todos, incluindo anonimo e usuarios autenticados</td>
</tr>
<tr>
<td>anonymous</td>
<td>Usuarios não autenticados</td>
</tr>
<tr>
<td>users</td>
<td>Usuarios autenticados</td>
</tr>
<tr>
<td>self</td>
<td>Usuarios associados com o target</td>
</tr>
<tr>
<td>dn [.&lt;basic-style<!-- raw HTML omitted -->&gt;]=&lt;regex<!-- raw HTML omitted -->&gt;</td>
<td>Usuarios que combinem com a RegEx</td>
</tr>
<tr>
<td>dn [.&lt;scope-style<!-- raw HTML omitted -->&gt;]=&lt;DN<!-- raw HTML omitted -->&gt;</td>
<td>Usuarios no escopo de uma DN</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
<p>tipos de permissões do <strong>&quot;&lt;accesslevel<!-- raw HTML omitted -->&gt;&quot;</strong>: <!-- raw HTML omitted --></p>
<table>
<thead>
<tr>
<th>PERMISSAO</th>
<th>REPRESENTACAO</th>
<th>DESCRICAO</th>
</tr>
</thead>
<tbody>
<tr>
<td>none</td>
<td>0</td>
<td>Sem acesso</td>
</tr>
<tr>
<td>disclose</td>
<td>d</td>
<td>Mostrar o what em mensagens de erro</td>
</tr>
<tr>
<td>auth</td>
<td>dx</td>
<td>Acesso a um atributo para autenticacao (bind)</td>
</tr>
<tr>
<td>compare</td>
<td>cdx</td>
<td>Operacao de comparacao</td>
</tr>
<tr>
<td>search</td>
<td>scdx</td>
<td>Operacao de busca com filtros</td>
</tr>
<tr>
<td>read</td>
<td>rscdx</td>
<td>Ler os dados do search</td>
</tr>
<tr>
<td>write</td>
<td>wrscdx</td>
<td>Escrever</td>
</tr>
<tr>
<td>manage</td>
<td>mwrscdx</td>
<td>Permissao maxima (admin)</td>
</tr>
</tbody>
</table>
<h3 id="conclusão">Conclusão</h3>
<p>O LDAP+OpenLDAP é uma excelente maneira para você ter um gerenciamento melhor do seu ambiente.
Essa foi uma parte bem teórica sobre o LDAP e o OPENLDAP, possívelmente trarei a parte prática que realizarei em um laboratório e compartilharei com vocês.</p>
<p>Espero ter ajudado a entender um pouco melhor sobre a parte teórica do LDAP.</p>
<p>Abraços do <strong>Golden Retriever</strong>.</p>
]]></content>
        </item>
        
        <item>
            <title>Z Shell (ZSH) &#43; Oh My ZSH</title>
            <link>https://blog.zollitech.com.br/posts/2024/04/z-shell-zsh--oh-my-zsh/</link>
            <pubDate>Sat, 27 Apr 2024 14:31:41 +0000</pubDate>
            
            <guid>https://blog.zollitech.com.br/posts/2024/04/z-shell-zsh--oh-my-zsh/</guid>
            <description>Z Shell (ZSH) + Oh My ZSH Se você é um usuário novo no Linux e está se habituando a utilizar o shell, porém está cansado da tela preta apenas com as letras brancas sem nenhum tipo de facilidade na hora de executar os comandos, esse artigo é para você! Aqui vou apresentar-lhes o Z Shell e um framework chamado Oh My ZSH, que são de utilidade pública para os usuários Linux, visto a facilidade, simplicidade e grande variedade de recursos disponíveis para a execução de comandos no terminal/CLI.</description>
            <content type="html"><![CDATA[<h2 id="z-shell-zsh--oh-my-zsh">Z Shell (ZSH) + Oh My ZSH</h2>
<p>Se você é um usuário novo no Linux e está se habituando a utilizar o shell, porém está cansado da tela preta apenas com as letras brancas sem nenhum tipo de facilidade na hora de executar os comandos, esse artigo é para você!
Aqui vou apresentar-lhes o Z Shell e um framework chamado Oh My ZSH, que são de utilidade pública para os usuários Linux, visto a facilidade, simplicidade e grande variedade de recursos disponíveis para a execução de comandos no terminal/CLI.</p>
<h3 id="o-que-é-o-z-shell">O que é o Z Shell?</h3>
<p>O Z Shell é um interpretador de comandos de shell para sistemas operacionais baseados em Unix, como Linux e macOS. Ele é uma extensão do Bourne Shell (sh) e contém diversos recursos. O ZSH é altamente configurável e pode ser uma escolha popular entre desenvolvedores e usuário avançados de terminal, devido à sua flexibilidade.</p>
<h3 id="oh-my-zsh">Oh My ZSH</h3>
<p>Já o Oh My ZSH é um framework de configuração e gerenciamento para o ZSH. Ele foi desenvolvido para simplificar e melhorar a experiência de uso do ZSH, oferecendo uma série de recursos pré-configurados, temas, plugins e uma interface de linha de comando (CLI) para facilitar a personalização do ambiente de shell.</p>
<h3 id="a-teoria-já-foi">A teoria já foi&hellip;</h3>
<p>Agora que você já sabe o que é o ZSH e o Oh My ZSH, eu tenho certeza que ficou com interesse em testa-los no seu terminal! Sendo assim, ensinarei a instala-los e configura-los com alguns plugins que utilizo no dia-a-dia.</p>
<h3 id="instalação-zsh">INSTALAÇÃO ZSH</h3>
<p>Utilizaremos uma máquina <strong>Ubuntu</strong> para realizar a instalação dos pacotes necessários. Sendo assim, inicializaremos com a atualização dos já existentes:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#75715e"># Atualizando os pacotes já existentes</span>
</span></span><span style="display:flex;"><span>sudo apt update -y
</span></span><span style="display:flex;"><span>sudo apt upgrade -y
</span></span></code></pre></div><p>Com os pacotes atualizados, instalaremos você precisará utilizar em algum momento.</p>
<blockquote>
<p>Com excessão do GIT e do CURL, a ferramenta NÃO depende do restante para funcionar.</p>
</blockquote>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#75715e"># Instalando alguns pacotes que você possivelmente precisará utilizar no futuro</span>
</span></span><span style="display:flex;"><span>sudo apt install dkms make perl gcc build-essential git curl -y
</span></span></code></pre></div><p>Com esses pacotes baixados e instalados, agora é a vez do <strong>ZSH</strong>.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#75715e"># Instalando e configurando o ZSH</span>
</span></span><span style="display:flex;"><span>sudo apt install zsh -y
</span></span><span style="display:flex;"><span>chsh -s /bin/zsh <span style="color:#75715e"># comando para mudar o shell para o ZSH</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Para que funcione automaticamente, basta reiniciar a máquina. Mas caso você opte por não reiniciar e entrar no zsh, basta rodar o comando abaixo:</span>
</span></span><span style="display:flex;"><span>zsh <span style="color:#75715e"># Comando para inicar o ZSH.</span>
</span></span></code></pre></div><p>Note que aparecerá um menu na sua tela. Isso acontece porque ainda não criamos um arquivo .zsh. Sendo assim, basta selecionar a opção <strong>q</strong> OU apertar <strong>ENTER</strong> para sair do menu.</p>
<p>Com o zsh funcionando, chegou a hora de configurar o Oh-My-ZSH e deixar o terminal mais bonito e personalizado.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#75715e"># Instalando Oh-my-ZSH! (https://ohmyz.sh/)</span>
</span></span><span style="display:flex;"><span>sh -c <span style="color:#e6db74">&#34;</span><span style="color:#66d9ef">$(</span>curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh<span style="color:#66d9ef">)</span><span style="color:#e6db74">&#34;</span>
</span></span></code></pre></div><p>No meio da instalação do oh-my-zsh, ele perguntará se vc quer deixar o ZSH como padrão shell, basta você apertar <strong>y</strong> e ele configurará automaticamente um arquivo .zsh no seu perfil.</p>
<p>Feito isso, você já terá o ZSH instalado e configurado junto ao Oh-My-ZSH. Porém ainda falta configurar alguns plugins que ajudará no seu dia-a-dia com a utilização do CLI. Sendo assim, configuremos dois dos plugins que mais utilizo e que me auxiliam quando utilizo o ZSH.</p>
<p>Primeiro iremos baixar os plugins, que são os:</p>
<ul>
<li><strong>AutoSugestions:</strong> ele dá algumas sugestões na hora que estou digitando algum comando.</li>
<li><strong>ZSH-Syntax-Highlighting:</strong> esse plugin destaca os comandos enquanto são digitados, por exemplo, caso eu vá utilizar o &ldquo;curl&rdquo; e não tenha ele instalado, quando eu digitar o comando &ldquo;curl&rdquo;, ele ficará vermelho. Caso eu tenha instalado, ele ficará verde.</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#75715e"># Instalando os plugins</span>
</span></span><span style="display:flex;"><span>git clone https://github.com/zsh-users/zsh-autosuggestions <span style="color:#e6db74">${</span>ZSH_CUSTOM<span style="color:#66d9ef">:-</span>~/.oh-my-zsh/custom<span style="color:#e6db74">}</span>/plugins/zsh-autosuggestions
</span></span><span style="display:flex;"><span>git clone https://github.com/zsh-users/zsh-syntax-highlighting.git <span style="color:#e6db74">${</span>ZSH_CUSTOM<span style="color:#66d9ef">:-</span>~/.oh-my-zsh/custom<span style="color:#e6db74">}</span>/plugins/zsh-syntax-highlighting
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Clonado os repositórios, basta inseri-los no arquivo do .zshrc que está no /home do seu usuário</span>
</span></span><span style="display:flex;"><span>sudo vim .zshrc
</span></span></code></pre></div><p>No arquivo do .zshrc, tem o bloco de plugins (aqui está mais ou menos na linha 73), basta inserir o nome dos plugins nesse bloco. Exemplo:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#75715e"># ARQUIVO .ZSHRC</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Which plugins would you like to load?</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Standard plugins can be found in $ZSH/plugins/</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Custom plugins may be added to $ZSH_CUSTOM/plugins/</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Example format: plugins=(rails git textmate ruby lighthouse)</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Add wisely, as too many plugins slow down shell startup.</span>
</span></span><span style="display:flex;"><span>plugins<span style="color:#f92672">=(</span>
</span></span><span style="display:flex;"><span>        git
</span></span><span style="display:flex;"><span>        zsh-autosuggestions
</span></span><span style="display:flex;"><span>        zsh-syntax-highlighting
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>source $ZSH/oh-my-zsh.sh
</span></span></code></pre></div><p>Adicionado os plugins no arquivo .zshrc, eles já estarão funcionando.
Caso você opte por personalizar ainda mais o ZSH com Oh-my-ZSH, recomendo acessar <a href="https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins">ESSE REPOSITÓRIO</a> e ver qual plugin mais te agrada ou auxiliará durante a utilização da CLI.</p>
<h3 id="conclusão">CONCLUSÃO</h3>
<p>Realizado todas as etapas do hands-on, espero poder ter ajudado a personalizar e melhorar a agilidade sua com seu terminal. E que você goste cada vez mais de CLI.</p>
<p>Abraços do <strong>Golden Retriever</strong>.</p>
]]></content>
        </item>
        
        <item>
            <title>Logical Volume Management (LVM)</title>
            <link>https://blog.zollitech.com.br/posts/2024/04/logical-volume-management-lvm/</link>
            <pubDate>Sat, 20 Apr 2024 15:19:18 +0000</pubDate>
            
            <guid>https://blog.zollitech.com.br/posts/2024/04/logical-volume-management-lvm/</guid>
            <description>Logical Volume Management (LVM) O que é o LVM? O LVM (Logical Volume Management - Gerenciamento de Volume Lógico), é uma tecnologia de gerenciamento de armazenamento usada em sistemas Linux e que permite gerenciar o espaço em disco de forma mais flexível.
Um bom exemplo, é a possibilidade da criação de Volumes Lógicos (VG) que podem abranger vários discos físicos, permitindo redimensionar, mover e criar Volumes Lógicos sem precisar desligar o sistema ou mover dados.</description>
            <content type="html"><![CDATA[<h2 id="logical-volume-management-lvm">Logical Volume Management (LVM)</h2>
<h3 id="o-que-é-o-lvm">O que é o LVM?</h3>
<p>O LVM (Logical Volume Management - Gerenciamento de Volume Lógico), é uma tecnologia de gerenciamento de armazenamento usada em sistemas Linux e que permite gerenciar o espaço em disco de forma mais flexível.</p>
<p>Um bom exemplo, é a possibilidade da criação de Volumes Lógicos (VG) que podem abranger vários discos físicos, permitindo redimensionar, mover e criar Volumes Lógicos sem precisar desligar o sistema ou mover dados.</p>
<h3 id="estrutura-do-lvm">Estrutura do LVM</h3>
<p>A estrutura do LVM consiste em alguns principais componentes, sendo eles:</p>
<ul>
<li>
<p><strong>Physical Volumes (PVs)</strong>: São os discos físicos ou partições de disco que são incorporados ao pool de armazenamento gerenciado pelo LVM. Um <strong>PV</strong> pode ser um disco inteiro ou uma partição em um disco.</p>
</li>
<li>
<p><strong>Volume Groups (VGs)</strong>: Um <strong>VG</strong> é uma coleção de um ou mais <em>PVs (physical volumes)</em>. Ele funciona como um pool de armazenamento lógico a partir do qual os Volumes Lógicos são criados. O espaço de armazenamento em todos os <em>PVs</em> pertencentes a um <strong>VG</strong> é combinado e disponibilizado para alocação.</p>
</li>
<li>
<p><strong>Logical Volumes (LVs)</strong>: São volumes lógicos que são crioados dentro de um <em>VG</em>. Eles são equivalentes a partições em um sistema de arquivos tradicional, mas com a vantagem de que podem ser redimensionados de forma dinâmica e não estão vinculados a um único <em>Physical Disk (PV)</em>. Os <strong>LVs</strong> são o que os sistemas operacionais enxergam e utilizam como dispositivos de armazenamento.</p>
</li>
<li>
<p><strong>Extents</strong>: Não menos importante, os extents são pequenos blocos que o LVM divide o espaço de armazenamento. Esses extents são a menor unidade de alocação e podem variar de tamanho dependendo da configuração do LVM.</p>
</li>
</ul>
<h3 id="hands-on-lvm">Hands-on LVM</h3>
<p>No exemplo do hands-on, iremos expandir uma partição (/var) adicionando um novo disco á máquina (/dev/sdb).</p>
<p>Os comandos utilizados funcionam nas distribuições em Ubuntu e CentOS. Nesse ponto, é importante e necessário que você já tenha adicionado um novo disco na sua máquina, seja ela bade metal ou virtual. Para listar os discos e partições, iremos rodar o seguinte comando:</p>
<blockquote>
<p>Comandos executados como superusuário.</p>
</blockquote>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>fdisk -l
</span></span></code></pre></div><p>A máquina nos retornará os discos e suas partições. Suponhamos que seja o segundo disco que esteja adicionando na máquina e é por isso que ele será o <strong>/dev/sdb</strong>.</p>
<p>Como estamos com um novo disco, precisamos criar uma nova partição para que possamos seguir com a expansão do /var. <!-- raw HTML omitted -->
Para criar uma partição:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#75715e"># setando o disco que iremos criar a partição lógica</span>
</span></span><span style="display:flex;"><span>fdisk /dev/sdb
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># comandos para seguir dentro do menu do FDISK</span>
</span></span><span style="display:flex;"><span>n <span style="color:#75715e"># criar nova partição</span>
</span></span><span style="display:flex;"><span>p <span style="color:#75715e"># dizendo que é uma partição primaria</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># AS OPÇÕES DO TAMANHO PODE DEIXAR PADRÃO, VISTO QUE UTILIZAREMOS TODOS OS SETORES DO DISCO.</span>
</span></span></code></pre></div><p>Ainda no FDISK, depois de criado a partição lógica, é necessário setar que será uma partição do tipo LVM:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#75715e"># No FDISK</span>
</span></span><span style="display:flex;"><span>t <span style="color:#75715e"># para alterar o tipo de partição</span>
</span></span><span style="display:flex;"><span>8e <span style="color:#75715e"># o código da partição do tipo LVM</span>
</span></span><span style="display:flex;"><span>w <span style="color:#75715e"># para gravar todas as modificações que realizamos no /dev/sdb</span>
</span></span></code></pre></div><p>Depois de gravar todas as modificações realizadas no disco /dev/sdb, ou seja, a criação da nova partição lógica e a alteração do tipo de partição, caso executemos o comando <strong>fidsk -l</strong> novamente, ele nos retornará a partição criada, sendo ela <strong>/dev/sdb1</strong>.</p>
<p>Agora precisamos criar o <strong>Physical Volume</strong> com a partição lógica que criamos. Execute o comando:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#75715e"># criando o Physical Volume</span>
</span></span><span style="display:flex;"><span>pvcreate /dev/sdb1
</span></span></code></pre></div><p>Com o PV criado, para localizarmos o LV que iremos expandir, execute:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#75715e"># localizando o LV a ser expandido</span>
</span></span><span style="display:flex;"><span>lvdisplay
</span></span></code></pre></div><p>Como dito anteriormente, será o /var. E é de extrema importância que você salve as informações <strong>LV Path</strong> e <strong>VG Name</strong> que serão exibidas no seu terminal.</p>
<p>No meu exemplo, os dados serão: <!-- raw HTML omitted --></p>
<blockquote>
<p>LV Path &mdash;&mdash;&mdash;- /dev/vg0/lv-0-var <!-- raw HTML omitted -->
VG Name &mdash;&mdash;&mdash; vg0</p>
</blockquote>
<p>Com essas informações, podemos dar continuidade e então realizar utilizar o comando vgextend para estender o <strong>Volume Group</strong>, utilizando o <strong>Physical Volume</strong> que criamos. Para isso:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#75715e"># estendendo o VG com o PV criado</span>
</span></span><span style="display:flex;"><span>vgextend vg0 /dev/sdb1
</span></span></code></pre></div><p>Utilizaremos todo o espaço livre o alocando ao LV Path:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>lvextend -l +100%FREE /dev/vg0/lv-0-var
</span></span></code></pre></div><blockquote>
<p>Verifique o sistema de arquivos utilizado no seu filesystem, no exemplo, estamos utilizando o <strong>ext4</strong>.</p>
</blockquote>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#75715e"># para verificar o sistema de arquivos</span>
</span></span><span style="display:flex;"><span>df -hT
</span></span></code></pre></div><ul>
<li>Caso seja <strong>EXT4</strong>, para expandir automaticamente o espaço existente:</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>resize2fs -p /dev/vg0/lv-0-var
</span></span></code></pre></div><ul>
<li>Caso seja <strong>XFS</strong>, para expandir a partição:</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>xfs_growfs /dev/vg0/lv-0-var
</span></span></code></pre></div><p>Para validar a expanção, execute o seguinte comando:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#75715e"># validando se houve a expanção da partição</span>
</span></span><span style="display:flex;"><span>df -h
</span></span></code></pre></div><h3 id="conclusão">Conclusão</h3>
<p>Em conclusão, o LVM é uma ferramenta poderosa para gerenciamento de armazenamento em sistemas Linux, possibilitando uma maior flexibilidade e eficiência na alocação e gerenciamento de espaço em disco. <!-- raw HTML omitted --></p>
<p>Espero ter ajudado a entender um pouco sobre o funcionamento e a estrutura do LVM.</p>
<p>Abraços do <strong>Golden Retriever</strong>.</p>
]]></content>
        </item>
        
        <item>
            <title>Hugo Framework &#43; Github Workflow &#43; Cloudflare</title>
            <link>https://blog.zollitech.com.br/posts/2024/04/hugo-framework--github-workflow--cloudflare/</link>
            <pubDate>Tue, 02 Apr 2024 01:01:31 +0000</pubDate>
            
            <guid>https://blog.zollitech.com.br/posts/2024/04/hugo-framework--github-workflow--cloudflare/</guid>
            <description>Essas foram as ferramentas que utilizei para realizar o desenvolvimento do meu blog estático. Nesse post, vou tentar resumir a combinação que fiz para que tudo isso virasse um blog.
Site Estático O que é um site estático? Um site estático nada mais é do que um código HTML que se hospeda em algum lugar, não sendo necessário banco de dados, plugins e afins para que o site funcione. Dessa maneira, conseguimos uma boa perfomance quando comparado a um Content Management System (CMS).</description>
            <content type="html"><![CDATA[<p>Essas foram as ferramentas que utilizei para realizar o desenvolvimento do meu blog estático. Nesse post, vou tentar resumir a combinação que fiz para que tudo isso virasse um blog.</p>
<h2 id="site-estático">Site Estático</h2>
<p>O que é um site estático? Um site estático nada mais é do que um código HTML que se hospeda em algum lugar, não sendo necessário banco de dados, plugins e afins para que o site funcione. Dessa maneira, conseguimos uma boa perfomance quando comparado a um Content Management System (CMS).</p>
<h2 id="hugo-framework">Hugo Framework</h2>
<p>O Hugo Framework é um framework desenvolvido em GO, e não é necessário você saber desenvolver em GO para utiliza-lo, apenas mudando alguns parametros simples o site é gerado, depois de gerado ele é compilado e enviado para a hospedagem. Simples, rápido e prático!</p>
<blockquote>
<p>Com o Hugo Framework, você consegue escrever posts no formato <strong>Markdown</strong>, que quando compilado, vira HTML.</p>
</blockquote>
<h2 id="git-workflow">Git Workflow</h2>
<p>O Github Workflow (Github Actions) é uma plataforma de integração contínua e entrega contínua (CI/CD), que nos permite automatizar compilações, nada mais é do que uma pipeline de implantação.</p>
<h2 id="cloudflare">Cloudflare</h2>
<p>A Cloudflare é uma provedora de serviços mais conhecida por seu CDN, mas que também nos permite fazer toda a parte de compilação do código que iremos utilizar para nosso site estático.</p>
<h1 id="hands-on">HANDS-ON</h1>
<p>Agora, vou tentar explicar o que realmente foi feito na prática para que o blog funcionasse.</p>
<p>Antes de mais nada, caso você queira realizar os mesmos passos que eu fiz, certifique-se de que você tenha conta no <a href="https://github.com/">Github</a> e na <a href="https://www.cloudflare.com/pt-br/">Cloudflare</a>.</p>
<blockquote>
<p>Utilizei uma máquina com ubuntu server para realizar todo esse projeto.</p>
</blockquote>
<p>Certo disso, iremos iniciar realizando a instalação do hugo:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>sudo apt install hugo
</span></span></code></pre></div><p>Realizado a instalação do Hugo, basta você começar utiliza-lo iniciando o projeto:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>hugo new site &lt;NomeProjeto&gt; <span style="color:#75715e"># onde tem &lt;NomeProjeto&gt; é onde você irá inserir o nome do seu projeto/site exemplo &#34;hugo new site zollitech&#34;</span>
</span></span></code></pre></div><p>Iniciado o projeto, se você listar os diretórios com o comando &ldquo;ls&rdquo;, verá que foi criado uma pasta contendo todo o conteúdo necessário para seu site estático.</p>
<p>Basicamente teremos o archetypes, content, data, layouts, static, themes e o arquivo padrão do site <strong>config.toml</strong> ou <strong>hugo.toml</strong>, depende da versão do hugo que está utilizando.</p>
<p>Sobre a estrutura:</p>
<ul>
<li><strong>archetypes</strong> - basicamente o cabeçalho de todo arquvio .md do site.</li>
<li><strong>content</strong> - onde ficam as páginas do site.</li>
<li><strong>layout</strong> - onde ficam os conteúdos em HTML.</li>
<li><strong>static</strong> - onde ficam os conteúdos CSS.</li>
<li><strong>themes</strong> - onde fica a pasta do tema utilizado para o site.</li>
</ul>
<p>Conhecendo toda estrutura, já podemos dar inicio para a escolha do tema que utilizaremos no blog.</p>
<p>Escolha um tema no <a href="https://themes.gohugo.io/tags/blog">SITE DE TEMAS DO HUGO</a>. Geralmente na própria página do tema tem a maneira de instalação, mas como abordado no inicio do post, irei mostrar os passos que realizei para que o MEU site funcionasse.</p>
<p>Após escolher o tema, no meu terminal, rodei um comando para adicionar o tema como um submódulo do repositório, sendo assim, na pasta raiz do projeto:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>git init <span style="color:#75715e"># para iniciar o git</span>
</span></span><span style="display:flex;"><span>git submodule add https://github.com/rhazdon/hugo-theme-hello-friend-ng.git themes/hello-friend-ng <span style="color:#75715e"># esse é o tema que utilizei no meu blog, mas caso queira outro, é só passar a url dele junto ao comando submodule add.</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Executando esse comando, ele realizará um clone do repositório do tema e adicionará como um módulo no diretório themes/hello-friend-ng</span>
</span></span></code></pre></div><p>Depois de realizar o clone, vamos substituir os arquivos que vieram por padrão quando inicializamos o projeto, pelos arquivos do tema:</p>
<pre tabindex="0"><code class="language-shel" data-lang="shel">cp -r ./themes/hello-friend-ng/exampleSite/* .
</code></pre><p>Esse comando copiou recursivamente tudo o que continha no diretório do tema para nosso diretório atual (raiz do site).</p>
<p>Dessa maneira, já conseguimos ter uma visão de como o site está ficando, basta rodar o seguinte comando:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>hugo server -D
</span></span></code></pre></div><p>Caso você esteja hospedando em outra máquina e precise acessar por outro IP, utilize o comando:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>hugo server --bind<span style="color:#f92672">=</span>&lt;IP_VM&gt; --baseURL<span style="color:#f92672">=</span>http://&lt;IP_VM&gt;:1313 <span style="color:#75715e"># no campo &lt;IP_VM&gt; você adicionará o ip da vm que está hospedando o Hugo.</span>
</span></span></code></pre></div><p>Assim você já consegue ir realizando as alterações no arquivo <strong>config.toml</strong> ou <strong>hugo.toml</strong> e no browser acessar o IP:1313 para visualizar seu site estático.</p>
<blockquote>
<p>Caso você utilize o serviço da Netlify ao invés do Cloudflare, será necessário criar um arquivo de configuração .toml para tal. Aqui realizaremos o processo voltado para a Cloudflare.</p>
</blockquote>
<p><strong>A PARTIR DESSA ETAPADA, IREMOS COMEÇAR UTILIZAR O GITHUB E CLOUDFLARE</strong></p>
<h2 id="no-github">NO GITHUB</h2>
<p>Crie o repositório com o nome do seu projeto (pode ser público). Caso optar por um repositório privado, terá que pagar para utilizar o GithubActions da maneira que vamos usar aqui no tutorial.</p>
<p>Com o repositório já pronto e com o mesmo nome do seu projeto do hugo, tendo em vista que você já realizou as alterações do site nos arquivos do projeto, basta commita-las em seu repositório novo do git.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>git add .
</span></span><span style="display:flex;"><span>git commit -m <span style="color:#e6db74">&#34;first commit&#34;</span>
</span></span><span style="display:flex;"><span>git remote add origin &lt;url <span style="color:#66d9ef">do</span> repositório&gt; <span style="color:#75715e"># adicionei a url .git do seu repo</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># coloque as credenciais do teu github</span>
</span></span></code></pre></div><p>Bingo! Teu repositório já estará pronto para ser compilado na Cloudflare.</p>
<h2 id="cloudflare-1">CLOUDFLARE</h2>
<p>No painel da CloudFlare, faça os seguintes passos:</p>
<ul>
<li>Faça os apontamentos DNS para o seu dominio.</li>
<li>Tendo em vista que já tem os apontamentos DNS, na opção Workers e Pages do menu principal, clique na opção &ldquo;Crie um aplicativo&rdquo;.</li>
<li>Depois, clique na aba &ldquo;Pages&rdquo; e vá até a opção de &ldquo;Criar importando um repositório Git existente&rdquo;.</li>
<li>Ele solicitará para conectar/integrar sua conta do github com o cloudflare. No github terá a opção de selecionar apenas o repositório do seu projeto, faça isso.</li>
<li>Na etapa de Build Settings, selecione a opção do HUGO FRAMEWORK.</li>
<li>Dessa forma você pode selecionar a opção de &ldquo;Save and Deploy&rdquo;.</li>
</ul>
<blockquote>
<p>Pode ser que durante o deploy, dê algum erro e na grande maioria das vezes, é por conta da versão do Hugo Framework. Nos próximos passos ensinarei a setar a versão do Hugo que você está usando no seu computador, na Cloudflare.</p>
</blockquote>
<p>Depois que você configurou toda a parte do Pages no Cloudflare, você verá seu &ldquo;aplicativo&rdquo; na aba do Workers e Pages, lá você conseguirá editar o seu projeto.</p>
<p>Clicando em &ldquo;Editar&rdquo;, haverá a opção &ldquo;Settings&rdquo;, na opção settings você consegue definir algumas váriveis ambientes (environment variables) e é nessa parte que setamos as configurações do Hugo Framework.</p>
<p>Nessa etapa, recomendo que você configure duas váriaveis ambientes, sendo elas:</p>
<table>
<thead>
<tr>
<th>Variable Name</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>HUGO_VERSION</td>
<td>&lt;Versão do seu hugo&gt;</td>
</tr>
<tr>
<td>HUGO_ENV</td>
<td>production</td>
</tr>
</tbody>
</table>
<blockquote>
<p>Para saber qual a versão do hugo framework que está utilizando no seu computador, rode o comando:</p>
</blockquote>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>hugo version <span style="color:#75715e"># Esse comando deve ser executado no seu computador onde está instalado o hugo framework</span>
</span></span></code></pre></div><p>Feito isso, salve as configurações no botão &ldquo;Save&rdquo; e <strong>refaça o deploy do aplicativo novamente</strong> na &ldquo;Deployments&rdquo;,</p>
<p>Feito o deploy e tudo funcionando, vamos apontar o &ldquo;aplicativo&rdquo; para o nosso dominio registrado na cloudflare.</p>
<p>Para realizar esse procedimento, no mesmo menu do aplicativo na cloudflare, vá na opção/aba &ldquo;Custom domains&rdquo; e clique em &ldquo;Set up a custom domain&rdquo;.</p>
<p>Nessa opção, inserimos nosso dominio desejado, clicamos em &ldquo;Continue&rdquo; e ele apresentará um apontamento CNAME para o dns conteúdo do &ldquo;aplicativo&rdquo;, basta clicar em &ldquo;ACtivate Domain&rdquo; para concluirmos o apontamento do nosso dominio para o aplicativo.</p>
<h3 id="se-tudo-estiver-configurado-de-maneira-certa-concluimos-todos-os-passos-para-configuração-do-seu-site-estático">Se tudo estiver configurado de maneira certa, CONCLUIMOS todos os passos para configuração do seu site estático.</h3>
<p>Para realizar alterações no site, basta realizar um commit na master do seu projeto no Github, assim o Cloudflare executará toda compilação para que faça as alterações e a publique na internet.</p>
<p>Caso não saiba commitar, basta executar os seguintes comandos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>git add .
</span></span><span style="display:flex;"><span>git commit -m <span style="color:#e6db74">&#34;descricao do commit&#34;</span>
</span></span><span style="display:flex;"><span>git push -u origin master
</span></span></code></pre></div><p>Qualquer dúvida referente esses processos, me chame em alguma de minhas redes sociais.
Estarei à disposição.</p>
<p><a href="https://www.linkedin.com/in/matheus-fazolli/">Linkedin</a>
<a href="www.instagram.com/f4zolli">Instagram</a></p>
<p>Deixo aqui alguns vídeos de referência para esse projeto:<br>
<a href="https://www.youtube.com/watch?v=5iFUkZwTi6s&t">Deploy A Static Site Using DevOps with Hugo Cloudflare And Github</a><br>
<a href="https://www.youtube.com/watch?v=TXGwLp1tqOE">Como criar um site/blog com HUGO framework</a></p>
<p>Abraços do <strong>Golden Retriever</strong>.</p>
]]></content>
        </item>
        
        <item>
            <title>MAAS - Metal as a Service</title>
            <link>https://blog.zollitech.com.br/posts/2024/04/maas-metal-as-a-service/</link>
            <pubDate>Mon, 01 Apr 2024 00:11:38 +0000</pubDate>
            
            <guid>https://blog.zollitech.com.br/posts/2024/04/maas-metal-as-a-service/</guid>
            <description>O que é o MAAS? MAAS ou Metal as a Service (Metal como Serviço) é uma ótima ferramenta da Canonical, capaz de provisionar máquinas bare metal, bem como máquinas virtuais. Essa tool permite implantar Windows, Linux, ESXi e muitos outros sistemas operacionais, ajudando você a construir uma &amp;ldquo;nuvem&amp;rdquo; bare metal.
INSTALAÇÃO Nesse cenário instalarei o MAAS em uma máquina Ubuntu Server 22.04 Jammy. Logo no inicio, tive alguns problemas com a instalação utilizando o apt e por isso optei pela instalação utilização o snapd, sendo assim, caso você não tenha o snapd instalado, utilize o comando:</description>
            <content type="html"><![CDATA[<h2 id="o-que-é-o-maas">O que é o MAAS?</h2>
<p>MAAS ou Metal as a Service (Metal como Serviço) é uma ótima ferramenta da Canonical, capaz de provisionar máquinas bare metal, bem como máquinas virtuais. Essa tool permite implantar Windows, Linux, ESXi e muitos outros sistemas operacionais, ajudando você a construir uma &ldquo;nuvem&rdquo; bare metal.</p>
<h3 id="instalação">INSTALAÇÃO</h3>
<p>Nesse cenário instalarei o MAAS em uma máquina Ubuntu Server 22.04 Jammy.
Logo no inicio, tive alguns problemas com a instalação utilizando o apt e por isso optei pela instalação utilização o snapd, sendo assim, caso você não tenha o snapd instalado, utilize o comando:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>sudo apt install snapd
</span></span></code></pre></div><p>Agora, iniciaremos o processo de construção do MAAS, para isso primeiro realizaremos o download da versão 3.4 (atualmente a mais estável):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>sudo snap install --channel<span style="color:#f92672">=</span>3.4 maas
</span></span></code></pre></div><p>O MAAS é um serviço que necessita de um banco de dados, para isso, utilizaremos o <strong>postgres</strong>. Caso você já possua o postgres em seu ambiente, pule essa etapa. Mas caso desejar utilizar um banco de dados de teste MAAS:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>sudo snap install maas-test-db
</span></span></code></pre></div><p><em>testando o banco de dados:</em></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>sudo maas-test-db.psql
</span></span></code></pre></div><h3 id="inicializando-o-maas">INICIALIZANDO O MAAS</h3>
<p>Caso esteja utilizando o banco de dados acima, inicialize o MAAS:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>sudo maas init region+rack --database-uri maas-test-db:///
</span></span></code></pre></div><p>Caso você já utilize o postgres em seu ambiente, poderá inicializar o MAAS usando o seu próprio serviço postgres. Certifique-se de criar o banco de dados, o usuário e atribuir ermissões a esse usuário antes de executar o comando init.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>sudo maas init region+rack --database-uri <span style="color:#e6db74">&#34;postgres://username:password@&lt;IP_MAAS&gt;/maas&#34;</span> <span style="color:#75715e"># replace with username /password / ip /db name</span>
</span></span></code></pre></div><blockquote>
<p>Caso não deseje armazenar suas secrets no histórico do terminal, considere utilizar variáveis ENV:</p>
</blockquote>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>sudo maas init region+rack --database-uri <span style="color:#e6db74">&#34;postgres://</span>$MAAS_DBUSER<span style="color:#e6db74">:</span>$MAAS_DBPASS<span style="color:#e6db74">@</span>$HOSTNAME<span style="color:#e6db74">/</span>$MAAS_DBNAME<span style="color:#e6db74">&#34;</span>
</span></span></code></pre></div><p>Para acessar o MAAS, precisamos antes, criar uma conta de administrador:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>sudo maas createadmin
</span></span></code></pre></div><h3 id="observações">OBSERVAÇÕES</h3>
<p>Futuramente farei alguns testes utilizando a ferramenta Packer, da Hashicorp, para aumentar a possibilidades de imagens para o provisionamento de novas máquinas virtuais. Mas esse post é exclusivamente sobre o Metal as a Service.</p>
<h4 id="referências">REFERÊNCIAS</h4>
<p><a href="https://maas.io/">Documentação MAAS</a></p>
<p><a href="https://technotim.live/posts/metal-as-a-service-packer/">Referência de Tutorial (technotim)</a></p>
]]></content>
        </item>
        
    </channel>
</rss>
