<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://262.life/feed.xml" rel="self" type="application/atom+xml" /><link href="https://262.life/" rel="alternate" type="text/html" /><updated>2025-09-07T17:39:29+00:00</updated><id>https://262.life/feed.xml</id><title type="html">  </title><subtitle>Enterprise Architecture is totally my DNA!</subtitle><author><name>Bob Liotta</name></author><entry><title type="html">An Honest Assessment of Myself (From AI, Not Me!)</title><link href="https://262.life/productivity/ea/about-ea/" rel="alternate" type="text/html" title="An Honest Assessment of Myself (From AI, Not Me!)" /><published>2025-08-29T00:00:00+00:00</published><updated>2025-08-29T00:00:00+00:00</updated><id>https://262.life/productivity/ea/about-ea</id><content type="html" xml:base="https://262.life/productivity/ea/about-ea/"><![CDATA[<h2 id="attention">Attention</h2>

<p>Most people avoid criticism. I did the opposite.</p>

<p>I asked AI to give me an <strong>unfiltered assessment of myself</strong>—no ego, no politics, no spin.</p>

<p>The verdict? <br />
 Brutally honest. Occasionally funny. Sometimes uncomfortable. And annoyingly accurate.</p>

<hr />

<h2 id="interest">Interest</h2>

<p>Here’s a sample of what AI had to say about me: <br />
 ➡️ <em>“You’re a strategist, not a coder.”</em> <br />
 ➡️ <em>“Your work is invisible until it fails.”</em> <br />
 ➡️ <em>“You balance cost, speed, scalability, and security daily (and it’s as fun as it sounds).”</em></p>

<p>At first, I laughed. Then I winced. Then I realized: these reflections weren’t just true about me—they captured the reality of Enterprise Architecture itself.</p>

<p>Take a few examples from my own work:</p>

<ul>
  <li>
    <p><strong>Strategic Thinking &gt; Firefighting</strong> <br />
 At my organization, I’ve focused on long-term positioning instead of chasing today’s quick fixes.</p>

    <p><strong>One example:</strong> When evaluating cloud solutions, I resisted the temptation to optimize for immediate convenience. Instead, I pushed for designs that avoided <strong>vendor lock-in</strong> — using standards and portable integration patterns so we wouldn’t be boxed in later. That foresight preserved flexibility and negotiating power.</p>

    <p><strong>Another:</strong> Rather than cranking out one-off reports to satisfy immediate demands, I governed and steered a <strong>global data strategy</strong>. By aligning models, pipelines, and governance, we built a foundation leaders can trust. It took more effort upfront, but it prevented the chaos of conflicting numbers and gave us enterprise-wide insights.</p>
  </li>
  <li>
    <p><strong>Governance Without Bureaucracy</strong> <br />
 Governance doesn’t have to mean red tape. When we set up the <strong>global architecture governance forum</strong> and introduced RACI models, it wasn’t about adding hurdles—it was about speeding up decision-making and giving teams clarity.</p>
  </li>
  <li>
    <p><strong>Truth Over Comfort</strong> <br />
 During our <strong>legacy-to-modernization discussions</strong>, I had to say the unpopular thing: leaving old platforms “as-is” might save time now, but it would cripple us in the future. That wasn’t the message people wanted—but avoiding millions in wasted investment was worth the discomfort.</p>
  </li>
  <li>
    <p><strong>Long-Term Value &gt; Short-Term Wins</strong> <br />
 I’ve pushed for embedding <strong>AI-first practices</strong> into our daily workflows—from ServiceNow ticket generation to AI-powered FinOps analysis. It felt disruptive at first, but now AI is part of how we operate, saving time and boosting accuracy.</p>
  </li>
  <li>
    <p><strong>Translation, Not Jargon</strong> <br />
 Architecture diagrams and frameworks mean little if they stay abstract. My role has been to make them real.</p>

    <p>When we scaled our <strong>Kubernetes clusters</strong> globally, I didn’t tell leadership about “node classes, Ceph OSD tuning, or container orchestration.” Instead, I explained it as:</p>

    <ul>
      <li><em>“This design keeps shipments moving even if a data center goes down.”</em></li>
      <li><em>“This approach avoids millions in future cloud overspend.”</em></li>
      <li><em>“This is how we make sure AI workloads don’t collapse when volume spikes.”</em></li>
    </ul>

    <p>That translation mattered. Engineers saw the technical depth, but executives saw customer impact, cost control, and resilience. That’s how EA avoids being “ivory tower” — by making architecture outcomes tangible.</p>
  </li>
</ul>

<h2 id="brutal-reflection-straight-from-the-ai">Brutal Reflection (Straight from the AI)</h2>

<p>Here’s the part that stung a little—but rang true:</p>

<ul>
  <li><em>“You’re a strategist, not a coder.”</em> <br />
 Fair. My value isn’t in patching microservices; it’s in ensuring we don’t build the wrong thing to begin with.</li>
  <li><em>“Your work is invisible until it fails.”</em> <br />
 Exactly. Few people think about the <strong>hundreds of nodes, thousands of containers, terabytes of storage</strong> in our clusters—until something goes down. Then everyone remembers.</li>
  <li><em>“You balance cost, speed, scalability, and security daily.”</em> <br />
 Dead on. It’s a constant tension: FinOps pushing for efficiency, business demanding speed, tech needing scalability, and security reminding us of guardrails. Some days it’s a high-wire act—but it’s also what keeps us resilient.</li>
  <li><em>“You’re operations minded.”</em> <br />
 True—but that doesn’t mean I work <em>in</em> operations. My role isn’t to run systems day-to-day. It’s to design so operations can succeed: stable platforms, clean handoffs, and scale that doesn’t collapse under pressure. Operations runs the train; I make sure the tracks don’t crumble a year from now.</li>
</ul>

<h2 id="desire">Desire</h2>

<p>Why does this matter? Because Enterprise Architecture isn’t about me—it’s about protecting and enabling the whole organization.</p>

<ul>
  <li>It prevents tomorrow’s crises before they start.</li>
  <li>It helps teams avoid reinventing the wheel (and duct-taping it badly).</li>
  <li>It gives leaders confidence that technology isn’t just aligned with strategy—it’s driving it.</li>
</ul>

<p>But architecture doesn’t work in isolation. It only works because of the engineers, analysts, operators, and leaders who bring it to life. My role is to make sure their work scales, lasts, and connects to the bigger picture.</p>

<p>And that’s exactly what AI reminded me: sometimes the hardest truths about yourself are also the clearest truths about your role.</p>

<h2 id="action">Action</h2>

<blockquote>
  <p><strong>So</strong> here’s my challenge to you:</p>

  <p><strong>If you asked AI to describe your values at work—what would it say?</strong>
 <strong>Would you agree with it?</strong>
 <strong>Would you want to read it?</strong></p>
</blockquote>

<p><strong>A Little Humor Helps</strong></p>

<p><img src="/assets/images/about-ea/image.png" alt="" /></p>

<p><img src="/assets/images/about-ea/image2.png" alt="" /></p>]]></content><author><name>Bob Liotta</name></author><category term="productivity" /><category term="EA" /><category term="productivity" /><category term="EA" /><summary type="html"><![CDATA[🔎 Most people avoid criticism. I did the opposite. I asked AI to give me an unfiltered assessment of myself—no ego, no politics, no spin. The verdict? Brutally honest. Occasionally funny. Sometimes uncomfortable. And annoyingly accurate. Click to Read More!]]></summary></entry><entry><title type="html">AI-First at Work: How We’re Embedding AI into Everyday Operations in Our Data &amp;amp; Digital Teams</title><link href="https://262.life/innovation/productivity/ai-first/" rel="alternate" type="text/html" title="AI-First at Work: How We’re Embedding AI into Everyday Operations in Our Data &amp;amp; Digital Teams" /><published>2025-07-28T00:00:00+00:00</published><updated>2025-07-28T00:00:00+00:00</updated><id>https://262.life/innovation/productivity/ai-first</id><content type="html" xml:base="https://262.life/innovation/productivity/ai-first/"><![CDATA[<p><img src="/assets/images/ai-first/ai-bob.gif" alt="" /></p>

<h2 id="-this-isnt-a-thought-experiment--its-our-daily-reality">🚀 This Isn’t a Thought Experiment — It’s Our Daily Reality</h2>

<p>Last Tuesday, one of our developers used AI to write API documentation. He shaved off three hours of work — not by cutting corners, but by focusing on what actually matters.<br />
<!--more-->
And he wasn’t an outlier.</p>

<p>At the organization I work for, moments like that happen every day. Not in a lab. Not on a roadmap. For us, <strong>AI-first</strong> isn’t a talking point — it’s how we work. A mindset we bring into meetings, projects, goal-setting, even how we reflect at the end of each week.</p>

<p>We didn’t start with a massive plan. We started with a single question — one we now ask every week:</p>

<blockquote>
  <p><em>“What did you rethink with AI this week?”</em></p>
</blockquote>

<p>That question is our quiet revolution. It challenges people to look at their day-to-day with fresh eyes. And that small shift? It changes everything.</p>

<h2 id="-understanding-ai-lets-get-real">🧠 Understanding AI: Let’s Get Real</h2>

<p>If we’re going to live and breathe this, we need clarity.</p>

<p>Most of what we call AI today — the tools we actually use — fall under <strong>“weak AI.”</strong> That’s not an insult. It means these systems are built to handle specific tasks: summarizing documents, rewriting code, analyzing patterns. They don’t <strong>think</strong> — but they get results.</p>

<p>“Strong AI,” the stuff of movies and late-night debates, doesn’t exist yet. And honestly, we’re not worried about it. What we have today is enough to transform how we work — if we’re brave enough to use it.</p>

<p>AI is like a power tool in your hand. It doesn’t replace the craftsperson — it sharpens their edge.</p>

<h3 id="-everyday-use-cases-of-weak-ai">🔧 Everyday Use Cases of Weak AI</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Examples</th>
      <th>What AI Does</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Writing &amp; Communication</strong></td>
      <td>ChatGPT, Microsoft Copilot, MAIA</td>
      <td>Drafts emails, rewrites documents, summarizes meetings</td>
    </tr>
    <tr>
      <td><strong>Meetings &amp; Transcripts</strong></td>
      <td>Microsoft Teams &amp; Copilot</td>
      <td>Transcribes calls, extracts action items, summarizes discussions</td>
    </tr>
    <tr>
      <td><strong>Project Management</strong></td>
      <td>Jira Assistants</td>
      <td>Suggests next steps, predicts deadlines, auto-updates tasks</td>
    </tr>
    <tr>
      <td><strong>Coding &amp; DevOps</strong></td>
      <td>GitHub Copilot, Amazon CodeWhisperer, Google Gemini</td>
      <td>Autocompletes code, flags bugs, suggests implementations</td>
    </tr>
    <tr>
      <td><strong>Data Analysis</strong></td>
      <td>Power BI Copilot, DataIKUI</td>
      <td>Natural language data queries, AI-generated visuals</td>
    </tr>
    <tr>
      <td><strong>Security &amp; IT Ops</strong></td>
      <td>CrowdStrike</td>
      <td>Threat detection, automated incident response</td>
    </tr>
    <tr>
      <td><strong>Personal Assistants</strong></td>
      <td>Siri, Google Assistant, Alexa for Business</td>
      <td>Schedules meetings, sets reminders, controls devices</td>
    </tr>
  </tbody>
</table>

<h3 id="-what-they-all-have-in-common">🔁 What They All Have in Common</h3>

<ul>
  <li><strong>Focused intelligence</strong> — Optimized for one task</li>
  <li><strong>No real “understanding”</strong> — Doesn’t reason like a human</li>
  <li><strong>Human-in-the-loop</strong> — Needs prompts, review, and validation</li>
  <li><strong>Limited scope</strong> — Can’t adapt outside their domain</li>
</ul>

<h2 id="-how-we-made-ai-part-of-our-culture">🔥 How We Made AI Part of Our Culture</h2>

<p>What made this real for us wasn’t a memo. It was action — repeated, simple, human action.</p>

<p><img src="/assets/images/ai-first/image.png" style="float: left; margin-right: 10px; width: 300px;" /></p>

<p>I didn’t just endorse AI — I used it, and I shared examples in team meetings. <strong>That made it safe for others to try.</strong>  More importantly, we built a space where trying something new (and maybe failing) wasn’t just accepted — it was encouraged.</p>

<p>Every time someone said, “Hey, I used AI for this and it saved me an hour,” they shared it. That’s how culture shifts — not with banners, but with courage.</p>

<h2 id="-real-stories-from-inside-our-team">📍 Real Stories from Inside Our Team</h2>

<p>These aren’t initiatives. They’re habits. This isn’t theory — it’s how we work.</p>

<h3 id="-learning-by-doing">🎓 Learning by Doing</h3>

<p><img src="/assets/images/ai-first/image%202.png" alt="Alt text" style="float: right; margin-left: 1em; width: 300px;" /></p>

<p>The organization I work for sent me through Tangram AI training — not just slides and a certificate, but 12+ hours of pre-work and five intense days of hands-on labs. I came back energized, not just informed. Because when leaders feel it, they spread it.  <strong>What you cannot see in the photo is the team was operating trucks, managing paperwork,  and moving containers from trucks to ships all with our hands!</strong></p>

<h3 id="-coding-with-a-second-brain">💻 Coding with a Second Brain</h3>

<p><img src="/assets/images/ai-first/image%203.png" alt="Alt text" style="float: right; margin-left: 1em; width: 300px;" /></p>

<p>In development, AI became a co-pilot — helping us write code, document changes, and build smarter.  I mentioned an example at the beginning of this article.</p>

<h3 id="️-rethinking-goals-together">🗂️ Rethinking Goals, Together</h3>

<p><img src="/assets/images/ai-first/image%204.png" alt="Alt text" style="float: right; margin-left: 1em; width: 300px;" /></p>

<p>When it came time to write team goals, we didn’t start from scratch. We used large language models to draft, edit, and refine. The result was clear, collaborative, and aligned — not just approved.</p>

<h3 id="-ai-in-the-background--quietly-powerful">🧠 AI in the Background — Quietly Powerful</h3>

<p><img src="/assets/images/ai-first/image%208.png" alt="Alt text" style="float: right; margin-left: 1em; width: 300px;" /></p>

<p>In operations, AI became an invisible helper. It pulled insights from emails, created executive summaries, even opened ServiceNow tickets. Hours saved. Clarity gained.  Here’s and example prompt you can try:</p>

<p><em>“Need a brilliant presentation about how to use ServiceNOW as not only a support tool but also a knowledgebase.  This should include cool meaningful pictures and artwork including an inspirational Video at the end!”</em></p>

<h3 id="-smarter-finops">💰 Smarter FinOps</h3>

<p><img src="/assets/images/ai-first/image%205.png" alt="Alt text" style="float: right; margin-left: 1em; width: 300px;" /></p>

<p>We use AI to break down Kubernetes costs, assist with chargebacks, and guide teams toward better architecture. It’s like having a CFO and cloud engineer in your pocket — running 24/7.</p>

<h3 id="-decision-making-on-another-level">🔬 Decision-Making on Another Level</h3>

<p><img src="/assets/images/ai-first/image%207.png" alt="Alt text" style="float: right; margin-left: 1em; width: 300px;" /></p>

<p>When weighing canonical vs. unstructured data models, AI didn’t make the decision — but it surfaced the insights that mattered. It filtered articles, decks, and discussions — turning noise into clarity.</p>

<h2 id="-the-truth-ai-isnt-coming-for-your-job">❗ The Truth: AI Isn’t Coming for Your Job</h2>

<p>Let’s kill the fear-mongering. AI isn’t here to take your job — it’s here to take the junk work off your plate.</p>

<p>What’s really at stake? Your time. Your focus. Your ability to do your best thinking.</p>

<p>The real threat isn’t AI. It’s the person next to you who’s figured out how to use it — and now gets more done, with better insight and less stress.</p>

<p>Use it to:</p>
<ul>
  <li><strong>Automate grunt work</strong> — so you can focus on strategy</li>
  <li><strong>Accelerate decision-making</strong> — with faster, clearer inputs</li>
  <li><strong>Amplify your strengths</strong> — by offloading the robotic tasks</li>
</ul>

<p><strong>Start small. Pick one task this week to rethink with AI — and reclaim your edge.</strong></p>

<h2 id="-final-thought-this-isnt-about-tools-its-about-trust">🎯 Final Thought: This Isn’t About Tools. It’s About Trust.</h2>

<p>At the organization I work for, AI isn’t future-facing — it’s already part of how we work. Every day. In real ways.</p>

<p>It’s not perfect. Neither are we. But when we use AI consistently, we’re not just saving time — we’re creating space to think, lead, and connect.</p>

<p>This isn’t humans vs. AI. It’s <strong>humans with AI</strong> — thinking bigger, working better, growing faster.</p>

<h2 id="-want-to-start">👋 Want to Start?</h2>

<blockquote>
  <p>In your next team meeting, try asking: <strong><em>‘What did you rethink with AI this week?’</em></strong> It won’t just change the conversation — it might change your culture.</p>
</blockquote>]]></content><author><name>Bob Liotta</name></author><category term="innovation" /><category term="productivity" /><category term="innovation" /><category term="productivity" /><summary type="html"><![CDATA[🚀 This Isn’t a Thought Experiment — It’s Our Daily Reality Last Tuesday, one of our developers used AI to write API documentation. He shaved off three hours of work — not by cutting corners, but by focusing on what actually matters.]]></summary></entry><entry><title type="html">Beeline</title><link href="https://262.life/intro-to-beeline/" rel="alternate" type="text/html" title="Beeline" /><published>2024-09-01T00:00:00+00:00</published><updated>2024-09-01T00:00:00+00:00</updated><id>https://262.life/intro-to-beeline</id><content type="html" xml:base="https://262.life/intro-to-beeline/"><![CDATA[<p><img align="left" src="/assets/images/K8-Beeline.png" /></p>
<h1 id="quick-and-easy-guide-to-beeline-shortcuts-for-kubectl">Quick and Easy guide to Beeline shortcuts for kubectl</h1>
<!--more-->
<p>I absolutely love open-source and believe 100% that it’s the best way to develop software.  In the last few years I dedicated and invested much of my time in Kubernetes and containerization.  I love working with the command line. Seriously I don’t think there is a more effective way to interact in a computing environment for development, administration or just outright tinkering.  Don’t get me wrong, I have nothing against UI/GUI and they are great in a pinch and a great way to familiarize yourself with an application.  I use kubectl quite extensively and eventually the typing becomes a bit exhausting for repetitive tasks.  There are lot’s of extensions available for kubectl but I wanted to create something straight forward and easy to use and even extend if you want to.  It’s called Beeline and it is a number of shortcuts and aliases for zsh and bash.  It was designed to use on the command-line, integrated with autocomplete, and also in a bash script that is easy to read and follow for many procedural tasks like installing a helm chart.</p>

<p>This post will give you the same two minute introduction about Beeline and its possibilities, followed by the typical 10 minute hands-on guide to set up and get to know Beeline yourself. If you’ve got 10 minutes to spare and finally want to be more proficient with Beeline: read on! Otherwise, if you already use zsh and already installed <a href="https://ohmyz.sh/">oh-my-zsh</a>, just us the /quick primer/</p>

<h2 id="tldr-this-is-the-lazy-version--">TLDR; This is the lazy version. . .</h2>
<div class="language-applescript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">#####  Setup Beeline</span><span class="w">

</span><span class="c1">## Defaults if you like</span><span class="w">
</span><span class="nv">export</span><span class="w"> </span><span class="nv">KS_CONTEXT</span><span class="o">=</span><span class="err">'</span><span class="nv">cities</span><span class="err">'</span><span class="w">
</span><span class="nv">export</span><span class="w"> </span><span class="nv">KS_NAMESPACE</span><span class="o">=</span><span class="err">'</span><span class="nv">kube</span><span class="o">-</span><span class="nv">system</span><span class="err">'</span><span class="w">

</span><span class="err">[[</span><span class="w"> </span><span class="p">!</span><span class="w"> </span><span class="o">-</span><span class="nv">f</span><span class="w"> </span><span class="err">~</span><span class="o">/</span><span class="p">.</span><span class="nv">beeline</span><span class="p">.</span><span class="nv">k8s</span><span class="w"> </span><span class="err">]]</span><span class="w">  </span><span class="err">\</span><span class="w">
</span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nv">curl</span><span class="w"> </span><span class="o">-</span><span class="nv">s</span><span class="w"> </span><span class="o">-</span><span class="nv">L</span><span class="w"> </span><span class="nv">https</span><span class="p">:</span><span class="o">//</span><span class="nv">github</span><span class="p">.</span><span class="nv">com</span><span class="o">/</span><span class="mi">262</span><span class="nv">life</span><span class="o">/</span><span class="nv">beeline</span><span class="o">/</span><span class="nv">releases</span><span class="o">/</span><span class="nv">latest</span><span class="o">/</span><span class="nv">download</span><span class="o">/</span><span class="nv">beeline</span><span class="p">.</span><span class="nv">sh</span><span class="w">  </span><span class="o">&gt;</span><span class="w"> </span><span class="err">~</span><span class="o">/</span><span class="p">.</span><span class="nv">beeline</span><span class="p">.</span><span class="nv">k8s</span><span class="w">

</span><span class="na">source</span><span class="w"> </span><span class="err">~</span><span class="o">/</span><span class="p">.</span><span class="nv">beeline</span><span class="p">.</span><span class="nv">k8s</span><span class="w">
</span><span class="c1">##### End of Beeline</span><span class="w">
</span></code></pre></div></div>

<p>That’s it.  Type kh to get a list of shortcuts.</p>

<h2 id="full-installation">Full Installation</h2>

<p>To use the shortcut scripts it is <em>required</em> that you have setup either bash or zsh completion in advance.  Beeline will enable kubectl’s auto completion on your behalf.</p>

<h3 id="installing-zsh">Installing ZSH</h3>
<p>This has been tested on macOS, Ubuntu, and Windows WSL2.</p>

<p>I highly recommend changing your login shell to zsh.  It is <em>now</em> the <span style="color:lightgreen"><em>macOS</em></span> default.  For Ubuntu or WSL2, the following will install zsh.  If prompted, choose any defaults.</p>

<div class="language-applescript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">sudo</span><span class="w"> </span><span class="nv">apt</span><span class="w"> </span><span class="nv">install</span><span class="w"> </span><span class="nv">zsh</span><span class="w">
</span></code></pre></div></div>

<p>and to enable autocomplete for zsh on all of the supported environments, install <a href="https://ohmyz.sh/">oh-my-zsh</a> as follows:</p>

<div class="language-applescript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">sh</span><span class="w"> </span><span class="o">-</span><span class="nv">c</span><span class="w"> </span><span class="s2">"$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"</span><span class="w">
</span></code></pre></div></div>

<p>To enable these shortcuts you must source them into your shell.  This is dependent on the shell you are using.
You can either download the desired version you would like or if you are lazy like me do something like this if you use zsh:</p>

<div class="language-applescript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">#####  Setup Beeline</span><span class="w">

</span><span class="c1">## Defaults if you like</span><span class="w">
</span><span class="nv">export</span><span class="w"> </span><span class="nv">KS_CONTEXT</span><span class="o">=</span><span class="err">'</span><span class="nv">cities</span><span class="err">'</span><span class="w">
</span><span class="nv">export</span><span class="w"> </span><span class="nv">KS_NAMESPACE</span><span class="o">=</span><span class="err">'</span><span class="nv">kube</span><span class="o">-</span><span class="nv">system</span><span class="err">'</span><span class="w">

</span><span class="err">[[</span><span class="w"> </span><span class="p">!</span><span class="w"> </span><span class="o">-</span><span class="nv">f</span><span class="w"> </span><span class="err">~</span><span class="o">/</span><span class="p">.</span><span class="nv">beeline</span><span class="p">.</span><span class="nv">k8s</span><span class="w"> </span><span class="err">]]</span><span class="w">  </span><span class="err">\</span><span class="w">
</span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nv">curl</span><span class="w"> </span><span class="o">-</span><span class="nv">s</span><span class="w"> </span><span class="o">-</span><span class="nv">L</span><span class="w"> </span><span class="nv">https</span><span class="p">:</span><span class="o">//</span><span class="nv">github</span><span class="p">.</span><span class="nv">com</span><span class="o">/</span><span class="mi">262</span><span class="nv">life</span><span class="o">/</span><span class="nv">beeline</span><span class="o">/</span><span class="nv">releases</span><span class="o">/</span><span class="nv">latest</span><span class="o">/</span><span class="nv">download</span><span class="o">/</span><span class="nv">beeline</span><span class="p">.</span><span class="nv">sh</span><span class="w">  </span><span class="o">&gt;</span><span class="w"> </span><span class="err">~</span><span class="o">/</span><span class="p">.</span><span class="nv">beeline</span><span class="p">.</span><span class="nv">k8s</span><span class="w">

</span><span class="na">source</span><span class="w"> </span><span class="err">~</span><span class="o">/</span><span class="p">.</span><span class="nv">beeline</span><span class="p">.</span><span class="nv">k8s</span><span class="w">
</span><span class="c1">##### End of Beeline</span><span class="w">
</span></code></pre></div></div>
<p>Take note to edit the KS_CONTEXT and KS_NAMESPACE values to your liking.</p>

<p>Restart your shell and you should be good to go!</p>

<p>Now, review the <a href="https://github.com/262life/beeline/blob/master/DOCUMENTATION.md">usage documentation</a></p>

<h2 id="getting-started-with-beeline">Getting started with Beeline</h2>

<p>At the heart of Beeline are the two most important and essential shortcuts; <em>kc</em> and <em>kn</em>.  These control the context of the session you are in.  Wait?  Did I say session?  kubectl sets the contexts in the config file and if multiple windows are open as the same user, it’s shared right?  Well with Beeline that is not the case!  You can have multiple windows open or even multiple shells and the context stays with the current shell!  Cool right?</p>

<p>Example:</p>
<div class="language-applescript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">[</span><span class="nv">B</span><span class="p">:</span><span class="nv">cities</span><span class="p">:</span><span class="nv">kube</span><span class="o">-</span><span class="nv">system</span><span class="err">]</span><span class="w"> </span><span class="nv">liottar</span><span class="p">:</span><span class="o">/</span><span class="nv">Users</span><span class="o">/</span><span class="nv">liottar</span><span class="err">$</span><span class="w"> </span><span class="nv">kc</span><span class="w"> </span><span class="nv">cities</span><span class="w"> </span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="w">
</span><span class="nv">Context</span><span class="w"> </span><span class="s2">"cities"</span><span class="w"> </span><span class="na">modified</span><span class="p">.</span><span class="w">
</span><span class="nv">Property</span><span class="w"> </span><span class="s2">"current-context"</span><span class="w"> </span><span class="k">set</span><span class="p">.</span><span class="w">
</span><span class="err">[</span><span class="nv">B</span><span class="p">:</span><span class="nv">cities</span><span class="p">:</span><span class="nv">kube</span><span class="o">-</span><span class="nv">system</span><span class="err">]</span><span class="w"> </span><span class="nv">liottar</span><span class="p">:</span><span class="o">/</span><span class="nv">Users</span><span class="o">/</span><span class="nv">liottar</span><span class="err">$</span><span class="w"> </span><span class="nv">kn</span><span class="w"> </span><span class="nv">kube</span><span class="o">-</span><span class="nv">system</span><span class="w">

</span><span class="nv">Cluster</span><span class="w">    </span><span class="p">:</span><span class="w"> </span><span class="nv">Cities</span><span class="w"> </span><span class="nv">Cluster</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nv">Location</span><span class="p">:</span><span class="w"> </span><span class="nv">St</span><span class="p">.</span><span class="w"> </span><span class="nv">Augustine</span><span class="w"> </span><span class="nv">FL</span><span class="w">
</span><span class="nv">Context</span><span class="w">    </span><span class="p">:</span><span class="w"> </span><span class="nv">cities</span><span class="w">
</span><span class="nv">Namespace</span><span class="w">  </span><span class="p">:</span><span class="w"> </span><span class="nv">kube</span><span class="o">-</span><span class="nv">system</span><span class="w">

</span><span class="nv">Context</span><span class="w"> </span><span class="s2">"cities"</span><span class="w"> </span><span class="na">modified</span><span class="p">.</span><span class="w">
</span><span class="nv">Property</span><span class="w"> </span><span class="s2">"current-context"</span><span class="w"> </span><span class="k">set</span><span class="p">.</span><span class="w">
</span></code></pre></div></div>

<h3 id="about-the-config-files">About the config files</h3>

<p>If you have a number of kubernetes clusters to manage like I do, one of the more complicated aspects of kubectl becomes managing the config files.  This file can become long and extremely hard to read even for expert users.</p>

<p>Beeline takes care of this allowing you to keep a separate config file for each cluster like this example:</p>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">apiVersion</span><span class="pi">:</span> <span class="s">v1</span>
<span class="na">clusters</span><span class="pi">:</span>
<span class="pi">-</span> <span class="na">cluster</span><span class="pi">:</span>
    <span class="na">certificate-authority-data</span><span class="pi">:</span> <span class="s">LS0tLS1CRUdJTiBDRL35SUZJQ0FURS0tLS0tCk1JSUJlRENDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUyTWpBMk5UUTBNall3SGhjTk1qRXdOVEV3TVRNME56QTJXaGNOTXpFd05UQTRNVE0wTnpBMgpXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUyTWpBMk5UUTBNall3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFSaTJmSDNJY3QzZS9VSUtaS2hFOVRQeVJBYVBnNzRuY1VxQUlCUVI5YmYKMGJNaFpUVVhlWjhnUnRNZVFwY1lqZ1pHWEtXZVV5SW5LZFBmYlZuMU4zazhvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVTZkVWdqU1BuQU83OGpqYm9WVlJWCm1BV1BMVjB3Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQUtMT0Ivd2hpQmJFd2prUE5wQ0VqZTFnYWM4Z3hZS2QKSWdKOFB6QUFzQkJ0QWlFQXU5TWw0R0wxN1ZPNEk3L0FRWmVBUnJQK3JxVlpzR3crMzBWbHVlMGtXakU9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K</span>
    <span class="na">server</span><span class="pi">:</span> <span class="s">https://cluster.internaldomain.com:6443</span>
  <span class="na">name</span><span class="pi">:</span> <span class="s">cities</span>
<span class="na">contexts</span><span class="pi">:</span>
<span class="pi">-</span> <span class="na">context</span><span class="pi">:</span>
    <span class="na">cluster</span><span class="pi">:</span> <span class="s">cities</span>
    <span class="na">namespace</span><span class="pi">:</span> 
    <span class="na">user</span><span class="pi">:</span> <span class="s">cities</span>
  <span class="na">name</span><span class="pi">:</span> <span class="s">cities</span>
<span class="na">current-context</span><span class="pi">:</span> <span class="s">cities</span>
<span class="na">kind</span><span class="pi">:</span> <span class="s">Config</span>
<span class="na">preferences</span><span class="pi">:</span> <span class="pi">{}</span>
<span class="na">users</span><span class="pi">:</span>
<span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s">cities</span>
  <span class="na">user</span><span class="pi">:</span>
    <span class="na">client-certificate-data</span><span class="pi">:</span> <span class="s">LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1J3X4rVENDQVRlZ0F3SUJBZ0lJY05rbFVtTUcwL1l3Q2dZSUtvWkl6ajBFQXdJd0l6RWhNQjhHQTFVRUF3d1kKYXpOekxXTnNhV1Z1ZEMxallVQXhOakl3TmpVME5ESTJNQjRYRFRJeE1EVXhNREV6TkRjd05sb1hEVEl5TURVeApNREV6TkRjd05sb3dNREVYTUJVR0ExVUVDaE1PYzNsemRHVnRPbTFoYzNSbGNuTXhGVEFUQmdOVkJBTVRESE41CmMzUmxiVHBoWkcxcGJqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJENEJrczQwK00xZjJLUkcKLzdHR2tHZkNVOWdUT2JKeDZxVEdVbG9TSzZha3htcmwzaEdTb2FKbjc1S1F4OWw2cW5aZFJmWmFSazN2NnZEUQpCeXhtU0NLalNEQkdNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RBakFmCkJnTlZIU01FR0RBV2dCVEVzT1pPU2VnMDh6OTNSVFhob1g3SmVwVG9mekFLQmdncWhrak9QUVFEQWdOSUFEQkYKQWlFQXEwVmhyTXpnVk80WDYyWDg1QXBNZ1haa0EwTE11NUFNWitRTlBZaGVLOTRDSUM3N0RpTVlXQXlXZFdkcQoydjZpdGZJeDhqbTl6d0JldXFTTjd3TzJYKzBsCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkakNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdFkyeHAKWlc1MExXTmhRREUyTWpBMk5UUTBNall3SGhjTk1qRXdOVEV3TVRNME56QTJXaGNOTXpFd05UQTRNVE0wTnpBMgpXakFqTVNFd0h3WURWUVFEREJock0zTXRZMnhwWlc1MExXTmhRREUyTWpBMk5UUTBNall3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFUMG5oUXIwNWpqa3RrSmVZMXJUUGN3T2poWXpCTk92dnZyT1hLdU9hTmMKSWFyYVMxV1Zibmthb1NJRW40OGNmVmdmUmNlcGw3Y0kvT3ltajA1Y3dYWjNvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVXhMRG1Ua25vTlBNL2QwVTE0YUYrCnlYcVU2SDh3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnSjBiRlVmUk5tRE15WjUzRFpnRllLWWNLTitlelhOSVcKMVRSTkdDcWZ3NzBDSUVDTitiOTJva0NSYUtGeFlVcE4xYW1NMmoyMjd6NGdaenZYUDNibWR4eEUKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=</span>
    <span class="na">client-key-data</span><span class="pi">:</span> <span class="s">LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSU02dS9DaExlZkx0AHNrcGI2ZHMveFQxQlVsdGVzZFB0ZkxXNUFOZEVLSmZvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFUGdHU3pqVDR6Vi9ZcEViL3NZYVFaOEpUMkJNNXNuSHFwTVpTV2hJcnBxVEdhdVhlRVpLaApvbWZ2a3BESDJYcXFkbDFGOWxwR1RlL3E4TkFITEdaSUlnPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo=</span>

</code></pre></div></div>
<p>As you can see, it’s easy to read as a single YAML file therefore quote effect.  How do you make use?  Just add one or many of these files one for each cluster in your $HOME/.kube file and give it a .cfg extension and that’s all you need to do.  Beeline will take care of the rest.</p>

<p><span style="color:lightgreen"><em>Note:  Do NOT remove the config file as it will be used as well.</em></span></p>

<h2 id="practical-examples">Practical Examples</h2>

<p>Set context and namespace</p>
<div class="language-applescript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">[</span><span class="nv">B</span><span class="p">:</span><span class="nv">cities</span><span class="p">:</span><span class="nv">kube</span><span class="o">-</span><span class="nv">system</span><span class="err">]</span><span class="w"> </span><span class="nv">liottar</span><span class="p">:</span><span class="o">/</span><span class="nv">Users</span><span class="o">/</span><span class="nv">liottar</span><span class="o">/</span><span class="nv">projects</span><span class="o">/</span><span class="mi">262</span><span class="nv">life</span><span class="o">/</span><span class="nv">beeline</span><span class="err">$</span><span class="w"> </span><span class="nv">kc</span><span class="w"> </span><span class="nv">cities</span><span class="w"> </span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="w">

</span><span class="nv">Cluster</span><span class="w">    </span><span class="p">:</span><span class="w"> </span><span class="nv">Cities</span><span class="w"> </span><span class="nv">Cluster</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nv">Location</span><span class="p">:</span><span class="w"> </span><span class="nv">St</span><span class="p">.</span><span class="w"> </span><span class="nv">Augustine</span><span class="w"> </span><span class="nv">FL</span><span class="w">
</span><span class="nv">Context</span><span class="w">    </span><span class="p">:</span><span class="w"> </span><span class="nv">cities</span><span class="w">
</span><span class="nv">Namespace</span><span class="w">  </span><span class="p">:</span><span class="w"> </span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="w">

</span><span class="nv">Context</span><span class="w"> </span><span class="s2">"cities"</span><span class="w"> </span><span class="na">modified</span><span class="p">.</span><span class="w">
</span><span class="nv">Property</span><span class="w"> </span><span class="s2">"current-context"</span><span class="w"> </span><span class="k">set</span><span class="p">.</span><span class="w">
</span><span class="nv">Context</span><span class="w"> </span><span class="s2">"cities"</span><span class="w"> </span><span class="na">modified</span><span class="p">.</span><span class="w">
</span><span class="nv">Property</span><span class="w"> </span><span class="s2">"current-context"</span><span class="w"> </span><span class="k">set</span><span class="p">.</span><span class="w">
</span><span class="err">[</span><span class="nv">B</span><span class="p">:</span><span class="nv">cities</span><span class="p">:</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="err">]</span><span class="w"> </span><span class="nv">liottar</span><span class="p">:</span><span class="o">/</span><span class="nv">Users</span><span class="o">/</span><span class="nv">liottar</span><span class="o">/</span><span class="nv">projects</span><span class="o">/</span><span class="mi">262</span><span class="nv">life</span><span class="o">/</span><span class="nv">beeline</span><span class="err">$</span><span class="w">
</span></code></pre></div></div>

<p>Get context and namespace</p>
<div class="language-applescript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">[</span><span class="nv">B</span><span class="p">:</span><span class="nv">cities</span><span class="p">:</span><span class="nv">kube</span><span class="o">-</span><span class="nv">system</span><span class="err">]</span><span class="w"> </span><span class="nv">liottar</span><span class="p">:</span><span class="o">/</span><span class="nv">Users</span><span class="o">/</span><span class="nv">liottar</span><span class="err">$</span><span class="w"> </span><span class="nv">kc</span><span class="w">

</span><span class="nv">Cluster</span><span class="w">    </span><span class="p">:</span><span class="w"> </span><span class="nv">Cities</span><span class="w"> </span><span class="nv">Cluster</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nv">Location</span><span class="p">:</span><span class="w"> </span><span class="nv">St</span><span class="p">.</span><span class="w"> </span><span class="nv">Augustine</span><span class="w"> </span><span class="nv">FL</span><span class="w">
</span><span class="nv">Context</span><span class="w">    </span><span class="p">:</span><span class="w"> </span><span class="nv">cities</span><span class="w">
</span><span class="nv">Namespace</span><span class="w">  </span><span class="p">:</span><span class="w"> </span><span class="nv">kube</span><span class="o">-</span><span class="nv">system</span><span class="w">

</span><span class="nv">Context</span><span class="w"> </span><span class="s2">"cities"</span><span class="w"> </span><span class="na">modified</span><span class="p">.</span><span class="w">
</span><span class="nv">Property</span><span class="w"> </span><span class="s2">"current-context"</span><span class="w"> </span><span class="k">set</span><span class="p">.</span><span class="w">
</span></code></pre></div></div>

<p>Get all pods with wide output</p>
<div class="language-applescript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">[</span><span class="nv">B</span><span class="p">:</span><span class="nv">cities</span><span class="p">:</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="err">]</span><span class="w"> </span><span class="nv">liottar</span><span class="p">:</span><span class="o">/</span><span class="nv">Users</span><span class="o">/</span><span class="nv">liottar</span><span class="err">$</span><span class="w"> </span><span class="nv">kgp</span><span class="w"> </span><span class="o">-</span><span class="nv">owide</span><span class="w">
</span><span class="nv">NAME</span><span class="w">                                                     </span><span class="nv">READY</span><span class="w">   </span><span class="nv">STATUS</span><span class="w">      </span><span class="nv">RESTARTS</span><span class="w">   </span><span class="nv">AGE</span><span class="w">   </span><span class="nv">IP</span><span class="w">              </span><span class="nv">NODE</span><span class="w">       </span><span class="nv">NOMINATED</span><span class="w"> </span><span class="nv">NODE</span><span class="w">   </span><span class="nv">READINESS</span><span class="w"> </span><span class="nv">GATES</span><span class="w">
</span><span class="nv">csi</span><span class="o">-</span><span class="nv">cephfsplugin</span><span class="o">-</span><span class="mi">2</span><span class="nv">xt6f</span><span class="w">                                   </span><span class="mi">3</span><span class="o">/</span><span class="mi">3</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">3</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">192.168</span><span class="p">.</span><span class="mf">1.241</span><span class="w">   </span><span class="nv">moscow</span><span class="w">     </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">csi</span><span class="o">-</span><span class="nv">cephfsplugin</span><span class="o">-</span><span class="nv">provisioner</span><span class="o">-</span><span class="mi">78</span><span class="nv">d66674d8</span><span class="o">-</span><span class="nv">fxkk4</span><span class="w">            </span><span class="mi">6</span><span class="o">/</span><span class="mi">6</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">2.11</span><span class="w">      </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">csi</span><span class="o">-</span><span class="nv">cephfsplugin</span><span class="o">-</span><span class="nv">provisioner</span><span class="o">-</span><span class="mi">78</span><span class="nv">d66674d8</span><span class="o">-</span><span class="nv">qqvvh</span><span class="w">            </span><span class="mi">6</span><span class="o">/</span><span class="mi">6</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">0.20</span><span class="w">      </span><span class="nv">miami</span><span class="w">      </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">csi</span><span class="o">-</span><span class="nv">cephfsplugin</span><span class="o">-</span><span class="nv">rhsj2</span><span class="w">                                   </span><span class="mi">3</span><span class="o">/</span><span class="mi">3</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">3</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">192.168</span><span class="p">.</span><span class="mf">1.243</span><span class="w">   </span><span class="nv">miami</span><span class="w">      </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">csi</span><span class="o">-</span><span class="nv">cephfsplugin</span><span class="o">-</span><span class="nv">sgwmj</span><span class="w">                                   </span><span class="mi">3</span><span class="o">/</span><span class="mi">3</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">3</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">192.168</span><span class="p">.</span><span class="mf">1.242</span><span class="w">   </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">csi</span><span class="o">-</span><span class="nv">rbdplugin</span><span class="o">-</span><span class="mi">68</span><span class="nv">x8h</span><span class="w">                                      </span><span class="mi">3</span><span class="o">/</span><span class="mi">3</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">3</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">192.168</span><span class="p">.</span><span class="mf">1.243</span><span class="w">   </span><span class="nv">miami</span><span class="w">      </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">csi</span><span class="o">-</span><span class="nv">rbdplugin</span><span class="o">-</span><span class="nv">j5sqc</span><span class="w">                                      </span><span class="mi">3</span><span class="o">/</span><span class="mi">3</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">3</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">192.168</span><span class="p">.</span><span class="mf">1.242</span><span class="w">   </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">csi</span><span class="o">-</span><span class="nv">rbdplugin</span><span class="o">-</span><span class="nv">m5ccj</span><span class="w">                                      </span><span class="mi">3</span><span class="o">/</span><span class="mi">3</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">3</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">192.168</span><span class="p">.</span><span class="mf">1.241</span><span class="w">   </span><span class="nv">moscow</span><span class="w">     </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">csi</span><span class="o">-</span><span class="nv">rbdplugin</span><span class="o">-</span><span class="nv">provisioner</span><span class="o">-</span><span class="mi">687</span><span class="nv">cf777ff</span><span class="o">-</span><span class="mi">4</span><span class="nv">t8cv</span><span class="w">               </span><span class="mi">6</span><span class="o">/</span><span class="mi">6</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">6</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">1.131</span><span class="w">     </span><span class="nv">moscow</span><span class="w">     </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">csi</span><span class="o">-</span><span class="nv">rbdplugin</span><span class="o">-</span><span class="nv">provisioner</span><span class="o">-</span><span class="mi">687</span><span class="nv">cf777ff</span><span class="o">-</span><span class="nv">ddvzq</span><span class="w">               </span><span class="mi">6</span><span class="o">/</span><span class="mi">6</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">0.21</span><span class="w">      </span><span class="nv">miami</span><span class="w">      </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">csi</span><span class="o">-</span><span class="nv">detect</span><span class="o">-</span><span class="nb">version</span><span class="o">-</span><span class="nv">v9ggr</span><span class="w">                       </span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Completed</span><span class="w">   </span><span class="mi">0</span><span class="w">          </span><span class="mi">54</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">0.19</span><span class="w">      </span><span class="nv">miami</span><span class="w">      </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">mds</span><span class="o">-</span><span class="nv">rsliotta</span><span class="o">-</span><span class="nv">fs</span><span class="o">-</span><span class="nv">a</span><span class="o">-</span><span class="mi">5</span><span class="nv">db685547d</span><span class="o">-</span><span class="nv">z6mz2</span><span class="w">             </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">332</span><span class="w">        </span><span class="mi">67</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">1.123</span><span class="w">     </span><span class="nv">moscow</span><span class="w">     </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">mds</span><span class="o">-</span><span class="nv">rsliotta</span><span class="o">-</span><span class="nv">fs</span><span class="o">-</span><span class="nv">b</span><span class="o">-</span><span class="mi">588755</span><span class="nv">bd54</span><span class="o">-</span><span class="nv">pt75s</span><span class="w">             </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">2.15</span><span class="w">      </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">mgr</span><span class="o">-</span><span class="nv">a</span><span class="o">-</span><span class="mi">69</span><span class="nv">f7b69cc</span><span class="o">-</span><span class="nv">bb4vj</span><span class="w">                          </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">275</span><span class="w">        </span><span class="mi">67</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">1.124</span><span class="w">     </span><span class="nv">moscow</span><span class="w">     </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">mon</span><span class="o">-</span><span class="nv">c</span><span class="o">-</span><span class="mi">7</span><span class="nv">dbbcc9769</span><span class="o">-</span><span class="nv">s9gcg</span><span class="w">                         </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">0.16</span><span class="w">      </span><span class="nv">miami</span><span class="w">      </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">mon</span><span class="o">-</span><span class="nv">d</span><span class="o">-</span><span class="mi">66787</span><span class="nv">cb764</span><span class="o">-</span><span class="nv">lqhm7</span><span class="w">                         </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">1</span><span class="w">          </span><span class="mi">58</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">1.129</span><span class="w">     </span><span class="nv">moscow</span><span class="w">     </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">operator</span><span class="o">-</span><span class="mi">785</span><span class="nv">bf4fff4</span><span class="o">-</span><span class="mi">6</span><span class="nv">sr42</span><span class="w">                      </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">1</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">1.130</span><span class="w">     </span><span class="nv">moscow</span><span class="w">     </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">0</span><span class="o">-</span><span class="mi">685</span><span class="nv">bd594cd</span><span class="o">-</span><span class="mi">6</span><span class="nv">fnx7</span><span class="w">                         </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">2.21</span><span class="w">      </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="mi">6</span><span class="nv">d4dd94666</span><span class="o">-</span><span class="nv">s5jz5</span><span class="w">                         </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">2.14</span><span class="w">      </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">2</span><span class="o">-</span><span class="mi">677478</span><span class="nv">c46b</span><span class="o">-</span><span class="nv">djd2p</span><span class="w">                         </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">2.13</span><span class="w">      </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">3</span><span class="o">-</span><span class="mi">6</span><span class="nv">f8b9c845f</span><span class="o">-</span><span class="nv">tdt2c</span><span class="w">                         </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">2.18</span><span class="w">      </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">4</span><span class="o">-</span><span class="mi">565</span><span class="nv">b49d85c</span><span class="o">-</span><span class="nv">cxtlb</span><span class="w">                         </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">2.22</span><span class="w">      </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">5</span><span class="o">-</span><span class="mi">65464</span><span class="nv">f9b7d</span><span class="o">-</span><span class="nv">l7q4j</span><span class="w">                         </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">2.12</span><span class="w">      </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">6</span><span class="o">-</span><span class="mi">9978758</span><span class="nv">bf</span><span class="o">-</span><span class="nv">jkdpl</span><span class="w">                          </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">2.10</span><span class="w">      </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">7</span><span class="o">-</span><span class="mi">58</span><span class="nv">df8bbdc4</span><span class="o">-</span><span class="nv">jt98j</span><span class="w">                         </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">2.20</span><span class="w">      </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="nv">prepare</span><span class="o">-</span><span class="nv">florence</span><span class="o">-</span><span class="mi">25</span><span class="nv">x69</span><span class="w">                     </span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Completed</span><span class="w">   </span><span class="mi">0</span><span class="w">          </span><span class="mi">53</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">2.25</span><span class="w">      </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="nv">prepare</span><span class="o">-</span><span class="nv">miami</span><span class="o">-</span><span class="nv">n6s6z</span><span class="w">                        </span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Completed</span><span class="w">   </span><span class="mi">0</span><span class="w">          </span><span class="mi">53</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">0.28</span><span class="w">      </span><span class="nv">miami</span><span class="w">      </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="nv">prepare</span><span class="o">-</span><span class="nv">moscow</span><span class="o">-</span><span class="nv">kbcwz</span><span class="w">                       </span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Completed</span><span class="w">   </span><span class="mi">0</span><span class="w">          </span><span class="mi">53</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">1.137</span><span class="w">     </span><span class="nv">moscow</span><span class="w">     </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">rgw</span><span class="o">-</span><span class="nv">rsliotta</span><span class="o">-</span><span class="nv">object</span><span class="o">-</span><span class="nv">store</span><span class="o">-</span><span class="nv">a</span><span class="o">-</span><span class="mi">799</span><span class="nv">f6644d4</span><span class="o">-</span><span class="mi">7</span><span class="nv">ffkk</span><span class="w">   </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">340</span><span class="w">        </span><span class="mi">67</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">1.118</span><span class="w">     </span><span class="nv">moscow</span><span class="w">     </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">tools</span><span class="o">-</span><span class="mi">6</span><span class="nv">bc7c4f9fc</span><span class="o">-</span><span class="nv">tx96t</span><span class="w">                         </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">1</span><span class="w">          </span><span class="mi">67</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">1.120</span><span class="w">     </span><span class="nv">moscow</span><span class="w">     </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span></code></pre></div></div>

<p>Get all pods with wide output but only names with osd in them</p>
<div class="language-applescript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">[</span><span class="nv">B</span><span class="p">:</span><span class="nv">cities</span><span class="p">:</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="err">]</span><span class="w"> </span><span class="nv">liottar</span><span class="p">:</span><span class="o">/</span><span class="nv">Users</span><span class="o">/</span><span class="nv">liottar</span><span class="err">$</span><span class="w"> </span><span class="nv">kf</span><span class="w"> </span><span class="nv">pod</span><span class="w"> </span><span class="err">'</span><span class="nv">osd</span><span class="err">'</span><span class="w">
</span><span class="nv">NAME</span><span class="w">                                                     </span><span class="nv">READY</span><span class="w">   </span><span class="nv">STATUS</span><span class="w">      </span><span class="nv">RESTARTS</span><span class="w">   </span><span class="nv">AGE</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">0</span><span class="o">-</span><span class="mi">685</span><span class="nv">bd594cd</span><span class="o">-</span><span class="mi">6</span><span class="nv">fnx7</span><span class="w">                         </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="mi">6</span><span class="nv">d4dd94666</span><span class="o">-</span><span class="nv">s5jz5</span><span class="w">                         </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">2</span><span class="o">-</span><span class="mi">677478</span><span class="nv">c46b</span><span class="o">-</span><span class="nv">djd2p</span><span class="w">                         </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">3</span><span class="o">-</span><span class="mi">6</span><span class="nv">f8b9c845f</span><span class="o">-</span><span class="nv">tdt2c</span><span class="w">                         </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">4</span><span class="o">-</span><span class="mi">565</span><span class="nv">b49d85c</span><span class="o">-</span><span class="nv">cxtlb</span><span class="w">                         </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">5</span><span class="o">-</span><span class="mi">65464</span><span class="nv">f9b7d</span><span class="o">-</span><span class="nv">l7q4j</span><span class="w">                         </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">6</span><span class="o">-</span><span class="mi">9978758</span><span class="nv">bf</span><span class="o">-</span><span class="nv">jkdpl</span><span class="w">                          </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">7</span><span class="o">-</span><span class="mi">58</span><span class="nv">df8bbdc4</span><span class="o">-</span><span class="nv">jt98j</span><span class="w">                         </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="nv">prepare</span><span class="o">-</span><span class="nv">florence</span><span class="o">-</span><span class="mi">25</span><span class="nv">x69</span><span class="w">                     </span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Completed</span><span class="w">   </span><span class="mi">0</span><span class="w">          </span><span class="mi">53</span><span class="nv">d</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="nv">prepare</span><span class="o">-</span><span class="nv">miami</span><span class="o">-</span><span class="nv">n6s6z</span><span class="w">                        </span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Completed</span><span class="w">   </span><span class="mi">0</span><span class="w">          </span><span class="mi">53</span><span class="nv">d</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="nv">prepare</span><span class="o">-</span><span class="nv">moscow</span><span class="o">-</span><span class="nv">kbcwz</span><span class="w">                       </span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Completed</span><span class="w">   </span><span class="mi">0</span><span class="w">          </span><span class="mi">53</span><span class="nv">d</span><span class="w">
</span></code></pre></div></div>

<p>or the same with a wide output by creating a list with the <em>kfl</em> utility function to pass to <em>kgp</em></p>
<div class="language-applescript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">[</span><span class="nv">B</span><span class="p">:</span><span class="nv">cities</span><span class="p">:</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="err">]</span><span class="w"> </span><span class="nv">liottar</span><span class="p">:</span><span class="o">/</span><span class="nv">Users</span><span class="o">/</span><span class="nv">liottar</span><span class="err">$</span><span class="w"> </span><span class="nv">kgp</span><span class="w"> </span><span class="o">-</span><span class="nv">owide</span><span class="w"> </span><span class="err">$</span><span class="p">(</span><span class="nv">kfl</span><span class="w"> </span><span class="nv">pod</span><span class="w"> </span><span class="err">'</span><span class="nv">osd</span><span class="err">'</span><span class="p">)</span><span class="w">
</span><span class="nv">NAME</span><span class="w">                                   </span><span class="nv">READY</span><span class="w">   </span><span class="nv">STATUS</span><span class="w">      </span><span class="nv">RESTARTS</span><span class="w">   </span><span class="nv">AGE</span><span class="w">   </span><span class="nv">IP</span><span class="w">            </span><span class="nv">NODE</span><span class="w">       </span><span class="nv">NOMINATED</span><span class="w"> </span><span class="nv">NODE</span><span class="w">   </span><span class="nv">READINESS</span><span class="w"> </span><span class="nv">GATES</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">0</span><span class="o">-</span><span class="mi">685</span><span class="nv">bd594cd</span><span class="o">-</span><span class="mi">6</span><span class="nv">fnx7</span><span class="w">       </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">2.21</span><span class="w">    </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="mi">6</span><span class="nv">d4dd94666</span><span class="o">-</span><span class="nv">s5jz5</span><span class="w">       </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">2.14</span><span class="w">    </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">2</span><span class="o">-</span><span class="mi">677478</span><span class="nv">c46b</span><span class="o">-</span><span class="nv">djd2p</span><span class="w">       </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">2.13</span><span class="w">    </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">3</span><span class="o">-</span><span class="mi">6</span><span class="nv">f8b9c845f</span><span class="o">-</span><span class="nv">tdt2c</span><span class="w">       </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">2.18</span><span class="w">    </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">4</span><span class="o">-</span><span class="mi">565</span><span class="nv">b49d85c</span><span class="o">-</span><span class="nv">cxtlb</span><span class="w">       </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">2.22</span><span class="w">    </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">5</span><span class="o">-</span><span class="mi">65464</span><span class="nv">f9b7d</span><span class="o">-</span><span class="nv">l7q4j</span><span class="w">       </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">2.12</span><span class="w">    </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">6</span><span class="o">-</span><span class="mi">9978758</span><span class="nv">bf</span><span class="o">-</span><span class="nv">jkdpl</span><span class="w">        </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">2.10</span><span class="w">    </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="mi">7</span><span class="o">-</span><span class="mi">58</span><span class="nv">df8bbdc4</span><span class="o">-</span><span class="nv">jt98j</span><span class="w">       </span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Running</span><span class="w">     </span><span class="mi">0</span><span class="w">          </span><span class="mi">55</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">2.20</span><span class="w">    </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="nv">prepare</span><span class="o">-</span><span class="nv">florence</span><span class="o">-</span><span class="mi">25</span><span class="nv">x69</span><span class="w">   </span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Completed</span><span class="w">   </span><span class="mi">0</span><span class="w">          </span><span class="mi">53</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">2.25</span><span class="w">    </span><span class="nv">florence</span><span class="w">   </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="nv">prepare</span><span class="o">-</span><span class="nv">miami</span><span class="o">-</span><span class="nv">n6s6z</span><span class="w">      </span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Completed</span><span class="w">   </span><span class="mi">0</span><span class="w">          </span><span class="mi">53</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">0.28</span><span class="w">    </span><span class="nv">miami</span><span class="w">      </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span><span class="nv">rook</span><span class="o">-</span><span class="nv">ceph</span><span class="o">-</span><span class="nv">osd</span><span class="o">-</span><span class="nv">prepare</span><span class="o">-</span><span class="nv">moscow</span><span class="o">-</span><span class="nv">kbcwz</span><span class="w">     </span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span><span class="w">     </span><span class="nv">Completed</span><span class="w">   </span><span class="mi">0</span><span class="w">          </span><span class="mi">53</span><span class="nv">d</span><span class="w">   </span><span class="mf">10.42</span><span class="p">.</span><span class="mf">1.137</span><span class="w">   </span><span class="nv">moscow</span><span class="w">     </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">           </span><span class="o">&lt;</span><span class="nv">none</span><span class="o">&gt;</span><span class="w">
</span></code></pre></div></div>
<p>As you see, you can combine the commands to make more shortcuts for yourself!</p>

<p>In summary, I hope this helps you get off to a good start with Beeline!</p>]]></content><author><name>Bob Liotta</name></author><summary type="html"><![CDATA[Quick and Easy guide to Beeline shortcuts for kubectl]]></summary></entry><entry><title type="html">Create Network Bridge for multipass on Ubuntu</title><link href="https://262.life/ubuntu-22-create-network-bridge/" rel="alternate" type="text/html" title="Create Network Bridge for multipass on Ubuntu" /><published>2023-06-22T00:00:00+00:00</published><updated>2023-06-22T00:00:00+00:00</updated><id>https://262.life/ubuntu-22-create-network-bridge</id><content type="html" xml:base="https://262.life/ubuntu-22-create-network-bridge/"><![CDATA[<p>A network bridge is nothing but a device that joins two local networks into one network. It works at the data link layer (layer 2 of the OSI model). Network bridges often used with virtualization software. For example, popular software such as KVM, LXD, or Docker users can configure bridges instead of NAT-based networking. The nmcli command-line tool can create a persistent bridge configuration without editing any files. This page shows how to create a bridge interface using the Network Manager command-line tool called nmcli on an Ubuntu 20.04 LTS Linux server.
Tutorial requirements
Requirements	Ubuntu 18.04/20.04 LTS server
Root privileges 	Yes
Difficulty level 	Easy
Est. reading time 	5 minutes</p>

<p>Table of contents ↓</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>1 Adding network bridge
2 Prerequisite
3 Creating a Linux network bridge
4 Disable or enable STP
5 Set up static or DHCP based IP address
6 Enable br0 network bridge interface
7 Verification network bridge
8 Conclusion
</code></pre></div></div>

<p>Advertisement
Ubuntu 20.04 add network bridge (br0) with nmcli</p>

<p>The procedure to create and add a bridge interface on Ubuntu version 20.04 is as follows when you want to use Network Manager:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Open the Terminal app or log in using the ssh command
Find out information about the current Ubuntu network connection:
sudo nmcli con show
Then, add a new bridge called br0:
sudo nmcli con add ifname br0 type bridge con-name br0
Create a slave interface for br0 using enp0s31f6 NIC:
sudo nmcli con add type bridge-slave ifname enp0s31f6 master br0
Turn on br0 interface to get an IP via DHCP:
sudo nmcli con up br0
Static IP settings are discussed below for the br0 interface
</code></pre></div></div>

<p>Let us see all examples and instructions in detail to create a network bridge in Ubuntu Linux version 20.04 LTS server.
Prerequisite for creating a Linux network bridge on Ubuntu 20.04</p>

<p>First thing, obtain information about the current Ubuntu Linux interface and IP address as we need this information later. Hence, type the following commands:
$ nmcli con show
$ nmcli connection show –active</p>

<p>Outputs:</p>

<p>NAME  UUID                                  TYPE      DEVICE 
ETH0  71a189f2-9cb9-49f0-8464-37a6801740e3  ethernet  enp0s31f6</p>

<p>So my server has an “ETH0” which uses the enp0s31f6 Ethernet interface. I am going to set up a bridge interface named br0 and add (enslave) an interface to enp0s31f6.
Step 1 – Creating a network bridge named br0</p>

<p>The syntax is:
$</p>

<p>$ sudo nmcli con add type bridge-slave ifname enp0s31f6 master br0
$ nmcli connection show</p>

<p>Ubuntu 20.04 add network bridge (br0) with nmcli command
Step 2 – Disable or enable STP for network bridge</p>

<p>The primary purpose of Spanning Tree Protocol (STP) is to ensure that you do not create loops when you have redundant paths in your network. We can disable STP or enable as follows for br0:
$ sudo nmcli con modify br0 bridge.stp no</p>
<h2 id="ubuntu-2004-linux-nmcli-command-to-enable-stp-with-br0">Ubuntu 20.04 Linux nmcli command to enable STP with br0</h2>
<p>$ sudo nmcli con modify br0 bridge.stp yes</p>
<h2 id="verification">Verification</h2>
<p>$ nmcli con show
$ nmcli -f bridge con show br0</p>

<p>Outputs:</p>

<p>bridge.mac-address:                     –
bridge.stp:                             yes
bridge.priority:                        32768
bridge.forward-delay:                   15
bridge.hello-time:                      2
bridge.max-age:                         20
bridge.ageing-time:                     300
bridge.group-forward-mask:              0
bridge.multicast-snooping:              yes
bridge.vlan-filtering:                  no
bridge.vlan-default-pvid:               1
bridge.vlans:                           –</p>

<p>Step 3 – Set up static or DHCP based IP for network bridge interface</p>

<p>We have not allocated any static IP address to our br0 interface. Hence, if the DHCP server is available, it should provide IP addresses and other settings. For instance, we can grab IP settings using DHCP as follows:
$ sudo nmcli con up br0
$ ip a s br0
$ ping www.cyberciti.biz</p>

<p>However, on servers, we typically set up a static IP address. In this example, I am converting existing enp0s31f6 IP network settings to br0 settings as follows:
IPv4 br0 settings</p>

<p>$ sudo nmcli connection modify br0 ipv4.addresses ‘192.168.2.25/24’
$ sudo nmcli connection modify br0 ipv4.gateway ‘192.168.2.254’
$ sudo nmcli connection modify br0 ipv4.dns ‘192.168.2.254’
$ sudo nmcli connection modify br0 ipv4.dns-search ‘sweet.home’
$ sudo nmcli connection modify br0 ipv4.method manual
IPv6 br0 settings</p>

<p>$ sudo nmcli connection modify bridge0 ipv6.addresses ‘Your-Static-IPv6-Address’
$ sudo nmcli connection modify br0 ipv6.gateway ‘Your-Static-IPv6-Gateway-Address’
$ sudo nmcli connection modify br0 ipv6.dns ‘Your-Static-IPv6-DNS’
$ sudo nmcli connection modify br0 ipv6.dns-search ‘sweet.home’
$ sudo nmcli connection modify br0 ipv6.method manual
Step 4 – Enable br0 network bridge interface on Ubuntu Linux</p>

<p>So far, we configured required network settings. It is time to turn it on our br0:
$ sudo nmcli con up br0
$ nmcli con show</p>

<p>Wait for some time to activate settings.
Step 5 – Verification network bridge settings</p>

<p>Use the ip command to view the IP settings for br0 bridge on Ubuntu box:
$ ip a s
$ ip a s br0</p>

<p>You can remove enp0s31f6 as br0 got a static IP address itself as enp0s31f6 will be in forwarding state:
$ sudo nmcli connection delete enp0s31f6</p>
<h2 id="or">or</h2>
<p>$ sudo nmcli connection delete ETH0</p>

<p>Here is how it looks using the ip command:
$ nmcli connection show
$ ip a show br0
$ nmcli device</p>
<h2 id="interface-active-and-works-with-br0">interface active and works with br0</h2>
<p>$ ip a show enp0s31f6
$ ip r</p>
<h2 id="check-internet-and-local-lan-connectivity-using-ping-command">Check Internet and local LAN connectivity using ping command</h2>
<p>$ ping -c 4 www.cyberciti.biz
$ ping -c 4 192.168.2.25</p>

<p>Show the link status of Ethernet devices and bridge devices on Ubuntu Linux machine:
$ ip link show master br0
$ bridge link show
$ bridge link show dev enp0s31f6</p>

<p>Verify and Create a Network Bridge in Ubuntu 20.04 Linux LTS server
Conclusion</p>

<p>In this tutorial, you learned how to add and create a Linux Network Bridge on Ubuntu 20.04 LTS server. See nmcli docs online for more info.
This entry is 8 of 11 in the Linux and Unix Network Bridging Tutorial series. Keep reading the rest of the series:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Debian Linux: Configure Network Interfaces As A Bridge / Network Switch
OpenBSD: Configure Network Interface As A Bridge / Network Switch
How To PFSense Configure Network Interface As A Bridge / Network Switch
FreeBSD: NIC Bonding / Link Aggregation / Trunking / Link Failover
How To Setup Bridge (br0) Network on Ubuntu Linux 14.04 and 16.04 LTS
Ubuntu setup a bonding device and enslave eth0+eth2
Setup Bonded (bond0) and Bridged (br0) Networking On Ubuntu
Ubuntu 20.04 add network bridge (br0) with nmcli command
CentOS 8 add network bridge (br0) with nmcli command
How to add network bridge with nmcli (NetworkManager) on Linux
Set up and configure network bridge on Debian Linux
</code></pre></div></div>

<p>About the author: Vivek Gite is the founder of nixCraft, the oldest running blog about Linux and open source. He wrote more than 7k+ posts and helped numerous readers to master IT topics. Join the nixCraft community via RSS Feed, Email Newsletter or follow on Twitter.</p>

<p>梁 Was this helpful? Please add a comment to show your appreciation or feedback ↓</p>

<p>Related Tutorials</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>CentOS 8 add network bridge (br0) with nmcli command
CentOS 8 add network bridge (br0) with nmcli command
How to add network bridge with nmcli (NetworkManager) on…
How to add network bridge with nmcli (NetworkManager) on…
How To Setup Bridge (br0) Network on Ubuntu Linux 14.04 and…
How To Setup Bridge (br0) Network on Ubuntu Linux 14.04 and…
OpenBSD: Configure Network Interface As A Bridge / Network…
OpenBSD: Configure Network Interface As A Bridge / Network…
Debian Linux: Configure Network Interfaces As A Bridge /…
Debian Linux: Configure Network Interfaces As A Bridge /…
How To PFSense Configure Network Interface As A Bridge /…
How To PFSense Configure Network Interface As A Bridge /…
How To Setup Bonded (bond0) and Bridged (br0) Networking On…
How To Setup Bonded (bond0) and Bridged (br0) Networking On…
</code></pre></div></div>

<p>Category 	List of Unix and Linux commands
Ansible	Check version • Fedora • FreeBSD • Linux • Ubuntu 18.04 • Ubuntu • macOS
Backup Management	Debian/Ubuntu • FreeBSD • RHEL
Database Server	Backup MySQL server • MariaDB Galera cluster • MariaDB TLS/SSL • MariaDB replication • MySQL Server • MySQL remote access
Download managers	wget
Driver Management	Linux Nvidia driver • lsmod
Documentation	help • mandb • man • pinfo
Disk Management	df • duf • ncdu • pydf
File Management	cat • cp • less • mkdir • more • tree
Firewall	Alpine Awall • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04 • Ubuntu 24.04
KVM Virtualization	CentOS/RHEL 7 • CentOS/RHEL 8 • Debian 9/10/11 • Ubuntu 20.04
Linux Desktop apps	Chrome • Chromium • GIMP • Skype • Spotify • VLC 3
Modern utilities	bat • exa
Network Management	Monitoring tools • Network services • RHEL static IP • Restart network interface • nmcli
Network Utilities	NetHogs • dig • host • ip • nmap • ping
OpenVPN	CentOS 7 • CentOS 8 • Debian 10 • Debian 11 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04
Power Management	upower
Package Manager	apk • apt-get • apt • yum
Processes Management	bg • chroot • cron • disown • fg • glances • gtop • iotop • jobs • killall • kill • pidof • pstree • pwdx • time • vtop
Searching	ag • egrep • grep • whereis • which
Shell builtins	compgen • echo • printf
System Management	reboot • shutdown
Terminal/ssh	sshpass • tty
Text processing	cut • rev
Text Editor	6 Text editors • Save and exit vim
User Environment	exit • who
User Information	groups • id • lastcomm • last • lid/libuser-lid • logname • members • users • whoami • w
User Management	/etc/group • /etc/passwd • /etc/shadow • chsh
Web Server	Apache • Let’s Encrypt certificate • Lighttpd • Nginx Security • Nginx
WireGuard VPN	Alpine • Amazon Linux • CentOS 8 • Debian 10 • Firewall • Ubuntu 20.04 • qrencode
8 comments… add one</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>unixpro Aug 10, 2020 @ 0:33

I think there’s a limitation with the standard Linux bridge when working with wireless adapters. Actually I think it’s a limitation with wireless link layer then authentication and trying to bridge Ethernet layer 2 over that authenticated stack if you get me.
Reply Link
perli Aug 31, 2020 @ 15:00

Hi, i have trouble withe getting an ip from the DHCP server to the bridge while the vm does get an ip. i would appreciate if you explain how to activate the br to work with dhcp , not based on if my dhcp server works in general (I’m on wireless). Thanks
Reply Link
PavelN Oct 6, 2020 @ 12:25

BTW: you have a typo in commands (missing con-name option) :
&gt; Then, add a new bridge called br0:
sudo nmcli con add type bridge ifname br0

later in the page there is a proper syntax including “con-name” :
sudo nmcli con add ifname br0 type bridge con-name br0
Reply Link
     Vivek Gite Oct 26, 2020 @ 12:59

    Fixed it. Thanks for the tip and I appreciate your feedback.
    Reply Link
InnocentBystander Jan 26, 2021 @ 4:35

What is exactly ‘sweet.home’ in
sudo nmcli connection modify br0 ipv4.dns-search 'sweet.home'

Where does this value come from and what is the purpose/usage of this setting?

Thanks
Reply Link
     Vivek Gite Jan 27, 2021 @ 19:36

    That is my own domain search name set up in my DHCPD. So instead of typing ssh ‘mylaptop.sweet.home’, I type ‘mylaptop’. You can ignore sudo nmcli connection modify br0 ipv4.dns-search ‘sweet.home’ if you don’t have such fancy config.
    Reply Link
Beau G Apr 8, 2021 @ 13:21

Hello, I am getting the following error:

sudo nmcli con up br0
Error: Connection activation failed: Connection 'br0' is not available on device br0 because device is strictly unmanaged

nmcli con show
NAME                 UUID                                  TYPE      DEVICE
br0                  61d76e77-f193-4aea-94b2-02128aa5e8f1  bridge    --
bridge-slave-enp3s0  810348e4-c676-42d1-80c1-0414ce956130  ethernet  --

I restarted network manager. Nothing gives.
Reply Link
    Gautham Apr 8, 2021 @ 15:09

    Look like br0 is in managed state.

    sudo nmcli dev set {interface} managed {option}

    Your {interface} name such as eth0/enp3s0/br0. And {option} can be false, no, off, on, true, and yes. Try something as follows:

    sudo nmcli dev set br0 managed yes

    Reply Link
</code></pre></div></div>

<p>Leave a Reply</p>

<p>Your email address will not be published. Required fields are marked *</p>

<p>Comment *</p>

<p>Name</p>

<p>Email</p>

<p>Website</p>

<p>Use HTML &lt;pre&gt;…&lt;/pre&gt; for code samples. Your comment will appear only after approval by the site admin.</p>

<p>Next FAQ: How to install KVM on Ubuntu 20.04 LTS Headless Server</p>

<p>Previous FAQ: Squid test config file for syntax errors
     
Search</p>

<p>FEATURED ARTICLES</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>1
30 Cool Open Source Software I Discovered in 2013
2
30 Handy Bash Shell Aliases For Linux / Unix / Mac OS X
3
Top 32 Nmap Command Examples For Linux Sys/Network Admins
4
25 PHP Security Best Practices For Linux Sys Admins
5
30 Linux System Monitoring Tools Every SysAdmin Should Know
6
40 Linux Server Hardening Security Tips
7
Linux: 25 Iptables Netfilter Firewall Examples For New SysAdmins
8
Top 20 OpenSSH Server Best Security Practices
9
Top 25 Nginx Web Server Best Security Practices
10
My 10 UNIX Command Line Mistakes
</code></pre></div></div>

<p>Sign up for my newsletter
Sign up for my newsletter</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>➔
Linux shell scripting tutorial
➔
RSS/Feed
➔
About nixCraft
</code></pre></div></div>

<p>     
©2002-2022 nixCraft • Privacy • ToS • Contact/Email • Corporate patron Linode &amp; Cloudflare</p>

<p>Original: https://www.cyberciti.biz/faq/ubuntu-20-04-add-network-bridge-br0-with-nmcli-command/</p>]]></content><author><name>Bob Liotta</name></author><summary type="html"><![CDATA[A network bridge is nothing but a device that joins two local networks into one network. It works at the data link layer (layer 2 of the OSI model). Network bridges often used with virtualization software. For example, popular software such as KVM, LXD, or Docker users can configure bridges instead of NAT-based networking. The nmcli command-line tool can create a persistent bridge configuration without editing any files. This page shows how to create a bridge interface using the Network Manager command-line tool called nmcli on an Ubuntu 20.04 LTS Linux server. Tutorial requirements Requirements Ubuntu 18.04/20.04 LTS server Root privileges Yes Difficulty level Easy Est. reading time 5 minutes]]></summary></entry><entry><title type="html">Raspberry Pi: Upgrade Firmware to boot on USB</title><link href="https://262.life/rpi-firmware-upgrade/" rel="alternate" type="text/html" title="Raspberry Pi: Upgrade Firmware to boot on USB" /><published>2022-11-24T00:00:00+00:00</published><updated>2022-11-24T00:00:00+00:00</updated><id>https://262.life/rpi-firmware-upgrade</id><content type="html" xml:base="https://262.life/rpi-firmware-upgrade/"><![CDATA[<h1 id="firmware-upgrade">Firmware Upgrade</h1>

<p><strong><em>Editor’s Note (7/24/2021):</em></strong> <em>We have updated this tutorial to include how you can boot your</em> <strong><em>Raspberry Pi 400</em></strong> <em>from USB.</em></p>

<p>By default, <a href="https://www.tomshardware.com/news/raspberry-pi">Raspberry Pi</a> boots up and stores all of its programs on a microSD memory card, which has a maximum theoretical bandwidth of 50 MBps on the <a href="https://www.tomshardware.com/reviews/raspberry-pi-4">Raspberry Pi 4</a> and just 25 MBps on prior models. In real-life, even the <a href="https://www.tomshardware.com/best-picks/raspberry-pi-microsd-cards">best microSD cards for Raspberry Pi</a> get no faster than about 38 MBps in sequential writes.  Using an external SSD as your main storage drive could speed things up significantly and, with a few commands and a simple firmware update, you can do just that.</p>

<p>In our real-life <a href="https://www.tomshardware.com/news/raspberry-pi-4-ssd-test,39811.html">tests of a Raspberry Pi 4 with SSD</a> last year we got impressive performance with sequential transfer rates as high as 140 MB / 208 MBps for reading and writing. You can also use a standard USB flash drive, though we found the performance worse than a microSD card on many tasks.</p>

<h2 id="how-to-boot-raspberry-pi-4--400-from-usb">How to Boot Raspberry Pi 4 / 400 from USB</h2>

<p>If you want to start with a fresh install of Raspberry Pi OS, simply follow the instructions in our tutorial on <a href="https://www.tomshardware.com/reviews/raspberry-pi-set-up-how-to,6029.html">how to set up Raspberry Pi</a> or how to do a Raspberry Pi headless install.</p>

<p>The latest versions of Raspberry Pi OS (as of April 29 2021 or later) have many of the necessary changes built-in. The Raspberry Pi Imager now has a much simpler means to prepare a Raspberry Pi 4 / 400 for USB boot. These instructions will set the Raspberry Pi 4 / 400 to look for a USB boot device, if none is found it will then boot from the micro SD card.</p>

<p>1. <a href="https://www.raspberrypi.org/downloads/"><strong>Download and install Raspberry Pi Imager</strong></a> <strong>from the Raspberry Pi website.</strong></p>

<p>2. <strong>Insert a spare micro SD card into your computer.</strong> Note that this card will be erased.</p>

<p>3. <strong>Launch Raspberry Pi Imager and under Operating System scroll down to Misc Utility Images and left click to open the next menu.</strong></p>

<p><img src="../assets/images/f4d127213a90496287a54b3c4fb198ab.png" alt="b6f9d7442734267ae0033855ba79076e.png" /></p>

<p>(Image credit: Tom’s Hardware)</p>

<p>4. <strong>Select Bootloader and then Select USB Boot.</strong> This will return us to the main menu.</p>

<p><img src="../assets/images/bcaf49f1621d499aa7f965c999a09dc6.png" alt="70511ddba6738aadf43a67ff3ca96c83.png" /></p>

<p>(Image credit: Tom’s Hardware)</p>

<p>5. <strong>Under Storage click on the button and select the micro SD card.</strong> Double check that you have the right drive before proceeding.</p>

<p><img src="../assets/images/bcffa68eee3c4c938089e89a0f9fb698.png" alt="bcb28992785824b30990340ae123b96a.png" /></p>

<p>(Image credit: Tom’s Hardware)</p>

<p>6. <strong>Click on Write</strong> to download and write a configuration image to the micro SD card. When done remove the card from your computer.</p>

<p><img src="../assets/images/aa3f7524928e48d49db5d45cb9acd7f5.png" alt="1de7a3bb32e7625103e92cb2e1e8c1d9.png" /></p>

<p>(Image credit: Tom’s Hardware)</p>

<p>7. <strong>Insert the micro SD card into your Raspberry Pi 4 / 400 and power on.</strong> The green activity light will blink a steady pattern once the update has been completed. If you have an HDMI monitor attached, the screen will go green once the update is complete. Allow 10 seconds or more for the update to complete, do not remove the micro SD card until the update is complete.</p>

<p>8. <strong>Power off the Raspberry Pi and remove the micro SD card.</strong></p>

<p>Keep in mind that, if you are using an external drive that saps a lot of power from the bus, you may have issues (which you could probably solve by using a drive that has its own power source or by using a powered USB hub).</p>

<p>For example, we had problems using a bus-powered, external Kingston HyperX SSD, which booted but – perhaps because of how much power it was using – none of our peripherals would work. A SATA SSD in a externally powered dock worked fine as did a USB Flash drive.</p>]]></content><author><name>Bob Liotta</name></author><summary type="html"><![CDATA[Firmware Upgrade]]></summary></entry><entry><title type="html">Create Network Bridge for multipass on Windows</title><link href="https://262.life/windows-11-create-network-bridge/" rel="alternate" type="text/html" title="Create Network Bridge for multipass on Windows" /><published>2022-11-24T00:00:00+00:00</published><updated>2022-11-24T00:00:00+00:00</updated><id>https://262.life/windows-11-create-network-bridge</id><content type="html" xml:base="https://262.life/windows-11-create-network-bridge/"><![CDATA[<p>On a default install my primary and subsequent guests get IP addresses of the format <code class="language-plaintext highlighter-rouge">172.18.91.119/28 brd 172.18.91.127</code></p>

<p>The docs are not clear as to what is acting as a DHCP server, but I  see DHCP happening in the guest logs, so I will chalk it up to some  Multipass magic.</p>

<p>The problem I was confronted with is that I could not ssh into these  guests from elsewhere on the ipv4 network. Only from WSL on my Host  machine. Now it’s possible that this is some windows firewall setting on my part. But I also think it’s possible that Multipass is setting up a  bridge network without ingress. <img src="../assets/images/man_shrugging.png" alt=":man_shrugging:" /></p>

<p><strong>To enable network access to your guest vms:</strong></p>

<p>–Create a Virtual Switch on your network interface</p>

<ul>
  <li>Open hyper-v manager.</li>
  <li>Action &gt; Virtual Switch Manager</li>
  <li>Select External &gt; Create Virtual Switch
    <ul>
      <li>Give the virtual switch a name</li>
      <li>Select the Network Interface you want the switch to attach to and apply.</li>
    </ul>
  </li>
</ul>

<p>[<img src="https://ubuntucommunity.s3.dualstack.us-east-2.amazonaws.com/optimized/2X/2/2939d32587d65d4e7dd9246505090a183d341397_2_690x458.png" alt="image" /></p>

<p><a href="https://ubuntucommunity.s3.dualstack.us-east-2.amazonaws.com/original/2X/2/2939d32587d65d4e7dd9246505090a183d341397.png">image.png881×586 106 KB </a></p>

<p>Attach</p>

<p>–Attach Guest to Virtual Switch</p>

<ul>
  <li>With the guest powered off</li>
  <li>Right click on the Virtual Machine name that you want to access, and go to Settings.</li>
  <li>Select Add Hardware, Network Adapter.</li>
  <li>Navigate to the new Network Adapter and select the new Virtual Switch you added in the previous step.
 <img src="../assets/images/d30aa38598a12de9284451eefd2a215812a013f5.png" alt="image" /></li>
</ul>

<p>–Make your guest aware of the new interface</p>

<ul>
  <li>Open a shell to your guest, via Multipass</li>
  <li><code class="language-plaintext highlighter-rouge">ip link</code> should show a new interface, probably <code class="language-plaintext highlighter-rouge">eth1</code></li>
  <li>Make a backup of <code class="language-plaintext highlighter-rouge">/etc/netplan/NN-cloud-init.yaml</code></li>
  <li>Observing proper YAML spacing, add the lines:</li>
</ul>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>        eth1:
            dhcp4: true
</code></pre></div></div>

<p>So your <code class="language-plaintext highlighter-rouge">/etc/netplan/NN-cloud-init.yaml</code> should look approximately like:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>network:
    ethernets:
        eth0:
            dhcp4: true
            match:
                macaddress: 00:15:5d:3d:39:02
            set-name: eth0
        eth1:
            dhcp4: true
    version: 2
</code></pre></div></div>

<ul>
  <li>Run <code class="language-plaintext highlighter-rouge">sudo netplan generate</code>, you will be prompted if there are yaml errors.</li>
  <li>Run <code class="language-plaintext highlighter-rouge">sudo netplan apply</code> You may lose connection during this point.</li>
  <li>You may need to do a <code class="language-plaintext highlighter-rouge">systemctl restart systemd-networkd.service</code> or restart the guest via Multipass.</li>
  <li>If everything went well <code class="language-plaintext highlighter-rouge">ip addr</code> should show that you’ve leased an IP address.</li>
  <li>The guests disallow password logins, so copy your public ssh key to <code class="language-plaintext highlighter-rouge">~authorized_keys</code> on the guest, to enable logging in.</li>
</ul>

<p>I hope someone finds this helpful <img src="../assets/images/+1.png" alt=":+1:" /></p>

<p>Original Article: https://discourse.ubuntu.com/t/solution-multipass-not-reachable-from-outside-windows-10-networking-host/16392</p>]]></content><author><name>Bob Liotta</name></author><summary type="html"><![CDATA[On a default install my primary and subsequent guests get IP addresses of the format 172.18.91.119/28 brd 172.18.91.127]]></summary></entry><entry><title type="html">Create Bootable USB Media in Ubuntu Using BalenaEtcher</title><link href="https://262.life/Create-Bootable-USB-Media-in-Ubuntu-Using-BalenaEtcher/" rel="alternate" type="text/html" title="Create Bootable USB Media in Ubuntu Using BalenaEtcher" /><published>2022-11-23T00:00:00+00:00</published><updated>2022-11-23T00:00:00+00:00</updated><id>https://262.life/Create-Bootable-USB-Media-in-Ubuntu-Using-BalenaEtcher</id><content type="html" xml:base="https://262.life/Create-Bootable-USB-Media-in-Ubuntu-Using-BalenaEtcher/"><![CDATA[<p>Coming from Windows, RUFUS application has been the hot chick in town when it  comes to creating a bootable USB. But RUFUS only supports Windows and  Mac.</p>

<p>So if you are using Linux distributions, RUFUS is not the way to go. But  fear not. Just as the case with almost every other tasks, popular Linux  distros such as Ubuntu has never failed to meet the user demands. Same  is the situation when you need to convert ISO to bootable USB Media in  Ubuntu, Linux Mint, or any Debian distros.</p>

<p>In this tutorial, I’m going to show you how to create a bootable USB Media in Ubuntu within a minute. So I assume you already have Ubuntu running  on your PC.</p>

<p>For this tutorial, I will be making an Ubuntu ISO 18.04 bootable in a USB 4GB flash drive.</p>

<p><strong>STEP 1: Downloading</strong> <a href="https://www.balena.io/etcher/"><strong>Balena Etcher</strong></a> <strong>Desktop App</strong></p>

<p>Open the terminal… <strong>*Ctrl+Alt+T*</strong></p>

<ul>
  <li>Add Etcher debian repository: 
<strong>*Press the Enter keyboard after every command.*</strong></li>
</ul>

<p><img src="../assets/images/1*s0ya1ewSsaupzOeN1GU8cA.png" alt="img" /></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>echo "deb https://deb.etcher.io stable etcher" | sudo tee /etc/apt/sources.list.d/balena-etcher.list
</code></pre></div></div>

<ul>
  <li>Trust Bintray.com’s GPG key:</li>
</ul>

<p><img src="../assets/images/1*ltKbb212dAWT_8lZmsiRpw.png" alt="img" /></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 379CE192D401AB61
</code></pre></div></div>

<ul>
  <li>Update and install:</li>
</ul>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo apt-get updatesudo apt-get install balena-etcher-electron
</code></pre></div></div>

<p><strong>Ever feel like uninstalling it?</strong>
Uninstall:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo apt-get remove balena-etcher-electronsudo rm /etc/apt/sources.list.d/balena-etcher.listsudo apt-get update
</code></pre></div></div>

<p><strong>STEP 2: Open BalenaEtcher</strong></p>

<p>Search BalenaEtcher from your Application Menu, or simply press the windows key and type ‘BalenaEtcher’.</p>

<p><img src="../assets/images/1*-DFWS5k1miXHSwka6fdeTQ.png" alt="img" /></p>

<p>Search for BalenaEtcher on ubuntu 18.04</p>

<p><strong>STEP 3: The Final Step (Making the USB Bootable)</strong></p>

<p><img src="../assets/images/1*XSqALcgXE7RNhbjjahNQkw.png" alt="img" /></p>

<p>balenaEtcher environment</p>

<p>The environment is simple and straight forward:</p>

<ul>
  <li>Select the image (iso file)</li>
  <li>Select the flash drive plugged in the PC</li>
  <li>Click on the Flash button, wait for the magic to happen</li>
</ul>

<p><strong>Grab a cup of coffee, while the magic happens…</strong></p>

<p><img src="../assets/images/1*bwlkpGzGiw7FGq5oG1x4Lw.png" alt="img" /></p>

<p>flashing</p>

<p><img src="../assets/images/1*KF7wiCCzEOaLJOCJwDTd-A.png" alt="img" /></p>

<p>validating</p>

<p><strong>Boom!!! Magic Done. 
Your USB flash drive is bootable, unmount your drive, and go make yourself proud…</strong></p>

<p><img src="../assets/images/1*KVSuTR0yXUyO4s6qav4sBA.png" alt="img" /></p>

<p>Flash complete</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo umount /dev/sdc1
</code></pre></div></div>

<p>Original Article: https://medium.com/studevs/create-bootable-usb-media-in-ubuntu-using-balenaetcher-53f4b4010111</p>]]></content><author><name>Bob Liotta</name></author><summary type="html"><![CDATA[Coming from Windows, RUFUS application has been the hot chick in town when it comes to creating a bootable USB. But RUFUS only supports Windows and Mac.]]></summary></entry><entry><title type="html">Create Windows 11 Bootable Disk Using Terminal (M1/M2 Macs)</title><link href="https://262.life/create-windows-11-installation-media/" rel="alternate" type="text/html" title="Create Windows 11 Bootable Disk Using Terminal (M1/M2 Macs)" /><published>2022-11-23T00:00:00+00:00</published><updated>2022-11-23T00:00:00+00:00</updated><id>https://262.life/create-windows-11-installation-media</id><content type="html" xml:base="https://262.life/create-windows-11-installation-media/"><![CDATA[<p>The second method we’ll cover today involves using Terminal. The  process is relatively simple; however, a limitation of this method is  the issue of the installer being 5.2GB. You cannot burn a file bigger  than 4GB on a FAT32 formatted drive, which is the only format that works with both Windows and macOS.</p>

<p>A workaround for this is to split the installer into smaller files,  which requires the installation of a package manager, wimlib, that is  installed through Homebrew. This will split the Windows installer file  while creating the bootable disk.</p>

<p>To install Homebrew and create a bootable Windows 11 USB, open <strong>Terminal</strong> on your Mac from <strong>Finder &gt; Applications</strong> and enter the following commands. Once you have entered a command, press <strong>Enter</strong>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>curl -fsSL -o install.sh https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh
/bin/bash install.sh
</code></pre></div></div>

<p>​       <img src="../assets/images/Windows-10-Bootable-Disk-Mac-Install-Homebrew.png" alt="Install HomeBrew Using Terminal" /></p>

<p>This process will download and install Xcode before installing  Homebrew. Xcode is an integrated development environment (IDE) that is  comprised of software development tools for macOS. The process may take a few minutes to complete.</p>

<p>You will be required to type in your Mac user password to  authenticate yourself. You won’t see anything appear on the screen when  you type it in, so just type it and press <strong>Enter</strong> to install Homebrew.</p>

<p>Once the installation is complete, enter the following command and press <strong>Enter</strong> to install wimlib:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>brew install wimlib
</code></pre></div></div>

<p>You might get an error message saying <strong>command not found:brew</strong>, you may also see two commands in Terminal right at the end of the  previous Homebrew installation. Enter the commands to activate Homebrew, followed by he command above again to get it working successfully.</p>

<p>​       <img src="../assets/images/Windows-10-Bootable-Disk-Mac-Homebrew-Extra-Commands.png" alt="Commands to Activate HomeBrew" /></p>

<p>Now, make sure your USB is connected to your Mac. Run the following command:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>diskutil list
</code></pre></div></div>

<p>This will bring up a list of drives connected to your Mac. Find and  note down the USB drive’s disk identifier, which should appear to the  left of (<strong>external, physical</strong>), and should resemble disk2, disk3, and so on.</p>

<iframe id="google_ads_iframe_/39363775/MUO_InContent_728x90_Desktop_4" srcdoc="&lt;body&gt;&lt;/body&gt;" style="position: absolute; width: 0px; height: 0px; left: 0px; right: 0px; z-index: -1; border: 0px none;" width="0" height="0"></iframe>

<p>Use the following command to format the USB stick in Terminal (replace <strong>disk2</strong> with your disk identifier):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>diskutil eraseDisk MS-DOS WINDOWS11 GPT /dev/disk2
</code></pre></div></div>

<p>Terminal should now format your disk and rename it as WINDOWS11.       <img src="../assets/images/Create-Windows-11-Bootable-Disk-Diskutil.png" alt="Format Disk using Terminal" /></p>

<p>Mount the Windows 11 ISO from the Downloads folder on your Mac. You  can do this by double-clicking on the ISO file, which should then show  up in your Mac’s connected devices as <strong>CCCOMA_X64FRE_EN-US_DV9</strong> or similar. Remember to match the file name exactly to the one above.  If it’s different (due to a different language preference), make sure to change it accordingly in the commands below.</p>

<p>Since the installer file is bigger than 4GB, we’ll be using two  separate commands to create the bootable disk. The first command will  copy all the files apart from the install.wim file (which is 4.2GB) in  size. The second command will use wimlib to split and copy the  install.wim file to the USB stick.</p>

<p>Use the following command to copy the content of the ISO image—excluding the install.wim file—onto the USB drive:</p>

<iframe id="google_ads_iframe_/39363775/MUO_InContent_728x90_Desktop_5" srcdoc="&lt;body&gt;&lt;/body&gt;" style="position: absolute; width: 0px; height: 0px; left: 0px; right: 0px; z-index: -1; border: 0px none;" width="0" height="0"></iframe>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rsync -vha --exclude=sources/install.wim /Volumes/CCCOMA_X64FRE_EN-US_DV9/* /Volumes/WINDOWS11
</code></pre></div></div>

<p>Then run the following command to split and copy the install.wim file:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>wimlib-imagex split /Volumes/CCCOMA_X64FRE_EN-US_DV9/sources/install.wim /Volumes/WINDOWS11/sources/install.swm 3000
</code></pre></div></div>

<p>​       <img src="../assets/images/Create-Windows-11-Bootable-Disk-wimlib.png" alt="Using wimlib command to create bootable disk in Terminal" /></p>

<p>That’s it! Terminal should successfully create the bootable disk, which you can now use to boot a fresh Windows installation.</p>

<p>##</p>]]></content><author><name>Bob Liotta</name></author><summary type="html"><![CDATA[The second method we’ll cover today involves using Terminal. The process is relatively simple; however, a limitation of this method is the issue of the installer being 5.2GB. You cannot burn a file bigger than 4GB on a FAT32 formatted drive, which is the only format that works with both Windows and macOS.]]></summary></entry><entry><title type="html">Renew k8s Cluster Certificates</title><link href="https://262.life/k8s-cert-expiration/" rel="alternate" type="text/html" title="Renew k8s Cluster Certificates" /><published>2021-07-24T00:00:00+00:00</published><updated>2021-07-24T00:00:00+00:00</updated><id>https://262.life/k8s-cert-expiration</id><content type="html" xml:base="https://262.life/k8s-cert-expiration/"><![CDATA[<h2 id="backup-the-certs-and-configs">Backup the Certs and Configs</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cp -R /etc/kubernetes/ssl /etc/kubernetes/ssl.backup
cp /etc/kubernetes/admin.conf /etc/kubernetes/admin.conf.backup
cp /etc/kubernetes/controller-manager.conf /etc/kubernetes/controller-manager.conf.backup
cp /etc/kubernetes/kubelet.conf /etc/kubernetes/kubelet.conf.backup
cp /etc/kubernetes/scheduler.conf /etc/kubernetes/scheduler.conf.backup
</code></pre></div></div>

<h2 id="now-user-kubeadm-to-upgrade-the-certs">Now user kubeadm to upgrade the certs</h2>
<ul>
  <li>Note:  1.15 and above….</li>
</ul>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>export https_proxy=proxyserver:3128
export no_proxy=172.18.2.220,172.18.2.221,172.18.2.222
export PATH=/usr/local/bin:$PATH
kubeadm alpha certs renew apiserver-kubelet-client
kubeadm alpha certs renew apiserver
kubeadm alpha certs renew front-proxy-client
kubeadm alpha kubeconfig user --apiserver-advertise-address 172.18.2.220 --client-name system:kube-controller-manager &gt; /etc/kubernetes/controller-manager.conf
kubeadm alpha kubeconfig user --apiserver-advertise-address 172.18.2.220 --client-name system:kube-scheduler &gt; /etc/kubernetes/scheduler.conf
kubeadm alpha kubeconfig user --apiserver-advertise-address 172.18.2.220 --client-name system:node:iahlvlkubfed1 --org system:nodes &gt; /etc/kubernetes/kubelet.conf
kubeadm alpha kubeconfig user --apiserver-advertise-address 172.18.2.220 --client-name kubernetes-admin --org system:masters &gt; /etc/kubernetes/admin.conf
cp  /etc/kubernetes/admin.conf ~/.kube/config
</code></pre></div></div>

<h2 id="master-node">Master Node</h2>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>export https_proxy=iahlproxy.logistics.corp:3128
export no_proxy=172.18.2.220,172.18.2.221,172.18.2.222
export PATH=/usr/local/bin:$PATH
kubeadm upgrade apply v1.16.9
</code></pre></div></div>

<h2 id="additional-master-nodes">Additional Master Nodes</h2>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>export https_proxy=iahlproxy.logistics.corp:3128
export no_proxy=172.18.2.220,172.18.2.221,172.18.2.222
export PATH=/usr/local/bin:$PATH
kubeadm upgrade node
</code></pre></div></div>

<h2 id="restart-kubelet-and-services">Restart kubelet and Services</h2>

<p>service kubelet stop
service kubelet start
k delete pod $(k get pods -n kube-system | egrep ‘apiserver|controller|scheduler’ | awk ‘{print $1}’ | xargs )</p>]]></content><author><name>Bob Liotta</name></author><summary type="html"><![CDATA[Backup the Certs and Configs]]></summary></entry><entry><title type="html">Rook-Ceph Resize a pvc when Authresize did not work</title><link href="https://262.life/resize-a-pvc/" rel="alternate" type="text/html" title="Rook-Ceph Resize a pvc when Authresize did not work" /><published>2021-07-24T00:00:00+00:00</published><updated>2021-07-24T00:00:00+00:00</updated><id>https://262.life/resize-a-pvc</id><content type="html" xml:base="https://262.life/resize-a-pvc/"><![CDATA[<p>Resize a PVC -</p>
<h2 id="use-this-if-autoresize-does-not-work">Use this if autoresize does NOT work</h2>
<ul>
  <li>First we need the hostname that the PVC is running on.  You get that as follows:
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[B:avengers:grafana] liottar:/Users/liottar$ kgp -owide
  NAME                       READY   STATUS    RESTARTS   AGE   IP             	NODE   NOMINATED NODE   READINESS GATES
  grafana-58ff767cd6-rlckq   1/1     Running   0          11m   10.233.76.199   *thor*  &lt;none&gt;           &lt;none&gt;
</code></pre></div>    </div>
  </li>
  <li>Save the host is it running on.  In this case <em>thor</em></li>
  <li>Next, we need the pv name
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[B:avengers:grafana] liottar:/Users/liottar$ k get pvc
NAME                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      AGE
grafana             Bound    *pvc-6089741d-6ec8-40c6-b127-f5df3c3f9bcf*   16Gi       RWO            rook-ceph-block   32m
grafana-certs-pvc   Bound    grafana-certs-pv                           1Gi        ROX            manual            32m
</code></pre></div>    </div>
  </li>
  <li>Save the PV name.  In this case  <em>pvc-6089741d-6ec8-40c6-b127-f5df3c3f9bcf</em></li>
  <li>Now we need the rdb volume
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>k describe pv pvc-6089741d-6ec8-40c6-b127-f5df3c3f9bcf
Name:            pvc-6089741d-6ec8-40c6-b127-f5df3c3f9bcf
Labels:          &lt;none&gt;
Annotations:     pv.kubernetes.io/bound-by-controller: yes
               pv.kubernetes.io/provisioned-by: rook-ceph.rbd.csi.ceph.com
Finalizers:      [kubernetes.io/pv-protection]
StorageClass:    rook-ceph-block
Status:          Bound
Claim:           grafana/grafana
Reclaim Policy:  Retain
Access Modes:    RWO
VolumeMode:      Filesystem
Capacity:        16Gi
Node Affinity:   &lt;none&gt;
Message:
Source:
  Type:              CSI (a Container Storage Interface (CSI) volume source)
  Driver:            rook-ceph.rbd.csi.ceph.com
  FSType:            ext4
  VolumeHandle:      0001-0009-rook-ceph-0000000000000002-982bc493-c57c-11eb-b70e-be16494d8857
  ReadOnly:          false
  VolumeAttributes:      clusterID=rook-ceph
                         csi.storage.k8s.io/pv/name=pvc-6089741d-6ec8-40c6-b127-f5df3c3f9bcf
                         csi.storage.k8s.io/pvc/name=grafana
                         csi.storage.k8s.io/pvc/namespace=grafana
                         imageFeatures=layering
                         imageFormat=2
                         imageName=*csi-vol-982bc493-c57c-11eb-b70e-be16494d8857*
                         journalPool=replicapool
                         pool=replicapool
                         storage.kubernetes.io/csiProvisionerIdentity=1622684567259-8081-rook-ceph.rbd.csi.ceph.com
Events:                &lt;none&gt;
</code></pre></div>    </div>
    <ul>
      <li>Save the rbd image name, in this case   <em>csi-vol-982bc493-c57c-11eb-b70e-be16494d8857</em></li>
    </ul>
  </li>
  <li>Now go into rook-ceph-tools
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>k exec -itn rook-ceph rook-ceph-tools-7865b9c9f6-m75sq /bin/bash
</code></pre></div>    </div>
  </li>
  <li>Resize the volume
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> rbd resize --pool replicapool --image csi-vol-982bc493-c57c-11eb-b70e-be16494d8857 --size=18Gi
exit
</code></pre></div>    </div>
  </li>
  <li>Now….  Log into the host where the pvc is mounted, in this case Thor and execute the following commands:
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ssh centos@thor
sudo -I  # You are now root - Beware and two pairs of eyes
df -k | grep pvc-6089741d-6ec8-40c6-b127-f5df3c3f9bcf ### &lt;— PV  from earlier
/dev/rbd4                                                                                                                                               16448380    90116  16341880   1% /var/lib/kubelet/pods/a1183a36-df40-40ed-9188-68217dc87c81/volumes/kubernetes.io~csi/pvc-6089741d-6ec8-40c6-b127-f5df3c3f9bcf/mount
</code></pre></div>    </div>
    <ul>
      <li>Note the device name…. In this example /dev/rbd4
<code class="language-plaintext highlighter-rouge">resize2fs /dev/rbd4
exit
exit
</code></li>
    </ul>
  </li>
  <li>k edit pv pvc-6089741d-6ec8-40c6-b127-f5df3c3f9bcf
    <ul>
      <li>Check the size of the device to make sure it matches what you put in the resize in ceps-tools</li>
    </ul>
  </li>
  <li>Let’s check it
    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[B:avengers:grafana] liottar:/Users/liottar$ k exec -it grafana-58ff767cd6-mxzbx /bin/bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
bash-5.0$ df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
overlay              251849584  81204868 157828332  34% /
tmpfs                    65536         0     65536   0% /dev
tmpfs                131897456         0 131897456   0% /sys/fs/cgroup
/dev/sda7            1048309768    208876 994826524   0% /etc/pki
/dev/sda5            201453840   2749648 188447808   1% /dev/termination-log
shm                      65536         0     65536   0% /dev/shm
/dev/sda4            251849584  81204868 157828332  34% /etc/resolv.conf
/dev/sda4            251849584  81204868 157828332  34% /etc/hostname
/dev/sda5            201453840   2749648 188447808   1% /etc/hosts
*/dev/rbd4             18512592     90072  18406136   0% /var/lib/grafana*
/dev/sda5            201453840   2749648 188447808   1% /etc/grafana/grafana.ini
tmpfs                131897456        12 131897444   0% /run/secrets/kubernetes.io/serviceaccount
tmpfs                131897456         0 131897456   0% /proc/acpi
tmpfs                    65536         0     65536   0% /proc/kcore
tmpfs                    65536         0     65536   0% /proc/keys
tmpfs                    65536         0     65536   0% /proc/timer_list
tmpfs                    65536         0     65536   0% /proc/sched_debug
tmpfs                131897456         0 131897456   0% /proc/scsi
tmpfs                131897456         0 131897456   0% /sys/firmware
</code></pre></div>    </div>
  </li>
</ul>]]></content><author><name>Bob Liotta</name></author><summary type="html"><![CDATA[Resize a PVC - Use this if autoresize does NOT work First we need the hostname that the PVC is running on. You get that as follows: [B:avengers:grafana] liottar:/Users/liottar$ kgp -owide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES grafana-58ff767cd6-rlckq 1/1 Running 0 11m 10.233.76.199 *thor* &lt;none&gt; &lt;none&gt; Save the host is it running on. In this case thor Next, we need the pv name [B:avengers:grafana] liottar:/Users/liottar$ k get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE grafana Bound *pvc-6089741d-6ec8-40c6-b127-f5df3c3f9bcf* 16Gi RWO rook-ceph-block 32m grafana-certs-pvc Bound grafana-certs-pv 1Gi ROX manual 32m Save the PV name. In this case pvc-6089741d-6ec8-40c6-b127-f5df3c3f9bcf Now we need the rdb volume k describe pv pvc-6089741d-6ec8-40c6-b127-f5df3c3f9bcf Name: pvc-6089741d-6ec8-40c6-b127-f5df3c3f9bcf Labels: &lt;none&gt; Annotations: pv.kubernetes.io/bound-by-controller: yes pv.kubernetes.io/provisioned-by: rook-ceph.rbd.csi.ceph.com Finalizers: [kubernetes.io/pv-protection] StorageClass: rook-ceph-block Status: Bound Claim: grafana/grafana Reclaim Policy: Retain Access Modes: RWO VolumeMode: Filesystem Capacity: 16Gi Node Affinity: &lt;none&gt; Message: Source: Type: CSI (a Container Storage Interface (CSI) volume source) Driver: rook-ceph.rbd.csi.ceph.com FSType: ext4 VolumeHandle: 0001-0009-rook-ceph-0000000000000002-982bc493-c57c-11eb-b70e-be16494d8857 ReadOnly: false VolumeAttributes: clusterID=rook-ceph csi.storage.k8s.io/pv/name=pvc-6089741d-6ec8-40c6-b127-f5df3c3f9bcf csi.storage.k8s.io/pvc/name=grafana csi.storage.k8s.io/pvc/namespace=grafana imageFeatures=layering imageFormat=2 imageName=*csi-vol-982bc493-c57c-11eb-b70e-be16494d8857* journalPool=replicapool pool=replicapool storage.kubernetes.io/csiProvisionerIdentity=1622684567259-8081-rook-ceph.rbd.csi.ceph.com Events: &lt;none&gt; Save the rbd image name, in this case csi-vol-982bc493-c57c-11eb-b70e-be16494d8857 Now go into rook-ceph-tools k exec -itn rook-ceph rook-ceph-tools-7865b9c9f6-m75sq /bin/bash Resize the volume rbd resize --pool replicapool --image csi-vol-982bc493-c57c-11eb-b70e-be16494d8857 --size=18Gi exit Now…. Log into the host where the pvc is mounted, in this case Thor and execute the following commands: ssh centos@thor sudo -I # You are now root - Beware and two pairs of eyes df -k | grep pvc-6089741d-6ec8-40c6-b127-f5df3c3f9bcf ### &lt;— PV from earlier /dev/rbd4 16448380 90116 16341880 1% /var/lib/kubelet/pods/a1183a36-df40-40ed-9188-68217dc87c81/volumes/kubernetes.io~csi/pvc-6089741d-6ec8-40c6-b127-f5df3c3f9bcf/mount Note the device name…. In this example /dev/rbd4 resize2fs /dev/rbd4 exit exit k edit pv pvc-6089741d-6ec8-40c6-b127-f5df3c3f9bcf Check the size of the device to make sure it matches what you put in the resize in ceps-tools Let’s check it [B:avengers:grafana] liottar:/Users/liottar$ k exec -it grafana-58ff767cd6-mxzbx /bin/bash kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead. bash-5.0$ df -k Filesystem 1K-blocks Used Available Use% Mounted on overlay 251849584 81204868 157828332 34% / tmpfs 65536 0 65536 0% /dev tmpfs 131897456 0 131897456 0% /sys/fs/cgroup /dev/sda7 1048309768 208876 994826524 0% /etc/pki /dev/sda5 201453840 2749648 188447808 1% /dev/termination-log shm 65536 0 65536 0% /dev/shm /dev/sda4 251849584 81204868 157828332 34% /etc/resolv.conf /dev/sda4 251849584 81204868 157828332 34% /etc/hostname /dev/sda5 201453840 2749648 188447808 1% /etc/hosts */dev/rbd4 18512592 90072 18406136 0% /var/lib/grafana* /dev/sda5 201453840 2749648 188447808 1% /etc/grafana/grafana.ini tmpfs 131897456 12 131897444 0% /run/secrets/kubernetes.io/serviceaccount tmpfs 131897456 0 131897456 0% /proc/acpi tmpfs 65536 0 65536 0% /proc/kcore tmpfs 65536 0 65536 0% /proc/keys tmpfs 65536 0 65536 0% /proc/timer_list tmpfs 65536 0 65536 0% /proc/sched_debug tmpfs 131897456 0 131897456 0% /proc/scsi tmpfs 131897456 0 131897456 0% /sys/firmware]]></summary></entry></feed>