<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SRE | Luis Cacho</title><link>https://luiscachog.io/tag/sre/</link><atom:link href="https://luiscachog.io/tag/sre/index.xml" rel="self" type="application/rss+xml"/><description>SRE</description><generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><lastBuildDate>Thu, 25 Mar 2021 09:09:11 -0500</lastBuildDate><image><url>https://luiscachog.io/media/icon_hu4fa4dbbaafd6f1b45a88958b9b4a0dd0_11007_512x512_fill_lanczos_center_3.png</url><title>SRE</title><link>https://luiscachog.io/tag/sre/</link></image><item><title>Differences between Kubernetes and Openshift</title><link>https://luiscachog.io/talk/differences-between-kubernetes-and-openshift/</link><pubDate>Thu, 25 Mar 2021 09:09:11 -0500</pubDate><guid>https://luiscachog.io/talk/differences-between-kubernetes-and-openshift/</guid><description/></item><item><title>Podman remote client on MacOS using Vagrant</title><link>https://luiscachog.io/podman-macos-vagrant/</link><pubDate>Tue, 23 Feb 2021 00:00:00 +0000</pubDate><guid>https://luiscachog.io/podman-macos-vagrant/</guid><description>&lt;details class="toc-inpage d-print-none " open>
&lt;summary class="font-weight-bold">Table of Contents&lt;/summary>
&lt;nav id="TableOfContents">
&lt;ul>
&lt;li>&lt;a href="#introduction">Introduction&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#brief-architecture">Brief Architecture&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#installation">Installation&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#install-podman-on-macos">Install podman on MacOS&lt;/a>&lt;/li>
&lt;li>&lt;a href="#create-a-new-ssh-keys-on-macos">Create a new ssh-keys on MacOS&lt;/a>&lt;/li>
&lt;li>&lt;a href="#create-a-vagrant-vm">Create a vagrant VM&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#implementation">Implementation&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#copy-ssh-key-from-macos-to-linux-vm">Copy ssh-key from MacOS to Linux VM&lt;/a>&lt;/li>
&lt;li>&lt;a href="#configure-the-linux-vm">Configure the Linux VM&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#using-the-client">Using the client&lt;/a>&lt;/li>
&lt;li>&lt;a href="#next-steps">Next steps&lt;/a>&lt;/li>
&lt;/ul>
&lt;/nav>
&lt;/details>
&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>&lt;a href="http://podman.io/" target="_blank" rel="noopener">Podman&lt;/a> is a daemonless, open-source, Linux native tool designed to make it easy to find, run, build, share and deploy applications using
Open Containers Initiative (&lt;a href="https://www.opencontainers.org/" target="_blank" rel="noopener">OCI&lt;/a>) Containers and Container Images.&lt;/p>
&lt;p>That been said, the core of podman only runs in Linux!
To use podman on macOS, we need to implement the &lt;strong>remote client&lt;/strong> to manage container using a Linux as a backend.&lt;/p>
&lt;h3 id="brief-architecture">Brief Architecture&lt;/h3>
&lt;p>The remote client uses a client-server model.
We need Podman installed on a Linux VM that also has the SSH daemon running.
On our MacOS, when you execute a Podman command:&lt;/p>
&lt;ul>
&lt;li>Podman connects to the server via SSH.&lt;/li>
&lt;li>It then connects to the Podman service by using systemd socket activation.&lt;/li>
&lt;li>The Podman commands are executed on the Linux VM.&lt;/li>
&lt;li>From the client&amp;rsquo;s point of view, it seems like Podman runs locally.&lt;/li>
&lt;/ul>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;h3 id="install-podman-on-macos">Install podman on MacOS&lt;/h3>
&lt;p>To install podman remote client on MacOS, we use &lt;a href="https://brew.sh/" target="_blank" rel="noopener">Homebrew&lt;/a>&lt;/p>
&lt;!-- markdownlint-disable commands-show-output -->
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">$ brew install podman
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;!-- markdownlint-restore -->
&lt;h3 id="create-a-new-ssh-keys-on-macos">Create a new ssh-keys on MacOS&lt;/h3>
&lt;p>We will need to connect via ssh to our vagrant VM, in order to do it passwordless, we will create a ssh-key, the commands for that are:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">$ ssh-keygen -t rsa -b &lt;span class="m">4096&lt;/span> -C &lt;span class="s2">&amp;#34;podman+vagrant&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Generating public/private rsa key pair.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Enter file in which to save the key &lt;span class="o">(&lt;/span>/Users/&amp;lt;USERNAME&amp;gt;/.ssh/id_rsa&lt;span class="o">)&lt;/span>:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Enter passphrase &lt;span class="o">(&lt;/span>empty &lt;span class="k">for&lt;/span> no passphrase&lt;span class="o">)&lt;/span>:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Enter same passphrase again:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Your identification has been saved in /Users/&amp;lt;USERNAME&amp;gt;/.ssh/id_rsa.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Your public key has been saved in /Users/&amp;lt;USERNAME&amp;gt;/.ssh/id_rsa.pub.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">The key fingerprint is:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">SHA256:+pGx7Wcn9WdfRYKJrcdMiKEIPKFRW1lQ1MXP/8i0PLA podman+vagrant
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">The key&lt;span class="err">&amp;#39;&lt;/span>s randomart image is:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">+---&lt;span class="o">[&lt;/span>RSA 4096&lt;span class="o">]&lt;/span>----+
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">|&lt;/span> ....&lt;span class="o">=&lt;/span>B+. ooo ..&lt;span class="p">|&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">|&lt;/span> . ++. ..+oo.+ &lt;span class="p">|&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">|&lt;/span> o .. o +oo &lt;span class="o">=&lt;/span>&lt;span class="p">|&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">|&lt;/span> .o+ &lt;span class="p">|&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">|&lt;/span> S ..&lt;span class="p">|&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">|&lt;/span> . &lt;span class="o">=&lt;/span> . . o&lt;span class="p">|&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">|&lt;/span> . + . B oo&lt;span class="p">|&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">|&lt;/span> . o E X o&lt;span class="p">|&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">|&lt;/span> . .+.&lt;span class="o">=&lt;/span> o.&lt;span class="p">|&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">+----&lt;span class="o">[&lt;/span>SHA256&lt;span class="o">]&lt;/span>-----+
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cat /Users/&amp;lt;USERNAME&amp;gt;/.ssh/id_rsa.pub
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ssh-rsa AAAAB3NzaC1y ... &lt;span class="nv">O3JH8w&lt;/span>&lt;span class="o">==&lt;/span> podman+vagrant
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="create-a-vagrant-vm">Create a vagrant VM&lt;/h3>
&lt;p>We will use a Virtual Machine based on &lt;a href="https://getfedora.org/" target="_blank" rel="noopener">Fedora 33&lt;/a>,&lt;/p>
&lt;p>To create the specified Vagrantfile, we need to follow the next steps:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">$ mkdir my-fedora &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> my-fedora
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ &lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;Vagrant.configure(&amp;#34;&lt;/span>2&lt;span class="s2">&amp;#34;) do |config|
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> config.vm.box = &amp;#34;&lt;/span>generic/fedora33&lt;span class="s2">&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> config.vm.hostname = &amp;#34;&lt;/span>my-fedora&lt;span class="s2">&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> config.vm.provider &amp;#34;&lt;/span>virtualbox&lt;span class="s2">&amp;#34; do |v|
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> v.memory = 1024
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> v.cpus = 1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> end
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">end&amp;#34;&lt;/span> &amp;gt;&amp;gt; Vagrantfile
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="implementation">Implementation&lt;/h2>
&lt;p>At this moment we have:&lt;/p>
&lt;ul>
&lt;li>Podman installed&lt;/li>
&lt;li>A ssh-key with no password created&lt;/li>
&lt;li>A VM created with vagrant&lt;/li>
&lt;/ul>
&lt;p>Let&amp;rsquo;s start our implementation&lt;/p>
&lt;h3 id="copy-ssh-key-from-macos-to-linux-vm">Copy ssh-key from MacOS to Linux VM&lt;/h3>
&lt;p>We use the &lt;code>ssh-copy-id&lt;/code> command, and it will ask us for the vagrant user password. The default one is: &lt;strong>vagrant&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">$ ssh-copy-id -i id_rsa.pub vagrant@127.0.0.1 -p &lt;span class="m">2222&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">/usr/bin/ssh-copy-id: INFO: Source of key&lt;span class="o">(&lt;/span>s&lt;span class="o">)&lt;/span> to be installed: &lt;span class="s2">&amp;#34;id_rsa.pub&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key&lt;span class="o">(&lt;/span>s&lt;span class="o">)&lt;/span>, to filter out any that are already installed
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">/usr/bin/ssh-copy-id: INFO: &lt;span class="m">1&lt;/span> key&lt;span class="o">(&lt;/span>s&lt;span class="o">)&lt;/span> remain to be installed -- &lt;span class="k">if&lt;/span> you are prompted now it is to install the new keys
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">vagrant@127.0.0.1&lt;span class="s1">&amp;#39;s password:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">Number of key(s) added: 1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">Now try logging into the machine, with: &amp;#34;ssh -p &amp;#39;&lt;/span>2222&lt;span class="s1">&amp;#39; &amp;#39;&lt;/span>vagrant@127.0.0.1&lt;span class="err">&amp;#39;&lt;/span>&lt;span class="s2">&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">and check to make sure that only the key(s) you wanted were added.
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You can verify connectivity with the command:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">$ ssh vagrant@127.0.0.1 -p &lt;span class="m">2222&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Last login: Tue Feb &lt;span class="m">23&lt;/span> 07:33:45 &lt;span class="m">2021&lt;/span> from 10.0.2.5
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>vagrant@my-fedora ~&lt;span class="o">]&lt;/span>$
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="configure-the-linux-vm">Configure the Linux VM&lt;/h3>
&lt;p>On this step we will:&lt;/p>
&lt;ul>
&lt;li>Install the podman package and dependencies&lt;/li>
&lt;li>Enable the podman service&lt;/li>
&lt;li>Enable the sshd service&lt;/li>
&lt;/ul>
&lt;h4 id="installing-podman">Installing podman&lt;/h4>
&lt;!-- markdownlint-disable commands-show-output -->
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">sudo dnf --enablerepo&lt;span class="o">=&lt;/span>updates-testing install podman libvarlink-util libvarlink
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;!-- markdownlint-restore -->
&lt;h4 id="enableling-the-podman-service">Enableling the podman service&lt;/h4>
&lt;p>We can enable and start the service permanently, using the following commands:&lt;/p>
&lt;!-- markdownlint-disable commands-show-output -->
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">$ systemctl --user &lt;span class="nb">enable&lt;/span> --now podman
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;!-- markdownlint-restore -->
&lt;p>Also, we will need to enable linger for this user in order for the socket to work when the user is not logged in.&lt;/p>
&lt;!-- markdownlint-disable commands-show-output -->
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">sudo loginctl enable-linger &lt;span class="nv">$USER&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;!-- markdownlint-restore -->
&lt;p>You can verify that the socket is listening with a simple Podman command.&lt;/p>
&lt;!-- markdownlint-disable commands-show-output -->
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">$ podman --remote info
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;!-- markdownlint-restore -->
&lt;h4 id="enableling-the-sshd-service">Enableling the sshd service&lt;/h4>
&lt;p>In order for the client to communicate with the server you need to enable and start the SSH daemon on the Linux VM:&lt;/p>
&lt;!-- markdownlint-disable commands-show-output -->
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">$ sudo systemctl &lt;span class="nb">enable&lt;/span> --now sshd
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;!-- markdownlint-restore -->
&lt;h2 id="using-the-client">Using the client&lt;/h2>
&lt;p>The first step in using the Podman remote client is to configure a &lt;strong>connection&lt;/strong>. To do that, we need can add a connection by using the &lt;code>podman system connection add&lt;/code> command.&lt;/p>
&lt;!-- markdownlint-disable commands-show-output -->
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">$ podman system connection add &amp;lt;CONNECTION-NAME&amp;gt; ssh://vagrant@127.0.0.1:2222 --identity &amp;lt;SSH-KEY&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ podman system connection add my-fedora ssh://vagrant@127.0.0.1:2222 --identity ~/.ssh/id_rsa.pub
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;!-- markdownlint-restore -->
&lt;p>We can verify that the connection is in place with the command:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">$ podman system connection list
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Name Identity URI
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">my-fedora* ~/.ssh/id_rsa.pub ssh://vagrant@127.0.0.1:2222/run/user/1000/podman/podman.sock
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Now we can test the connection with the command:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">$ podman info
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">host:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> arch: amd64
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> buildahVersion: 1.18.0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> cgroupManager: systemd
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> cgroupVersion: v2
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> conmon:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> package: conmon-2.0.21-3.fc33.x86_64
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> path: /usr/bin/conmon
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> version: &lt;span class="s1">&amp;#39;conmon version 2.0.21, commit: 0f53fb68333bdead5fe4dc5175703e22cf9882ab&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> cpus: &lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> distribution:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> distribution: fedora
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> version: &lt;span class="s2">&amp;#34;33&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> eventLogger: journald
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> hostname: my-fedora
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ...
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Also, you can start running podman commands as you run them in docker:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">$ podman images
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">REPOSITORY TAG IMAGE ID CREATED SIZE
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="next-steps">Next steps&lt;/h2>
&lt;p>At this point we have installed everything that we need to start using podman on our MacOS, but podman only work if the Linux VM is up &amp;amp; running, otherwise you will receive an error similar to this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">$ podman images
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Error: Cannot connect to the Podman socket, make sure there is a Podman REST API service running.: failed to create sshClient:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Connection to bastion host &lt;span class="o">(&lt;/span>ssh://vagrant@127.0.0.1:2222/run/user/1000/podman/podman.sock&lt;span class="o">)&lt;/span> failed.: dial tcp 127.0.0.1:2222: connect: connection refused
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>To avoid that behavior, what I implement is an automator workflow, here are the steps:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Get the vagrant VM id, to do that run:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">$ vagrant global-status
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">id name provider state directory
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">--------------------------------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">894d683 my-fedora virtualbox running ~/vms/my-fedora
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">The above shows information about all known Vagrant environments
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">on this machine. This data is cached and may not be completely
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">up-to-date &lt;span class="o">(&lt;/span>use &lt;span class="s2">&amp;#34;vagrant global-status --prune&amp;#34;&lt;/span> to prune invalid
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">entries&lt;span class="o">)&lt;/span>. To interact with any of the machines, you can go to that
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">directory and run Vagrant, or you can use the ID directly with
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Vagrant commands from any directory. For example:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;vagrant destroy 1a2b3c4d&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>As you can see we are interested on get the id column, for this example: &lt;strong>894d683&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Now, we need to open &lt;strong>Automator&lt;/strong>, go to &lt;em>Launchpad -&amp;gt; search -&amp;gt; &lt;strong>type&lt;/strong> automator&lt;/em>, do click on the &lt;strong>Automator&lt;/strong> Application&lt;/p>
&lt;figure id="figure-launchpad-automator">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Launchpad &amp;#43; Automator" srcset="
/media/posts/podman-macos-vagrant/launchpad-automator_hub10fc04977027c8a627d4591d43f2044_117882_472f99b504f26e0be7156c95d5e4e80c.webp 400w,
/media/posts/podman-macos-vagrant/launchpad-automator_hub10fc04977027c8a627d4591d43f2044_117882_f96c2f43695360c40f6572355088b89a.webp 760w,
/media/posts/podman-macos-vagrant/launchpad-automator_hub10fc04977027c8a627d4591d43f2044_117882_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://luiscachog.io/media/posts/podman-macos-vagrant/launchpad-automator_hub10fc04977027c8a627d4591d43f2044_117882_472f99b504f26e0be7156c95d5e4e80c.webp"
width="760"
height="192"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Launchpad + Automator
&lt;/figcaption>&lt;/figure>
&lt;/li>
&lt;li>
&lt;p>Then, we need to write an automator application, for this example I choose a workflow that it will run the command &lt;code>vagrant up &amp;lt;VM-ID&amp;gt;&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">$ vagrant up 894d683
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Bringing machine &lt;span class="s1">&amp;#39;my-fedora&amp;#39;&lt;/span> up with &lt;span class="s1">&amp;#39;virtualbox&amp;#39;&lt;/span> provider...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&lt;/span>&amp;gt; default: Checking &lt;span class="k">if&lt;/span> box &lt;span class="s1">&amp;#39;generic/fedora33&amp;#39;&lt;/span> version &lt;span class="s1">&amp;#39;3.2.0&amp;#39;&lt;/span> is up to date...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&lt;/span>&amp;gt; default: A newer version of the box &lt;span class="s1">&amp;#39;generic/fedora33&amp;#39;&lt;/span> &lt;span class="k">for&lt;/span> provider &lt;span class="s1">&amp;#39;virtualbox&amp;#39;&lt;/span> &lt;span class="nv">is&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&lt;/span>&amp;gt; default: available! You currently have version &lt;span class="s1">&amp;#39;3.2.0&amp;#39;&lt;/span>. The latest is &lt;span class="nv">version&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&lt;/span>&amp;gt; default: &lt;span class="s1">&amp;#39;3.2.6&amp;#39;&lt;/span>. Run &lt;span class="sb">`&lt;/span>vagrant box update&lt;span class="sb">`&lt;/span> to update.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&lt;/span>&amp;gt; default: Clearing any previously &lt;span class="nb">set&lt;/span> forwarded ports...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&lt;/span>&amp;gt; default: Clearing any previously &lt;span class="nb">set&lt;/span> network interfaces...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&lt;/span>&amp;gt; default: Preparing network interfaces based on configuration...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default: Adapter 1: &lt;span class="nv">nat&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&lt;/span>&amp;gt; default: Forwarding ports...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default: &lt;span class="m">22&lt;/span> &lt;span class="o">(&lt;/span>guest&lt;span class="o">)&lt;/span> &lt;span class="o">=&lt;/span>&amp;gt; &lt;span class="m">2222&lt;/span> &lt;span class="o">(&lt;/span>host&lt;span class="o">)&lt;/span> &lt;span class="o">(&lt;/span>adapter 1&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&lt;/span>&amp;gt; default: Running &lt;span class="s1">&amp;#39;pre-boot&amp;#39;&lt;/span> VM customizations...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&lt;/span>&amp;gt; default: Booting VM...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&lt;/span>&amp;gt; default: Waiting &lt;span class="k">for&lt;/span> machine to boot. This may take a few minutes...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default: SSH address: 127.0.0.1:2222
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default: SSH username: vagrant
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default: SSH auth method: private &lt;span class="nv">key&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&lt;/span>&amp;gt; default: Machine booted and ready!
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&lt;/span>&amp;gt; default: Checking &lt;span class="k">for&lt;/span> guest additions in VM...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&lt;/span>&amp;gt; default: Setting hostname...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&lt;/span>&amp;gt; default: Machine already provisioned. Run &lt;span class="sb">`&lt;/span>vagrant provision&lt;span class="sb">`&lt;/span> or use the &lt;span class="sb">`&lt;/span>--provision&lt;span class="sb">`&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&lt;/span>&amp;gt; default: flag to force provisioning. Provisioners marked to run always will still run.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;figure id="figure-automator-workflow">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Automator Workflow" srcset="
/media/posts/podman-macos-vagrant/automator-workflow_hu33140a01e2d0efe5b3cf5bd03b1b1e32_62578_671db356fae3c1265815bf2799ad1854.webp 400w,
/media/posts/podman-macos-vagrant/automator-workflow_hu33140a01e2d0efe5b3cf5bd03b1b1e32_62578_e6ac44c59df3f4c80279a56e2b283686.webp 760w,
/media/posts/podman-macos-vagrant/automator-workflow_hu33140a01e2d0efe5b3cf5bd03b1b1e32_62578_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://luiscachog.io/media/posts/podman-macos-vagrant/automator-workflow_hu33140a01e2d0efe5b3cf5bd03b1b1e32_62578_671db356fae3c1265815bf2799ad1854.webp"
width="760"
height="656"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Automator Workflow
&lt;/figcaption>&lt;/figure>
&lt;/li>
&lt;li>
&lt;p>Save the Workflow and remember the location where you save it.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The final step is to add the workflow to our &lt;strong>login items&lt;/strong>. Go to &lt;code>Systems Preferences -&amp;gt; Users &amp;amp; Groups -&amp;gt; Login Items&lt;/code> and add the application that you save on the previous step.&lt;/p>
&lt;figure id="figure-login-items">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Login Items Menu" srcset="
/media/posts/podman-macos-vagrant/login-items_hu93dd3ea80c77a356a834b817262b07a9_45716_97e97a0cb8561eab525154b680b6c691.webp 400w,
/media/posts/podman-macos-vagrant/login-items_hu93dd3ea80c77a356a834b817262b07a9_45716_2bd5042113cdd3dca57352115b6c1390.webp 760w,
/media/posts/podman-macos-vagrant/login-items_hu93dd3ea80c77a356a834b817262b07a9_45716_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://luiscachog.io/media/posts/podman-macos-vagrant/login-items_hu93dd3ea80c77a356a834b817262b07a9_45716_97e97a0cb8561eab525154b680b6c691.webp"
width="670"
height="418"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Login Items Menu
&lt;/figcaption>&lt;/figure>
&lt;p>And that is all, you will have a fully working podman command on your MacOS.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>References:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Podman MacOS and windows install &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/li>
&lt;li>Detailed podman installation on MacOS &lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/li>
&lt;li>Automator Configuration &lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://github.com/containers/podman/blob/master/docs/tutorials/mac_win_client.md" target="_blank" rel="noopener">Podman Remote clients for macOS and Windows&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://vikaspogu.dev/posts/podman-macos/" target="_blank" rel="noopener">Installing Podman remote client on macOS using vagrant&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://stackoverflow.com/questions/30680861/how-can-i-automatically-do-vagrant-up-every-time-my-osx-machine-boots" target="_blank" rel="noopener">How can I automatically do vagrant up every time my OSX machine boots?&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>My journey to become CKA and CKAD</title><link>https://luiscachog.io/my-journey-to-become-cka-and-ckad/</link><pubDate>Thu, 26 Nov 2020 00:00:00 +0000</pubDate><guid>https://luiscachog.io/my-journey-to-become-cka-and-ckad/</guid><description>&lt;p>Hi, people that read me!&lt;/p>
&lt;p>I usually don&amp;rsquo;t write about my achievements. Still, I&amp;rsquo;m proud of what I did, and in this post I want to share my journey to that back in July I passed two essential certifications for me,
the CKA (Certified Kubernetes Administrator) and the CKAD (Certified Kubernetes Application Developer).
Those certs are important to me because one of my professional goals is to apply all my knowledge as an SRE (Site Reliabilty Engineer),
so I&amp;rsquo;m putting all my effort to get trained and gain experience as I believe that Kubernetes is and will continue to be widely used by the industry I want to be part of that.&lt;/p>
&lt;p>I put a lot of hours/practice on my study lately, but my journey started probably 3 years ago, or even more time (don&amp;rsquo;t remember exacly).
Still, I remember that I become interested when I was talking with my friends &lt;a href="https://twitter.com/yazpik" target="_blank" rel="noopener">@yazpik&lt;/a> and &lt;a href="https://twitter.com/tonyskapunk" target="_blank" rel="noopener">@tonyskapunk&lt;/a>
about the new stuff that is comming on tech, by that time they were running a &lt;a href="https://www.meetup.com/Kubernetes-San-Antonio/" target="_blank" rel="noopener">Kubernetes Meetup&lt;/a>
at the &lt;a href="https://rackspace.com" target="_blank" rel="noopener">Castle&lt;/a> and I started to assist to each meetup.&lt;/p>
&lt;p>Being honest, at the begginning, I barely understand all the concepts and projects that the speakers were talking about but once I started to get involved reading blog posts,
practicing (Yeah I did the &lt;a href="https://github.com/kelseyhightower/kubernetes-the-hard-way" target="_blank" rel="noopener">&amp;lsquo;Kubernetes the Hard way&amp;rsquo;&lt;/a> on &lt;a href="https://kubernetes.io/docs/tasks/tools/install-minikube/" target="_blank" rel="noopener">minikube&lt;/a>),
also began to follow and test other exciting projects like &lt;a href="https://rancher.com/" target="_blank" rel="noopener">Rancher&lt;/a>.
So after a while, I started to understand better what the speaker was trying to communicate.
And that helps me a lot to understand not only the basics but some good projects that work in conjunction with Kubernetes.&lt;/p>
&lt;p>With all the meetings that were held on Rackspace I get involved and I wanted to keep learning more so,
I decided to assist to &lt;a href="https://events19.linuxfoundation.org/events/kubecon-cloudnativecon-north-america-2018/" target="_blank" rel="noopener">Kubecon North America 2018&lt;/a> that was held on Seattle,
and I like to think that this set of conferences opened my mind for all the Kubernetes environment,
and I feel that I need to keep learning even more about this awesome technology, that keeps me motivated to get my certifications too,
in a nutshell I feel inspired about the conferences, the comunity, everything and I want to be part of it.&lt;/p>
&lt;p>Talking about community, in that kubecon I met with some Latin-American friends that were interested in Kubernetes like
&lt;a href="https://twitter.com/domix" target="_blank" rel="noopener">@domix&lt;/a>, &lt;a href="https://twitter.com/_marKox" target="_blank" rel="noopener">@marKox&lt;/a>,both from México, and &lt;a href="https://twitter.com/EdduMelendez" target="_blank" rel="noopener">@EdduMelendez&lt;/a> from Peru,
that from their trenches they are trying to grow the Kubernetes community on Spanish.&lt;/p>
&lt;figure id="figure-kubecon-2018">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Mexicanos in Kubecon 2018"
src="https://luiscachog.io/media/posts/my-journey-to-become-a-cka-and-ckad/kubecon-2018.gif"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Mexicanos in Kubecon 2018
&lt;/figcaption>&lt;/figure>
&lt;p>But returning to my certifications path, after a while I decided that I will have the certs by the end on this year, so back in March I get more serious studying and purchased the excellent course
&lt;a href="https://kodekloud.com/courses/certified-kubernetes-administrator-cka/" target="_blank" rel="noopener">Certified Kubernetes Administrator (CKA) with Practice Tests&lt;/a> a course by
&lt;a href="https://twitter.com/mmumshad" target="_blank" rel="noopener">Mumshad Mannambeth&lt;/a> that I highly recommend to reinforce the theory and also,
becasue includes exercises similar to the exam that you can practice.&lt;/p>
&lt;p>Once I feelt confident in me and my knowledge I get my coupon to present the CKA exam, and I passed!&lt;/p>
&lt;figure id="figure-cka-cert">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="My CKA Certification" srcset="
/media/posts/my-journey-to-become-a-cka-and-ckad/cka_hu0f32465aeb1b84b477b34e639cca04fc_5358425_d9b14c1de3eff13616047bd87d1eaa9e.webp 400w,
/media/posts/my-journey-to-become-a-cka-and-ckad/cka_hu0f32465aeb1b84b477b34e639cca04fc_5358425_1d053af47cb5d7f80e5481ce9b01cdbc.webp 760w,
/media/posts/my-journey-to-become-a-cka-and-ckad/cka_hu0f32465aeb1b84b477b34e639cca04fc_5358425_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://luiscachog.io/media/posts/my-journey-to-become-a-cka-and-ckad/cka_hu0f32465aeb1b84b477b34e639cca04fc_5358425_d9b14c1de3eff13616047bd87d1eaa9e.webp"
width="760"
height="587"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
My CKA Certification
&lt;/figcaption>&lt;/figure>
&lt;p>I need tell you, it wasn&amp;rsquo;t easy, mostly because you need to be careful with the time/value of the questions and you need to weigh to reach the passing score, for this exam it was 74%.&lt;/p>
&lt;p>Of course after I get the CKA certitification, I was super happy but on my train of thoughts, I keep thinking that I can use the CKA study as leverage to get the CKAD.&lt;/p>
&lt;p>I already have the fundamentals of a CKA and just need some extra study to complement the CKAD curriculum, so I got commited (my wife too),
and right away I got my CKAD exam coupon and I scheduled the test 2 weeks appart after I decided to get the cert
(That&amp;rsquo;s 3 weeks appart after I took the CKA exam).&lt;/p>
&lt;p>My approach works, I passed the CKAD certification!&lt;/p>
&lt;figure id="figure-ckad-cert">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="My CKAD Certification" srcset="
/media/posts/my-journey-to-become-a-cka-and-ckad/ckad_hu65ed50906ed16f3f565df85d46351117_5396439_83eca461f641ce40130efa967122fba7.webp 400w,
/media/posts/my-journey-to-become-a-cka-and-ckad/ckad_hu65ed50906ed16f3f565df85d46351117_5396439_cd6e3a6afba04723f90ddae290c0ab1d.webp 760w,
/media/posts/my-journey-to-become-a-cka-and-ckad/ckad_hu65ed50906ed16f3f565df85d46351117_5396439_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://luiscachog.io/media/posts/my-journey-to-become-a-cka-and-ckad/ckad_hu65ed50906ed16f3f565df85d46351117_5396439_83eca461f641ce40130efa967122fba7.webp"
width="760"
height="587"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
My CKAD Certification
&lt;/figcaption>&lt;/figure>
&lt;p>Now that I&amp;rsquo;m certified on Kubernetes I will look to be more involved in Cloud Native initiatives on my company,
to apply the knowledge that I already have on current or new projects, and as always keep learning!&lt;/p></description></item></channel></rss>