Skip to content

manishalankala/Google-Cloud-Platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CI/CD in Docker using Google Cloud Platform

image

  • CI
  • CD
  • IAC
  • Docker
  • Jira
  • Git
  • Nexus
  • Maven
  • Sonarqube
  • Jenkins
  • Setting up Jira using Docker
  • Setting up Nexus Using Docker
  • Setting up Sonarqube Using Docker
  • Setting up Jenkins using Docker
  • Setting up build pipeline
  • Setting up jacoco in Jenkins
  • Setting up Deployment process in Jenkins
  • Setting up Chef,Knife

CI

Continuous Integration (CI) is the process of automating the build and testing of code every time a team member commits changes to version control.

CI encourages developers to share their code and unit tests by merging their changes into a shared version control repository after every small task completion.

Committing code triggers an automated build system to grab the latest code from the shared repository and to build, test, and validate the full master branch

CD

Continuous Delivery (CD) is the process to build, test, configure and deploy from a build to a production environment.

Multiple testing or staging environments create a Release Pipeline to automate the creation of infrastructure and deployment of a new.

Successive environments support progressively longer-running activities of integration, load, and user acceptance testing.

Continuous Integration starts the CD process and the pipeline stages each successive environment the next upon successful completion of tests.

IAC

Infrastructure as Code (IaC) is the management of infrastructure (networks, virtual machines, load balancers, and connection topology) in a descriptive model, using the same versioning as DevOps team uses for source code.

Like the principle that the same source code generates the same binary, an IaC model generates the same environment every time it is applied.

IaC is a key DevOps practice and is used in conjunction with continuous delivery.

Docker

. Two containerized processes can run side-by-side on the same computer, but they can’t interfere with each other.

. They can’t access each other’s data unless explicitly configured to do so.

. Two different applications can run containers on the same hardware with confidence that their processes and data are secure.

. Shared hardware means less hardware. 

. Gone are the days when a company needs thousands of servers to run applications. 

. That hardware can be shared between different business units or entirely different enterprise clients. 

. The result is massive new economies of scale for private and public centers alike.

. The Docker command-line interface (CLI)

. The Docker Engine

. Faster scaling of systems

. Better software delivery

. Flexibility

. Software-defined networking

. The rise of microservices architecture

I did installed docker on Centos 7

Steps to install Docker CE


yum update

Install the latest version of Docker CE and containerd, or go to the next step to install a specific version:

sudo yum install docker-ce docker-ce-cli containerd.io

yum list docker-ce --showduplicates | sort -r


Install a specific version by its fully qualified package name, 

which is the package name (docker-ce) plus the version string (2nd column) starting at the first colon (:), up to the first hyphen, separated by a hyphen (-). 

For example, docker-ce-18.09.1.

sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io


sudo systemctl start docker

sudo systemctl status docker

sudo systemctl enable docker


Install from a package:


If you cannot use Docker’s repository to install Docker, you can download the .rpm file for your release and install it manually. 

You need to download a new file each time you want to upgrade Docker CE.


Go to https://download.docker.com/linux/centos/7/x86_64/stable/Packages/ and download the .rpm file for the Docker version you want to install.


Install Docker CE, changing the path below to the path where you downloaded the Docker package.


sudo yum install /path/to/package.rpm

sudo systemctl start docker

sudo systemctl status docker

sudo systemctl enable docker



Always examine scripts downloaded from the internet before running them locally.

curl -fsSL https://get.docker.com -o get-docker.sh\

sudo sh get-docker.sh

If you would like to use Docker as a non-root user, you should now consider adding your user to the “docker” group with something like:

sudo usermod -aG docker your-user

image

AWS (Amazon Web Services) – Pros and Cons

This is the dominant cloud platform in the IT space but it could not be suitable for each and every project.

Still, for IaaS services, Amazon will continue dominating the market for many years to come. One of the biggest reasons for the 
popularity of AWS is the massive scope of operations.

AWS has a massive array of services available so far and it is taken as the biggest network of data centers too. 

As per the Gartner report, AWS has the deepest capabilities of governing a large number of users and resources together.

The biggest problem with AWS is its pricing.

However, the Company is lowering down its costs continuously still it is difficult for enterprises understanding its cost structure and managing costs when running a large volume of services. 

These cons are quickly outweighed by a perfect range of benefits and Companies of all sizes are using AWS for a variety of workloads.

Microsoft Azure – Pros and Cons

Microsoft entered the cloud market little late but it took a jump start with its effective range of services and cloud benefits. 

The major reason for the popularity of the Azure platform is that many Companies deploy Windows software today.

It can be quickly integrated with other applications and actually makes sense for large organizations. 

It is taken as the more loyal platform for Microsoft users. 

Also, if you are an existing Microsoft user then you may get attractive discounts on Azure cloud services.

According to Gartner, Azure is not that much perfect as it should be. 

The customers are facing problems with documentation, technical support, training materials etc. 

Additionally, it does not provide the suitable support to DevOps approaches because of selected automation features and much of management work is completed by the staff itself.

Google Cloud Platform – Pros and Cons

Google is also a strong candidate in the cloud race since it started the Kubernetes in comparison to the AWS and the Azure.

Some of the major offerings of Google Cloud Platform includes machine learning, big data analytics and more.

The other highlights are perfect load balancing, or considerable scaling etc.

GCP has an excellent response time and he knows data centers well.

Google is ranked third in the IT marketplace because it does not provide as many services as AWS or Azure. Soo, it will expand as needed.

According to Gartner, GCP is not a strategic partner but it is taken as the secondary partner only.

If your business competes with Amazon then you can freely choose GCP in that case. This is open source platform that is highly DevOps centric and well-aligned to Microsoft Azure.

image

Create a vm instance in Google cloud account and create external ip

image

Create a firewall port for each application

image

Create a specific port for jira application to run

image

SSH

image

Install docker on my linux instance

image

Jira

Reference link : https://www.atlassian.com/software/jira

JIRA is an Incident Management Tool used for Project Management, Bug Tracking, Issue Tracking and Workflow. JIRA is based on the following three concepts – Project, Issue and Workflow.

JIRA is used in Bugs, Issues and Change Request Tracking.

JIRA can be used in Help desk, Support and Customer Services to create tickets and track the resolution and status of the created tickets.

JIRA is useful in Project Management, Task Tracking and Requirement Management.

JIRA is very useful in Workflow and Process management.

Docker Jira (Setting up Jira)

docker pull cptactionhank/atlassian-jira ( pulling image from docker hub )

[root@dockerdemo ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE cptactionhank/atlassian-jira latest 4c56f19283ae 4 days ago 507MB

docker run --detach --publish 8080:8081 cptactionhank/atlassian-jira:latest ( running the image)

Go to GCP firewall rules and specify tcp - 8081

http//:35.237.64.4:8081

Jira Core

Server ID - BGIX-SJ2L-FSB3-MZA5

Li35.237.64.4

email - manishalankala1@gmail.com username - manishalankala1 Password - Welcome@1234

Url: http://35.237.64.4:8081/secure/WelcomeToJIRA.jspa

image

Name : AIR Key : AIR Project management

Create two tasks

Integrate jira with git (Jira tool with Git repository)

Go to manage apps in jira

Click on free

Pop up on new Evaluation license & click on generate license Apply license

we can see Your trial is expiring on 30/Jun/19. Buy a license for this app.

image

Git

Reference link: https://git-scm.com/

Git

. Simultaneous development

. Faster releases

. Built-in integration

. Strong community support

. Git works with your team

. Pull requests

. Branch policies

Git integration with JIRA

Go to applications tab on in administration

click on Git repositories tab and click on connect to git repository

image

Go to git hub and change your pom.xml file and scroll below

https://github.com/manishalankala/helloworld-java-maven/blob/master/pom.xml

Commit changes fix for AIR-1(which is key of the task created )

open the task in dashboard you can see on the tab git commits(reindexing takes a bit moment)

Go to Git repositories tab in application in administration click on actions and reindex(if you find reindexing is slow this for manual process)

Sonarqube

Reference link : https://www.sonarqube.org/

SonarQube is an automatic code review tool to detect bugs, vulnerabilities and code smells in your code.

It can integrate with your existing workflow to enable continuous code inspection across your project branches and pull requests.

SonarQube is NOT (only) a static code analyzer :

It’s not a replacement for FindBugs or CPPCheck or any other similar tool.

On the contrary, not only it offers its own static code analysis mechanism that detects coding rules violations but at the same time it’s integrated with external tools like the ones I mentioned.

The result is that you can get, homogenized, in a single report all issues detected by a variety of static and dynamic analysis tools.

SonarQube is NOT a code coverage tool :

Clearly NOT. Again it’s integrated with the most popular test coverage tools like JaCoCo, Cobertura, PHPUnit etc. but it doesn’t compute code coverage itself.

It reads pre-generated unit test report files and displays them in an extremely convenient dasboard.

SonarQube is NOT a code formatter.

It’s not allowed to modify your code in any way. However you can get formatting suggestions by enabling the CheckStyle, CPPCheck, ScalaStyle rules you want to follow.

SonarQube is NOT a continuous integration system to run your nightly builds :

You can integrate it with the most popular CI Engines to apply Continuous Inspection but it’s not their replacement.

SonarQube is NOT just another manual code review tool. Indeed SonarQube offers a very powerful mechanism that facilitates code reviews but this is not a standalone features.

It’s tight to the issues detection mechanism so every code review can be easily associated to the exact part of the problematic code and the developer that caused it.

Docker sonarqube (Setting Up sonarqube)

sonar src code -

sonar runner or scanner - 2.6.1

docker pull sonarqube

docker run -d --name sonarqube -p 8082:9000 sonarqube

#(docker run -d --name sonarqube -p 9000:9000 sonarqube -p 9092:9092 sonarqube)#

http://35.237.64.4:8082/about

Login sonarqube

username - admin password - admin

image

https://github.com/manishalankala/java-sonar-runner-simple

took src folder copied to my ops folder remaining files deleted

go to cmd

L:\ops\sonarsrc

then

L:\ops\sonar-scanner-cli-3.3.0.1492-windows\sonar-scanner-3.3.0.1492-windows\bin\sonar-scanner.bat

Its need to tell the scanner to know its path in conf folder (sonar-scanner-properties)

L:\ops\sonarsrc contains (sonar-project.properties)

image

Nexus

"Nexus is a repository manager. It allows you to proxy, collect, and manage your dependencies so that you are not constantly juggling a collection of JARs.

It makes it easy to distribute your software.

Internally, you configure your build to publish artifacts to Nexus and they then become available to other developers.

Will get the benefits of having your own 'central', and there is no easier way to collaborate."

"what is Nexus?" for the Non-programmer

think of it as a library. You can ask it for "artifacts", it will store and retrieve them and assign a standard coordinate system to the artifacts it stores.

If you are developing software, having this facility available allows you to catalog and store your own artifacts using the same "numbering" system that the library uses.

When a group develops a new system or a library, they submit it to the repository manager.

Other groups then have a standard way to access these libraries. This standard for cataloging and addressing files brings efficiency.

Source control systems, issue trackers, mailing lists, continuous integration servers, wikis, integrated development environment, and repository managers.

Maven

Maven leverages the concept of a repository by retrieving the artifacts necessary to build an application and deploying the result of the build process into a repository.

Maven uses the concept of structured repositories so components can be retrieved to support the build.

These components or dependencies include libraries, frameworks, containers, etc.

Maven can identify components in repositories, understand their dependencies, retrieve all that are needed for a successful build, and deploy its output back to repositories when the build is complete.

Maven is a "build management tool", it is for defining how your .java files get compiled to .class, packaged into .jar (or .war or .ear) files, (pre/post)processed with tools, managing your CLASSPATH, and all others sorts of tasks that are required to build your project. It is similar to Apache Ant or Gradle or Makefiles in C/C++, but it attempts to be completely self-contained in it that you shouldn't need any additional tools or scripts by incorporating other common tasks like downloading & installing necessary libraries etc.

It is also designed around the "build portability" theme, so that you don't get issues as having the same code with the same buildscript working on one computer but not on another one (this is a known issue, we have VMs of Windows 98 machines since we couldn't get some of our Delphi applications compiling anywhere else).

Because of this, it is also the best way to work on a project between people who use different IDEs since IDE-generated Ant scripts are hard to import into other IDEs, but all IDEs nowadays understand and support Maven (IntelliJ, Eclipse, and NetBeans). Even if you don't end up liking Maven, it ends up being the point of reference for all other modern builds tools.

. Maven will (after you declare which ones you are using) download all the libraries that you use and the libraries that they use for you automatically. This is very nice, and makes dealing with lots of libraries ridiculously easy. This lets you avoid "dependency hell". It is similar to Apache Ant's Ivy.

. It uses "Convention over Configuration" so that by default you don't need to define the tasks you want to do. You don't need to write a "compile", "test", "package", or "clean" step like you would have to do in Ant or a Makefile. Just put the files in the places in which Maven expects them and it should work off of the bat.

. Maven also has lots of nice plug-ins that you can install that will handle many routine tasks from generating Java classes from an XSD schema using JAXB to measuring test coverage with Cobertura. Just add them to your pom.xml and they will integrate with everything else you want to do.

Docker nexus (Setting up Nexus)

docker pull sonatype/nexus

docker run -d -p 8083:8081 --name nexus sonatype/nexus:oss

image

http://35.237.64.4:8083/nexus/

Credentials admin / admin123

image

Important nexus modification on the below files

pom.xml settings.xml

provide the url in pom.xml after the creating the repository in nexus

java install on jdk-8u92-linux-x64.tar.gz

mv jdk1.8.0_92 jdk1.8

export JAVA_HOME="/opt/jdk1.8 export PATH=$JAVA_HOME/bin:$PATH

Two things we need to change pom.xml and settings.xml

Created two repositories Release and snapshot in nexus and add in pom.xml after download from https://github.com/manishalankala/helloworld-java-maven

http://35.237.64.4:8083/nexus/content/repositories/airsnapshot/ http://35.237.64.4:8083/nexus/content/repositories/apache-snapshots/

In settings.xml under C:\Tools\apache-maven-3.6.1\conf

deployment admin admin123

changing the Id to deploymentRepo from sym in pom.xml

deployment release softx http://35.237.64.4:8083/nexus/content/repositories/airrelease/ deployment snapshot softx http://35.237.64.4:8083/nexus/content/repositories/airsnapshot/

image

Go to secruity tab and click on users and right click on deployment --- set password = repopwd repopwd

go to cmd and go to the specified path (L:\ops\tonexus) and type mvn deploy

mvn release:clean release:prepare

Error :Missing required setting: scm connection or developerConnection must be specified.

Go to secruity tab and click on users and right click on deployment --- set password = repopwd repopwd

L:\ops\tonexus>mvn deploy -X

After mvn deploy -X in Windows cmd

Below the execution results

L:\ops\tonexus>mvn deploy -X Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-04T21:00:29+02:00) Maven home: C:\Tools\apache-maven-3.6.1\bin.. Java version: 1.8.0_212, vendor: AdoptOpenJDK, runtime: C:\Program Files\AdoptOpenJDK\jdk-8.0.212.03-hotspot\jre . . . . [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 13.810 s [INFO] Finished at: 2019-06-03T16:47:50+02:00 [INFO] ------------------------------------------------------------------------

Jenkins

Reference link : https://jenkins.io/

Jenkins is a powerful application that allows continuous integration and continuous delivery of projects, regardless of the platform you are working on.

It is a free source that can handle any kind of build or continuous integration.

You can integrate Jenkins with a number of testing and deployment technologies

Docker jenkins ( Setting Up Jenkins )

docker pull jenkins/jenkins

docker run -d -p 8084:8080 --name jenkins jenkins/jenkins

but default jenkins port is 8080 downloaded for windows https://jenkins.io/download/ if password not working go to C:\Program Files (x86)\Jenkins\conf.xml under sercuity make it as false but before we need to stop jenkins after making changes we need to start jenkins

http://localhost:8080/

http://35.237.64.4:8084

image

Install plugins under jenkins

Go to Manage Jenkins ------> Plugin Manager

image

image

image

image

Go to jenkins ---> global tool configuration and add SonarQube servers

image

image

commands to get public and private keys

ssh-keygen -t rsa

copy the public key in github

Go to git hub ---settings ----- ssh and gpg keys

then copy the private key in sonarqube build project where you give credentials

image

Build Job

Now i try to buildjob for sonarqube

sonar qube integration can be done by mavaen,Gradle install sonarqube scanner sonarqube is for static code analysis

Create new job in jenkins naming as sonarqube

Go to new item ----> Free style project -----> name it sonarqube

global configuration before running job download plugins sonar and sonar scanner

Now go to configure in the build job

under the build configuration --->

source code management ------> give Repository URL :git@github.com:manishalankala/helloworld-java-maven.git and Credentials :

in source code management click on git icon and give credentials

image

If you are adding it newly then add the private key

image

image

Then go to dashboard and click buildnow and check console output

image

Another build job

Go to global configuration in jenkins ,select maven and save the version

then build new job

name : build

Tyepe : free style project

image

image

then run buildnow

image

if you run build you get following error

[build] $ mvn compile

FATAL: command execution failed

Then follow below

Jenkins ----> Global tool configuration -----> Maven installations Name: Maven Install automatically\

On build tab ------> invoke top level maven targets ------> maven targets ------> Maven Version: maven Goals : compile

Creating one more build

Name: Unit testing

Type: free style project

image

image

goals is mentioned wrong!!!

Then run build now

image

Check in console output for the success result

Creating one more build

Name: package

Type: multi configuration

image

image

run build now

image

Check in console output for the success result

Creating one more build

Name: DeploytoNexus Type: free style project

image

image

image

image

image

image

Deployment process

sonarqube ---> build ----> unit testing ----> Package -----> DeploytoNexus

Now to do deployment process

go to sonarqube build job and click on configure tab ---> post build actions

image

go to build job and click on configure tab ---> post build actions

image

go to Unit Testing build job and click on configure tab ---> post build actions

image

go to package build job and click on configure tab ---> post build actions

image

install pipeline plugin

https://wiki.jenkins.io/display/JENKINS/Pipeline+Plugin

we find the + icon then add name sonarbuildphase

image

image

(Diffrent ) docker pull jenkins/jenkins

#####Before ###### docker run --name test_jenkins -d -p 80:8080 -p 50000:50000 -v /var/lib/jenkins_docker:/var/jenkins_home jenkins

####After####### docker run --name jm1 -d -p 80:8080 -p 50000:50000 -v /var/lib/docker/volumes/jm1_vol:/var/jenkins_home jenkinsci/blueocean:latest

########Grafana####################### docker run -d --name=grafana -p 3000:3000 grafana/grafana

default it uses syslite database if we want to change we need to chnage grafana.ini file if its not in in the same server mention external

##########Graphite######################

docker pull hopsoft/graphite-statsd

*exposing and running graphite & statsd

docker run -d --name graphite --restart=always-p 81:81 -p 8125:8125/udp hopsoft/graphite-statsd

to change smapling frequency and utention period ,go to docker container ---> docker exec -it graphite bash and look for below file

storage-schemas.conf

vi storage-schemas.conf

for every new configuration for example [shoehub] pattern = shoehub. retentions = 20s:5h

Note: #sonarqube container exited #docker start container id #docker ps -f "status=exited"

Chef

https://manage.chef.io/login

Here i used

dockerdemo ---- Master server

jmslave --- node

Create an origanization name

You can download the starter kit

image

knife command is found when we install the chefdk

Chef server

knife configuration

cookbooks

nodes

wget https://packages.chef.io/files/stable/chefdk/4.0.60/el/7/chefdk-4.0.60-1.el7.x86_64.rpm (Installed on worker machine)

curl -O https://packages.chef.io/files/stable/chefdk/4.0.60/el/7/chefdk-4.0.60-1.el7.x86_64.rpm

yum install chefdk-4.0.60-1.el7.x86_64.rpm

image

cd

mkdir chef-repo (Created repo)

[root@dockerdemo ~]# ls chefdk-4.0.60-1.el7.x86_64.rpm chef-repo

mkdir cookbooks

mkdir .chef (Created repo)

image

ssh-keygen -t rsa

place the public key in .chef

it looks for the .chef directory default

[alma252@jmslave1 ~]$ cd ~/.ssh [alma252@jmslave1 .ssh]$ ls known_hosts

vi authorized_keys

copy the public key and save it else can't able to ssh

ssh -i .chef/jmslave alma252@35.211.155.102 ( ssh to node )

knife bootstrap 35.211.155.102 --ssh-user alma252 -i .chef/jmslave --sudo --node-name gce-jmslave -VV -y

For Reference here https://linuxacademy.com/community/posts/show/topic/22511-bootstrap-a-node-using-ssh-publicprivate-key-asking-sudo-pwd

https://linuxacademy.com/community/posts/show/topic/22511-bootstrap-a-node-using-ssh-publicprivate-key-asking-sudo-pwd https://docs.chef.io/chef_client_overview.html http://blog.asquareb.com/blog/2014/06/09/basic-chef-knife-commands/ https://linoxide.com/linux-how-to/chef-workstation-server-node-centos-7/ https://www.itzgeek.com/how-tos/linux/centos-how-tos/setup-chef-12-centos-7-rhel-7.html https://blog.andreev.it/?p=3522 https://docs.chef.io/knife_node.html https://docs.chef.io/knife_bootstrap.html https://serverfault.com/questions/653543/chef-ssh-without-password

https://api.chef.io/organizations/eurodrone/cookbooks

image

[root@dockerdemo .chef]# knife client list /opt/chefdk/embedded/lib/ruby/gems/2.6.0/gems/chef-15.0.300/lib/chef/knife/bootstrap.rb:31: warning: already initialized constant Chef::Knife::Bootstrap::SUPPORTED_CONNECTION_ PROTOCOLS /opt/chefdk/embedded/lib/ruby/gems/2.6.0/gems/chef-15.0.300/lib/chef/knife/bootstrap.rb:31: warning: previous definition of SUPPORTED_CONNECTION_PROTOCOLS was here /opt/chefdk/embedded/lib/ruby/gems/2.6.0/gems/chef-15.0.300/lib/chef/knife/bootstrap.rb:32: warning: already initialized constant Chef::Knife::Bootstrap::WINRM_AUTH_PROTOCOL_L IST /opt/chefdk/embedded/lib/ruby/gems/2.6.0/gems/chef-15.0.300/lib/chef/knife/bootstrap.rb:32: warning: previous definition of WINRM_AUTH_PROTOCOL_LIST was here /opt/chefdk/embedded/lib/ruby/gems/2.6.0/gems/chef-15.0.300/lib/chef/knife/bootstrap.rb:350: warning: already initialized constant Chef::Knife::Bootstrap::DEPRECATED_FLAGS /opt/chefdk/embedded/lib/ruby/gems/2.6.0/gems/chef-15.0.300/lib/chef/knife/bootstrap.rb:350: warning: previous definition of DEPRECATED_FLAGS was here eurodrone-validator gce-jmslave

[root@dockerdemo .chef]# knife node list /opt/chefdk/embedded/lib/ruby/gems/2.6.0/gems/chef-15.0.300/lib/chef/knife/bootstrap.rb:31: warning: already initialized constant Chef::Knife::Bootstrap::SUPPORTED_CONNECTION_ PROTOCOLS /opt/chefdk/embedded/lib/ruby/gems/2.6.0/gems/chef-15.0.300/lib/chef/knife/bootstrap.rb:31: warning: previous definition of SUPPORTED_CONNECTION_PROTOCOLS was here /opt/chefdk/embedded/lib/ruby/gems/2.6.0/gems/chef-15.0.300/lib/chef/knife/bootstrap.rb:32: warning: already initialized constant Chef::Knife::Bootstrap::WINRM_AUTH_PROTOCOL_L IST /opt/chefdk/embedded/lib/ruby/gems/2.6.0/gems/chef-15.0.300/lib/chef/knife/bootstrap.rb:32: warning: previous definition of WINRM_AUTH_PROTOCOL_LIST was here /opt/chefdk/embedded/lib/ruby/gems/2.6.0/gems/chef-15.0.300/lib/chef/knife/bootstrap.rb:350: warning: already initialized constant Chef::Knife::Bootstrap::DEPRECATED_FLAGS /opt/chefdk/embedded/lib/ruby/gems/2.6.0/gems/chef-15.0.300/lib/chef/knife/bootstrap.rb:350: warning: previous definition of DEPRECATED_FLAGS was here gce-jmslave

[root@dockerdemo .chef]# cat knife.rb

see http://docs.chef.io/config_rb_knife.html for more information on knife configuration options current_dir = File.dirname(FILE) log_level :info log_location STDOUT node_name "manishalankala" client_key "#{current_dir}/manishalankala.pem" chef_server_url "https://api.chef.io/organizations/eurodrone" cookbook_path ["#{current_dir}/../cookbooks"]

knife cookbook site download learn_chef_httpd

tar -xvf learn_chef_httpd-0.2.0.tar.gz

rm -rf learn_chef_httpd-0.2.0.tar.gz

chef generate template httpd_deploy index.html

knife cookbook upload learn_chef_httpd -VV

it didn't worked

chef generate cookbook httpd_deploy [root@dockerdemo chef-repo]# cd cookbooks/ [root@dockerdemo cookbooks]# ls httpd_deploy learn_chef_httpd

knife node run_list add gce-jmslave "recipe[httpd_deploy]"

image

Errors:

image

knife ssh 'gce-jmslave' 'sudo chef-client' alma252 --sudo .chef/jmslave -VV

knife ssh 'gce-jmslave' 'sudo chef-client' --ssh-user alma252 -i /root/chef-repo/.chef/jmslave -VV (./chef/jmslave has public key)

image

Resolution at here is

knife ssh "name:gce-jmslave" "sudo chef-client" -x alma252 -i .chef/jmslave

Observation :

image

image

to confirm on node machine

image

in other screnario we can do this by jenkins

jenkins ---> New Item -----> Free style project ------> name i gave is Deploytochefnodes -----> configure

image

Then click on build now will get the errors

because

image

its under root permissions we need to change to chown -r jenkins:jenkins /chef-repo

then try giving build now still we face issue the last step would be mv chef-repo/ /opt/ will fix this

i didn't try this scenario in jenkins

so from chef-repo directory

git init git add -A . git -m commit "chef" git push https://github.com/manishalankala/Google-Cloud-Platform.git

else push to a new repository in git

the git url can be specified

JaCoCo - Java Code Coverage Library

Reference : https://www.jacoco.org/jacoco/trunk/index.html

https://github.com/manishalankala/jacoco-maven

image

image

image

image

image

About

No description, website, or topics provided.

Resources

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

No packages published