What is Chef and Puppet?

Chef vs Puppet is one of the biggest name in system administration and information technology. Both tools help IT experts to maintain a consistent configuration in all servers. It is very difficult to compare and differentiate both chef and puppet is quite difficult, and decide to choose and who is best for you to use. Puppet or Chef can handle database connection strings where you have a different one for dev, test, and prod.

Both tools can handle these type of work as well.

In this blog I will try to provide you information from all aspect which going to help you to choose between Puppet vs Chef. Discuss everything from the comparison to differences, pros and cons also. This guide is definitely going to help you in your decision of which server to work with. Let’s start-

What is Chef?

Chef is an open-source and code-driven configuration management tool used to transform infrastructure into code. It is well-known for automate how infrastructure is deployed, configured, and managed. Chef can also operate in the cloud, on premises, or even in a hybrid format that comfortable for each individual’s needs.

What is Puppet?

Puppet is another open-source configuration management tool, which is deemed to be the industry standard for configuration management. This tool is designed in a simple way that most users can learn, but it is complex enough to handle difficult level tasks and infrastructure.

System administrators and IT professionals are able to do a variety of tasks like managing large infrastructures to maintenance of the desired states of nodes.

Chef vs Puppet: Important Differences and Similarities

Chef and Puppet both are very promising configuration management software tools,  we are here to discuss some of their differences and similarities. Both the tools are simple to use and capabilities to automate complex high level IT application environment.

This differences are on the basis of different factors such as Availability, Configuration Language, Setup and Installation, Ease of Management, Scalability, Interoperability, Tool Capabilities and Pricing. These are:

Reports says, IT departments with a strong DevOps workflow deploy software 200 times more frequently, with 3000 times faster lead times, recover 28 times faster, and have three times lower change failure rates.

Final words

Here comes the main question that How to choose between Chef and Puppet, and the answer is it totally depends on the user’s requirements and purpose for which it going to be used.

No matter what you use at the end but decision is especially from the ones who will end up working with the tool. Someone with the same background might find it more suitable to use Puppet or Chef, before taking the decision also consider the premium features from each tool. At the end, features will help your organization in growth or fall.

Pricing is another factor which included but prices fluctuates a lot with time, and it varies depending on each customer needs.

At last both tools have their own advantages and categories in which they are better than the other. My only intention here is to help you in your decision making. So, it is necessary that you choose the appropriate tool which can be fitted according to your needs.

I hope this blog is helpful for you, and if you want to learn more depth knowledge about Chef and Puppet, I would suggest you DevOpsSchool, One of the best institute for training and certification online.

Thank you !!

Tagged : / / / / / /

Which is better for automation: Ansible, Chef or Puppet?

Many organizations are increasingly adopting the new collaborative culture in a way to achieve a competitive edge in modern IT domain.

Recent studies shows that the global DevOps market size reached USD 5.8 billion in 2021 and is projected to attain USD 14.97 billion by 2026 with a CAGR of 19.1% during the forecast period.

There are a number of latest DevOps configuration tools such as Chef, Puppet, and Ansible with various features available in the market. So, there is an inevitable need for the comparison of various configuration tools to identify the best tool for the success of DevOps projects.

What is Ansible?

Ansible is a latest configuration management tool which makes configuration management and coordination system of computer very easy to user.

What is Puppet?

Puppet is the oldest version of configuration management system and hard to understand for user.

What is Chef?

Chef is newer than Puppet but older version than Ansible so it is easier than Puppet but not than Ansible configuration system.

Here we do comparison of the top configuration tools including Ansible, Puppet and Chef:

First of all these tools are simple to use and robust capabilities to automate complex multi-tier IT application environment.

The differences between Ansible, Chef and Puppet are portrayed on the basis of different factors including Availability, Configuration Language, Setup and Installation, Ease of Management, Scalability, Interoperability, Tool Capabilities and Pricing:

IT departments with a strong DevOps workflow deploy software 200 times more frequently, with 2,555 times faster lead times, recover 24 times faster, and have three times lower change failure rates.


As you can see above, chef and puppet are the old players with the time whereas Ansible is new players in the market, and Ansible looks very promising with the growing trend. So, to conclude, all the three tools have their own advantages and categories in which they are better than the other. My only intention here is to help you in your decision making. So, it is necessary that you choose the appropriate tool which can be fitted according to your needs.

If you want to know more about Ansible, you can check out this blog on Ansible, Puppet and Chef with complete information.

If you are curious to learn and make a good career with this skill then I would suggest you please check out DevOpsschool.com.

Tagged : / / / / / /

Puppet Module Lab & Excercise – Part 1

Puppet Module Lab & Excercise – Part 1

  1. Write a puppet module to setup a webserver(httpd) only in RHEL and use the HEREDOC to craete a html code of index.html inside a directory called “/var/www/html/index.html”

  2. Write a puppet module to setup a webserver(httpd) only in RHEL and use the puppet template to create a html code of index.html inside a directory called “/var/www/html/index.html”

  3. Write a puppet module to install git, ntp and wget tools.

  4. Write a puppet module which has file named with deploy.sh under module’s files directory. the file should be copied to /opt

Tagged : / / / /

Puppet Program Lab & Excercise – Part 2

Puppet Program Lab & Excercise – Part 1

  1. Write a puppet Program to install package “git”, “ntp” and wget in RHEL.

  2. Which resource declaration can help us to deploy the “~/.ssh/authorized_keys” in 1000s of servers?

  3. Write a puppet Program to extract a tar ball in /opt

  4. Write a puppet Program to zip a directory which has multiple files.

  5. Write a puppet Program to reboot the machine?

  6. Write a puppet program to execute a shell command/script using puppet.

Tagged : / / / /

Puppet Program Lab & Excercise – Part 1

Puppet Program Lab & Excercise – Part 1

  1. Write a Puppet Program to create a file named with “file.txt” in /opt/ owner by ec2-user and execute permission?
  2. Write a Puppet Program to create a group called “scmgalaxy-admins”
  3. Write a Puppet Program to create a usser called “deploy” which should be a part of “scmgalaxy-admins” group.
  4. Wrire a Puppet Program and insert following in /etc/hosts test.scmgalaxy.com
  5. Write a puppet program to display following lines when Sends an arbitrary message to the agent run-time log.
    Welcome to scmGalaxy Puppet program
Tagged : / / / /

Puppet Training in Bangalore

For Puppet Training in bangalore, Pleae watch this space or email to info@scmgalaxy.com for more info.

Training Agenda – Click Here

Training Schedule – Click Here

Tagged : / / / / / /

Software Configuration Management Tools

Software Configuration Management Tools Blog

Welcome to the Software Configuration Management Tools Discussion Blog. Featured below are links to the most widely used SCM tools available on the market. Which tool has your origination implemented? How well does your tool funtion compared with others you have utilized in the past?


Create a three directory as below in repo as above; Directory Layout as below

Using Ant
> Each sub directory, add 5 sample java program under “src” eg. under harsha/src.
> Each sub directory, add 5 sample junit test under “test” e.g under rajesh/test.
> Each sub directory has Apache ant build.xml and pom.xml
> Write a Masterbuild.xml which internally call 3 build.xml in the subdirectory and
> compile the source code and run the junit test cases.
> Package each subdirectory src code into jar
> Upload to github.com/microsoft-scmgalaxy/buildrelease3 under “lib/v1-2-3” folder

Using Maven
> Write a Masterpom.xml which internally call 3 pom.xml in the subdirectory and
> compile the source code and run the junit test cases.
> Package each subdirectory src code into jar
> Upload to github.com/microsoft-scmgalaxy/buildrelease3 under “lib/build1” folder
Rajesh Kumar
Twitt me @ twitter.com/RajeshKumarIn

I am in the process of making a list of Offerings/Activities/Practices under SCM/build/release/Deployment area.

Can some someone please suggest some of those Offerings/Activities/Practices which come under SCM/build/release/Deployment.

i have attached a some of the listing in the document.

Hello Folks,

I am looking for ideal NAME OF THE TEAM which has CM, Build, Release, AppOpp Support and Database engineers. Few people Suggested that it should be DevOps and some of them voted for EnterpriceAppOps Team. What is the naming convention is being used in your company? Please comment for new name as well if you have some idea.

when you use the quotes, make sure there is no space :
between -p and ‘PASSWORD’ or
between –password= and ‘PASSWORD’

mysql -u root -p’PASSWORD’
mysql -u root –password=’PASSWORD’

does not work:
mysql -u root -p ‘PASSWORD’
mysql -u root –password = ‘PASSWORD’

you can also define a variable and then use it for the command (still with no spaces in between) MSQLPWD=’PASSWORD’
mysql -u root -p$MSQLPWD
Rajesh Kumar
Twitt me @ twitter.com/RajeshKumarIn


We have a complex product architecture having multiple integrated component making a complete solution.

Each component has its own development team and which provide their delivery to release management team

We have catered the version numbering system where all components are sent under one version in incremental manner.

Now in order to provide the high level visibility to the management about what version of which component is running in QA staging and prod i need to have url based dashboard.

How can achieve this using any simple free tool which enable the font end data form entry , and when someone click on specific version hyperlink it should redirect to release notes of that version in SharePoint.

We tried creating list in SharePoint but it didn’t work as we need environment name as columns and components as rows against which we have to enter version number in the grid table as hyperlinks.

something like

QA staging Prod
Component A 1.7.4 4.24.4 1.4.5
Component B 3.46.5 3.5.7 3.5.7
Component C 3.6.5 3.5.7 2.6.7

As anyone worked on puppet Configuration Management tool? Can you please provide the complete details about that or point me to any web portal which contains details except puppetlabs.com

Hi ,

I am looking for a code promotional model example like how to dev-> qa -> uat _ release.

How to maintain the branches ?
How to merge the code after the release if the fixes are there?

Can some give a real time example how it is maintained in other companies.


Can any attache sample resume for build and release engineer.

I need for reference , not for projects but for technical data.

automatically Bcc all outgoing messages


test topics

AFTER 9 YRS……………..
Hi Everyone,

If ur working as a build and release engineer what would be the growth or opportunity after 9 yrs.

Various path :

1) Can we become a release manger (do we have more opportunity )

2) Is there any certification for becoming release manager

To be clear if we work as developer or QA or System Engineer we may become architect or manager or may be any thing which have opportunity .

want clear way for build and release engineer

Earlier my disk was full and my VMware stopped working.

Later when i start my VM after disk cleanup, i am getting following error. any idea?
Cannot open the disk ‘C:\Windows XP Professional-000002.vmdk’ or one of the snapshot disks it depends on.
Reason: The specified virtual disk needs repair.

Git does not dictate a process, so usually each project does. Common featurs:
–> Branch for features
–> Branch for fixes
–> Branch for experiments
Rajesh Kumar
Twitt me @ twitter.com/RajeshKumarIn

When do we use the shell or perl scripting in build or configuration mgnt?

Any example?

Which can be preferd shell or perl for build and release carrer?

Once a business has been developed and set up properly, the need for a website arises. The website is the online identity of a company and it is necessary that you hire an experienced and professional website design company who can complete the task perfectly. While looking for the best website design company you should compare the prices as well as services offered by the various companies in the market. Before hiring a website design company, it is necessary to assemble the various ideas or thoughts of what your business needs and requirements are. Even if you have already hired a web designer, you still need your website to project your ideas. Creating a list of ideas and services that you plan to offer through your site is a good idea so that when you hire the design company, you are already prepared.

You should also make sure that the company you hire has a good track record in terms of customer satisfaction. This can be done by asking your friends who have utilized the firm’s services or by reading customer reviews online. Checking out their work portfolio can give you a better view of their work quality and their individual style. You can choose the services of a firm depending on whether or not the services offered meet your requirements and specifications and whether that design company has the ability and talent required to design your website you are thinking of.

Often obsolescence management is confined to availability of parts, but the issue of obsolescence management goes beyond. There are key issues related to it- design for the longest possible product life cycle, availability of electronic parts, skills to modify the product, product knowledge, system and domain, tools to modify the product and continuing Electronic Security and Support Issues. While the product is being designed it is important to identify the parts that pose the greatest obsolescence risk. Component Obsolescence Management has to be balanced against product features.

For example, opto-electronic displays (LCDs, OLEDs) commonly tend to become obsolete quickly despite big promises made by their vendors. The design phase will result in a list of parts that are at risk for obsolescence. A proactive approach must be taken to manage these at risk parts. This is possible only if the product is part of an expensive long life cycle product. An estimate is prepared for the requirement of at risk parts for the entire life cycle and these parts are procured. This is a costly process and it is important to correctly identify the risk parts and limit the procurement to them. It is also important to store the parts acquired properly. A less costly approach for handling at risk components is to do obsolescence tracking for them. For critical components, it is essential that the availability be proactively checked every month. Thus, you will want to buy enough components to make sure your product stays in production while your engineering team redesigns the product to not use the part about to go obsolete.


Need advise for preparation of application packaging interview .

Currently i am working on Installshield.

What are the general questions do we expect for application packaging job ?

Hi guys,

I am working on build and release from past 1.5 years (70%) on installshield cruisecontrol,maven,finalbuilder,hudson on windows platform.

Apart form these i am working on .net (bug fixing).

I am in a confusion whether to change my designation to build and release engineer or software engineer.

How will be growth in build and release ?

Hi All,

What is the command to find error line in a file and 10 lines above abd 10 lines below error line?

Say if I have a error text at line 35, I want 10 lines above 35th line and below 10 lines below 35th line.

We’re trying ftp connection from EC2 ftp client to external our server.
But we encounterd the following ftp connection problem.

We need to solve this problem.
We are very much appreciated if you could give us the solutions.

1. Problem
EC2 ftp client fail to conect to ftp Server ,
pwd or cd command can work, but ls, put and get comand cannot work.
We need to use Windows ftp command for connection.
ftp client is EC2 and have Elastic IP address
ftp server is on our office side and have grobal IP address.

2. ftp client Environment
Amazon EC2
Windows 2003 Server Instance
Windows ftp command
EC2 Elastic IP address – zz.zz.zz.zz
EC2 Internal IP address – aa.aa.aa.aa
We used EC2 as ftp client, not ftp server.

3. ftp Server Environment
ftp server is on our office Japan.
it have a grobal IP address xx.xx.xx.xx.

4. firewall security on our office
Our office -> EC2(internet) : all tcp permitted
EC2(internet) -> Our office: tcp20/21 permitted.

5. EC2 security group setting.
tcp20/21 from any IP permitted

6. EC2 ftp client Log
ftp> open xx.xx.xx.xx
Connected to xx.xx.xx.xx
220 ftp server ready.
User (xx.xx.xx.xx:(none)):
—> USER yyyyy
331 Password.
—> PASS ecopass
230 User yyyyy logged in super!
ftp> cd LogFiles\DayLog
—> CWD LogFiles\DayLog
250 CWD command succesful.
ftp> ls
—> PORT aa,aa,aa,aa,9,134
200 PORT command successful.
150 ASCII data.

xx.xx.xx.xx means that ftp Server grobal IP address
aa,aa,aa,aa means that EC2 Internal IP address

7. ftp Server ftp log
Session 7, Peer xx.xx.xx.xx ftp Server session started
Session 7, Peer xx.xx.xx.xx ftp Server session started
Session 7, Peer xx.xx.xx.xx USER xxxx
Session 7, Peer xx.xx.xx.xx 331 User name ok, need password
Session 7, Peer xx.xx.xx.xx ftp: Login attempt by: xxxx
Session 7, Peer xx.xx.xx.xx PASS XXXXXXX
Session 7, Peer xx.xx.xx.xx 230 User logged in
Session 7, Peer xx.xx.xx.xx ftp: Login successful
Session 7, Peer xx.xx.xx.xx PORT aa,aa,aa,aa ,5,106 <- EC2 Internal IP Address Session 7, Peer xx.xx.xx.xx 200 PORT command successful. Session 7, Peer xx.xx.xx.xx NLST Session 7, Peer xx.xx.xx.xx Could not connect to peer. Aborting transfer. Session 7, Peer xx.xx.xx.xx 226 Closing data connection Session 7, Peer xx.xx.xx.xx QUIT Session 7, Peer xx.xx.xx.xx 221 Service closing control connection Session 7, Peer xx.xx.xx.xx ftp: Connection closed. 8. reason why It seems that EC2 Internal IP address is used when ftp Server tried to tansfer data to EC2 ftp client by TCP20. We tried ftp PASSIVE mode by literal command, but rejected by ftp Server. ftp> literal pasv
—> pasv
502 [pasv] Command not implemented.

W need to solve this problem.

Thank you for reading.

Message was edited by: mgcloud
Rajesh Kumar
Twitt me @ twitter.com/RajeshKumarIn

Shell / command script
OpenMake Meister
Rake (Ruby)
Visual Studio (‘devenv’)
Rajesh Kumar
Twitt me @ twitter.com/RajeshKumarIn

CppUnit result rendering
JUnit result rendering
NUnit result rendering
QualityCenter test rendering
PHPUnit result rendering
PMD result rendering
Clover result rendering
Selenium result rendering
MSTest result rendering
Rajesh Kumar
Twitt me @ twitter.com/RajeshKumarIn

Rajesh Kumar
Twitt me @ twitter.com/RajeshKumarIn

List of SCM Tools (Version Control Tools / Configuration Management Tools)

CA Harvest
CM Synergy
File system SCM
HTTP file
Perforce (p4)
SourceGear Vault
Team Foundation Server
VSS Journal
Rajesh Kumar
Twitt me @ twitter.com/RajeshKumarIn

1. How many major, minor releases a year per project?
2. How many customers per release per project?
3. How do you deliver the releases to the customers? – Is it physical media
4. distribution or Push/Pull mechanism from web or any other process?
5. Is the distribution CD/DVD creation process automated?
6. What is the size of the release deliverable?
7. What are the contents of a release?
8. How is the release bundle tested?
9. How many platforms are certified? How different are the release packages?
10. Is there any release check-list for cross-check?
11. Is any part of the release process automated?
12. Is there a need for i18n? If yes, is the i18n release handled separately?
13. In case of installers, is there installer testing? Is it automated?
14. Is the release schedule well-planned?
15. Are you delivering patches in well constructed and cost effective way?
16. Is there any release audit process in place?
17. How are you tracking your releases?
18. Is there any legal compliance in place while shipping the release to the customers?
Rajesh Kumar
Twitt me @ twitter.com/RajeshKumarIn

1. What is the build process adopted (automated/manual)?
2. Are there nightly builds?
3. Is there continuous integration?
4. Are there smoke and sanity tests at the end of the build?
5. What is the build acceptance criterion (BAT)?
6. What is the build duration? Is it optimal?
7. How are pre-conditions to the build verified?
8. Are there any build environment integrated automated unit test-cases?
9. Is there any enforcement tool on coding standards?
10. Is there any code coverage tool being used?
11. Are the post build activities automated?
12. Any additional practices (like checksum generation, signing the build artifacts) in place as part of the build?
13. Are there any scripting technologies used in automating build process?
14. Is Labeling strategy well-defined?
15. If any third party tool is being used for packaging, is that package creation process automated?
Rajesh Kumar
Twitt me @ twitter.com/RajeshKumarIn

1. Do you know what files/documents should be delivered?
2. How do you track who changed what, when, where, and why?
3. How long does a build or release take?
4. Is there a Configuration Management Plan document?
5. Is there a tight integration between Version control tool and Bug/Change tracking tool?
6. How the parallel (if any) development is enabled? Any limitations with the current branching strategy?
7. Is this project development spanned across multiple sites? If so, what is your multi-site strategy?
Rajesh Kumar
Twitt me @ twitter.com/RajeshKumarIn

1. Do you know what files/documents should be delivered?
2. How do you assess, and track the impact of a proposed change?
3. Can you show me what artifact versions went into a certain release?
4. How comfortable are you working with Bug/Change management tool?
Rajesh Kumar
Twitt me @ twitter.com/RajeshKumarIn

1. How do you baseline project artifacts?
2. Can you build your system reliably and repeatedly?
3. Explain your labeling scheme?
4. Can you show me what versions went into a certain release?
5. What does the version tree for this file look like?
6. How many product versions are you supporting at the moment?
7. What is the version control tool being used? Is it user friendly?
8. What is the bug tracking/change management tool being used? Is it user friendly?
Rajesh Kumar
Twitt me @ twitter.com/RajeshKumarIn

How do you maintain all the artifacts together and version them?
Where are the people working on the project located?
What’s the difference between Developer CM and Release CM?
How do you assess, and track the impact of a proposed change?
How do you manage system integration of modules developed by individual developers?
How many product versions are you supporting at this moment?
Who is the designated Configuration Manager?
Rajesh Kumar
Twitt me @ twitter.com/RajeshKumarIn

What are the tools that you currently use in your work?
How is the integration among the above tools?
Are we using the tool features the way they are designed or intended?
Rajesh Kumar
Twitt me @ twitter.com/RajeshKumarIn


  • What is the size of each project (duration, persons, person years, LOC)
  • What type (maintenance / enhancement / new development / prototype / feasibility)
  • What type of development model is being used?
  • Are we using any process models like UCM, RUP or any other?
  • Any industry/domain specific standards (like CMMI, ITIL etc.) to be followed?

Rajesh Kumar
Twitt me @ twitter.com/RajeshKumarIn

Could anyone help me in this case, migrating CC vob to GIT.

Thanks & Regards,

Looking for suggestions for build jobs using Mercurial MQ


I’ve recently setup matrix projects to test Py libs (so far axis are
the version of the interpreter and versions of dependencies) .
Considering the fact that Hudson Mercurial plugin doesn’t provide
explicit support for MQ (AFAIK) I’m looking for suggestions so as to
find ways to work around this limitation in order to achieve the

1. First of all I’d like to test each and every revision
committed to the repository . I think this could be
achieved by parameterizing the build job and
supplying individual revision number
to the build in the Hg hook that triggers it
from remote (is there a better way to do this ?)
2. I’d like to start a variable number of jobs , more
precisely one job for each patch in the queue .
The goal is to ensure that every patch will work
if applied against repository trunk (have
no idea of how to do this …)
3. I need to copy some (script) files to the workspace
before starting the build (and I don’t use neither Ant
nor Maven, nor MSBuild, nor … I just need to copy
static files ;o) .
4. I need to publish in the build results page
some files generated
during the build (binaries, logs, … ) and browse
(some of) them inside Hudson site . They should
be accessible from the page showing build results
e.g. myserver.com/job/jobname/49

(I suppose this is the «Archive the artifacts» +
«Files to archive» combination … isn’t it ? )
5. I need to execute custom scripts only if the build

Please ideas and suggestions about how to do this (and probably
plugins that need to be installed, …) will be very welcomed.

Thnx in advance !

I need to find the computer name of one PC connected in LAN (joined to domain).
I have the IP address of terminal. how i will find the computername?

kindly advice
Rajesh Kumar
Twitt me @ twitter.com/RajeshKumarIn

Where can I find the help for formatting the articles? Like syntax for adding code, images, url etc.


I have posted 2 articles but looks like not published yet.

Please let me know if these requires any modifications.

Hi All,

Can anyone please let me know any technique in which we can reduce the deployment time from Dev environment to other environment, we currently use robocopy for copying files.

Please share your ideas/ suggestions.

A Forum to discuss Application packaging related issues, troubleshoot, queries, tools and share knowledge. Covers all installer software.


www.packaginggalaxy.com – A Forum to discuss Application packaging related issues, troubleshoot, queries, tools and share knowledge. Covers all installer software such as

wyBuild & wyUpdate
Wise Package Studio
Wise Installation Express 7
Wise Installation Studio 7
Windows Installer
Tarma QuickInstall 2
Tarma Installer 5
Tarma ExpertInstall 3
Smart Install Maker
Setup Factory
SetupBuilder Professional Edition
Scriptlogic Desktop Authority MSI Studio
Scriptlogic Desktop Authority MSI Studio
Remote Install Mac OS X
Nullsoft Scriptable Install System (NSIS)
MSI Package Builder
LANrev InstallEase
Instyler Setup
Installer VISE
Install Creator (Pro)
Inno Setup
Excelsior Delivery
Excelsior Installer
CreateInstall Free
CreateInstall Light
Advanced Installer

Tagged : /

Top Questions on Server Configuration Management Tools Chef, Puppet, and Ansible



Source – http://hub.scalr.com/blog/top-questions-on-server-configuration-management-tools-chef-puppet-and-ansible-2

As a quick recap, configuration management tools enable companies to standardize and automate their infrastructure. Through standardization, you can build systems that are platform independent (i.e. instead of relying on AMIs or provider specific toolsets). These tools also make it easy reproduce servers for scaling or testing, and recover from disaster quickly by defining a proper application state. For example, if servers are not in that defined state when each server is checked, they are restored to their proper state. In addition, this standardization makes it easy to onboard new developers.

While the language across configuration management tools is different, the concepts are the same. At the fundamental level in each configuration tool, a resource represents a part of the system and its desired state, such as a package that should be installed, a service that should be running, or a file that should be generated.

In Chef, a recipe is a collection of resources that describes a particular configuration or policy. These collections are called playbooks in Ansible, and manifests in Puppet. These collections describe everything that is required to configure part of a system. Collections install and configure software components, manage files, deploy applications, and execute other recipes. We go into more detail in our blog post here.

Here are the top questions we got from the community:

How is the concept of master/agent configuration better (or not) than agentless, when it comes to infrastructure as code?

Chef and Puppet are master/agent configuration systems, while Ansible is an agentless system. The historic argument is that the agent-based installation process is difficult –  you have to set up the master, and then set up the agents on your nodes so that they know about the master. If you’ve got servers with diverse linux distros, on different versions of Windows, etc., installation can get tricky. Though, because they’re logging every few minutes, agent-based systems are powerful for advanced monitoring. At the end of the day this really is based on personal preference and what company requires. If your infrastructure is beefy and heavily standardized, installation on nodes isn’t complicated so use agent-based systems. If you have servers that run Python, try agentless.

Are these configuration management systems like MicroSoft System Center Configuration Manager (SCCM) but used for local and cloud?

This is like MS SCCM, but open-source and paid for per node. For those who haven’t used it, MicroSoft System Center Configuration Manager (SCCM) is used for infrastructure provisioning, monitoring, and automating workflow processes (usually sysadmin stuff). SCCM is a powerhouse in the enterprise space. While it can manage end clients on non-Windows servers, the server console portion of SCCM must be hosted and run on a Windows server machine. The reason other orchestration/configuration systems win here is that you pay on a per-node basis and you’re not totally tied into Windows Server’s licensing agreements. In other words, open-source vs proprietary. And with Chef/Puppet/Ansible the thinking is more in resources as opposed to SCCM, which is more in files and terminal commands.

An attendee commented on using SCCM:

 We really like Ansible because of the none-agent requirement. For Windows patching we utilize System Center Configuration Manager, and even though System Center can provide patching to Linux we have run into issues with SCCM agent staying healthy and running on our Linux systems. We have also run into when the SCCM admins have made changes it broke SCCM agent on a majority of our Linux servers. Our Linux patching process has been highly manual up to this point but we are seeking to automate this to free up staff time to be better directed at other support tasks, which is why were are reviewing several solutions. The non-agent aspect is highly desirable in our situation because of past experience with SCCM agent. I just wanted to provide that feedback so others that have not experienced agent issues with other deployment solutions may want to keep that in mind.”

If we have to pick a tool dependent on whether we deploy on cloud or on-premise – which of these tools would be a better choice?

We would recommend looking into network access requirements for each tool. If you have an agent that checks in periodically with a central master management piece, that is likely to work better then SSH which requires direct path / path through lots of proxies. 

One attendee mentioned in the comments: “[In regards to] SSH vs Agent – Agent is more secure where SSH not an option.

What happened to cfengine? This tool used to be mentioned alongside Chef and Puppet. 
Version 3 of cfengine is a complete revamp, but it compared to other configuration management tools the brand and community outreach isn’t strong, and does little the others don’t do better.

How does StackStorm compare to the other orchestrators being reviewed?
StackStorm labels itself more of an automation platform, or a DevOps workflow tool that handles provisioning and configuring servers but also leans on automatic and event driven services that plugs into Jenkins and other CI/CD workflows.

From one attendee that had used all three: “For us, getting the Server engineers to adopt Chef has been very difficult. It grew organically on the Dev side of the house. Ansible appears to be something that guys without Dev skills could pick up more easily. Just [my] perception.”

Can I run tasks in parallel with Ansible rather than running it serially (say 50 servers being updated with a patch)?

The default method is to run each task across all servers in parallel, meaning that it will run the first task (e.g. installing Git) on all servers in a group, and once all servers respond with a success, failure, or unchanged response, Ansible will move to the next task on all servers. It doesn’t run on a server, wait, move on to the next, it will run on all servers at once over SSH. If you want to deploy updates in batches, you can run a percentage of servers in a group (e.g. 50%, by listing it in the playbook as serial: 50%).

An attendee made this comment as we mentioned Ansible:

I have attended a presentation from RedHat regarding Ansible that states [that Ansible scales well]. They have large scale hosting companies that on the fly spin up servers and perform patching for their servers via Ansible. The one mentioned had over 50,000 servers and it seemed to handle the volume / scale fine. I of course don’t know everything about Puppet or Chef or Salt, but one thing I find really nice about Ansible is the ability to perform rolling updates / tasks. So if you say had 1000 servers you can say you want to run 10% or 100 at a time and keep it rolling until all 1000 are done. It can be stated by percentage or defined number…I am sure I sound a bit biased but one of the main reasons Ansible is high on our list right now is the fact that it is agentless and does not really consume resources.”

With Ansible, how can we handle the security implications about allowing passwordless ssh to a root account on all systems? What mechanisms are there for access control and auditing?

There are definitely security implications if you are going to allow passwordless ssh. So it’s on the company to ensure that security groups or NSGs are well defined. We should also mention that the passwordless ssh is only enabled on the machine you are running Ansible commands and playbooks from, so if anything consider that workstation to be your weak point. Make sure SSH access is only permissible through your IP. As an alternative solution to connecting via SSH, if you use docker, Ansible allows you to deploy playbooks directly into Docker containers using the local Docker client. All you need is a user inside that container.

Does ansible run single-threaded or is it addressing multiple servers in a group asynchronously?
Ansible runs on each host in parallel. This means that it attempts to run your tasks on all servers defined at the top of the playbook before moving on to the next task.

One user said in regards to all three tools: “Ansible seems better for “orchestration” and Puppet/Chef are really good for “Configuration Management”.  Ansible can be used to stop applications and databases and then run Puppet and then start applications and databases.

Lastly, we got a surprise question from the audience on Jenkins, a CI/CD pipeline tool that can be used in conjunction with tools like Chef to completely automate the infrastructure behind your applications.

What is the alternative of Jenkins?
While we recommend Jenkins, If you’re a Ruby shop, Capistrano is geared towards your deployments. If you live in the AWS world, you can try using the CodeCommit/CodeDeploy/CodePipeline toolset. If you’re looking for a provider agnostic solution, CircleCI is great. If your workflows revolve around Atlassian, try Bamboo. 

If you are unsure of what CI/CD pipeline tool to use, or how they work, we will be hosting a webinar on Jenkins as part of our on-going series on infrastructure-as-code.

Tagged : / / / / / / /

Top 10 Scripting Languages in DevOps | List of Best Scripting Languages

This is the time of DevOps in software industry and DevOps uses different different languages for deployment automation and for software development. This is the reason if you are a DevOps professional and want to be succeed in DevOps role than command on scripting languages is must. But, one can not be a master of all. Right? Therefore, In this article I am going to share a list of top 10 scripting languages which will be useful for your DevOps journey.
But before that let’s have a quick look on Scripting language.
Scripting languages are programming languages that communicate and integrate with other programming languages. In other words, scripting languages controlls interactive programs operations by giving it sequence of work to execute by one command at a time.
Now, let’s look on to the list of top 10 scripting languages

1. Microsoft PowerShell

Microsoft PowerShell

Microsoft powershell or powershell is belongs to Microsoft and an open source cross platform scripting language. If you have application infrastructure with windows than powershell is must for you. This scripting language is designed for system admins.
2. Puppet


Puppet is a configuration management tool and it has it’s own declarative language to describe system configuration. It runs on Linux, Unix-like and also on Windows. This one is available under Apache 2.7.0 and General Pubic license.  Puppet uses a custom declarative language, it just needs to specify ‘what’ action needs to be performed on the resources.
3. Chef


Chef is basically known as configuration management which belongs to chef is also a scripting language which is designed by David Morgan. It makes programs look like cooking any food.
4. Bash


Bash is basically a command language which is available in open source and written by Brian Fox in the year 1989. It can read scripts and Bash is the most commonly used Unix shell. Bash supports Linux, Windows and Mac OS.
5. Ruby


Ruby is amongst one of the best programming language but it is also a scripting language which is written by Yukihiro Matsumoto in the year 1995. Ruby supports cross platforms and it is available under GPL and BSD license. It supports multiple programming paradigms, including functional, object-oriented, and imperative.
6. Ansible


Ansible is known as configuration management and application deployment tool but it is also amongst top scripting languages. This language is belongs to Ansible Inc. and written by their community members. It supports Linux, Unix-like and Windows operating system.
7. Perl


Perl is a scripting language which is used for advanced web applications development. Perl is written by Larry Wall and first released in the year 1987. Perl supports cross platforms. Perl is available under general public license.
8. Python


Python is also amongst the top scripting languages which is used for high level of programming. It was first released in the year 1991 by Guido van Rossum. python is available under Python Software Foundation License. It’s supports Cross-platform.
9. Go language

Go language

Go scripting language belongs to the Internet giant Google. This scripting language is written by Robert Griesemer, Rob Pike and Ken Thompson and it was released in the year 2009. It supports  Linux, macOS, FreeBSD, NetBSD, OpenBSD, Windows, Plan 9, DragonFly BSD and Solaris operating systems. It is available in open source.
10. Groovy


Groovy can be used as a scripting language and it is also consider as a top scripting languages for DevOps professionals. It was designed by James Strachan and developed by Guillaume Laforge, Jochen Theodorou, Paul King and Cedric Champeau. It was first released in the year 2003 and available under Apache license. It supports Java platform.
Do you agree with this list? If not than feel free to respond in the comment box with your own take on the most essential scripting languages. One more thing, I would like to add here, if you need help to learn all these scripting languages and DevOps courses than scmGalaxy can help you in this. scmGalaxy is a community of DevOps professionals who are well experienced in this domain.
Tagged : / / / / / / / / / / / / / / / / / / /

Top 10 DevOps Tools which is mostly used by DevOps Engineers | scmGalaxy

DevOps is an important component for software industry today. Developing and implementing a DevOps culture helps to focus IT results and to save time and money as the gap between developers and IT operations teams closes. Just as the term and culture are new, so are many of the best DevOps tools these DevOps engineers use to do their jobs efficiently and productively. To help you in your DevOps process, we have searched and created this list of DevOps tools which is mostly used by DevOps Engineers in their projects.

1. Chef


Chef is an extremely popular tool among DevOps engineers. From IT automation to configuration management, Chef relies on recipes and resources so you can manage unique configurations and feel secure knowing Chef is checking your nodes and bringing them up to date for you.
Key Features:
  • Manage nodes from a single server
  • Cross-platform management for Linux, Windows, Mac OS, and more
  • Integrates with major cloud providers
  • Premium features available

2. Jenkins



An extensible continuous integration engine, Jenkins is a top tool for DevOps engineers who want to monitor executions of repeated jobs. With Jenkins, DevOps engineers have an easier time integrating changes to projects and have access to outputs to easily notice when something goes wrong.
Key Features:
  • Permanent links
  • RSS/email/IM integration
  • After-the-fact tagging
  • JUnit/TestNG test reporting
  • Distributed builds
3. Puppet


Puppet is an open-source configuration management tool. It runs on many Unix-like systems as well as on Microsoft Windows, and includes its own declarative language to describe system configuration. DevOps engineers often rely on Puppet for IT automation. Get a handle on configuration management and software while making rapid, repeatable changes with Puppet.
Key Features:
  • Automatically enforce consistency of environments
  • Works across physical and virtual machines
  • A common tool-chain
  • Support key DevOps best practices, including continuous delivery

4. Ant



A Java library and command-line tool, Apache Ant looks “to drive processes described in build files as targets and extension points dependent upon each other.” This build automation tool is one that saves DevOps engineers a great deal of time.
Key Features:
  • Supplies a number of built-in tasks for compiling, assembling, testing, and running Java applications
  • Builds non-Java applications, such as C or C++ applications
  • Pilot any type of process which can be described in terms of targets and tasks
  • Extremely flexible and does not impose coding conventions or directory layouts to the Java projects which adopt it as a build tool

5. Apache Maven


DevOps engineers can manage a project’s build, reporting, and documentation from a central piece of information with Apache Maven. A software project management and comprehension tool, Maven has been a reliable tool for DevOps engineers.
Key Features:
  • Simple project setup follows best practices
  • Easily work with multiple projects at one time
  • Large repository of libraries and metadata that continue to grow
  • Extensible, with the ability to write plugins in Java or scripting languages
6. Logstash


For open source log processing, search, and analytics, Logstash is a popular tool among DevOps engineers. Because Logstash is licensed under Apache 2.0, you can use it in the way that best suits your needs.

Key Features:
  • Collects, parses, and stores logs for later use
  • Includes a web interface for searching and drilling into all of your logs
  • Ship logs from any source, parse them, timestamp them correctly, index them, and search them

7. Docker



An open platform for distributed applications, Docker is an application for DevOps engineers who want to “build, ship, and run any app, anywhere.” With Docker, you can quickly assemble apps from components and work collaboratively.
Key Features:
  • Assemble multi-container apps and run on any infrastructure
  • Compose an app using both proprietary containers and Docker Hub Official Repos
  • Manage all containers of an app as a single group
  • Cluster an app’s containers to optimize resources and provide high-availability
8. New Relic


With New Relic APM, DevOps engineers spend less time monitoring applications and more time on building and deploying. A popular, reliable tool, New Relic APM is a great choice for DevOps engineers.
Key Features:
  • Helps in the build, deployment, and maintenance of web software
  • Application monitoring in one place
  • Cross application and transaction tracing
  • Database and availability and error monitoring
9. Gradle



Gradle is a robust tool for automating building, testing, publishing, and deploying software packages and other projects. With the combined power and flexibility of Ant and Maven, Gradle is an open source build automation system which is perfect and very useful for DevOps engineers.
Key Features:
  • Declarative builds and build-by-convention
  • Language for dependency-based programming
  • Structure your build
  • Deep API
  • Multi-project builds
  • Ease of migration
10. Git 



Git is a mature, actively maintained open source project originally developed in 2005 by Linus Torvalds, the famous creator of the Linux operating system kernel. Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Key Features:
  • Working offline
  • Fast to Work With
  • Repositories Are Smaller
  • Moving or Adding files
  • Ignore Certain Files
  • Branches
  • Check the Status of Your Changes
  • Stash Branches
  • Cherry Pick Changes from Branches
  • Find version that Introduced a bug using Binary Search
These are the most popular DevOps tools which are used by DevOps engineers or practitioners these days. But to make most out of these tools you need to have proper knowledge of these tools like installation process, implementation process, where to you use, how to use, troubleshooting and much more. So, if you think you need help or training for these tools or for DevOps related helps than we are here to assist you with our industry expertise professionals.
Tagged : / / / / / / / / / / / / / / / / / / / /