From b1e35ad882f53197e685a992974f983a31ae814b Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Tue, 21 Feb 2023 08:36:24 -0600 Subject: [PATCH] update featured posts --- .../index.md | 2 +- content/posts/esxi-arm-on-quartz64/index.md | 18 +++++++++--------- .../index.md | 18 +++++++++--------- .../index.md | 16 ++++++++-------- 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/content/posts/create-vms-chromebook-hashicorp-vagrant/index.md b/content/posts/create-vms-chromebook-hashicorp-vagrant/index.md index ceb1d4d..4c742f8 100644 --- a/content/posts/create-vms-chromebook-hashicorp-vagrant/index.md +++ b/content/posts/create-vms-chromebook-hashicorp-vagrant/index.md @@ -3,7 +3,7 @@ title: "Create Virtual Machines on a Chromebook with HashiCorp Vagrant" # Title date: 2023-02-20 # Date of post creation. lastmod: 2023-02-21 description: "Pairing the powerful Linux Development Environment on modern Chromebooks with HashiCorp Vagrant to create and manage local virtual machines for development and testing" # Description used for search engine. -featured: false # Sets if post is a featured post, making appear on the home page side bar. +featured: true # Sets if post is a featured post, making appear on the home page side bar. draft: false # Sets whether to render this page. Draft of true will not be rendered. toc: true # Controls if a table of contents should be generated for first-level links automatically. usePageBundles: true diff --git a/content/posts/esxi-arm-on-quartz64/index.md b/content/posts/esxi-arm-on-quartz64/index.md index 923bed9..786c9ca 100644 --- a/content/posts/esxi-arm-on-quartz64/index.md +++ b/content/posts/esxi-arm-on-quartz64/index.md @@ -3,7 +3,7 @@ title: "ESXi ARM Edition on the Quartz64 SBC" # Title of the blog post. date: 2022-04-23 # Date of post creation. lastmod: 2022-12-14 description: "Getting started with the experimental ESXi Arm Edition fling to run a VMware hypervisor on the PINE64 Quartz64 single-board computer, and installing a Tailscale node on Photon OS to facilitate improved remote access to my home network." # Description used for search engine. -featured: false # Sets if post is a featured post, making appear on the home page side bar. +featured: true # Sets if post is a featured post, making appear on the home page side bar. draft: false # Sets whether to render this page. Draft of true will not be rendered. toc: true # Controls if a table of contents should be generated for first-level links automatically. usePageBundles: true @@ -127,7 +127,7 @@ I'll need to use these settings for the connection (which are the defaults selec | Port | `/dev/ttyUSB0` | | Bitrate | `115200` | | Data Bit | `8 bit` | -| Parity | `none` | +| Parity | `none` | | Stop Bit | `1` | | Flow Control | `none` | @@ -138,9 +138,9 @@ I hit **Connect** and then connect the Quartz64's power supply. I watch as it lo ### Host creation #### ESXi install -Now that I've got everything in order I can start the install. A lot of experimentation on my part confirmed the sad news about the USB ports: of the four USB ports, only the top-right USB2 port works reliably for me. So I connect my ~~USB NIC+hub to that port, and plug in my 256GB drive to the hub~~[^v1.10] 256GB USB drive there. This isn't ideal from a performance aspect, of course, but slow storage is more useful than no storage. +Now that I've got everything in order I can start the install. A lot of experimentation on my part confirmed the sad news about the USB ports: of the four USB ports, only the top-right USB2 port works reliably for me. So I connect my ~~USB NIC+hub to that port, and plug in my 256GB drive to the hub~~[^v1.10] 256GB USB drive there. This isn't ideal from a performance aspect, of course, but slow storage is more useful than no storage. -On that note, remember what I mentioned earlier about how the ESXi installer would want to fill up ~128GB worth of whatever drive it targets? The ESXi ARM instructions say that you can get around that by passing the `autoPartitionOSDataSize` advanced option to the installer by pressing `[Shift] + O` in the ESXi bootloader, but the Quartz64-specific instructions say that you can't do that with this board since only the serial console is available... It turns out this is a (happy) lie. +On that note, remember what I mentioned earlier about how the ESXi installer would want to fill up ~128GB worth of whatever drive it targets? The ESXi ARM instructions say that you can get around that by passing the `autoPartitionOSDataSize` advanced option to the installer by pressing `[Shift] + O` in the ESXi bootloader, but the Quartz64-specific instructions say that you can't do that with this board since only the serial console is available... It turns out this is a (happy) lie. I hooked up a monitor to the board's HDMI port and a USB keyboard to a free port on the hub and verified that the keyboard let me maneuver through the BIOS menu. From here, I hit the **Reset** button on the Quartz64 to restart it and let it boot from the connected USB drive. When I got to the ESXi pre-boot countdown screen, I pressed `[Shift] + O` as instructed and added `autoPartitionOSDataSize=8192` to the boot options. This limits the size of the new-for-ESXi7 ESX-OSData VMFS-L volume to 8GB and will give me much more space for the local datastore. @@ -157,7 +157,7 @@ After the installation completed, I rebooted the host and watched for the Direct I hit `[F2]` and logged in with the root credentials to get to the System Customization menu: ![DCUI System Customization](dcui_system_customization.png) -The host automatically received an IP issued by DHCP but I'd like for it to instead use a static IP. I'll also go ahead and configure the appropriate DNS settings. +The host automatically received an IP issued by DHCP but I'd like for it to instead use a static IP. I'll also go ahead and configure the appropriate DNS settings. ![Setting the IP address](dcui_ip_address.png) ![Configuring DNS settings](dcui_dns.png) @@ -272,7 +272,7 @@ passwd john Now I can use SSH to connect to the VM and ditch the web console: ```bash ❯ ssh pho01.lab.bowdre.net -Password: +Password: john@pho01 [ ~ ]$ sudo whoami We trust you have received the usual lecture from the local System @@ -403,14 +403,14 @@ Now I can remotely access the VM (and thus my homelab!) from any of my other Tai [^hassos]: The [Tailscale add-on for Home Assistant](https://github.com/hassio-addons/addon-tailscale) also tries to advertise its subnets by default, but I leave that disabled in the admin portal as well. -[^failover]: Tailscale does offer a [subnet router failover feature](https://tailscale.com/kb/1115/subnet-failover/) but it is only available starting on the [Business ($15/month) plan](https://tailscale.com/pricing/) and not the $48/year Personal Pro plan that I'm using. +[^failover]: Tailscale does offer a [subnet router failover feature](https://tailscale.com/kb/1115/subnet-failover/) but it is only available starting on the [Business ($15/month) plan](https://tailscale.com/pricing/) and not the $48/year Personal Pro plan that I'm using. ### Conclusion -I actually received the Quartz64 waay back on March 2nd, and it's taken me until this week to get all the pieces in place and working the way I wanted. +I actually received the Quartz64 waay back on March 2nd, and it's taken me until this week to get all the pieces in place and working the way I wanted. {{< tweet user="johndotbowdre" id="1499194756148125701" >}} -As is so often the case, a lot of time and effort would have been saved if I had RTFM'd[^rtfm] before diving in to the deep end. I definitely hadn't anticipated all the limitations that would come with the Quartz64 SBC before ordering mine. Now that it's done, though, I'm pretty pleased with the setup, and I feel like I learned quite a bit along the way. I keep reminding myself that this is still a very new hardware platform. I'm excited to see how things improve with future development efforts. +As is so often the case, a lot of time and effort would have been saved if I had RTFM'd[^rtfm] before diving in to the deep end. I definitely hadn't anticipated all the limitations that would come with the Quartz64 SBC before ordering mine. Now that it's done, though, I'm pretty pleased with the setup, and I feel like I learned quite a bit along the way. I keep reminding myself that this is still a very new hardware platform. I'm excited to see how things improve with future development efforts. [^rtfm]: Read The *Friendly* Manual. Yeah. diff --git a/content/posts/setting-up-linux-on-a-new-lenovo-chromebook-duet-bonus-arm64-complications/index.md b/content/posts/setting-up-linux-on-a-new-lenovo-chromebook-duet-bonus-arm64-complications/index.md index a017a77..b2cf338 100644 --- a/content/posts/setting-up-linux-on-a-new-lenovo-chromebook-duet-bonus-arm64-complications/index.md +++ b/content/posts/setting-up-linux-on-a-new-lenovo-chromebook-duet-bonus-arm64-complications/index.md @@ -12,7 +12,7 @@ tags: - shell - containers title: Setting up Linux on a new Lenovo Chromebook Duet (bonus arm64 complications!) -featured: true +featured: false --- I've [written in the past](/3d-modeling-and-printing-on-chrome-os) about the Linux setup I've been using on my Pixel Slate. My Slate's keyboard stopped working over the weekend, though, and there don't seem to be any replacements (either Google or Brydge) to be found. And then I saw that [Walmart had the 64GB Lenovo Chromebook Duet temporarily marked down](https://twitter.com/johndotbowdre/status/1320733614426988544) to a mere $200 - just slightly more than the Slate's *keyboard* originally cost. So I jumped on that deal, and the little Chromeblet showed up today. @@ -23,7 +23,7 @@ I'll be putting the Duet through the paces in the coming days to see if/how it c So journey with me as I get this little guy set up! -### Installing Linux +### Installing Linux This part is dead simple. Just head into **Settings > Linux (Beta)** and hit the **Turn on** button: ![It doesn't take much to get Linux turned on](oLso9Wyzj.png) @@ -54,7 +54,7 @@ Just grab the installer script like so: wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh ``` Review it if you'd like (and you should! *Always* review code before running it!!), and then execute it: -```shell +```shell sh install.sh ``` When asked if you'd like to change your default shell to `zsh` now, **say no**. This is because it will prompt for your password, but you probably don't have a password set on your brand-new Linux (Beta) account and that just makes things complicated. We'll clear this up later, but for now just check out that slick new prompt: @@ -76,9 +76,9 @@ Now close out the terminal and open it again, and you should be met by the power ![pwerlevel10k configurator](K1ScSuWcg.png) This theme is crazy-configurable, but fortunately the configurator wizard does a great job of helping you choose the options that work best for you. -I pick the Classic prompt style, Unicode character set, Dark prompt color, 24-hour time, Angled separators, Sharp prompt heads, Flat prompt tails, 2-line prompt height, Dotted prompt connection, Right prompt frame, Sparse prompt spacing, Fluent prompt flow, Enabled transient prompt, Verbose instant prompt, and (finally) Yes to apply the changes. +I pick the Classic prompt style, Unicode character set, Dark prompt color, 24-hour time, Angled separators, Sharp prompt heads, Flat prompt tails, 2-line prompt height, Dotted prompt connection, Right prompt frame, Sparse prompt spacing, Fluent prompt flow, Enabled transient prompt, Verbose instant prompt, and (finally) Yes to apply the changes. ![New P10k prompt](20210804_p10k_prompt.png) -Looking good! +Looking good! ### Visual Studio Code I'll need to do some light development work so VS Code is next on the hit list. You can grab the installer [here](https://code.visualstudio.com/Download#) or just copy/paste the following to stay in the Terminal. Definitely be sure to get the arm64 version! @@ -101,7 +101,7 @@ Once you connect the phone to Linux, check the phone to approve the debugging co ### Microsoft PowerShell and VMware PowerCLI *[Updated 5/20/2021 with Microsoft's newer instructions]* -I'm working on setting up a [VMware homelab on an Intel NUC 9](https://twitter.com/johndotbowdre/status/1317558182936563714) so being able to automate things with PowerCLI will be handy. +I'm working on setting up a [VMware homelab on an Intel NUC 9](https://twitter.com/johndotbowdre/status/1317558182936563714) so being able to automate things with PowerCLI will be handy. PowerShell for ARM is still in an early stage so while [it is supported](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-linux?view=powershell-7.2#support-for-arm-processors) it must be installed manually. Microsoft has instructions for installing PowerShell from binary archives [here](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-linux?view=powershell-7.2#linux), and I grabbed the latest `-linux-arm64.tar.gz` release I could find [here](https://github.com/PowerShell/PowerShell/releases). ```shell @@ -113,7 +113,7 @@ sudo ln -s /opt/microsoft/powershell/7/pwsh /usr/bin/pwsh ``` You can then just run `pwsh`: ![Powershell, in Linux, on Chrome OS](QRP4iyLnu.png) -That was the hard part. To install PowerCLI into your new Powershell environment, just run `Install-Module -Name VMware.PowerCLI` at the `PS >` prompt, and accept the warning about installing a module from an untrusted repository. +That was the hard part. To install PowerCLI into your new Powershell environment, just run `Install-Module -Name VMware.PowerCLI` at the `PS >` prompt, and accept the warning about installing a module from an untrusted repository. I'm planning to use PowerCLI against my homelab without trusted SSL certificates so (note to self) I need to run `Set-PowerCLIConfiguration -InvalidCertificateAction Ignore` before I try to connect. ![PowerCLI connected to my vCenter](YaFNJJG_c.png) @@ -155,7 +155,7 @@ Xzibit would be proud! Just like [last time](/3d-modeling-and-printing-on-chrome-os), I'll want to be sure I can do light 3D part design and slicing on this Chromebook. Once again, I can install FreeCAD with `sudo apt install freecad`, and this time I didn't have to implement any workarounds for graphical issues: ![FreeCAD](q1inyuUOb.png) -Unfortunately, though, I haven't found a slicer application compiled with support for aarch64/arm64. There's a *much* older version of Cura available in the default Debian repos but it crashes upon launch. Neither Cura nor PrusaSlicer (or the Slic3r upstream) offer arm64 releases. +Unfortunately, though, I haven't found a slicer application compiled with support for aarch64/arm64. There's a *much* older version of Cura available in the default Debian repos but it crashes upon launch. Neither Cura nor PrusaSlicer (or the Slic3r upstream) offer arm64 releases. So while I can use the Duet for designing 3D models, I won't be able to actually prepare those models for printing without using another device. I'll need to keep looking for another solution here. (If you know of an option I've missed, please let me know!) @@ -181,4 +181,4 @@ Cool! Now I just need to learn what I'm doing with Jupyter - but at least I don' ### Wrap-up -I'm sure I'll be installing a few more utilities in the coming days but this covers most of my immediate must-have Linux needs. I'm eager to see how this little Chromeblet does now that I'm settled in. +I'm sure I'll be installing a few more utilities in the coming days but this covers most of my immediate must-have Linux needs. I'm eager to see how this little Chromeblet does now that I'm settled in. diff --git a/content/posts/tanzu-community-edition-k8s-homelab/index.md b/content/posts/tanzu-community-edition-k8s-homelab/index.md index 4d33bc3..c0e2440 100644 --- a/content/posts/tanzu-community-edition-k8s-homelab/index.md +++ b/content/posts/tanzu-community-edition-k8s-homelab/index.md @@ -3,7 +3,7 @@ title: "VMware Tanzu Community Edition Kubernetes Platform in a Homelab" # Title date: 2022-01-12 # Date of post creation. # lastmod: 2022-01-06T09:42:51-06:00 # Date when last modified description: "Gaining familiarity with VMware Tanzu Community Edition by deploying phpIPAM on Kubernetes in my homelab" # Description used for search engine. -featured: true # Sets if post is a featured post, making appear on the home page side bar. +featured: false # Sets if post is a featured post, making appear on the home page side bar. draft: false # Sets whether to render this page. Draft of true will not be rendered. toc: true # Controls if a table of contents should be generated for first-level links automatically. usePageBundles: true @@ -56,7 +56,7 @@ I'll also need to set aside a few static IPs for this project. These will need t Moving on to the [Getting Started](https://tanzucommunityedition.io/docs/latest/getting-started/), I'll need to grab some software before I can actually Get Started. #### Kubernetes control plane image -I need to download a VMware OVA which can be used for deploying my Kubernetes nodes from the VMWare Customer Connect portal [here](https://customerconnect.vmware.com/downloads/get-download?downloadGroup=TCE-090)[^register]. There are a few different options available. I'll get the Photon release with the highest Kubernetes version currently available, `photon-3-kube-v1.21.2+vmware.1-tkg.2-12816990095845873721.ova`. +I need to download a VMware OVA which can be used for deploying my Kubernetes nodes from the VMWare Customer Connect portal [here](https://customerconnect.vmware.com/downloads/get-download?downloadGroup=TCE-090)[^register]. There are a few different options available. I'll get the Photon release with the highest Kubernetes version currently available, `photon-3-kube-v1.21.2+vmware.1-tkg.2-12816990095845873721.ova`. Once the file is downloaded, I'll log into my vCenter and use the **Deploy OVF Template** action to deploy a new VM using the OVA. I won't bother booting the machine once deployed but will rename it to `k8s-node` to make it easier to identify later on and then convert it to a template. ![New k8s-node template](k8s-node_template.png) @@ -158,7 +158,7 @@ Serving kickstart UI at http://[::]:8080 *Now* I can point my local browser to my VM and see the UI: ![The Tanzu Installer UI](installer_ui.png) -And then I can click the button at the bottom left to save my eyes[^dark_mode] before selecting the option to deploy on vSphere. +And then I can click the button at the bottom left to save my eyes[^dark_mode] before selecting the option to deploy on vSphere. ![Configuring the IaaS Provider](installer_iaas_provider.png) I'll plug in the FQDN of my vCenter and provide a username and password to use to connect to it, then hit the **Connect** button. That will prompt me to accept the vCenter's certificate thumbprint, and then I'll be able to select the virtual datacenter that I want to use. Finally, I'll paste in the SSH public key[^gen_key] I'll use for interacting with the cluster. @@ -421,7 +421,7 @@ yelb-db-694586cd78-wb8tt 1/1 Running 0 10s yelb-ui-8f54fd88c-k2dw9 1/1 Running 0 10s ``` -Once the app is running, I can point my web browser at it to see it in action. But what IP do I use? +Once the app is running, I can point my web browser at it to see it in action. But what IP do I use? ```bash ❯ kubectl -n yelb get svc/yelb-ui @@ -577,7 +577,7 @@ persistentvolumeclaim "vsphere-demo-1" deleted ### A real workload - phpIPAM Demos are all well and good, but how about a real-world deployment to tie it all together? I've been using a [phpIPAM instance for assigning static IP addresses for my vRealize Automation deployments](/integrating-phpipam-with-vrealize-automation-8/), but have *only* been using it to monitor IP usage within the network ranges to which vRA will provision machines. I recently decided that I'd like to expand phpIPAM's scope so it can keep an eye on *all* the network ranges within the environment. That's not a big ask in [my little self-contained homelab](/vmware-home-lab-on-intel-nuc-9/), but having a single system scanning all the ranges of a large production network probably wouldn't scale too well. -Fortunately the phpIPAM project provides a [remote scanning agent](https://github.com/phpipam/phpipam-agent) which can be used for keeping an eye on networks and reporting back to the main phpIPAM server. With this, I could deploy an agent to each region (or multiple agents to a region!) and divide up the network into chunks that each agent would be responsible for scanning. But that's a pretty lightweight task for a single server to manage, and who wants to deal with configuring multiple instances of the same thing? Not this guy. +Fortunately the phpIPAM project provides a [remote scanning agent](https://github.com/phpipam/phpipam-agent) which can be used for keeping an eye on networks and reporting back to the main phpIPAM server. With this, I could deploy an agent to each region (or multiple agents to a region!) and divide up the network into chunks that each agent would be responsible for scanning. But that's a pretty lightweight task for a single server to manage, and who wants to deal with configuring multiple instances of the same thing? Not this guy. So I set to work exploring some containerization options, and I found [phpipam-docker](https://github.com/phpipam-docker/phpipam-docker). That would easily replicate my existing setup in a trio of containers (one for the web front-end, one for the database back-end, and one with `cron` jobs to run scans at regular intervals)... but doesn't provide a remote scan capability. I also found a [dockerized phpipam-agent](https://github.com/pierrecdn/phpipam-agent), but this one didn't quite meet my needs. It did provide me a base to work off of though so a few days of [tinkering](https://github.com/jbowdre/phpipam-agent-docker) resulted in me publishing my first [Docker image](https://github.com/jbowdre/phpipam-agent-docker/pkgs/container/phpipam-agent). I've still some work to do before this application stack is fully ready for production but it's at a point where I think it's worth doing a test deploy. @@ -716,7 +716,7 @@ metadata: spec: type: LoadBalancer ports: - - name: http + - name: http port: 80 protocol: TCP targetPort: 80 @@ -974,7 +974,7 @@ The scan agent isn't going to do anything until it's assigned to a subnet though Now I can create a new subnet within the `Lab` section by clicking the **Subnets** menu, selecting the `Lab` section, and clicking **+ Add subnet**. ![Empty subnets menu](subnets_empty.png) -I'll define the new subnet as `192.168.1.0/24`. Once I enable the option to *Check hosts status*, I'll then be able to specify my new `remote-agent` as the scanner for this subnet. +I'll define the new subnet as `192.168.1.0/24`. Once I enable the option to *Check hosts status*, I'll then be able to specify my new `remote-agent` as the scanner for this subnet. ![Creating a new subnet](creating_new_subnet.png) ![A new (but empty) subnet](new_subnet_pre_scan.png) @@ -985,4 +985,4 @@ It shows the scanner associated with the subnet, but no data yet. I'll need to w Woah, it actually works! ### Conclusion -I still need to do more work to the containerized phpIPAM stack ready for production, but I'm feeling pretty good for having deployed a functional demo of it at this point! And working on this was a nice excuse to get a bit more familiar with Tanzu Community Edition specifically, Kubernetes in general, and Docker (I learned a ton while assembling the `phpipam-agent` image!). I find I always learn more about a new-to-me technology when I have an actual project to do rather than just going through the motions of a lab exercise. Maybe my notes will be useful to you, too. \ No newline at end of file +I still need to do more work to the containerized phpIPAM stack ready for production, but I'm feeling pretty good for having deployed a functional demo of it at this point! And working on this was a nice excuse to get a bit more familiar with Tanzu Community Edition specifically, Kubernetes in general, and Docker (I learned a ton while assembling the `phpipam-agent` image!). I find I always learn more about a new-to-me technology when I have an actual project to do rather than just going through the motions of a lab exercise. Maybe my notes will be useful to you, too. \ No newline at end of file