DevOps Core
DevOps Core
1. Fundamentals
2. GIT
3. GITHUB
4. Linux
5. Docker
6. Kubernetes
1. What is Application
2. What is a Stack
3. What is SDLC, ALM
4. What is Agile
5. What is Scrum
6. VS Code -Code Editor
7. Setup An Application on your Local System
What is Application ?
1. Desktop Application
2. Web Appliaction
3. Mobile Appliaction
4. IOT Application
LMS Application:
HTML, CSS, JS
React JS,Express JS - Node JS
PostGres DB
LMS Application:
1. WebApplication
1.1. HomePage
1.2. SignIn
1.3. Landing Page
1.4. Course Page
1.5. ChatBot
1.6. Resources
1.7. Interviews
1.8. Resumes
1.9. Assignments
1.10. Profile Page
Design:
HTML, CSS, JS
Containerizaion: Docker
8 AM
7 PM
Development:
VSCode:
https://code.visualstudio.com
Git: https://git-scm.com/download/win
GITHUB: https://github.com
https://github.com/KonaMarsTech/lms-public
Testing:
Deployment:
https://digital-lync.konalms.com/ - 50,000
https://digital-lync.dev.konalms.com/ 5 De
https://digital-lync.qakonalms.com/ Qa -5
Maintenance:
LMS Application:
❖ HomePage
❖ SignIn
❖ Landing Page
❖ Course Page
❖ ChatBot
❖ Resources
❖ Interviews
❖ Resumes
❖ Assignments
❖ Profile Page
Iteration 1:
HomePage
SignIn
Landing Page
Iteration : 2
Course Page
Resources
Interviews
Resumes
Assignments
SCRUM Framework:
Scrum:
Product Backlog:
❖ HomePage
❖ SignIn
❖ Landing Page
❖ Course Page
❖ ChatBot
❖ Resources
❖ Interviews
❖ Resumes
❖ Assignments
❖ Profile Page
Sprint backLog:
Sprint: 1
❖ HomePage
❖ SignIn
Sprint: 2
❖ Landing Page
❖ ChatBot
Sprint: 3
❖ Course Page
❖ ChatBot
❖ Resources
Sprint: 4
❖ Interviews
❖ Resumes
❖ Assignments
❖ Profile Page
Scrum Team: 11
1. Product Owner
2. Business Analyst
3. Scrum Master
4. Designer -1
5. Frontend Dev
6. Backend Developer
7. Full Stack Dev
8. Tester (QA)
9. Cloud DevOps Engineers -2
Epics – Large chunks of work that can be divided into stories
Setup Azure DevOps Account:
1. Github.com
2. Dev.azure.com ( Azure DevOps Account)
1. Fundamentals
2. Git & GitHub
3. Linux
4. LMS Application
5. Docker
6. Kubernetes
7. SonarQube
8. Nexus Repository
- Application
- ALM ( SDLC)
- Agile
- Scrum
- Azure Boards
- Install VSCode
- Install GIT
- Setup GITHUB
- Setup Azure DevOps
- Setup AWS Account
- Setup Azure Account
- Setup GCP Account
- Installing GIT
- Git Setup on local
- Git Setup on Linux
- Git Branches
- Git Operations
- SetUp GITHUB
- GITHUB Operations
- What is Linux
- Linux Architecture
- Linux File System
- Linux Commands
- Linux Package Managemnt
- Linux Operations
DC-US-03: Setup Linux VM on Azure, AWS, GCP
- What is Sever
- What is WebServer
- What is Nginx
- Nginx on Linux
- Three Tier Applicaiton (LMS Applicaiton)
- Monolith Vs Microservices
- Evolution of Docker
- What is Docker
- Why Docker
- Docker Architecture
- Docker Image
- Docker Containers
- Dokcer File
- Docker Network
- Docker Volumes
- What is YAML
- Docker Compose
- What is Kubernetes
- Why Kubernetes
- Kubernetes Architecture
- Kubernetes Objects
- YAML For Kubernetes
- Labels & Selectors
- Namespaces
- Networking
DC-Topic-07: Sonorqube
- SonarQube Introduction
- Software Quality
- Static Code Analysis
- Technical Debt
- Static and Dynamic Code Reviews
- Setup Sonarcube
- Do Quick Code Analysis
US 1: Nexus Setup
US 2: Nexus Integrations
Version Control:
Version control is a system that helps to keep track of changes made to a set of files or
code over time. It allows multiple people to work on the same set of files without
overwriting each other's changes.
version control is like a time machine that keeps a record of every change made to a file
or set of files. This means that you can easily go back in time to a previous version of a
file, compare different versions, and see who made what changes and when. It is
commonly used by software developers, but it can also be used for any type of
document or file that undergoes multiple revisions.
● Version control allows for the ability to revert a document to a previous
version.
Centralized Version Control System
Distributed Version Control System
WHAT IS GIT
Git is a free and open-source version control system that helps developers to manage
and track changes in their code over time
Git is like a tool that allows developers to keep track of the changes they make to their
code over time. It keeps a record of every change made to a file, allowing developers to
easily undo changes or go back to an earlier version of their code. Git also allows
multiple developers to work on the same project at the same time without interfering
with each other's work.
What is GITHUB ?
GitHub is a web-based platform that allows developers to store and share their code
with others. It is built on top of Git
It provides a central place to store and manage code repositories, and offers tools for
version control, bug tracking, code review
Repository is like a folder or directory that contains all the files and code related to a
project, along with a record of every change made to those file
Task 1:
Github.com
https://github.com/KonaMarsTech/lms-public.git
Task 2:
https://git-scm.com/
VS Code:
https://code.visualstudio.com/
When a user attempts to connect to a remote server using SSH, the server sends a
challenge to the user. The user then signs the challenge with their private key and
sends the signed response back to the server. The server then verifies the signature
using the user's public key, which it already has on file. If the signature is valid, the
server grants the user access.
SSH keys are considered more secure than passwords because they are nearly
impossible to guess or crack. They are commonly used by system administrators,
developers, and other IT professionals to securely access remote servers and manage
them.
cd
Ssh-keygen
GIT WORKFLOW:
GIT Commands:
● The git add command - adds a change in the working directory to the
staging area. It tells Git that you want to include updates to a particular
file in the next commit.
● The git push command - The git push command is used to upload local
repository content to a remote repository. Pushing is how you transfer
commits from your local repository to a remote repo.
git Status
git --version
git add
git status
git pull
git push
BRANCHES
Git Branching
● This is where the branch function comes to the rescue. Branch allows
each developer to branch out from the original code base and isolate
their work from others. Another good thing about branch is that it helps
Git to easily merge the versions later on.
● Branching means you diverge from the main line(master - working copy of
application) of development and continue to do work without messing
with that main line.
Got to WebApp Folder:
npm install
npm install is a command used in Node.js to install code libraries (also known as
packages or dependencies) that your project needs to run properly. When you run npm
install, it looks at a file called package.json in your project folder and installs all the
libraries listed there. This command is important because it saves you time and effort in
manually installing each library one by one, and ensures that you have all the necessary
components for your project to function.
npm run build is a command used in Node.js to prepare your web application for
deployment on a production server. When you run this command, it creates a smaller
and optimized version of your application that is ready to be uploaded to a web server or
hosting service. This optimized version ensures that your application will load faster
and perform better for your users.
Git is a Software
Github is a Service
https://portal.azure.com/
ssh-keygen
Home Dir
cd .ssh/
ls
systems over a network. Servers are typically more powerful and have more storage capacity
than regular desktop computers, as they need to handle multiple requests simultaneously. They
Introduction to Linux OS
● Today, Linux runs many of the technologies that power up devices and
services. From mobile phones, Google applications, social media
networks, to GPS services, Internet of Things (IoT) and Artificial
Intelligence (AI) products etc.
● 96.3 percent of the top 1 million web servers run on Linux OS.
Linux Architecture:
Kernel & Shell
Topic 2:
Linux File System
The Linux directory structure is like a tree. The base of the Linux file system
hierarchy begins at the root (/). Directories branch off the root, but everything
starts at root.
The directory separator in Linux is the forward slash (/). When talking about
directories and directory paths, “forward slash” is abbreviated to “slash.” Often
the root of the file system is referred to as “slash” since the full path to it is /.
If you hear someone say “look in slash” or “that file is in slash,” they are referring
to the root directory.
File System Structure
● bin - The /bin directory is where you will find binary or executable files.
Programs needed to perform basic tasks, i.e. copy, move, remove etc
● etc - Configuration files live in the /etc directory. Configuration files control
how the operating system or applications behave.
● dev – The /dev directory contains device files that represent hardware
devices of the server
● home - The /home directories allow each user to separate their data from
the other users on the system, contains private directories of users
● mnt - Mount point for external drives connected to this computer, i.e. CDs
or USB keys
● tmp - temporary files, clear the contents of /tmp at boot time. The /tmp
directory is a great place to store temporary files
● var - variable data produced by programs, like logs are stored
● opt - The /opt directory houses optional or third party software.
Navigation In CLI
> ls /
pwd -
> pwd
When you first log on to a Linux system, the working directory is set to your
home directory. This is where you put your files. On most systems, your home
directory will be called /home/your_user_name i.e in our case /home/centos.
cd -
The most basic command of all time, cd (change directory). In order to move
around in the system we use the cd command. Typing cd alone without any
argument will bring you to the home directory of the user.
> cd
> cd ~
> cd /var/log
ls -
It's one thing to know where we are. Next we want to know what’s in there ?
The command for this task is ls. It's short for list. List the contents of a directory.
> ls
> ls /etc
Flags
For example, you can type ls -l. In this case, l being the flag, to display the
content of the directory in a list view.
Flags can also be combined. ls -a display all content, including hidden files
(files that are prefixed with a dot). When used with ls -l, we can combine
them like this ls -la
vi Text Editor
The vi editor is the most popular and classic command line text editor in the
Linux family. Below, are some reasons which make it a widely used editor:
● It’s pre installed in almost all Linux Distributions i.e centos, ubuntu etc
● It’s portable i.e it works the same across different platforms
● It is user-friendly, used by millions of linux users
Insert Mode
This mode is for inserting text in the file. You can switch to the Insert mode from
the command mode by pressing 'i' on the keyboard
Once you are in Insert mode, any key would be taken as an input for the file on
which you are currently working. To return to the command mode and save the
changes you must press the esc key
Create a new file named web.conf generwally .conf indicates configuration files
> vi web.conf
To edit the file we need to switch to insert mode by pressing 'i' on the keyboard
You can tell when you are in insert mode by looking at the bottom left corner.
Now type in a few lines of text and press esc which will take you back to edit
mode. Command beginning with a colon ( : ) requires you to hit <enter> to
complete t:q!
sudo
If you prefix “sudo” with any linux command, it will run that command with
elevated privileges. Elevated privileges are required to perform certain
administrative tasks.
File Management:
COPY
● File
○ cp <source-file> <dest-path>
● Directory
○ cp -r <source-dir> <dest-path>
REMOVE
● File
○ rm <source-file>
● Directory
○ rm -r <source-dir>
RENAME / MOVE
● Rename
○ mv <old-file> <new-file-name>
● Move
○ mv <old-file> <dest-directory>
Package Manager:
In Ubuntu, the default package manager is called "apt" (short for "Advanced Package
Tool"). It is a command-line tool used to manage packages on Ubuntu and other
Debian-based Linux distributions.
To use apt, open a terminal window and enter commands using the following syntax:
Three-Tier Architecture
● The frontend tier is the user interface and communication layer of the
application, where the end user interacts with the application.
● HTML tells a browser how to display the content of web pages, while
CSS styles that content.
Backend:
the backend refers to the part of a software system or a website that handles the
server-side functionalities, database management, and logic processing that are hidden
from the user interface or front-end.
The backend is responsible for storing and retrieving data from the database,
processing user requests, and generating responses that are sent back to the front-end
for display.
Without the backend, the front-end would not be able to function properly as it would
not have the necessary data and logic to operate. In other words, the backend is the
backbone of any software application or website, providing the necessary support and
functionality for the front-end to work seamlessly.
Database:
A database typically consists of tables, which contain rows of data that are organized
into columns. Each column represents a different type of information, while each row
contains a specific set of data related to that information. For example, a table for
customer information might have columns for name, address, phone number, and email
address, with each row representing a different customer.
Databases are essential for managing and storing data in a way that allows for easy
retrieval and analysis. They are used in a variety of applications, including web and
mobile applications
An Overview of Nginx
NGINX is open-source software for web serving, reverse proxying, caching, load balancing, media
streaming, and more. It started out as a web server designed for maximum performance and
stability
What is an IP Address?
An IP address (Internet Protocol address) is a numerical label assigned to every device connected
to a computer network that uses the Internet Protocol for communication. It serves two main
functions: identifying the host or network interface and providing the location of the host in the
network.
Versions of IP Address:
IP addresses come in two versions: IPv4 (32-bit) and IPv6 (128-bit). They are usually written as a
series of four numbers separated by dots for IPv4 (e.g. 192.168.1.1) and as eight groups of four
hexadecimal digits separated by colons for IPv6 (e.g.
2001:0db8:85a3:0000:0000:8a2e:0370:7334).
In Linux, port numbers are 16-bit unsigned integers (0 to 65535) that are used to identify
a specific process to which the data is to be sent once it reaches the host machine. Port
numbers are assigned to well-known services such as HTTP (port 80), HTTPS (port
443), FTP (port 21),SSH Port (22) and others, as well as to custom applications running
on a server. Network services running on a system listen to specific port numbers to
receive incoming data and handle client requests.
When a client wants to communicate with a service on a server, it sends data to the
server's IP address and a specific port number. The operating system of the server then
directs the incoming data to the appropriate service or application based on the port
number. This way, multiple services or applications can share the same IP address but
still be differentiated from each other based on the port number.
Therefore, port numbers allow multiple applications or services to coexist on the same
machine, to be reachable from the network, and to be differentiated from each other for
proper data routing and communication.
What is a Web Server?
A web server is a software application that runs on a computer and provides a platform for serving
web content over the internet. It receives HTTP requests from clients (e.g., web browsers) and
returns the corresponding HTML pages and other assets. Examples of popular web servers include
Apache and Nginx.
Module-4
Why use Web Servers?
1. Serving web content: Web servers are the primary means for serving HTML pages, images,
videos, and other assets over the internet.
2. Routing requests: Web servers can act as a reverse proxy, routing incoming requests to the
appropriate backend servers based on the request URL.
3. Load balancing: Web servers can distribute incoming requests across multiple servers for
better performance and reliability.
4. Security: Web servers can be configured to provide security features such as SSL
encryption, IP blocking, and more.
5. Scalability: Web servers can be easily scaled to handle increasing traffic, making them
suitable for high-traffic websites.
6. Accessibility: Web servers make it possible for people to access content and services from
anywhere with an internet connection.
Module-6
Overview of Nginx
Configuration File:
● /etc/nginx/ - Main Nginx configuration directory.
● /etc/nginx/nginx.conf - Main Nginx configuration file.
● /etc/nginx/sites-available/ - Directory for virtual host configurations.
● /etc/nginx/sites-enabled/ - Symbolic links to the virtual host configurations in
sites-available.
● /etc/nginx/snippets/ - Directory for reusable configuration snippets.
Log Files:
/var/log/nginx/ - Directory for Nginx log files.
/var/log/nginx/access.log - Records all HTTP access requests.
/var/log/nginx/error.log - Records all Nginx error messages.
server {
server_name konastack.com;
location / {
root /home/azureuser/lms-public/webapp/dist;
}
location /api {
proxy_pass http://localhost:8080;
}
}
This is a Nginx virtual host configuration block that defines a server named
"konastack.com". The block contains two location blocks, which specify how Nginx
should handle incoming HTTP requests based on the URL path.
This configuration block tells Nginx to listen for requests to the server named
konastack.com and handle them as described above. This configuration block must be
included in the main Nginx configuration file (usually /etc/nginx/nginx.conf) or in a
separate file in the /etc/nginx/sites-available/ directory that is then linked to the
/etc/nginx/sites-enabled/ directory.
1. Setup Azure VM
2. Connect to VM From VS Code
3. install Nginx
nginx -v
5. Install PostGres DB
https://www.postgresql.org/download/linux/ubuntu/
sudo su postgres
psql
command : \password
postgres=# \password
Enter new password for user "postgres":
Enter it again:
Exit : postgres=# exit
postgres@LMSVMServer:/home/azureuser$ exit
sudo rm /etc/nginx/sites-enabled/default
sudo vi /etc/nginx/sites-available/lms-app
server {
server_name konalms.in;
location / {
root /home/azureuser/lms-public/webapp/dist;
}
location /api {
proxy_pass http://localhost:8080;
}
}
npm install
npm install is a command used in Node.js to install code libraries (also known as
packages or dependencies) that your project needs to run properly. When you run npm
install, it looks at a file called package.json in your project folder and installs all the
libraries listed there. This command is important because it saves you time and effort in
manually installing each library one by one, and ensures that you have all the necessary
components for your project to function.
npm run build is a command used in Node.js to prepare your web application for
deployment on a production server. When you run this command, it creates a smaller
and optimized version of your application that is ready to be uploaded to a web server or
hosting service. This optimized version ensures that your application will load faster
and perform better for your users.
http://yourdomain
URl : https://certbot.eff.org/instructions?ws=nginx&os=ubuntufocal
Give Email ID :
Say : Y,Y
Select : 1
Go to API Folder
npm install
sudo vi .env
MODE=production
PORT=8080
DATABASE_URL=postgresql://postgres:password@localhost:5432/postgres