{"id":1949,"date":"2016-03-01T07:41:57","date_gmt":"2016-03-01T01:56:57","guid":{"rendered":"https:\/\/www.sparksupport.com\/blog\/?p=1949"},"modified":"2024-06-21T12:16:54","modified_gmt":"2024-06-21T12:16:54","slug":"an-introduction-to-puppet","status":"publish","type":"post","link":"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/","title":{"rendered":"An Introduction To Puppet"},"content":{"rendered":"<p style=\"text-align: justify;\"><strong>What is Puppet ?<br><\/strong><strong>======================<\/strong><br>Introduction to Puppet ,a software which is using for system automation and management. It manages your servers, your described machine configurations in an easy-to-read declarative language, and will bring your systems into the desired state and keep them there.Before talking more about puppet I want to refresh your thoughts about automation. The product is owned by puppet labs Inc the leader in IT automation .<strong><br><\/strong><\/p>\n<p style=\"text-align: justify;\"><strong>What is Automation ?<br>======================<br><\/strong>System automation is the use or introduction of automatic configurations , scripts or other process to perform the daily task automatically.<strong><br><\/strong><\/p>\n<p><strong>Why Automation ?<br><\/strong><strong>======================<br><\/strong>Speed &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : It will help us to complete the tasks in less time<br>consistency : It will avoid human errors which may occur during the repetition<br>Easy &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;: Free from hazards and avoid boredom of repetition<\/p>\n<p style=\"text-align: justify;\"><strong> What to Automate ?<br>======================<br><\/strong>Since the servers a infrastructure consist of a certain complexity and valuable data it will not be a wise decision if we choose a wrong thing to automate. So we have to consider few things before start with automation.<\/p>\n<p><strong>Choose the right thing to automate<\/strong><\/p>\n<p style=\"text-align: justify;\"><b>Frequency<\/b>&nbsp;: How often we have to perform the task. If the task comes very rare the effort to make those thing automated will be a waist.<\/p>\n<p style=\"text-align: justify;\"><strong>Variability :<\/strong> How much similar the tasks are, more similar more easy to automate<\/p>\n<p><strong>Don\u2019t Learn two things at a time<\/strong> : If we try to automate a technology or process in which we are not sounded enough. It will be very difficult to isolate the errors when things go wrong.That means we cant identify the exact issue, whether the issue is with the process we are doing or its with the puppet configurations.<\/p>\n<p style=\"text-align: justify;\"><strong>Platform Support<br>======================<br><\/strong>With Introduction to Puppet will work on all operating systems but the puppet master should be in linux . Windows machines can\u2019t act as puppet master servers. Before installing any Windows agent nodes, be sure that you have a *nix puppet master installed and configured.<\/p>\n<p><strong>How Puppet Works ?<br>========================<\/strong><\/p>\n<p style=\"text-align: justify;\">Puppet have a client part and a server part the client part is known as puppet agent and the server part is known as puppet master. The all major configuration is done at the Introduction to Puppet master. The puppet agent only holds the information of its puppet master.<\/p>\n<p><a href=\"https:\/\/www.sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/PuppetArchitecture.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2098 size-medium\" src=\"https:\/\/www.sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/PuppetArchitecture-300x225.png\" alt=\"PuppetArchitecture Introduction To Puppet\" width=\"300\" height=\"225\"><\/a><\/p>\n<p style=\"text-align: justify;\">Defining or changing a state of a system using puppet is done through four states or steps.<\/p>\n<ul>\n<li>Compile<\/li>\n<li>Transport<\/li>\n<li>Instantiate<\/li>\n<li>Configure<\/li>\n<\/ul>\n<p><strong>Compile<\/strong><\/p>\n<p style=\"text-align: justify;\">In this phase it compiles the manifests which written in puppet language it is more like a syntax rather than a language.The output will be normal objects and the compiling process is done at the server.<\/p>\n<p style=\"text-align: justify;\"><strong>Transport<\/strong><\/p>\n<p style=\"text-align: justify;\">As the name represents in this phase the transporting jobs are done . The outputs from the compile state (normal objects) are transported to the puppet clients and the status update from agent to master is transferred after the execution.<\/p>\n<p style=\"text-align: justify;\"><strong>Instantiate<\/strong><\/p>\n<p style=\"text-align: justify;\">From this phase the process are taking place at agent side.During this phase the normal objects are converted to puppet objects.<\/p>\n<p><strong>Configuration<\/strong><\/p>\n<p style=\"text-align: justify;\">In this phase the Introduction to Puppet objects are applied to the system and the system will get configured to the desirable state.<\/p>\n<p><strong>Puppet Installation<br>======================<br><\/strong><\/p>\n<p style=\"text-align: justify;\">Puppet software is opensource and is released under the Apache 2.0 license .Puppet software version prior to 2.7.0 was distributed under GPL v2.0 . It is both available as Puppet free edition which is absolutely free and Puppet Enterprise edition comes with their official support and additional functionality.<\/p>\n<p style=\"text-align: justify;\">The puppet files are available at Internet you can simply install it using yum by the help of Puppet repo or EPEL repo otherwise you can compile it by downloading the source file from the <a href=\"https:\/\/www.sparksupport.com\/\">official site<\/a> of Puppet Labs.<\/p>\n<p><b>Prerequisites<br>======================<\/b><\/p>\n<p><strong>Factor<\/strong><\/p>\n<p style=\"text-align: justify;\">Facter is an independent, cross-platform Ruby library designed to gather information on all the nodes you will be managing with Puppet. It is available on all platforms that Introduction to Puppet is available. Basically factor is a lightweight program that gathers basic node information about the hardware and operating system. Facter is especially useful for retrieving things like operating system names, hardware characteristics, IP addresses, MAC addresses, and SSH keys.<\/p>\n<p><strong>Hiera<\/strong><\/p>\n<p style=\"text-align: justify;\">Hiera is a key\/value lookup tool for configuration data, built to make Puppet better and let you set node-specific data without repeating yourself.<\/p>\n<p style=\"text-align: justify;\"><strong>Add Puppet Labs repo to your repo list<br>===========================================<br><\/strong><\/p>\n<p>You have to add puppet repo to your server<\/p>\n<p><em># rpm -ivh http:\/\/yum.puppetlabs.com\/el\/6\/products\/i386\/puppetlabs-release-6-6.noarch.rpm<\/em><\/p>\n<p><strong>Puppet Server&nbsp;Installation<\/strong><\/p>\n<p><strong> ===========================================<br><\/strong><\/p>\n<p><em># yum install puppet-server<\/em><\/p>\n<p><em># yum install ruby-rdoc<\/em><\/p>\n<p>Please verify that following packages&nbsp;are getting installed<\/p>\n<p><a href=\"https:\/\/www.sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/repo_9002_2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1962 size-large\" src=\"https:\/\/www.sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/repo_9002_2-1024x189.png\" alt=\"repo_9002_2 Introduction To Puppet\" width=\"640\" height=\"118\"><\/a><\/p>\n<p><em># service puppetmaster start<\/em><\/p>\n<p><em># chkconfig puppetmaster on<\/em><\/p>\n<p>Check whether the puppet master is running in all required levels<\/p>\n<p><strong>Puppet Client&nbsp;<\/strong><b>Installation<br>===========================================<br><\/b><\/p>\n<p><em># yum install puppet ruby-rdoc<\/em><\/p>\n<p><em># service puppet start<\/em><\/p>\n<p><em># chkconfig puppet on<\/em><\/p>\n<p>Check whether the puppet agent is running in all required levels<br><strong>Puppet Configurations<\/strong><br><strong>===========================================<\/strong><\/p>\n<p><em><strong>Puppet Master Configurations<\/strong><\/em><\/p>\n<p>Important files and file locations in Puppet Master<\/p>\n<p><em>\/etc\/puppet\/fileserver.conf<\/em><br><em> \/etc\/puppet\/auth.conf<\/em><br><em> \/etc\/puppet\/puppet.conf<\/em><br><em> \/etc\/puppet\/files<\/em><\/p>\n<p>Configuring the files<\/p>\n<p><em><strong>\/etc\/puppet\/puppet.conf<\/strong><\/em><\/p>\n<p>Puppet uses four primary config sections:<\/p>\n<p style=\"text-align: justify;\"><strong>main<\/strong> :is the global section used by all commands and services. It can be overridden by the other sections.<br><strong>master<\/strong>: is used by the puppet master service and the puppet cert command.<br><strong>agent<\/strong> :is used by the puppet agent service.<br><strong>user<\/strong> : is used by the puppet apply command, as well as many of the less common Puppet sub commands.<\/p>\n<p>Puppet will prefer to use settings from one of the three application-specific sections (master, agent, or user). If it doesn\u2019t find a setting in the application section, it will use the value from main. (If main doesn\u2019t set one, it will fall back to the default value.)<\/p>\n<p>A fresh \/etc\/puppet\/puppet.conf will look like this you have to edit it according to you needs.<\/p>\n<p><a href=\"https:\/\/www.sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/repo_9012-300x233.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1952\" src=\"https:\/\/www.sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/repo_9012-300x233.png\" alt=\"repo_9012-300x233\" width=\"300\" height=\"233\"><\/a><\/p>\n<p>A snapshot of configured \/etc\/puppet\/puppet.conf<\/p>\n<p><a href=\"https:\/\/www.sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/repo_9011-300x252.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1953 size-full\" src=\"https:\/\/www.sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/repo_9011-300x252.png\" alt=\"repo_9011-300x252 Introduction To Puppet\" width=\"300\" height=\"252\"><\/a><\/p>\n<p><strong>\/etc\/puppet\/auth.conf<\/strong><\/p>\n<p style=\"text-align: justify;\">Puppet master and puppet agent communicate with each other over a pseudo-RESTful HTTP network API. By default, the usage of this API is limited to the standard types of master\/agent communications. However, it can be exposed to other processes and used to build advanced tools on top of Puppet\u2019s existing infrastructure and functionality. (HTTP API calls are formatted as https:\/\/{server}:{port}\/{environment}\/{resource}\/{key}.)<\/p>\n<p style=\"text-align: justify;\">As you might guess, this can be turned into a security hazard, so access to the HTTP API is strictly controlled by a special configuration file.<\/p>\n<p><strong>ACL format<\/strong><\/p>\n<p>Each auth.conf ACL is formatted as follows:<\/p>\n<p><em>path [~] {\/path\/to\/resource|regex}<\/em><br><em> [environment {list of environments}]<\/em><br><em> [method {list of methods}]<\/em><br><em> [auth[enthicated] {yes|no|on|off|any}]<\/em><br><em> [allow {hostname|certname|*}]<\/em><\/p>\n<p style=\"text-align: justify;\">Whether the ACL matches authenticated requests.<\/p>\n<p style=\"text-align: justify;\">auth yes (or on) means this ACL will only match requests authenticated with an agent certificate.auth any means this ACL will match both authenticated and unauthenticated requests.&nbsp;auth no (or off) means this ACL will only match requests that are not authenticated with an agent certificate. Authenticated requests (like from puppet agent) will skip this ACL.<\/p>\n<p style=\"text-align: justify;\">Most communications between puppet agent and the puppet master are authenticated, so you will usually be using auth yes.The value of auth must be one of the above options; it cannot be a list. If auth isn\u2019t explicitly specified, it will default to yes.<\/p>\n<p style=\"text-align: justify;\">With the Introduction to Puppet appends a list of default ACLs to the ACLs read from auth.conf. However, if any custom ACLs have a path identical to that of a default ACL, that default ACL will be omitted when composing the full list of ACLs.<\/p>\n<p><strong>\/etc\/puppet\/fileserver.conf<\/strong><\/p>\n<p style=\"text-align: justify;\">This configuration file help us to create a file server in puppet by the help of which we can transfer static files into puppet agents. It will be very useful if you are planning to push same configuration files to multiple nodes. You can set up a file directory and set acl for them by editing these line in the \/etc\/puppet\/fileserver.conf . Here I am allowing everybody so I gave * in the permission part.<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/repo_9010-300x97.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1954\" src=\"https:\/\/www.sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/repo_9010-300x97.png\" alt=\"repo_9010-300x97\" width=\"300\" height=\"97\"><\/a><\/p>\n<p><em><strong>NOTE : After setting up the file directory we have to specify this file directory as source in the manifest file.<\/strong><\/em><\/p>\n<p><strong>\/etc\/puppet\/manifests<\/strong><\/p>\n<p style=\"text-align: justify;\">The manifest directory conatians puppet programs with .pp extension in which the actions are defined. Its more like a syntax rather than a language . The default manifest is name as \u201csite .pp\u201d we can include other manifests inside that otherwise it only performs the action defined in site.pp.You have to write your own manifests according to your needs I am attaching few manifests and its contest below<\/p>\n<ul>\n<li><em><strong>To install Apache and run the httpd service:<\/strong><\/em><\/li>\n<\/ul>\n<p><em>class apache {<\/em><br><em> package { httpd: ensure =&gt; installed }<\/em><br><em> service { \u201chttpd\u201d:<\/em><br><em> ensure =&gt; running,<\/em><br><em> require =&gt; Package[&#8220;httpd&#8221;],<\/em><br><em> }<\/em><br><em> }<\/em><\/p>\n<ul>\n<li><em><strong>To stop the mdmdp service:<\/strong><\/em><\/li>\n<\/ul>\n<p><em>class redhat {<\/em><br><em> service {<\/em><br><em> \u201cmdmdp\u201d:<\/em><br><em> enable =&gt; true,<\/em><br><em> ensure =&gt; stopped,<\/em><br><em> }<\/em><br><em> }<\/em><\/p>\n<ul>\n<li><strong><em>To execute commands:<\/em><\/strong><\/li>\n<\/ul>\n<p><em>class start_vhost {<\/em><br><em> $noop = true<\/em><br><em> exec { \u201c\/usr\/sbin\/start_ws\u201d: }<\/em><br><em> exec { \u201c\/usr\/sbin\/start_vhost\u201d: }<\/em><br><em> }<\/em><\/p>\n<ul>\n<li><strong><em>&nbsp;To start a service as per the remote operating system:<\/em><\/strong><\/li>\n<\/ul>\n<p><em>class httpd_service_start {<br><\/em><em style=\"line-height: 1.714285714; font-size: 1rem;\">case $operatingsystem {<br><\/em><em>redhat: { service { \u201chttpd\u201d: ensure =&gt; running }}<br><\/em><em>debian: { service { \u201capache\u201d: ensure =&gt; running }}<br><\/em><em>default: { service { \u201capache2\u2033: ensure =&gt; running }}<br><\/em><em>}<br><\/em><em>}<\/em><\/p>\n<ul>\n<li><strong>To create a user:<\/strong><\/li>\n<\/ul>\n<p><em>class virt_users {<br><\/em><em>@user { \u201cjsmith\u201d:<br><\/em><em>ensure =&gt; \u201cpresent\u201d,<br><\/em><em>uid =&gt; \u201c507\u201d,<br><\/em><em>gid =&gt; \u201c507\u201d,<br><\/em><em>comment =&gt; \u201cJohn Smith\u201d,<br><\/em><em>home =&gt; \u201c\/nfs\/HR\/home\/jsmith\u201d,<br><\/em><em>shell =&gt; \u201c\/bin\/bash\u201d,<br><\/em><em>}<br><\/em><em>}<\/em><\/p>\n<ul>\n<li><strong>To manage Cron job:<\/strong><\/li>\n<\/ul>\n<p><em>class set_cron_syscheck {<\/em><br><em> cron { \u201csyscheck\u201d:<\/em><br><em> command =&gt; \u201c\/usr\/bin\/syscheck\u201d,<\/em><br><em> user =&gt; \u201croot\u201d,<\/em><br><em> hour =&gt; \u201c18\u201d,<\/em><br><em> minute =&gt; \u201c0\u201d<\/em><br><em> }<\/em><br><em> }<\/em><\/p>\n<ul>\n<li><strong>Transferring a file from the Puppet server:<\/strong><\/li>\n<\/ul>\n<p><em>class httpd_conf {<\/em><br><em> file { \u201chttpd.conf\u201d:<\/em><br><em> source =&gt; \u201cpuppet:\/\/puppetmaster\/httpd\/conf\/httpd.conf\u201d<\/em><br><em> }<\/em><br><em> }<\/em><\/p>\n<p><strong>Puppet Agent registration with Puppet Master<\/strong><br><strong> =======================================<\/strong><\/p>\n<p><strong>On Client<\/strong><\/p>\n<p><em>puppet agent \u2013test \u2013waitforcert=60 \u2013server=$puppetmaster\u2019s hostname\/IP<\/em><\/p>\n<p>The above command will create your aggent certificate and sent a the certificates to master for signing.<\/p>\n<p><a href=\"https:\/\/www.sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/repo_9014.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1963 size-medium\" src=\"https:\/\/www.sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/repo_9014-300x9.png\" alt=\"repo_9014\" width=\"300\" height=\"9\"><\/a><\/p>\n<p><a href=\"https:\/\/www.sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/repo_9015.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1964 size-large\" src=\"https:\/\/www.sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/repo_9015-1024x67.png\" alt=\"repo_9015\" width=\"640\" height=\"41\"><\/a><\/p>\n<p><strong>On Server<\/strong><\/p>\n<p><em>puppet cert list<\/em><\/p>\n<p>This command will list all certificates waiting for approval .You can see agent certificate with its domain name as below.<\/p>\n<p><a href=\"https:\/\/www.sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/repo_9013.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1965 size-large\" src=\"https:\/\/www.sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/repo_9013-1024x39.png\" alt=\"repo_9013\" width=\"640\" height=\"24\"><\/a><\/p>\n<p>You can sign the certificate by this command<\/p>\n<p style=\"text-align: justify;\"><em>puppet cert sign puppetclient.com<\/em><\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/repo_9016-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1966 size-large\" src=\"https:\/\/www.sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/repo_9016-1-1024x54.png\" alt=\"repo_9016-1 Introduction To Puppet\" width=\"640\" height=\"33\"><\/a><\/p>\n<p style=\"text-align: justify;\">Now the Signing is&nbsp;completed. Now the&nbsp;puppet server&nbsp;will update the changes to the clients according to your manifests.<\/p>\n<p>reference :<a href=\"https:\/\/en.wikipedia.org\/wiki\/Puppet_(company)\">wikipedia<\/a>&nbsp;<\/p>\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>What is Puppet ?======================Introduction to Puppet ,a software which is using for system automation and management. It manages your servers, your described machine configurations in<\/p>\n","protected":false},"author":26,"featured_media":5049,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[6],"tags":[],"class_list":["post-1949","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>An Introduction To Puppet - complete details Spark Support<\/title>\n<meta name=\"description\" content=\"Introduction To Puppet is a system technology and management software. ... Speed: It will assist us in less time to finish the assignments\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"An Introduction To Puppet - complete details Spark Support\" \/>\n<meta property=\"og:description\" content=\"Introduction To Puppet is a system technology and management software. ... Speed: It will assist us in less time to finish the assignments\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/\" \/>\n<meta property=\"article:published_time\" content=\"2016-03-01T01:56:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-06-21T12:16:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/puppet-logo-768x768-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"768\" \/>\n\t<meta property=\"og:image:height\" content=\"768\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"bipin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"bipin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/\"},\"author\":{\"name\":\"bipin\",\"@id\":\"https:\/\/sparksupport.com\/blog\/#\/schema\/person\/7fab6dcd09471e07037d9dd3bd2e0a28\"},\"headline\":\"An Introduction To Puppet\",\"datePublished\":\"2016-03-01T01:56:57+00:00\",\"dateModified\":\"2024-06-21T12:16:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/\"},\"wordCount\":1706,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/sparksupport.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/puppet-logo-768x768-1.jpg\",\"articleSection\":[\"linux\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/\",\"url\":\"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/\",\"name\":\"An Introduction To Puppet - complete details Spark Support\",\"isPartOf\":{\"@id\":\"https:\/\/sparksupport.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/puppet-logo-768x768-1.jpg\",\"datePublished\":\"2016-03-01T01:56:57+00:00\",\"dateModified\":\"2024-06-21T12:16:54+00:00\",\"description\":\"Introduction To Puppet is a system technology and management software. ... Speed: It will assist us in less time to finish the assignments\",\"breadcrumb\":{\"@id\":\"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/#primaryimage\",\"url\":\"https:\/\/sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/puppet-logo-768x768-1.jpg\",\"contentUrl\":\"https:\/\/sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/puppet-logo-768x768-1.jpg\",\"width\":768,\"height\":768},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/sparksupport.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"An Introduction To Puppet\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/sparksupport.com\/blog\/#website\",\"url\":\"https:\/\/sparksupport.com\/blog\/\",\"name\":\"SparkSupport Blog\",\"description\":\"SparkSupport Blogs\",\"publisher\":{\"@id\":\"https:\/\/sparksupport.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/sparksupport.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/sparksupport.com\/blog\/#organization\",\"name\":\"SparkSupport\",\"url\":\"https:\/\/sparksupport.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/sparksupport.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/sparksupport.com\/blog\/wp-content\/uploads\/2019\/08\/cropped-logo-1.jpg\",\"contentUrl\":\"https:\/\/sparksupport.com\/blog\/wp-content\/uploads\/2019\/08\/cropped-logo-1.jpg\",\"width\":216,\"height\":44,\"caption\":\"SparkSupport\"},\"image\":{\"@id\":\"https:\/\/sparksupport.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/sparksupport.com\/blog\/#\/schema\/person\/7fab6dcd09471e07037d9dd3bd2e0a28\",\"name\":\"bipin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/c9251a303478773ad74935d2141321375697c02d43702188d02a56dbd71fde36?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c9251a303478773ad74935d2141321375697c02d43702188d02a56dbd71fde36?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c9251a303478773ad74935d2141321375697c02d43702188d02a56dbd71fde36?s=96&d=mm&r=g\",\"caption\":\"bipin\"},\"url\":\"https:\/\/sparksupport.com\/blog\/author\/bipin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"An Introduction To Puppet - complete details Spark Support","description":"Introduction To Puppet is a system technology and management software. ... Speed: It will assist us in less time to finish the assignments","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/","og_locale":"en_US","og_type":"article","og_title":"An Introduction To Puppet - complete details Spark Support","og_description":"Introduction To Puppet is a system technology and management software. ... Speed: It will assist us in less time to finish the assignments","og_url":"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/","article_published_time":"2016-03-01T01:56:57+00:00","article_modified_time":"2024-06-21T12:16:54+00:00","og_image":[{"width":768,"height":768,"url":"https:\/\/sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/puppet-logo-768x768-1.jpg","type":"image\/jpeg"}],"author":"bipin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"bipin","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/#article","isPartOf":{"@id":"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/"},"author":{"name":"bipin","@id":"https:\/\/sparksupport.com\/blog\/#\/schema\/person\/7fab6dcd09471e07037d9dd3bd2e0a28"},"headline":"An Introduction To Puppet","datePublished":"2016-03-01T01:56:57+00:00","dateModified":"2024-06-21T12:16:54+00:00","mainEntityOfPage":{"@id":"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/"},"wordCount":1706,"commentCount":0,"publisher":{"@id":"https:\/\/sparksupport.com\/blog\/#organization"},"image":{"@id":"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/#primaryimage"},"thumbnailUrl":"https:\/\/sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/puppet-logo-768x768-1.jpg","articleSection":["linux"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/","url":"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/","name":"An Introduction To Puppet - complete details Spark Support","isPartOf":{"@id":"https:\/\/sparksupport.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/#primaryimage"},"image":{"@id":"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/#primaryimage"},"thumbnailUrl":"https:\/\/sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/puppet-logo-768x768-1.jpg","datePublished":"2016-03-01T01:56:57+00:00","dateModified":"2024-06-21T12:16:54+00:00","description":"Introduction To Puppet is a system technology and management software. ... Speed: It will assist us in less time to finish the assignments","breadcrumb":{"@id":"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/#primaryimage","url":"https:\/\/sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/puppet-logo-768x768-1.jpg","contentUrl":"https:\/\/sparksupport.com\/blog\/wp-content\/uploads\/2016\/03\/puppet-logo-768x768-1.jpg","width":768,"height":768},{"@type":"BreadcrumbList","@id":"https:\/\/sparksupport.com\/blog\/an-introduction-to-puppet\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/sparksupport.com\/blog\/"},{"@type":"ListItem","position":2,"name":"An Introduction To Puppet"}]},{"@type":"WebSite","@id":"https:\/\/sparksupport.com\/blog\/#website","url":"https:\/\/sparksupport.com\/blog\/","name":"SparkSupport Blog","description":"SparkSupport Blogs","publisher":{"@id":"https:\/\/sparksupport.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sparksupport.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/sparksupport.com\/blog\/#organization","name":"SparkSupport","url":"https:\/\/sparksupport.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sparksupport.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/sparksupport.com\/blog\/wp-content\/uploads\/2019\/08\/cropped-logo-1.jpg","contentUrl":"https:\/\/sparksupport.com\/blog\/wp-content\/uploads\/2019\/08\/cropped-logo-1.jpg","width":216,"height":44,"caption":"SparkSupport"},"image":{"@id":"https:\/\/sparksupport.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/sparksupport.com\/blog\/#\/schema\/person\/7fab6dcd09471e07037d9dd3bd2e0a28","name":"bipin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c9251a303478773ad74935d2141321375697c02d43702188d02a56dbd71fde36?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c9251a303478773ad74935d2141321375697c02d43702188d02a56dbd71fde36?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c9251a303478773ad74935d2141321375697c02d43702188d02a56dbd71fde36?s=96&d=mm&r=g","caption":"bipin"},"url":"https:\/\/sparksupport.com\/blog\/author\/bipin\/"}]}},"_links":{"self":[{"href":"https:\/\/sparksupport.com\/blog\/wp-json\/wp\/v2\/posts\/1949","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sparksupport.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sparksupport.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sparksupport.com\/blog\/wp-json\/wp\/v2\/users\/26"}],"replies":[{"embeddable":true,"href":"https:\/\/sparksupport.com\/blog\/wp-json\/wp\/v2\/comments?post=1949"}],"version-history":[{"count":0,"href":"https:\/\/sparksupport.com\/blog\/wp-json\/wp\/v2\/posts\/1949\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sparksupport.com\/blog\/wp-json\/wp\/v2\/media\/5049"}],"wp:attachment":[{"href":"https:\/\/sparksupport.com\/blog\/wp-json\/wp\/v2\/media?parent=1949"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sparksupport.com\/blog\/wp-json\/wp\/v2\/categories?post=1949"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sparksupport.com\/blog\/wp-json\/wp\/v2\/tags?post=1949"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}