Wednesday, October 24, 2018

Environment Setup

Environment Setup

Model1 Environment :

Low level prototype client requirements
Application Details :
Application Name :  NRTD FSTS2
Initial requirement :
Build POC (Proof of Concept) environment with basic setup
Mandatory Guidelines :
1 2 3
<span style="font-size: 14pt"><span style="font-size: 12pt">1) Everything should be built on VMs only. CentOS7 or Ubuntu16LTS. VMs should be based on KVM hypervisor No other hypervisor (VMWare,Virtualbox) is allowed. </span></span>
1 2
<span style="font-size: 14pt"><span style="font-size: 12pt">2) All VMs should be launched with below qcow2 image. (meta file for the qcow2 image is also given) </span></span>
1 2
<span style="font-size: 14pt"><span style="font-size: 12pt">centos7-goldenimage-x8664-v2-280618.qcow2 </span></span>
1
<span style="font-size: 14pt"><span style="font-size: 12pt">centos7-goldenimage-x8664-v2-280618.meta</span></span>
1 2
<span style="font-size: 14pt"><span style="font-size: 12pt">Above 2 files available at  ncdftp@192.168.22.14:/home/ncdftp/vmimages </span></span>
1
<span style="font-size: 14pt"><span style="font-size: 12pt">password for ncdftp user is ncodeit1234</span></span>
Error Images to be posted to same pinterest board  – https://in.pinterest.com/ncodeitpinimg/model1-env-build/
All youtube uploads should be done to same playlist – https://www.youtube.com/playlist?list=PLDvWGOY2zSXGD66siP0SpJac6gsFbaGmm
Proposed environments Diagram :
Hypothetical Environment
Phase1 : Installation
Phase2 : Integration from one product to another
Phase3 : Code commit/build/deployment of the application to the Environment
Phase4 : Setup Monitoring
Phase5 : Generate Alerts & Reports

Phase1 : Installation

Pre-requisites :
2. $ yum update
3. $ yum install epel-release-7-11
4. Jdk
Installations :
2. Jenkins
3. Tomcat
4. mariaDB
6. Rundeck
7. Ansible
8. Datadog
9. Nexus

Create a new KVM based VM :

→ Open virt manager
  $ virt-manager → Click on File → Select create new virtual machine → Select “import existing disk image” → Select qcow2 image from image directory → Select RAM as 2GB → Select Network selection “Select Bridge br0” → Select finish.

Customization VM of new user :

1
$ vi prometheus.yml$ sudo yum -y install git 
1
$ sudo mkdir -p /tmp/customscripts &amp;&amp; cd /tmp/customscripts
1
$ sudo git clone https://github.com/ncdsys/ncdcustom.git
1
$ chmod 755 *.sh
1
$ ./createadminuser.sh
1
$ ./ncdcustomize.sh
1
$ ./updatehost.sh

Installation of JDK :

1
$ sudo yum install -y java-1.8.0-openjdk-devel      # Install java with particular version
1
$ source /etc/profile      # To set an initial path
→ Along with jdk installation , run the following commands to create V2 of golden image
1
$ sudo yum install wget net-tools curl htop -y
1
$ sudo systemctl stop firewalld         # To stop firewall
1
$ sudo systemctl disable firewalld       # To disable firewall
→ To disable selinux Permemantly
1
$ sudo vi /etc/sysconfig/selinux
SELINUX=disabled
→ Save and Close.

Git Installation & Github Repo Creation:

Step 1 : Install git
1
$ yum install git-all-1.8.3.1-14.el7_5       # Install git with specific version
Step 2 : Github account creation
→ Create an account in github.com → Create a new Repository

Jenkins Installation :

→ Update yum repo to install latest stable version of Jenkins
1
$ sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
1
$ sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
→ To install Jenkins:
1
$ yum install jenkins-2.121.1-1.1    #Install Jekins with specific version
→ For accessing in browser :
1
https://localhost:8080      #Jenkins default port is 8080

Installation of Tomca$ ansible Tomcat-servers -m pingt:

Step 1: Download Tomcat from original site.
1
$ wget http://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.10/bin/apache-tomcat-9.0.10.tar.gz
1
$ tar xvf apache-tomcat-9.0.10.tar.gz       # Untar the downloaded file.
Step 2 : Goto apache direcctory
1
$ cd apache-tomcat-9.0.10
Step 3: Create soft link to the apache directory
1
$ ln -s apache-tomcat-9.0.10
Step 4: How to setup the JAVA_HOME and deploy war file
1
$ ./startup.sh or ./catalin.sh           #both are same
Step 5: To know the program runing or not in bckground
1
$ ps -ef | grep java
Step 6: Goto conf/tomcat-user.xml
1
$ vi tomcat-user.xml
→ add the below content
<role rolename="manager-gui"/> 

<role username="ncodeit" password="ncodeit123" roles="manager-gui"/> 
→ Save and Close
1
$ ./catalina.sh start      #To start the Tomcat
→ To access in browser:
1
IP-Address:8080        # Default port for Tomcat is 8080

Installation of mariaDB:

Step 1:Checking whether the mariadb is installed or not
1
$ rpm -qa | grep maridb
Step 2 :Installing the mariadb and mariadb-server
1
$ yum install mariadb-5.5.56-2.el7.x86_64 mariadb-server
Step 3: Allows the Mysql traffic using firewalld in CentOs7
1
$ firewall-cmd --permanent --add-service=mysql
NOTE: If it successfully executed, it shows “Success”
Step 4: This Command Reload firewall rules and keep state information
1
$ firewall-cmd --reload
Step 5: Start, Restart and Stop the Mariadb,These commands are used
1
$ systemctl start mariadb
1
$ systemctl restart mariadb
1
$ systemctl stop mariadb
Step 6: To enable the Mariadb we use
1
$ systemctl enable mariadb
Step 7: To check the status of Mariadb
1
$ systemctl status mariadb
Step 8: This command Improves MySQL Installation Security
$ mysql_secure_installation

→ Enter current password for root ( enter for none) : enter
→ Set root password?(Y/n) y
→ New Password:
→ Re-enter new password:

(it shows msg like passwrd updated successfully,Reloading privilege tables,Success)
→ Remove anonymous users?(Y/n)→y
→ Disallow root login remotely?(Y/n)→Enter
→ Remove test database & success to it?(Y/n)→Enter
→ Reloading privilege tables now?(Y/n)→Enter
NOTE: After completion of this mysql secure installation it shows message like “Thanks for using MariaDB”
Step 9: Login to user
1
$ mysql -u root -p
→ Enter password:

Installation of Prometheus :

Pre-requisites: Server, Nodes to monitor.
→ Execute Prometheus on Server:
Step 1: Download Prometheus
1
$ wget https://github.com/prometheus/prometheus/releases/download/v2.3.1/prometheus-2.3.1.linux-amd64.tar.gz                #in central server
Step 2: unzip the Prometheus tar file
1
$ tar xvf prometheus-2.3.1.linux-amd64.tar.gz
Step 3: Enter into the Prometheus Directory
1
$ cd prometheus-2.3.1.linux-amd64
Step 4: Modify the prometheus.yml file as per our requirements
1
$ vi prometheus.yml
→ Find the below code
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
– job_name: ‘job-name’
scrape_interval: 5s
# metrics_path defaults to ‘/metrics’
# scheme defaults to ‘http’.
static_configs:
- targets: [‘localhost:9090‘] 
→ Modify the above code as below
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
– job_name: ‘prometheus’         # Give any job name
scrape_interval: 5s
# metrics_path defaults to ‘/metrics’
# scheme defaults to ‘http’.
static_configs:
- targets: [‘192.168.22.110:9090‘]          #Server-IP and default port is 9090
→ If we want to add the nodes to the Prometheus server use the below code
– job_name: ‘export_node’
scrape_interval: 5s
# metrics_path defaults to ‘/metrics’
# scheme defaults to ‘http’.
static_configs:
– targets: [requried_number_of_nodes] #node ip of other system
→ Save and Close.

Installation of Rundeck :

1
$ rpm -Uvh http://repo.rundeck.org/latest.rpm       #Download yum repo
1
$ yum install rundeck-2.11.4           # Install rundeck with specific version
1
$ /etc/init.d/rundeckd start             # To start rundeck
→ To make sure the service is running:
1
$ /etc/init.d/rundeckd status           # To check rundeck status
1
$ netstat -anp | grep '4440\|4443'         #To check the default port is listening or not
Step 1: Goto Rundeck directory
1
$ cd /etc/rundeck
Step 2: Modify the content in framework.properties file as per our requirements
1
$ vi framework.properties
→ Modify the content as below:
framework.server.name = <IP-Address>
framework.server.hostname = <IP-Address>
framework.server.port = 4440          # default port
framework.server.url = http://IP-Address
Step 3: Modify the content in rundeck-config.properties file as per our requirements
1
$ vi rundeck-config.properties
→ Modify the content as below:
grails.serverURL=http://<IP-Address>:4440
Step 4: 
1
$ systemctl stop firewalld            # To stop Firewall
1
$ systemctl disable firewalld        # To disable Firewall
1
$ systemctl restart rundeckd         # To restart Rundeck
Step 5: To Access in browser
→ IP-Address:4440 
Username: admin
Password: admin

Ansible Installation :

Step 1: Install ansible
1
$ yum install ansible-2.4.2.0-2.el7
Step 2: check ansible version
1
$ ansible --vesion

Datadog Installation:

Pre-requisites:
1.Gmail Account
2.Centos box
Implementation Steps:
→ signup datadog using gmail account.
https://app.datadoghq.com/signup

Mail : ncodeitchrysalis@gmail.com
Password : ncodeit123
Name : nCodeIT
→ Click on agent Setup.
→ Choose CentOS/RedHat and click on finish at bottom right side of the page.
→ Copy the Installation steps in the below link and paste it in Centos Box.
https://app.datadoghq.com/signup/agent#centos
→ Cilck on click here
→ Yow will find the below steps
Step 1: Setup Datadog’s Yum repo your system by creating /etc/yum.repos.d/datadog.repo with the contents:
1
$ sudo vi /etc/yum.repos.d/datadog.repo
[datadog]
name = Datadog, Inc.
baseurl = https://yum.datadoghq.com/stable/6/x86_64/ 
enabled=1
gpgcheck=1
gpgkey=https://datadoghq.com/DATADOG_RPM_KEY.public
Step 2: Update your local yum repo and install the Agent:
1
$ sudo yum makecache
1
$ sudo yum remove datadog-agent-base
1
$ sudo yum install datadog-agent
Step 3: Alternatively, copy the example config into place and plug in your APT key(e06ab1652232b79f80d4d30b16a98bc8) :
1
$ sudo sh -c "sed 's/api_key:.*/api_key:e06ab1652232b79f80d4d30b16a98bc8/' /etc/datadog-agent/datadog.yaml.example &gt; /etc/datadog-agent/datadog.yaml"
Step 4: Re-start the Agent on Centos box:
1
$ sudo systemctl restart datadog-agent.service
→ Start the datadog-agent service.
1
$ systemctl start datadog-agent
→ Select Dashboard from left side of the page, Click on New Dashboard.
→ Give a Dashboard name and choose New TimeBoard.
→ Select a Timeseries Graph.
→ At step 2 from current page (choose metrics and events).
→ At from option choose centos machine hostname.
→ Click on Save Option.
→ Again click on Dashboard Icon from leftside of the page and select Dashboard List.
→ Here to check the performance of syatem Disk I/O, Networking and Overview. 

Nexus Installation :

Step 1: Download the nexus-3.12.1-01 tar file from nexus official web site
1
$ sudo wget http://download.sonatype.com/nexus/3/latest-unix.tar.gz
→ Select latest-unix.tar.gz
Step 2: copy the nexus file in /usr/local directory
1
$ cp latest-unix.tar.gz /usr/local/
Step 3: Unzip and extract the tar file
1
$ sudo tar zxvf latest-unix.tar.gz
Step 4: Create a soft link for the nexus directory
1
$ sudo ln -s nexus-3.12.1.01 nexus
Step 5: Now add nexus user & make owner of dir
1
$ sudo useradd nexus
1
$ sudo chown -R nexus:nexus nexus
1
$ sudo chown -R nexus:nexus nexus-3.12.1.01
1
$ sudo chown -R nexus:nexus sonatype-work
Step 6: Adding user in nexus.rc file & specify the IP in nexus-default.properties file
1
$ sudo cd /usr/local/nexus/bin/
1
$ sudo vi nexus.rc # add the run application as nexus
run_as_user=”nexus”
→ Save the file
1
$ cd etc/
1
$ sudo vi nexus-default.properties
application-port=8081
application-host=<IP_address of the SERVER>
nexus-context-path=/nexus
→ Save the file
Step 7: Go to bin directory and run the nexus
1
$ cd /usr/local/nexus/bin
1
$ ./nexus start
Output : nexus started
Step 8: Stop Firewall and access in the browser
1
$ systemctl stop firewalld
→ To access nexus in browser
IP_Address:8081/nexus
Step 9: Login as default user and password
Username: admin
Password: admin123

Phase 2: Integration from One product to another

List Of Integrations :

git→ github:

1
$ git config --global user.name “Your name”
1
$ git config --global user.email “name@email.com”
1
$ mkdir devops-project         # make a directory
1
$ touch index.html                 # create an empty file
1
$ git init
1
$ git add filename
1
$ git commit -m “First Commit”
1
$ git remote add origin &lt;github-Repository-URL&gt;
1
$ git push -u origin master
→ Here it will prompt username and password of github account

github→ jenkins:

→ Start the Jenkins on the server
1
$ systemctl start jenkins
→ Open Jenkins on browser
IP-Address:8080         # default port 
username :ncodeit 
password : ncodeit123 
→ We get the jenkins homepage.
→ Select New item.
→ Give the Name of the project → Select Freestyle project → ok 
→ Select the newly created project .
→ Choose newly created Project and then select configure from the left given options.
→ Under Source code management select Git.
→ Under Repositories give the Repository url of the github project url.
→ Under Credentials select add to configure the username and password for the repository.
→ Select the username and password (github account) given from the drop down list.

jenkins→nexus:

→ Start the nexus on the server
1
$ systemctl start nexus
→ Open Nexus on browser

IP-Address:8081       # default port

username/password : admin/admin123 

→ After loading the dashboard click on settings on the top left corner
→ Choose Repositories
→ choose create repository
→ Select raw(hosted) from the list
→ Give the name of the Repository.
→ Choose the blob store to active
→ Then choose create repository
→ Install Nexus Plugin
→ Under Build select from the build step Nexus articaft uploader
→ Choose Nexus on Nexus Version
→ Input Nexus url
On Nexus Server:
→ Login to nexus server
→ Choose settings from the top most corner
→ Select repositories from the left given options
→ Select the repository created
→ Copy the url of the repository created
→ Paste the url without http on the URL
→ Credentials (add) → add credentials of nexus (username and password)
→ Give Repository name as group id

Ansible→ All servers for server configuration:

1
$ ssh-keygen             #Generate key
1
$ ssh-copy-id  ncodeitadm@&lt;IP of the Server&gt;           # Copy the generated ssh key to all the servers.
→ Add all the Server IPs in /etc/ansible/hosts file as All-servers.
→ To ping to the all nodes
1
$ ansible All-servers -m ping

Ansible→ All tomcat instances for deployment of application:

1
$ ssh-keygen             #Generate key
1
$ ssh-copy-id  ncodeitadm@&lt;IP of the Server&gt;           # Copy the generated ssh key to all the servers.
→ Add all the Server IPs in /etc/ansible/hosts file as Tomcat-servers.
→ To ping to the all nodes
1
$ ansible Tomcat-servers -m ping

Tomcat→ mariadb:

Rundeck→ All VMs:

Step 1: Start rundeck and access in the browser
1
<span style="color: #000000;font-family: times new roman,times,serif"><span style="font-size: large"><span lang="zxx">$ systemctl start rundeckd</span></span></span>
→ Open Rundeck server in Browser
IP-Address:4440           # Default port for Rundeck is 4440
Username: admin
Password: admin
Step 2: Create the project
→ Select new-project from dashboard→Enter the project name → Create
Step 3: Set the password and Login as rundeck user
1
$ passwd rundeck
1
$ su rundeck
Step 4: Generating key as a rundeck user
1
$ ssh-keygen
Step 5: Copy the ssh key to all servers
1
$ ssh-copy-id username@ipaddress
Step 6: Add server details in resources.xml file
1
$ cd /var/rundeck/projects/”project-name”/etc
1
$ vi resources.xml
 <node name="<IP-address>" description="Rundeck server node" tags="" hostname="<IP-address>" osArch="amd64" osFamily="unix" osName="Linux" osVersion="3.10.0-862.3.2.el7.x86_64" username="username"/>
→ Save the file.
NOTE: In same way add above code for remaining servers
Step 7: Restart the rundeck server and stop the firewall
1
$ systemctl restart rundeckd
1
$ systemctl stop firewalld
Step 8: Open Rundeck server in Browser
IP-Address:4440           # Default port for Rundeck is 4440
Username: admin
Password: admin
→ Click on Created Project
→ Click on Nodes tab.
Here you can see the integrated  nodes.

Nagios→ All VMs & All NODES:

Datadog→ All VMs & ALL NODES:

→ Run the following code on all nodes and servers
1
$ ssh user@&lt;Node-IP or Server-IP&gt;
Username: ncodeitadm
Password: ncodeit123
→ Follow the below url to get the installation steps for datadog-agent
https://app.datadoghq.com/signup/agent#centos
Step 1: Set up Datadog’s Yum repo on your system by creating /etc/yum.repos.d/datadog.repo with the contents
$ /etc/yum.repos.d/datadog.repo
[datadog]
name = Datadog, Inc.
baseurl = https://yum.datadoghq.com/stable/6/x86_64/
enabled=1 
gpgcheck=1 
gpgkey=https://yum.datadoghq.com/DATADOG_RPM_KEY.public
→ Save and Close.
Step 2: Update your local yum repo and install the Agent:
1
$ sudo yum makecache
1
$ sudo yum remove datadog-agent-base
1
$ sudo yum install datadog-agent
Step 3: Copy the example config into place and plug in your API key
1
<span style="font-family: times new roman,times,serif;color: #000000"><span style="font-size: large">$ sudo sh -c "sed 's/api_key:.*/api_key: e06ab1652232b79f80d4d30b16a98bc8/' /etc/datadog-agent/datadog.yaml.example &gt; /etc/datadog-agent/datadog.yaml"</span></span>
Step 4: Re-start the Agent on Centos 7 :
1
$ sudo systemctl restart datadog-agent.service
→ Create a Dashboard
→ Select Timeseries Graph and add the hostnames of the servers and nodes.

Prometheus→ All VMs & ALL NODES:

Step 1: Go to Prometheus directory
1
$ cd /home/ncodeitadm/prometheus-2.3.1.linux-amd64
Step 2: Run the prometheus
1
$ ./prometheus
Step 3: Access on the browser
Ip-address:9090(default port)
192.168.22.139:9090 (PROD server)
192.168.22.161:9090 (NON-PROD server)
Step 4: Go to Prometheus folder and add servers and nodes to the prometheus.yml file
1
$ cd /home/ncodeitadm/prometheus-2.3.1.linux-amd64
1
$ sudo vi prometheus.yml
- job_name: 'prometheus-node-exporter-prod'
static_configs:
- targets: ['<NODE1-ip>:9100','<NODE2-ip>:9100',.....'<NODEn-ip>:9100','<SERVER1-ip>:9100','<SERVER2-ip>:9100',......,'<SERVERn-ip>:9100']
→Save the file
Step 5: Execute the prometheus
1
$ ./prometheus
Step 6: Add the node-exporter to all the nodes and servers
$ ssh user@IP-Address 
Username: ncodeitadm
password: ncodeit123
→ Download and run node_exporter :
Step 7: Create one directory
1
$ mkdir prometheus
1
$ cd prometheus
1
$ sudo wget https://github.com/prometheus/node_exporter/releases/download/v0.16.0/node_exporter- 0.16.0.linux-amd64.tar.gz
Step 8: unzip and untar the node-exporter file
1
$ sudo tar zxvf node_exporter-0.16.0.linux-amd64.tar.gz
Step 9: Go to prometheus node-exporter and run node-exporter
1
$ cd prometheus-2.3.1.linux-amd64
1
$ ./node_exporter
Step 10: Access the browser with node-exporter
1
IP-Address:9100          # default port of node-exporter
Step 11: Go to Prometheus main server and see the status of node-exporter ip
IP-Address:9090              #default port
192.168.22.139:9090             #PROD server
 192.168.22.161:9090             #NON-PROD server
1
<sub><span style="font-family: times new roman,times,serif;color: #000000">→It showing ip is up</span></sub>
→Repeat all step6 to step11 for all the nodes and servers and execute in prometheus main server (master)
1
It showing up

No comments:

Post a Comment