<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Blaine Carter</title>
    <description>The latest articles on Forem by Blaine Carter (@osblaineora).</description>
    <link>https://forem.com/osblaineora</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F29924%2F18e5bffa-90b3-4896-9d9e-eb1fd2d18204.png</url>
      <title>Forem: Blaine Carter</title>
      <link>https://forem.com/osblaineora</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/osblaineora"/>
    <language>en</language>
    <item>
      <title>Quick and Easy Raspberry Pi Setup</title>
      <dc:creator>Blaine Carter</dc:creator>
      <pubDate>Fri, 30 Mar 2018 19:29:34 +0000</pubDate>
      <link>https://forem.com/osblaineora/quick-and-easy-raspberry-pi-setup-2o9n</link>
      <guid>https://forem.com/osblaineora/quick-and-easy-raspberry-pi-setup-2o9n</guid>
      <description>

&lt;p&gt;So, you have a shiny new Raspberry Pi and you’d like to install Linux on it.&lt;/p&gt;

&lt;p&gt;This is a short guide to help you get Raspbian installed and configured for Wifi and SSH access.  You should be able to follow this guide even if you don’t connect a keyboard or monitor to your Pi.&lt;/p&gt;

&lt;p&gt;NOTE: In order to complete all of the steps in this guide, you will need to be able to access and edit files in an ext4 filesystem.  I will mark these steps with [ext4].  This may require additional steps and/or software for Windows systems.&lt;/p&gt;

&lt;p&gt;First up, you will need to download a couple files.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.raspberrypi.org/downloads/raspbian/"&gt;Raspbian&lt;br&gt;
&lt;/a&gt;I usually download the image from raspberrypi.org.  There are two images available.  The &lt;em&gt;desktop image&lt;/em&gt; comes with a GUI front end and a few pre-installed applications.  The &lt;em&gt;lite image&lt;/em&gt; is a ‘headless’ install, meaning you will boot to a command prompt and there is no GUI desktop installed.  This guide will work for either version, pick whichever version you want.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://etcher.io/"&gt;Etcher&lt;/a&gt;
Using Etcher makes it easy to flash an image to your sd card.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Put the SD Card in Your Computer
&lt;/h3&gt;

&lt;p&gt;For the next few steps, keep the SD Card in your computer.  You will not put the card in your Pi until we get to the “Boot your Pi” section below.&lt;/p&gt;

&lt;h5&gt;
  
  
  Flash Raspbian to the SD Card
&lt;/h5&gt;

&lt;p&gt;Run Etcher:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Chose the Raspbian zip file you downloaded above.&lt;/li&gt;
&lt;li&gt;Select your SD Card from the list.  WARNING: Etcher does it’s best to make sure it only shows SD Cards in the list, but you should always make sure it’s the card you want to install to, the selected drive will be formatted!&lt;/li&gt;
&lt;li&gt;Click Flash.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you open your favorite file explorer you should now see two new drives listed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;boot&lt;/li&gt;
&lt;li&gt;rootfs [ext4]&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Enable SSH Access
&lt;/h5&gt;

&lt;ol&gt;
&lt;li&gt;Change into boot.  (Modify the ‘cd’ command below to match the path to boot on your system.)&lt;/li&gt;
&lt;li&gt;Create an empty file called ‘ssh’.&lt;/li&gt;
&lt;/ol&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd boot touch ssh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;That’s it.  The first time you boot your Pi ssh will automatically be enabled.  (Don’t boot it up yet.)&lt;/p&gt;

&lt;h5&gt;
  
  
  Connect Without a Password
&lt;/h5&gt;

&lt;p&gt;Having to type a password everytime you SSH or SCP to your Pi gets old after a while.  If you don’t mind typing the password every time you can skip this step.&lt;/p&gt;

&lt;p&gt;Add your public key to your Pi [ext4]:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Locate the ssh public key you want to use (example ~/.ssh/id_rsa.pub). If you don’t already have one, you can follow the steps in &lt;a href="https://git-scm.com/book/be/v2/Git-on-the-Server-Generating-Your-SSH-Public-Key"&gt;this guide&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Change into the pi home on rootfs.  (Modify the ‘cd’ command below to match the path to rootfs on your system.)&lt;/li&gt;
&lt;li&gt;Create the .ssh directory.&lt;/li&gt;
&lt;li&gt;Append your public key to the authorized_keys file.  (You can repeat this step to append as many keys as you need for the different systems you intend to use.)&lt;/li&gt;
&lt;/ol&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd rootfs/home/pi install -d -m 700 .ssh cat ~/.ssh/id\_rsa.pub \&amp;gt;\&amp;gt; .ssh/authorized\_keys
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;If you’re not able to access the ext4 partition from your operating system you can follow &lt;a href="https://www.raspberrypi.org/documentation/remote-access/ssh/passwordless.md"&gt;this guide on raspberrypi.org&lt;/a&gt; after you boot up the Pi.&lt;/p&gt;

&lt;h5&gt;
  
  
  Enable Wifi [ext4]
&lt;/h5&gt;

&lt;ol&gt;
&lt;li&gt;Change into rootfs/etc/wpa_supplicant.&lt;/li&gt;
&lt;li&gt;Edit wpa_supplicant.conf.  (You may need sudo to edit this file.)&lt;/li&gt;
&lt;li&gt;Append the following to the end of the file.  Replace “Your SSID” and “Your WPA Password” with the values to connect to your Wifi.
&lt;/li&gt;
&lt;/ol&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;network={ ssid="Your SSID" psk="Your WPA Password" key\_mgmt=WPA-PSK }
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Save the file.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you’re not able to access the ext4 partition from your operating system you can follow these instructions after you boot up the Pi with the following changes.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Connect a keyboard and monitor to your Pi.&lt;/li&gt;
&lt;li&gt;Change into /etc/wpa_supplicant.&lt;/li&gt;
&lt;li&gt;Continue with step 2 above.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now it’s time to&lt;/p&gt;

&lt;h3&gt;
  
  
  Boot your Pi
&lt;/h3&gt;

&lt;p&gt;Put the SD Card in your Pi and boot it up.&lt;/p&gt;

&lt;p&gt;If you’re not connecting your Pi to a display, you should be able to get its IP address from your Wifi Router admin page.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Connect with ssh.&lt;/li&gt;
&lt;li&gt;Change the default pi user password. (default password: &lt;em&gt;raspberry&lt;/em&gt;).  Even though we set up access using a public key, the Pi can still be accessed with a password so it’s a good idea to set a new password.&lt;/li&gt;
&lt;li&gt;Run an update.&lt;/li&gt;
&lt;/ol&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh pi@192.168.0.34 passwd sudo apt-get update
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Do Something Fun
&lt;/h3&gt;

&lt;p&gt;At this point, you have a little Linux machine all set up and ready to use for your projects.  Go do something fun with it.&lt;/p&gt;

&lt;p&gt;If there are other configurations you’d like me to add to the guide please leave a comment.&lt;/p&gt;


</description>
      <category>learning</category>
      <category>raspberrypi</category>
    </item>
    <item>
      <title>Becoming a DevOps “expert”</title>
      <dc:creator>Blaine Carter</dc:creator>
      <pubDate>Thu, 31 Aug 2017 20:57:12 +0000</pubDate>
      <link>https://forem.com/osblaineora/becoming-a-devops-expert</link>
      <guid>https://forem.com/osblaineora/becoming-a-devops-expert</guid>
      <description>&lt;h3&gt;
  
  
  I’ve decided to learn more about DevOps.
&lt;/h3&gt;

&lt;p&gt;I’ve always been a believer in automating repetitive tasks and letting machines do as much of “my” work as they can.  The way I learn best is (as you can tell by the name of my blog) I learn about the topic, I build something from what I’ve learned and I share my experience.&lt;/p&gt;

&lt;p&gt;Given that DevOps is a very big topic, it will take more than one or two posts to do it justice.  This post is the first in a series of blog posts, videos and presentations that I plan to create as I learn more.  I think the best place to start is with what I “think” I know now.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is &lt;a href="https://en.wikipedia.org/wiki/DevOps"&gt;DevOps&lt;/a&gt;?
&lt;/h3&gt;

&lt;p&gt;A couple years ago I was using Jenkins to create a &lt;a href="https://en.wikipedia.org/wiki/Continuous_delivery"&gt;continuous delivery&lt;/a&gt; pipeline for a project I was working on.  I was the only one working on the project and after seeing a CD demonstration at a conference I figured I’d give it a try.  I had everything working and I was quite pleased with myself.  Then I started hearing the term DevOps and assumed it was just a term for what I was already doing.  I was partially right.&lt;/p&gt;

&lt;p&gt;DevOps is more than just automating the software delivery process, it’s also a cultural mindset.  It’s developers and operations working together throughout the full lifecycle of a project instead of in separate silos.  Since I was working solo on that project I missed out on this aspect.  Currently, I’m not working on any project where I can experience the full cultural aspect so I plan to mentally assume different roles as I work through the learning process.&lt;/p&gt;

&lt;p&gt;If you’d like a better definition, there is plenty of material available on the web from real experts.  I only wanted to document what DevOps means to me as I start to learn more.&lt;/p&gt;

&lt;h3&gt;
  
  
  My current plan.
&lt;/h3&gt;

&lt;p&gt;I have been working on an open source application used for demonstrations and learning called &lt;a href="https://github.com/oracle/dino-date"&gt;DinoDate&lt;/a&gt;.  I am going to build a DevOps process around this application.  I will be building this process using the &lt;a href="https://cloud.oracle.com/developer_service"&gt;Oracle Developer Cloud Service&lt;/a&gt; against an &lt;a href="https://cloud.oracle.com/database"&gt;Oracle Cloud Database&lt;/a&gt; and other Oracle Cloud services, as well as other tools such as Jenkins against an &lt;a href="http://www.oracle.com/technetwork/database/enterprise-edition/databaseappdev-vm-161299.html"&gt;Oracle Database on a VM&lt;/a&gt;.&lt;/p&gt;

&lt;h5&gt;
  
  
  Plan Steps:
&lt;/h5&gt;

&lt;ol&gt;
&lt;li&gt;Define the steps to manually deploy DinoDate as is.

&lt;ol&gt;
&lt;li&gt;Automate the build and deploy process which currently is, run some scripts and scp the code to an &lt;a href="https://cloud.oracle.com/compute"&gt;Oracle Compute&lt;/a&gt; instance where I have already setup Python and NodeJS.&lt;/li&gt;
&lt;li&gt;Deploy the NodeJS and Python apps to an &lt;a href="https://cloud.oracle.com/acc"&gt;Oracle Application Container Cloud&lt;/a&gt; instance.&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;li&gt;Add some open source tools to improve the process.

&lt;ul&gt;
&lt;li&gt;Build script using Gradle.&lt;/li&gt;
&lt;li&gt;Schema object version control using Liquibase.&lt;/li&gt;
&lt;li&gt;Unit tests for the PL/SQL using UTPLSQL.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Automate creating the infrastructure (DB, Compute instance) from scratch then deploy, test and destroy.&lt;/li&gt;
&lt;li&gt;Reproduce the entire CD pipeline using Jenkins (or another tool) against a VM.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once I’m satisfied with my understanding of the tools and workflow, I’ll find a project that would benefit from a DevOps environment and &lt;del&gt;pester&lt;/del&gt; encourage them to switch to a DevOps process with an offer to act as the DevOps “expert”.&lt;/p&gt;

&lt;h3&gt;
  
  
  More to come.
&lt;/h3&gt;

&lt;p&gt;Keep an eye out here and on my &lt;a href="https://www.youtube.com/BlaineCarter"&gt;YouTube&lt;/a&gt; channel for how-to and â€˜lessons learned’ posts that I’ll make as I go.  Feel free to post a comment if you see that I’ve already got something wrong or if you have a specific interest you’d like me to focus on as I go.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href="https://learncodeshare.net/2017/08/31/becoming-a-devops-expert/"&gt;learncodeshare.net&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>learning</category>
      <category>tools</category>
    </item>
  </channel>
</rss>
