<?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>DEV Community: Winnie Fred</title>
    <description>The latest articles on DEV Community by Winnie Fred (@devgitotox).</description>
    <link>https://dev.to/devgitotox</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%2F362500%2Fa51b5ef7-bb95-4ec4-a5ff-6051e4ceb8cb.jpeg</url>
      <title>DEV Community: Winnie Fred</title>
      <link>https://dev.to/devgitotox</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/devgitotox"/>
    <language>en</language>
    <item>
      <title>Oops! you cant manage Node versions</title>
      <dc:creator>Winnie Fred</dc:creator>
      <pubDate>Tue, 01 Aug 2023 17:02:40 +0000</pubDate>
      <link>https://dev.to/devgitotox/oops-you-cant-manage-node-versions-2aco</link>
      <guid>https://dev.to/devgitotox/oops-you-cant-manage-node-versions-2aco</guid>
      <description>&lt;p&gt;Avoid hard labor dealing with node version of different projects.&lt;br&gt;
Use NVM to manage different node versions.NVM allows to install different versions depending on the project you working on via CLI.&lt;/p&gt;

&lt;p&gt;1: In the &lt;a href="https://github.com/coreybutler/nvm-windows#readme"&gt;nvm-windows repository Readme&lt;/a&gt;, click on "Download Now!":&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UfQjjTOI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/utxc4gb5676xsgbx9kcb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UfQjjTOI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/utxc4gb5676xsgbx9kcb.png" alt="NVM installation" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2: Download and Install .exe file of the latest release.&lt;/p&gt;

&lt;p&gt;3: check nvm version.&lt;/p&gt;

&lt;p&gt;4: The installation process from above should automatically add the nvm configuration to your profile. If you're using zsh, that would be &lt;code&gt;~/.zshrc&lt;/code&gt;. If you're using bash, that would be &lt;code&gt;~/.bash_profile&lt;/code&gt;...or some other profile.&lt;/p&gt;

&lt;p&gt;If it doesn't automatically add nvm configuration, you can add it yourself to your profile file:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] &amp;amp;&amp;amp; printf %s"${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"[ -s "$NVM_DIR/nvm.sh" ] &amp;amp;&amp;amp; \. "$NVM_DIR/nvm.sh"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;5: Reload the shell configuration &lt;code&gt;source ~/.bashrc&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;6: check nvm version: &lt;code&gt;nvm -v&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Note: &lt;br&gt;
1: Can use nvm to install and use node versions below commands.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; nvm install latest - // install latest version
 nvm install vX.Y.Z - // install specific version
 nvm alias default vX.Y.Z - // set default version
 nvm use vA.B.C - // use a specific version

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>How to Install Ansible on Ubuntu</title>
      <dc:creator>Winnie Fred</dc:creator>
      <pubDate>Mon, 12 Jun 2023 20:22:08 +0000</pubDate>
      <link>https://dev.to/devgitotox/how-to-install-ansible-on-ubuntu-12n4</link>
      <guid>https://dev.to/devgitotox/how-to-install-ansible-on-ubuntu-12n4</guid>
      <description>&lt;p&gt;&lt;strong&gt;Ansible&lt;/strong&gt; is an open-source platform used for automation and various operations such as configuration management, application deployment, task automation and IT orchestration.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;How does Ansible work?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ansible uses the &lt;em&gt;&lt;strong&gt;concepts of control and managed nodes&lt;/strong&gt;&lt;/em&gt;. It connects from the control node any machine with Ansible installed to the managed nodes sending commands and instructions to them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key concepts&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Modules&lt;/em&gt;&lt;/strong&gt; are units of code that Ansible executes on the managed nodes.Each module is invoked by a task.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Task&lt;/em&gt;&lt;/strong&gt; is a call to an Ansible module.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Plays&lt;/em&gt;&lt;/strong&gt; are a series of Ansible tasks or roles mapped to group of hosts in the inventory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Playbooks&lt;/em&gt;&lt;/strong&gt; are series of plays that explain what to run and are written in YAML.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Inventory&lt;/em&gt;&lt;/strong&gt; is a collection of all the hosts and groups that Ansible manages.it can be in a static file(.ini files) in simple cases or pull inventory from remote sources such as cloud providers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Role&lt;/em&gt;&lt;/strong&gt; is a standard directory structure for specifying tasks and variables.Playbooks can be broken up into roles for modularity and reuse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Host&lt;/em&gt;&lt;/strong&gt; is a remote machine managed by Ansible&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Group&lt;/em&gt;&lt;/strong&gt; several hosts grouped together that share common attribute.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Handlers&lt;/em&gt;&lt;/strong&gt; used to perform actions on a service such as restarting or stopping a service that is actively running on the managed node's system.Handlers are triggered by tasks and their execution happens at the end of a play after all tasks are finished.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to install Ansible&lt;/strong&gt;&lt;br&gt;
1: Setting up python 3:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt update
sudo apt -y upgrade
python -V
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2: Setting up pip3:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install -y python3-pip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3: There are a few more packages and development tools to install to ensure that you have a robust setup for your programming environment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install -y build-essential libssl-dev libffi-dev python3-dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4: Setting up Ansible&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt -y install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt update
sudo apt install ansible
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>ansible</category>
      <category>python</category>
      <category>pip</category>
    </item>
    <item>
      <title>Configuration Managament &amp; IaC</title>
      <dc:creator>Winnie Fred</dc:creator>
      <pubDate>Sun, 11 Jun 2023 17:37:35 +0000</pubDate>
      <link>https://dev.to/devgitotox/configuration-managament-iac-42bi</link>
      <guid>https://dev.to/devgitotox/configuration-managament-iac-42bi</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Configuration Management&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Configuration management is commonly referred to as IT Automation or Server Orchestration.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CM ensures application implementation, function and performance.&lt;/li&gt;
&lt;li&gt;CM is key to DevOps because it can be automated with code to accomplish common tasks instead of relying on manual intervention.&lt;/li&gt;
&lt;li&gt;CM uses Ansible to integrate with OCI DevOps service.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GnA6IEdg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nhpxe7vs90ff11tp6w65.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GnA6IEdg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nhpxe7vs90ff11tp6w65.png" alt="cm" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Infrastructure as Code (IaC)&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;IaC defines, configures and provisions infrastructure using readable code, eliminating the need for manual system setup.&lt;/li&gt;
&lt;li&gt;IaC is a key DevOps practice that allows for infrastructure automation, which works together with the continuous delivery model.&lt;/li&gt;
&lt;li&gt;IaC uses Terraform to integrate OCI DevOps service&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;There are 3 main task categories:&lt;/strong&gt;&lt;br&gt;
1: &lt;em&gt;&lt;strong&gt;Infrastructure provisioning&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
    - Spinning up new servers&lt;br&gt;
    - Network configuration&lt;br&gt;
    - Creating load balancers&lt;br&gt;
    - Configuration on infrastructure level&lt;/p&gt;

&lt;p&gt;2: &lt;em&gt;&lt;strong&gt;Configuration of provisioned infrastructure&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
    - Installing applications on servers&lt;br&gt;
    - Managing the apps&lt;br&gt;
    - Prepare the infrastructure/servers to deploy the app&lt;/p&gt;

&lt;p&gt;3: &lt;em&gt;&lt;strong&gt;Deployment of application&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Distinction of phases&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Initial setup phase&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Maintaining phase&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Provision infrastructure&lt;/td&gt;
&lt;td&gt;Adjustment to infrastructure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Configure infrastructure&lt;/td&gt;
&lt;td&gt;Add and remove servers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Initial installation of software&lt;/td&gt;
&lt;td&gt;Update software&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Initial configuration of software&lt;/td&gt;
&lt;td&gt;Re-configuration of software&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Difference of IaC tools&lt;/strong&gt;&lt;br&gt;
1: Automate tasks in different categories for different phases&lt;br&gt;
2: Combination of 2 or more IaC tools. Example terraform does the initial infrastructure setup and manage infrastructure but also it can also do initial application setup.However Ansible can configure and management applications but also can configure already managed infrastructure&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note: Infrastructure as code asks, what resources are there? And configuration management asks, how are they configured?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Hence its recommended to use Terraform for provisioning and de-provisioning and Ansible for configuration, patching, deployment, and maintenance.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Ansible&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Terraform&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Is a Configuration Management tool&lt;/td&gt;
&lt;td&gt;Is a Infrastructure as Code tool&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Support mutable infrastructure&lt;/td&gt;
&lt;td&gt;Support immutable infrastructure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Works via SSH&lt;/td&gt;
&lt;td&gt;Works via API calls&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Follows procedural language&lt;/td&gt;
&lt;td&gt;Follows declarative language&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Benefits of configuration management for servers comes from defining infrastructure as code. This enables you to:&lt;/p&gt;

&lt;p&gt;1: Use a version control system to keep track of any changes in your infrastructure.&lt;br&gt;
2: Reuse provisioning scripts for multiple server environments such as development, testing and production.&lt;br&gt;
3: Share provisioning scripts between coworkers to facilitate collaboration in a standardized development environment.&lt;br&gt;
4: Streamline the process of replicating servers which facilitates recovery from critical errors.&lt;/p&gt;

</description>
      <category>ansible</category>
      <category>terraform</category>
    </item>
    <item>
      <title>DevOps Introduction</title>
      <dc:creator>Winnie Fred</dc:creator>
      <pubDate>Sun, 11 Jun 2023 14:31:04 +0000</pubDate>
      <link>https://dev.to/devgitotox/devops-introduction-4dh4</link>
      <guid>https://dev.to/devgitotox/devops-introduction-4dh4</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Overview&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;DevOps&lt;/strong&gt;&lt;/em&gt; is the use of collaboration, automation and continuous practices to achieve continuous delivery of high quality software. It's a paradigm shift from traditional software development.&lt;/p&gt;

&lt;p&gt;DevOps pervades everything from deployment and testing of software to the architecture of the software itself.&lt;/p&gt;

&lt;h3&gt;
  
  
  DevOps Lifecycle
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What is the DevOps lifecycle look like?&lt;/strong&gt; To get concrete about the tasks involved, it looks at software development in eight phases-- plan, code, build, test, release, deploy, operate, and monitor. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;DevOps Life Cycle is a rapid-release, multi-phased SDLC with a strong feedback loop.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QjPhioQp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3hi1hl413fn747e0at15.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QjPhioQp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3hi1hl413fn747e0at15.png" alt="Lifecycle" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First, &lt;em&gt;agile development&lt;/em&gt; is a bit of a predecessor to DevOps. It's an approach to software development that emphasizes a lightweight, rapid release life cycle.&lt;/p&gt;

&lt;p&gt;Second, &lt;em&gt;Continuous integration&lt;/em&gt; is the practice of developers integrating all of their work together as soon as possible in the life cycle. For example, if I push a change to code, it should automatically build the whole system with that change and run a suite of automated tests.&lt;/p&gt;

&lt;p&gt;Third, &lt;em&gt;Continuous delivery&lt;/em&gt; is the practice of quickly getting code changes from developers to users. For example, if I push a change to code and it passes all of the automated tests, I should be able to seamlessly push that change to QA and production environments.&lt;/p&gt;

&lt;p&gt;Finally, benefits of adopting DevOps, it encourages the culture of collaboration, it makes for higher quality technology, and it enables better flexibility around the business. All of the hype around DevOps is because software developed with traditional methods just can't keep up with software developed with DevOps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--660H8FcY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zfaregey7ofy8il0qi5i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--660H8FcY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zfaregey7ofy8il0qi5i.png" alt="CI/CD platform" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;DevOps as a service&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DevOps as a service - CI/CD platform for developers to automate their SDLC&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To get an idea of the DevOps ecosystem, let's take a look at an example DevOps workflow. &lt;/p&gt;

&lt;p&gt;1: A team could plan out their coding process on software such as Jira to track issues to fix and features to implement.&lt;/p&gt;

&lt;p&gt;2: Then they'll manage code versioning with git and commit to a centralized repository in GitHub or GitLab. &lt;/p&gt;

&lt;p&gt;3: From there, they can build their code with a program like gradle or maven and test it with a program like Selenium. &lt;/p&gt;

&lt;p&gt;4: Once they've arrived at code they want to deploy, it might be containerized with Docker and rolled out to infrastructure via an orchestration tool like Kubernetes. The infrastructure itself could be provisioned by Terraform and configured by Ansible.&lt;/p&gt;

&lt;p&gt;5: As the application runs, it could be monitored by a program like Grafana. A full cycle of this can be run monthly, weekly, or less based on the business. &lt;/p&gt;

&lt;p&gt;Finally, a CI/CD program like Jenkins could tie it all together by allowing one phase to automatically trigger another. Obviously, that's just an example, and it'll vary widely per team and per project. But what you might note is that there are lots of moving parts here. And figuring out how to integrate them together on a given platform is non-trivial.This is where DevOps as a service comes in. &lt;/p&gt;

&lt;p&gt;The idea of DevOps as a service is basically to prepackage all of the necessary tools together and put a single pane of glass in front of them. So it collapses the DevOps workflow into a single silo and provides lots of pre-built automation. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--M1Ff3xFM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hh8588n657cstuvaaasa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--M1Ff3xFM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hh8588n657cstuvaaasa.png" alt="paradigm" width="800" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

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