SlideShare una empresa de Scribd logo
Managing Your
Windows Infrastructure
with Puppet Bolt
2
@matthewstone
Matthew Stone
Senior Solutions Engineer,
Puppet, Inc.
souldo
matthewrstone
Housekeeping
● If you get stuck or are having technical
issues- please submit your questions in the
Q&A Chat and our team can help you out.
● You can also communicate with us via the
event chat.
● This workshop will be recorded, and we will
share the recording afterwards via email.
3
Agenda
- What is Bolt?
- Installation and Configuration
- Bolt Basics
- Creating a Bolt inventory
- Executing commands and scripts
- Converting scripts to tasks
- Executing tasks
- Executing plans
- Review
- Q & A
Our target for today
• You’ve been assigned a machine that will look something like this:
boltshopwin##.classroom.puppet.com
• The highly secure credentials are Administrator / Puppetlabs!
• We will use an alias to refer to this machine as www.
• We will be using Bolt to connect to this machine over WinRM.
• We might optionally RDP to the machine towards the end of the workshop.
PUPPET OVERVIEW5
What is Bolt?
What is Bolt?
• On-demand execution of commands, scripts in any language or level up to Bolt Tasks
and/or Plans.
• Can execute with or without and agent. (Puppet Agent, SSH or WinRM)
• Helps to define your overall automation story. Mature from commands and scripts to tasks
and plans or desired state where it makes the most sense.
• Bolt in Puppet Enterprise offers role-based access controls, a web console for centralized
operations and logging/auditing.
BOLT WORKSHOP7
Review - Types of Bolt Automation
PUPPET OVERVIEW8
• Commands
Scale a simple command to a plethora of systems.
• Scripts
Write in the language of your choice and target
remote systems.
• Tasks
Execute scripts with input validation, descriptive text
and cross-platform capabilities.
• Plans
Perform a step-based workflow consisting of
commands, scripts, tasks, plans or puppet code.
Note: Miscellaneous other types are available, like “apply” for puppet code and “file” for uploading/downloading files. We will
be focusing on the above. Try ‘bolt --help’ for a list of additional commands.
Exercise #1 Installing Bolt
Installing Bolt
• Available as a client tool for Windows, MacOS and Linux
• Available as a docker image puppet/puppet-bolt on Docker Hub.
• Available inside of Azure Cloud Shell, both bash and PowerShell variants.
For more installation information, visit:
https://puppet.com/docs/bolt/latest/bolt_installing.html
Verifying your Bolt installation
• Open a shell.
• Type bolt --version
• This course requires a version greater than 2.23.0
For more installation information, visit:
https://puppet.com/docs/bolt/latest/bolt_installing.html
PUPPET OVERVIEW11
Organizing
Bolt Content
Organizing Bolt Content
with Puppet Modules
• Use puppet manifests, bolt tasks or bolt plans together inside of one module.
• manifests live in <module>/manifests
• plans live in <module>/plans
• tasks live in <module>/tasks
• Use this method when you want to make your Bolt content accessible to other Puppet
Enterprise users in your organization.
• Does not allow for additional puppet modules to be imported, deferring to your Puppet
control repository.
PUPPET OVERVIEW13
Organizing Bolt Content
with Bolt Projects
• Bolt Projects are stand-alone content, typically with all dependencies contained within the
project.
• Bolt Projects are decentralized from a traditional Puppet Enterprise infrastructure. We use
the traditional puppet module workflow for that.
• Bolt Projects can pull in any of the 6500+ puppet modules available on the Forge,
including tasks, plans and desired state code.
PUPPET OVERVIEW14
Exercise #2 Downloading the Bolt Project
Exercise #2: Downloading the Bolt Project
https://github.com/puppetlabs-seteam/windows-boltshop
• Clone or download from the above link.
• Place into a ‘boltshop’ directory where you like.
• Open a shell and change to that directory.
• Run bolt task show to verify you have tasks that start with boltshop::.
Note: If you are using PowerShell, make sure your boltshop path is respecting case
sensitivity.
PUPPET OVERVIEW16
Exercise #2 Review
https://github.com/puppetlabs-seteam/windows-boltshop
• We just downloaded a Bolt Project
• Batteries are included. All dependencies for today’s workshop are included in the
workshop folder.
• This content should also be applicable outside of our virtual workshop environment today.
Kids, try this at home!
PUPPET OVERVIEW17
About
Bolt Projects
What’s in Our Bolt Project?
PUPPET OVERVIEW19
File or Folder Description
bolt-project.yaml Project specific metadata (I.e. name, public/private tasks, etc…)
inventory.yaml A static or dynamic list of servers along with relevant connection settings.
Puppetfile A list of modules, versions and dependencies we are using in this project. All modules will download
to the modules folder unless specified as local.
modules/ This folder stores any puppet forge or custom modules that we would like to use with our project.
The list of modules and dependencies are specified in the Puppetfile
tasks/* The folder that contains our Bolt Tasks.
plans/* The folder that contains our Bolt Plans.
files/* Content for our webserver to serve up.
Review: bolt-project.yaml
• Contains the name of the project. All
tasks and plans will start with
“boltshop” per the example to the right.
• Contains project specific configuration
items, like a custom inventory or
modulepath.
PUPPET OVERVIEW20
Review: inventory.yaml
PUPPET OVERVIEW21
• Groups
• Targets
• Configuration Options
Inventory can be static or dynamic
PUPPET OVERVIEW22
Generate inventory dynamically from AWS/Azure APIs or
from Terraform state files…
Exercise #3 Managing a Static Inventory File
Exercise #3: Managing a Static Inventory File
1. Edit inventory.yaml
2. Replace the uri and alias fields your
assigned server’s FQDN and ‘www’,
respectively.
3. Credentials are Administrator/Puppetlabs!
4. Open a shell and change to the boltshop
directory.
5. From your shell, run
bolt inventory show --targets windows
PUPPET OVERVIEW24
Exercise #3 Review
1. Manage your server groups and connection info in the inventory.yaml file.
2. Inventory can be static or dynamic by adding content from the Puppet Forge for Terraform, Azure or
AWS.
3. Inventory can connect to Puppet Enterprise / PuppetDB for querying node already under configuration
management.
4. Dynamic inventory plugins can also be developed for other clouds / inventory systems.
PUPPET OVERVIEW25
Commands
and Scripts
Using Commands and Scripts
1. Commands default to PowerShell (Windows) or
default shell on Linux.
2. If your command line is getting too long or wild,
move it to a PowerShell script (or language of
choice)
3. Scripts can accept arguments, but they are not
validated.
PUPPET OVERVIEW27
Bolt Syntax
PUPPET OVERVIEW28
• Bolt command line syntax:
bolt [command|script|task|plan] run <name> --targets <targets> [options]
• To run a simple PowerShell command on a remote WinRM host:
bolt command run 'write-host Hello World!' --targets 10.0.0.1,10.0.0.2
--user Administrator --password ‘Puppetlabs!' --transport winrm --no-ssl
• To run a simple Bash command on a remote SSH host:
bolt command run 'echo Hello World!' --targets 10.0.0.1,10.0.0.2
--user root --private-key /path/to/key --transport ssh --no-host-key-check
Exercise #4 Execute Commands and Scripts
Exercise #4: Execute Commands and Scripts
1. Open a shell and change to the boltshop directory.
2. From your shell, run
bolt command run ‘write-output “hello world!”’ --targets windows
3. From your shell, run
bolt script run examples/helloworld.ps1 --targets windows
PUPPET OVERVIEW30
Exercise #4 Review
1. Let’s Review
• We ran a command and a script. Congrats, you’re an Automator now! Update that resume.
• You just connected to a server over WinRM. SSH and puppet agent are also supported, as well as
both secure and insecure options based on environment.
• If WinRM security or configuration is an issue in your environment and you have PE, using the agent
to manage access is highly recommended.
2. What are we leaving out?
• We’re still using commands and scripts. Task and Plans give us more flexibility and scale better.
3. Aren’t scripts and commands enough?
• Depends on your environment. Getting existing scripts/commands into an automation framework for
reusability can be a crucial first step in organizing your environment for standardization and
consistent work.
• If you are sharing across teams or need to perform more than one action person script, a task or
plan is more suitable.
PUPPET OVERVIEW31
Tasks
Scripts into Tasks!
Scripts into Tasks!
• Make your scripts more useful in Bolt by turning them into Puppet Tasks
• Any script file in a tasks directory of a module becomes a Task
• Parameters in Bolt pass through to the Param() block in PowerShell.
• Tasks are name spaced automatically, using familiar Puppet syntax:
site/mymod/tasks/script1.ps1 # mymod::script1
site/aws/tasks/show_vpc.sh # aws::show_vpc
site/mysql/tasks/sql.rb # mysql::sql
site/yum/tasks/init.rb # yum
PUPPET OVERVIEW33
Define “more useful” please.
Scripts into Tasks!
• Descriptive text. Know what the task does, what the parameters do and what
type of input you need to enter for the task to be successful.
• Can be cross platform. Define scripts to execute for both Linux and Windows
servers.
• Can be imported into Puppet Enterprise and executed through the GUI.
PUPPET OVERVIEW34
What is a task?
1. A script (in the language of your choice…I know, last time.)
2. Some metadata in JSON format
1. A description for the task and each parameter.
2. Any required or optional parameters along with the type of input required.
3. Any additional implementation details, like which script to execute per OS.
3. Lives in the <project>/tasks folder.
PUPPET OVERVIEW35
Exercise #5 Execute a Task
Exercise #5: Execute a Task
• Run bolt task show to see available tasks.
• Run bolt task run boltshop::helloworld –t www
• Run bolt task run boltshop::helloworld –t www name=<yournamehere>
PUPPET OVERVIEW37
Exercise #5 Review: Execute a Task
• Tasks offer descriptions for the task itself and any parameters
• Tasks contain metadata for input validation and other runtime requirements.
• Tasks contain the mentioned metadata (JSON) file and the PowerShell script. The
metadata is what makes it a task. Otherwise, it’s just PowerShell.
• Bolt parameters map to parameters defined in the Param() block in PowerShell by default.
You can also specify STDIN in the implementation details, or environment variables on
Linux.
PUPPET OVERVIEW38
Task Metadata
PUPPET OVERVIEW39
• Descriptions
• Parameters
• Parameter Types
Review: boltshop::windowsfeature
• Look at the powershell script and how we would think of reusing this across teams.
• Action – install or uninstall
• Feature – the name of the feature
• If you’ve worked with declarative languages like PowerShell DSC or Puppet, this starts to
push the boundary of where it’s easier to just use those as the solution.
PUPPET OVERVIEW40
Exercise #6 Execute a Windows Feature Task
Exercise #6: Execute a Windows Feature Task
1. Open a shell and change to your boltshop directory
2. Run bolt task show boltshop::windowsfeature
3. Run the following:
bolt task run boltshop::windowsfeature --targets www action=install feature=web-webserver`
4. When completed, visit http://<your_webserver>
5. Congrats, you’ve built a webserver!
PUPPET OVERVIEW42
Exercise #6 Review
1. We ran a task! Script + Metadata = Task.
2. We installed a Windows Feature. Think about all the additional parameters that go into the
Install-WindowsFeature cmdlet and what we missed.
3. That’s a good case for explicit commands or desired state.
4. We ran a single task, but building a web server typically involves more than just installing a
Windows feature. A step-based approach to automating the stand up of the webserver
will help here.
PUPPET OVERVIEW43
Plans
About Bolt Plans
1. Step based orchestration. In short, “Do this, then that”.
2. Can mix and match command, scripts, tasks, other plans and even puppet code.
3. Can specify different targets per step.
4. Can use YAML or the puppet language. Ease vs. Power.
5. We will use YAML for today’s workshop
PUPPET OVERVIEW45
Our webserver plan
1. Each step can be a command, script,
task, plan, puppet apply or file
upload/download
2. Each step can have different targets.
3. Descriptions exist for both the plan and
each step.
4. Global parameters can be used in any
step.
5. Bolt executes steps in order.
PUPPET OVERVIEW46
Let’s Review
Open plans/build_webserver.yaml in
your text editor.
PUPPET OVERVIEW47
Why use puppet code?
1. The Puppet Forge has about 6500 modules available today.
2. If you have scripts or commands saved somewhere it’s pretty simple to create tasks. If
you have nothing, you can leverage the forge instead of reinventing the wheel.
3. Idempotency.
PUPPET OVERVIEW48
Why use puppet code?
1. I want to ensure the web server is installed.
2. I want to ensure the management tools are installed with it.
3. I don’t have to apply any further conditional logic.
4. If I want to remove it, switch ensure to absent.
PUPPET OVERVIEW49
Writing Puppet Code with YAML
1. Specify with the resources key vs
script/task/command/etc…
2. Parameters go under parameters.
3. We’ll use puppet code for IIS
instead of a bunch of PowerShell.
PUPPET OVERVIEW50
Exercise #7 Build a Web Server with a Bolt Plan
Exercise #7: Build a Web Server with a Bolt Plan
1. Cd to your boltshop directory
2. Run bolt plan show boltshop::build_webserver
3. Run bolt plan run boltshop::build_webserver --targets www
4. When completed, visit <your_webserver>
5. Congrats, you’ve customized your webserver.
PUPPET OVERVIEW52
Exercise #7 Review
1. We just executed a YAML plan that included commands, file uploads and puppet code.
2. We were able to mix and match and specify targets. In this case, it’s the same target, but
each step can target something different.
3. We just orchestrated several steps to create a webserver. The same model can be
applied to a multi-server IIS/SQL setup, patching and rebooting systems and more!
PUPPET OVERVIEW53
Exercise #8 Adding to your Bolt Plan
Lab Steps
1. Open plans/build_webserver.yaml
2. Add a “message of the day”, aka
logon message / legal notice text.
• Under the last IIS resource, add the motd class
• Set your title and content parameters.
• Save the file
3. Run the following:
bolt plan run boltshop::build_webserver --targets www
4. You should see resources changed. Now RDP to
your server.
5. If successful, after auth you should be prompted
with the MOTD.
PUPPET OVERVIEW55
Exercise #8 Review
1. We can easily add puppet code to our modules by leveraging the Puppet Forge.
2. When we re-apply puppet code we see a report of resources changed.
3. Visit forge.puppet.com for more available modules
and additional Windows content.
PUPPET OVERVIEW56
Exercise #9 One more thing…
Bolt, now with 100% more PowerShell cmdlets!
1. Bolt now has PowerShell cmdlets!
2. The same Bolt command in PS cmdlet is:
Invoke-BoltPlan -Name boltshop::build_webserver -Targets www
3. Run Get-Command *Bolt* for a list of cmdlets.
PUPPET OVERVIEW58
Lab #9 Review
1. Bolt now has PowerShell cmdlets!
2. Cmdlets can be used instead of the traditional Bolt commands.
3. This is an early feature, so watch this space and let us know if you plan on using it in
the follow up survey.
PUPPET OVERVIEW59
Wrapping
It Up
What did I learn today?
- What is Bolt.
- How to run commands and scripts through Bolt.
- How to build and execute a task for scaling scripts and commands and distributing
amongst teams with diverse skill sets.
- How to build and execute a YAML plan to build step-based orchestration to stand up a
simple IIS webserver.
- How to use puppet modules within a plan.
- How to use PowerShell cmdlets to execute a command.
PUPPET OVERVIEW61
What’s Next?
- Fill out the follow-up survey!
- Join the Puppet Community slack!
(especially the #bolt and #windows channels)
https://slack.puppet.com
- Attend our virtual Puppet Camp Central on 9/24. Includes talks about Bolt on Windows!
https://info.puppet.com/09-24-Puppet-Camp-America-Central.html
PUPPET OVERVIEW62
PUPPET OVERVIEW63
Get in Touch
● Matt Stone: matthew.stone@puppet.com
● John Laffey: john.laffey@puppet.com
● Dan Shauver: shauver@puppet.com
● Rajesh Radhakrishnan:
rajesh.radhakrishnan@puppet.com
● Paul Reed: paul.reed@puppet.com
64
Thank you!
65

Más contenido relacionado

La actualidad más candente

Azure DevOps
Azure DevOpsAzure DevOps
Azure DevOps
Allied Consultants
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with Docker
Ravindu Fernando
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
Walid Ashraf
 
Tour of Azure DevOps
Tour of Azure DevOpsTour of Azure DevOps
Tour of Azure DevOps
Callon Campbell
 
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
Simplilearn
 
[JAZUG Tohoku Azure DevOps] Azure DevOps
[JAZUG Tohoku Azure DevOps] Azure DevOps[JAZUG Tohoku Azure DevOps] Azure DevOps
[JAZUG Tohoku Azure DevOps] Azure DevOps
Naoki (Neo) SATO
 
Building and Evolving a Dependency-Graph Based Microservice Architecture (La...
 Building and Evolving a Dependency-Graph Based Microservice Architecture (La... Building and Evolving a Dependency-Graph Based Microservice Architecture (La...
Building and Evolving a Dependency-Graph Based Microservice Architecture (La...
confluent
 
Azure DevOps Best Practices Webinar
Azure DevOps Best Practices WebinarAzure DevOps Best Practices Webinar
Azure DevOps Best Practices Webinar
Cambay Digital
 
CI/CD on AWS
CI/CD on AWSCI/CD on AWS
CI/CD on AWS
Bhargav Amin
 
Jenkins
JenkinsJenkins
Azure DevOps - Azure Guatemala Meetup
Azure DevOps - Azure Guatemala MeetupAzure DevOps - Azure Guatemala Meetup
Azure DevOps - Azure Guatemala Meetup
Guillermo Zepeda Selman
 
Power of Azure Devops
Power of Azure DevopsPower of Azure Devops
Power of Azure Devops
Azure Riyadh User Group
 
Jenkins for java world
Jenkins for java worldJenkins for java world
Jenkins for java world
Ashok Kumar
 
Devops: A History
Devops: A HistoryDevops: A History
Devops: A History
Nell Shamrell-Harrington
 
[Webinar] WSO2 Enterprise Integrator 7.1.0 Release
[Webinar] WSO2 Enterprise Integrator 7.1.0 Release[Webinar] WSO2 Enterprise Integrator 7.1.0 Release
[Webinar] WSO2 Enterprise Integrator 7.1.0 Release
WSO2
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
Instruqt
 
Docker 101 - High level introduction to docker
Docker 101 - High level introduction to dockerDocker 101 - High level introduction to docker
Docker 101 - High level introduction to docker
Dr Ganesh Iyer
 
Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기
Dronix
 
DevOps - A Gentle Introduction
DevOps - A Gentle IntroductionDevOps - A Gentle Introduction
DevOps - A Gentle Introduction
Ganesh Samarthyam
 
Four Strategies to Create a DevOps Culture & System that Favors Innovation & ...
Four Strategies to Create a DevOps Culture & System that Favors Innovation & ...Four Strategies to Create a DevOps Culture & System that Favors Innovation & ...
Four Strategies to Create a DevOps Culture & System that Favors Innovation & ...
Amazon Web Services
 

La actualidad más candente (20)

Azure DevOps
Azure DevOpsAzure DevOps
Azure DevOps
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with Docker
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Tour of Azure DevOps
Tour of Azure DevOpsTour of Azure DevOps
Tour of Azure DevOps
 
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
 
[JAZUG Tohoku Azure DevOps] Azure DevOps
[JAZUG Tohoku Azure DevOps] Azure DevOps[JAZUG Tohoku Azure DevOps] Azure DevOps
[JAZUG Tohoku Azure DevOps] Azure DevOps
 
Building and Evolving a Dependency-Graph Based Microservice Architecture (La...
 Building and Evolving a Dependency-Graph Based Microservice Architecture (La... Building and Evolving a Dependency-Graph Based Microservice Architecture (La...
Building and Evolving a Dependency-Graph Based Microservice Architecture (La...
 
Azure DevOps Best Practices Webinar
Azure DevOps Best Practices WebinarAzure DevOps Best Practices Webinar
Azure DevOps Best Practices Webinar
 
CI/CD on AWS
CI/CD on AWSCI/CD on AWS
CI/CD on AWS
 
Jenkins
JenkinsJenkins
Jenkins
 
Azure DevOps - Azure Guatemala Meetup
Azure DevOps - Azure Guatemala MeetupAzure DevOps - Azure Guatemala Meetup
Azure DevOps - Azure Guatemala Meetup
 
Power of Azure Devops
Power of Azure DevopsPower of Azure Devops
Power of Azure Devops
 
Jenkins for java world
Jenkins for java worldJenkins for java world
Jenkins for java world
 
Devops: A History
Devops: A HistoryDevops: A History
Devops: A History
 
[Webinar] WSO2 Enterprise Integrator 7.1.0 Release
[Webinar] WSO2 Enterprise Integrator 7.1.0 Release[Webinar] WSO2 Enterprise Integrator 7.1.0 Release
[Webinar] WSO2 Enterprise Integrator 7.1.0 Release
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Docker 101 - High level introduction to docker
Docker 101 - High level introduction to dockerDocker 101 - High level introduction to docker
Docker 101 - High level introduction to docker
 
Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기
 
DevOps - A Gentle Introduction
DevOps - A Gentle IntroductionDevOps - A Gentle Introduction
DevOps - A Gentle Introduction
 
Four Strategies to Create a DevOps Culture & System that Favors Innovation & ...
Four Strategies to Create a DevOps Culture & System that Favors Innovation & ...Four Strategies to Create a DevOps Culture & System that Favors Innovation & ...
Four Strategies to Create a DevOps Culture & System that Favors Innovation & ...
 

Similar a Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020

Virtual Bolt Workshop, 5 May 2020
Virtual Bolt Workshop, 5 May 2020Virtual Bolt Workshop, 5 May 2020
Virtual Bolt Workshop, 5 May 2020
Puppet
 
Virtual Bolt Workshop - April 28, 2020
Virtual Bolt Workshop - April 28, 2020Virtual Bolt Workshop - April 28, 2020
Virtual Bolt Workshop - April 28, 2020
Puppet
 
Virtual Bolt Workshop - 6 May
Virtual Bolt Workshop - 6 MayVirtual Bolt Workshop - 6 May
Virtual Bolt Workshop - 6 May
Puppet
 
Puppet Virtual Bolt Workshop - 23 April 2020 (Singapore)
Puppet Virtual Bolt Workshop - 23 April 2020 (Singapore)Puppet Virtual Bolt Workshop - 23 April 2020 (Singapore)
Puppet Virtual Bolt Workshop - 23 April 2020 (Singapore)
Puppet
 
Virtual Bolt Workshop - March 16, 2020
Virtual Bolt Workshop - March 16, 2020Virtual Bolt Workshop - March 16, 2020
Virtual Bolt Workshop - March 16, 2020
Puppet
 
Virtual Puppet Ecosystem Workshop - March 18,2020
Virtual Puppet Ecosystem Workshop - March 18,2020Virtual Puppet Ecosystem Workshop - March 18,2020
Virtual Puppet Ecosystem Workshop - March 18,2020
Puppet
 
Virtual Bolt Workshop - April 1, 2020
Virtual Bolt Workshop - April 1, 2020Virtual Bolt Workshop - April 1, 2020
Virtual Bolt Workshop - April 1, 2020
Puppet
 
DevOps Automation with Puppet Bolt & Puppet Enterprise
DevOps Automation with Puppet Bolt & Puppet EnterpriseDevOps Automation with Puppet Bolt & Puppet Enterprise
DevOps Automation with Puppet Bolt & Puppet Enterprise
Eficode
 
Virtual Bolt Workshop - Dell - April 8 2020
Virtual Bolt Workshop - Dell - April 8 2020Virtual Bolt Workshop - Dell - April 8 2020
Virtual Bolt Workshop - Dell - April 8 2020
Puppet
 
PowerShellForDBDevelopers
PowerShellForDBDevelopersPowerShellForDBDevelopers
PowerShellForDBDevelopers
Bryan Cafferky
 
Jenkins advance topic
Jenkins advance topicJenkins advance topic
Jenkins advance topic
Kalkey
 
Lean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and DrushLean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and Drush
Pantheon
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
Stanislav Pogrebnyak
 
VMworld 2016: Getting Started with PowerShell and PowerCLI for Your VMware En...
VMworld 2016: Getting Started with PowerShell and PowerCLI for Your VMware En...VMworld 2016: Getting Started with PowerShell and PowerCLI for Your VMware En...
VMworld 2016: Getting Started with PowerShell and PowerCLI for Your VMware En...
VMworld
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Michael Lihs
 
Build Tools & Maven
Build Tools & MavenBuild Tools & Maven
Build Tools & Maven
David Simons
 
Fluo CICD OpenStack Summit
Fluo CICD OpenStack SummitFluo CICD OpenStack Summit
Fluo CICD OpenStack Summit
Miguel Zuniga
 
One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.
Javier López
 
Create your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and PackerCreate your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and Packer
frastel
 
OpenShift Commons - Adopting Podman, Skopeo and Buildah for Building and Mana...
OpenShift Commons - Adopting Podman, Skopeo and Buildah for Building and Mana...OpenShift Commons - Adopting Podman, Skopeo and Buildah for Building and Mana...
OpenShift Commons - Adopting Podman, Skopeo and Buildah for Building and Mana...
Mihai Criveti
 

Similar a Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020 (20)

Virtual Bolt Workshop, 5 May 2020
Virtual Bolt Workshop, 5 May 2020Virtual Bolt Workshop, 5 May 2020
Virtual Bolt Workshop, 5 May 2020
 
Virtual Bolt Workshop - April 28, 2020
Virtual Bolt Workshop - April 28, 2020Virtual Bolt Workshop - April 28, 2020
Virtual Bolt Workshop - April 28, 2020
 
Virtual Bolt Workshop - 6 May
Virtual Bolt Workshop - 6 MayVirtual Bolt Workshop - 6 May
Virtual Bolt Workshop - 6 May
 
Puppet Virtual Bolt Workshop - 23 April 2020 (Singapore)
Puppet Virtual Bolt Workshop - 23 April 2020 (Singapore)Puppet Virtual Bolt Workshop - 23 April 2020 (Singapore)
Puppet Virtual Bolt Workshop - 23 April 2020 (Singapore)
 
Virtual Bolt Workshop - March 16, 2020
Virtual Bolt Workshop - March 16, 2020Virtual Bolt Workshop - March 16, 2020
Virtual Bolt Workshop - March 16, 2020
 
Virtual Puppet Ecosystem Workshop - March 18,2020
Virtual Puppet Ecosystem Workshop - March 18,2020Virtual Puppet Ecosystem Workshop - March 18,2020
Virtual Puppet Ecosystem Workshop - March 18,2020
 
Virtual Bolt Workshop - April 1, 2020
Virtual Bolt Workshop - April 1, 2020Virtual Bolt Workshop - April 1, 2020
Virtual Bolt Workshop - April 1, 2020
 
DevOps Automation with Puppet Bolt & Puppet Enterprise
DevOps Automation with Puppet Bolt & Puppet EnterpriseDevOps Automation with Puppet Bolt & Puppet Enterprise
DevOps Automation with Puppet Bolt & Puppet Enterprise
 
Virtual Bolt Workshop - Dell - April 8 2020
Virtual Bolt Workshop - Dell - April 8 2020Virtual Bolt Workshop - Dell - April 8 2020
Virtual Bolt Workshop - Dell - April 8 2020
 
PowerShellForDBDevelopers
PowerShellForDBDevelopersPowerShellForDBDevelopers
PowerShellForDBDevelopers
 
Jenkins advance topic
Jenkins advance topicJenkins advance topic
Jenkins advance topic
 
Lean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and DrushLean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and Drush
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
VMworld 2016: Getting Started with PowerShell and PowerCLI for Your VMware En...
VMworld 2016: Getting Started with PowerShell and PowerCLI for Your VMware En...VMworld 2016: Getting Started with PowerShell and PowerCLI for Your VMware En...
VMworld 2016: Getting Started with PowerShell and PowerCLI for Your VMware En...
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
 
Build Tools & Maven
Build Tools & MavenBuild Tools & Maven
Build Tools & Maven
 
Fluo CICD OpenStack Summit
Fluo CICD OpenStack SummitFluo CICD OpenStack Summit
Fluo CICD OpenStack Summit
 
One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.
 
Create your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and PackerCreate your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and Packer
 
OpenShift Commons - Adopting Podman, Skopeo and Buildah for Building and Mana...
OpenShift Commons - Adopting Podman, Skopeo and Buildah for Building and Mana...OpenShift Commons - Adopting Podman, Skopeo and Buildah for Building and Mana...
OpenShift Commons - Adopting Podman, Skopeo and Buildah for Building and Mana...
 

Más de Puppet

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
Puppet
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyaml
Puppet
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
Puppet
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscode
Puppet
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twenties
Puppet
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance code
Puppet
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approach
Puppet
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
Puppet
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliance
Puppet
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNow
Puppet
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden Windows
Puppet
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020
Puppet
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppet
Puppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael Pinson
Puppet
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
Puppet
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping ground
Puppet
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software
Puppet
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User Group
Puppet
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOps
Puppet
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
Puppet
 

Más de Puppet (20)

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyaml
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscode
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twenties
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance code
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approach
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliance
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNow
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden Windows
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael Pinson
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping ground
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User Group
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOps
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
 

Último

Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
Federico Razzoli
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
Postman
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
Project Management Semester Long Project - Acuity
Project Management Semester Long Project - AcuityProject Management Semester Long Project - Acuity
Project Management Semester Long Project - Acuity
jpupo2018
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 

Último (20)

Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
Project Management Semester Long Project - Acuity
Project Management Semester Long Project - AcuityProject Management Semester Long Project - Acuity
Project Management Semester Long Project - Acuity
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 

Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020

  • 2. 2 @matthewstone Matthew Stone Senior Solutions Engineer, Puppet, Inc. souldo matthewrstone
  • 3. Housekeeping ● If you get stuck or are having technical issues- please submit your questions in the Q&A Chat and our team can help you out. ● You can also communicate with us via the event chat. ● This workshop will be recorded, and we will share the recording afterwards via email. 3
  • 4. Agenda - What is Bolt? - Installation and Configuration - Bolt Basics - Creating a Bolt inventory - Executing commands and scripts - Converting scripts to tasks - Executing tasks - Executing plans - Review - Q & A
  • 5. Our target for today • You’ve been assigned a machine that will look something like this: boltshopwin##.classroom.puppet.com • The highly secure credentials are Administrator / Puppetlabs! • We will use an alias to refer to this machine as www. • We will be using Bolt to connect to this machine over WinRM. • We might optionally RDP to the machine towards the end of the workshop. PUPPET OVERVIEW5
  • 7. What is Bolt? • On-demand execution of commands, scripts in any language or level up to Bolt Tasks and/or Plans. • Can execute with or without and agent. (Puppet Agent, SSH or WinRM) • Helps to define your overall automation story. Mature from commands and scripts to tasks and plans or desired state where it makes the most sense. • Bolt in Puppet Enterprise offers role-based access controls, a web console for centralized operations and logging/auditing. BOLT WORKSHOP7
  • 8. Review - Types of Bolt Automation PUPPET OVERVIEW8 • Commands Scale a simple command to a plethora of systems. • Scripts Write in the language of your choice and target remote systems. • Tasks Execute scripts with input validation, descriptive text and cross-platform capabilities. • Plans Perform a step-based workflow consisting of commands, scripts, tasks, plans or puppet code. Note: Miscellaneous other types are available, like “apply” for puppet code and “file” for uploading/downloading files. We will be focusing on the above. Try ‘bolt --help’ for a list of additional commands.
  • 10. Installing Bolt • Available as a client tool for Windows, MacOS and Linux • Available as a docker image puppet/puppet-bolt on Docker Hub. • Available inside of Azure Cloud Shell, both bash and PowerShell variants. For more installation information, visit: https://puppet.com/docs/bolt/latest/bolt_installing.html
  • 11. Verifying your Bolt installation • Open a shell. • Type bolt --version • This course requires a version greater than 2.23.0 For more installation information, visit: https://puppet.com/docs/bolt/latest/bolt_installing.html PUPPET OVERVIEW11
  • 13. Organizing Bolt Content with Puppet Modules • Use puppet manifests, bolt tasks or bolt plans together inside of one module. • manifests live in <module>/manifests • plans live in <module>/plans • tasks live in <module>/tasks • Use this method when you want to make your Bolt content accessible to other Puppet Enterprise users in your organization. • Does not allow for additional puppet modules to be imported, deferring to your Puppet control repository. PUPPET OVERVIEW13
  • 14. Organizing Bolt Content with Bolt Projects • Bolt Projects are stand-alone content, typically with all dependencies contained within the project. • Bolt Projects are decentralized from a traditional Puppet Enterprise infrastructure. We use the traditional puppet module workflow for that. • Bolt Projects can pull in any of the 6500+ puppet modules available on the Forge, including tasks, plans and desired state code. PUPPET OVERVIEW14
  • 15. Exercise #2 Downloading the Bolt Project
  • 16. Exercise #2: Downloading the Bolt Project https://github.com/puppetlabs-seteam/windows-boltshop • Clone or download from the above link. • Place into a ‘boltshop’ directory where you like. • Open a shell and change to that directory. • Run bolt task show to verify you have tasks that start with boltshop::. Note: If you are using PowerShell, make sure your boltshop path is respecting case sensitivity. PUPPET OVERVIEW16
  • 17. Exercise #2 Review https://github.com/puppetlabs-seteam/windows-boltshop • We just downloaded a Bolt Project • Batteries are included. All dependencies for today’s workshop are included in the workshop folder. • This content should also be applicable outside of our virtual workshop environment today. Kids, try this at home! PUPPET OVERVIEW17
  • 19. What’s in Our Bolt Project? PUPPET OVERVIEW19 File or Folder Description bolt-project.yaml Project specific metadata (I.e. name, public/private tasks, etc…) inventory.yaml A static or dynamic list of servers along with relevant connection settings. Puppetfile A list of modules, versions and dependencies we are using in this project. All modules will download to the modules folder unless specified as local. modules/ This folder stores any puppet forge or custom modules that we would like to use with our project. The list of modules and dependencies are specified in the Puppetfile tasks/* The folder that contains our Bolt Tasks. plans/* The folder that contains our Bolt Plans. files/* Content for our webserver to serve up.
  • 20. Review: bolt-project.yaml • Contains the name of the project. All tasks and plans will start with “boltshop” per the example to the right. • Contains project specific configuration items, like a custom inventory or modulepath. PUPPET OVERVIEW20
  • 21. Review: inventory.yaml PUPPET OVERVIEW21 • Groups • Targets • Configuration Options
  • 22. Inventory can be static or dynamic PUPPET OVERVIEW22 Generate inventory dynamically from AWS/Azure APIs or from Terraform state files…
  • 23. Exercise #3 Managing a Static Inventory File
  • 24. Exercise #3: Managing a Static Inventory File 1. Edit inventory.yaml 2. Replace the uri and alias fields your assigned server’s FQDN and ‘www’, respectively. 3. Credentials are Administrator/Puppetlabs! 4. Open a shell and change to the boltshop directory. 5. From your shell, run bolt inventory show --targets windows PUPPET OVERVIEW24
  • 25. Exercise #3 Review 1. Manage your server groups and connection info in the inventory.yaml file. 2. Inventory can be static or dynamic by adding content from the Puppet Forge for Terraform, Azure or AWS. 3. Inventory can connect to Puppet Enterprise / PuppetDB for querying node already under configuration management. 4. Dynamic inventory plugins can also be developed for other clouds / inventory systems. PUPPET OVERVIEW25
  • 27. Using Commands and Scripts 1. Commands default to PowerShell (Windows) or default shell on Linux. 2. If your command line is getting too long or wild, move it to a PowerShell script (or language of choice) 3. Scripts can accept arguments, but they are not validated. PUPPET OVERVIEW27
  • 28. Bolt Syntax PUPPET OVERVIEW28 • Bolt command line syntax: bolt [command|script|task|plan] run <name> --targets <targets> [options] • To run a simple PowerShell command on a remote WinRM host: bolt command run 'write-host Hello World!' --targets 10.0.0.1,10.0.0.2 --user Administrator --password ‘Puppetlabs!' --transport winrm --no-ssl • To run a simple Bash command on a remote SSH host: bolt command run 'echo Hello World!' --targets 10.0.0.1,10.0.0.2 --user root --private-key /path/to/key --transport ssh --no-host-key-check
  • 29. Exercise #4 Execute Commands and Scripts
  • 30. Exercise #4: Execute Commands and Scripts 1. Open a shell and change to the boltshop directory. 2. From your shell, run bolt command run ‘write-output “hello world!”’ --targets windows 3. From your shell, run bolt script run examples/helloworld.ps1 --targets windows PUPPET OVERVIEW30
  • 31. Exercise #4 Review 1. Let’s Review • We ran a command and a script. Congrats, you’re an Automator now! Update that resume. • You just connected to a server over WinRM. SSH and puppet agent are also supported, as well as both secure and insecure options based on environment. • If WinRM security or configuration is an issue in your environment and you have PE, using the agent to manage access is highly recommended. 2. What are we leaving out? • We’re still using commands and scripts. Task and Plans give us more flexibility and scale better. 3. Aren’t scripts and commands enough? • Depends on your environment. Getting existing scripts/commands into an automation framework for reusability can be a crucial first step in organizing your environment for standardization and consistent work. • If you are sharing across teams or need to perform more than one action person script, a task or plan is more suitable. PUPPET OVERVIEW31
  • 32. Tasks
  • 33. Scripts into Tasks! Scripts into Tasks! • Make your scripts more useful in Bolt by turning them into Puppet Tasks • Any script file in a tasks directory of a module becomes a Task • Parameters in Bolt pass through to the Param() block in PowerShell. • Tasks are name spaced automatically, using familiar Puppet syntax: site/mymod/tasks/script1.ps1 # mymod::script1 site/aws/tasks/show_vpc.sh # aws::show_vpc site/mysql/tasks/sql.rb # mysql::sql site/yum/tasks/init.rb # yum PUPPET OVERVIEW33
  • 34. Define “more useful” please. Scripts into Tasks! • Descriptive text. Know what the task does, what the parameters do and what type of input you need to enter for the task to be successful. • Can be cross platform. Define scripts to execute for both Linux and Windows servers. • Can be imported into Puppet Enterprise and executed through the GUI. PUPPET OVERVIEW34
  • 35. What is a task? 1. A script (in the language of your choice…I know, last time.) 2. Some metadata in JSON format 1. A description for the task and each parameter. 2. Any required or optional parameters along with the type of input required. 3. Any additional implementation details, like which script to execute per OS. 3. Lives in the <project>/tasks folder. PUPPET OVERVIEW35
  • 37. Exercise #5: Execute a Task • Run bolt task show to see available tasks. • Run bolt task run boltshop::helloworld –t www • Run bolt task run boltshop::helloworld –t www name=<yournamehere> PUPPET OVERVIEW37
  • 38. Exercise #5 Review: Execute a Task • Tasks offer descriptions for the task itself and any parameters • Tasks contain metadata for input validation and other runtime requirements. • Tasks contain the mentioned metadata (JSON) file and the PowerShell script. The metadata is what makes it a task. Otherwise, it’s just PowerShell. • Bolt parameters map to parameters defined in the Param() block in PowerShell by default. You can also specify STDIN in the implementation details, or environment variables on Linux. PUPPET OVERVIEW38
  • 39. Task Metadata PUPPET OVERVIEW39 • Descriptions • Parameters • Parameter Types
  • 40. Review: boltshop::windowsfeature • Look at the powershell script and how we would think of reusing this across teams. • Action – install or uninstall • Feature – the name of the feature • If you’ve worked with declarative languages like PowerShell DSC or Puppet, this starts to push the boundary of where it’s easier to just use those as the solution. PUPPET OVERVIEW40
  • 41. Exercise #6 Execute a Windows Feature Task
  • 42. Exercise #6: Execute a Windows Feature Task 1. Open a shell and change to your boltshop directory 2. Run bolt task show boltshop::windowsfeature 3. Run the following: bolt task run boltshop::windowsfeature --targets www action=install feature=web-webserver` 4. When completed, visit http://<your_webserver> 5. Congrats, you’ve built a webserver! PUPPET OVERVIEW42
  • 43. Exercise #6 Review 1. We ran a task! Script + Metadata = Task. 2. We installed a Windows Feature. Think about all the additional parameters that go into the Install-WindowsFeature cmdlet and what we missed. 3. That’s a good case for explicit commands or desired state. 4. We ran a single task, but building a web server typically involves more than just installing a Windows feature. A step-based approach to automating the stand up of the webserver will help here. PUPPET OVERVIEW43
  • 44. Plans
  • 45. About Bolt Plans 1. Step based orchestration. In short, “Do this, then that”. 2. Can mix and match command, scripts, tasks, other plans and even puppet code. 3. Can specify different targets per step. 4. Can use YAML or the puppet language. Ease vs. Power. 5. We will use YAML for today’s workshop PUPPET OVERVIEW45
  • 46. Our webserver plan 1. Each step can be a command, script, task, plan, puppet apply or file upload/download 2. Each step can have different targets. 3. Descriptions exist for both the plan and each step. 4. Global parameters can be used in any step. 5. Bolt executes steps in order. PUPPET OVERVIEW46
  • 47. Let’s Review Open plans/build_webserver.yaml in your text editor. PUPPET OVERVIEW47
  • 48. Why use puppet code? 1. The Puppet Forge has about 6500 modules available today. 2. If you have scripts or commands saved somewhere it’s pretty simple to create tasks. If you have nothing, you can leverage the forge instead of reinventing the wheel. 3. Idempotency. PUPPET OVERVIEW48
  • 49. Why use puppet code? 1. I want to ensure the web server is installed. 2. I want to ensure the management tools are installed with it. 3. I don’t have to apply any further conditional logic. 4. If I want to remove it, switch ensure to absent. PUPPET OVERVIEW49
  • 50. Writing Puppet Code with YAML 1. Specify with the resources key vs script/task/command/etc… 2. Parameters go under parameters. 3. We’ll use puppet code for IIS instead of a bunch of PowerShell. PUPPET OVERVIEW50
  • 51. Exercise #7 Build a Web Server with a Bolt Plan
  • 52. Exercise #7: Build a Web Server with a Bolt Plan 1. Cd to your boltshop directory 2. Run bolt plan show boltshop::build_webserver 3. Run bolt plan run boltshop::build_webserver --targets www 4. When completed, visit <your_webserver> 5. Congrats, you’ve customized your webserver. PUPPET OVERVIEW52
  • 53. Exercise #7 Review 1. We just executed a YAML plan that included commands, file uploads and puppet code. 2. We were able to mix and match and specify targets. In this case, it’s the same target, but each step can target something different. 3. We just orchestrated several steps to create a webserver. The same model can be applied to a multi-server IIS/SQL setup, patching and rebooting systems and more! PUPPET OVERVIEW53
  • 54. Exercise #8 Adding to your Bolt Plan
  • 55. Lab Steps 1. Open plans/build_webserver.yaml 2. Add a “message of the day”, aka logon message / legal notice text. • Under the last IIS resource, add the motd class • Set your title and content parameters. • Save the file 3. Run the following: bolt plan run boltshop::build_webserver --targets www 4. You should see resources changed. Now RDP to your server. 5. If successful, after auth you should be prompted with the MOTD. PUPPET OVERVIEW55
  • 56. Exercise #8 Review 1. We can easily add puppet code to our modules by leveraging the Puppet Forge. 2. When we re-apply puppet code we see a report of resources changed. 3. Visit forge.puppet.com for more available modules and additional Windows content. PUPPET OVERVIEW56
  • 57. Exercise #9 One more thing…
  • 58. Bolt, now with 100% more PowerShell cmdlets! 1. Bolt now has PowerShell cmdlets! 2. The same Bolt command in PS cmdlet is: Invoke-BoltPlan -Name boltshop::build_webserver -Targets www 3. Run Get-Command *Bolt* for a list of cmdlets. PUPPET OVERVIEW58
  • 59. Lab #9 Review 1. Bolt now has PowerShell cmdlets! 2. Cmdlets can be used instead of the traditional Bolt commands. 3. This is an early feature, so watch this space and let us know if you plan on using it in the follow up survey. PUPPET OVERVIEW59
  • 61. What did I learn today? - What is Bolt. - How to run commands and scripts through Bolt. - How to build and execute a task for scaling scripts and commands and distributing amongst teams with diverse skill sets. - How to build and execute a YAML plan to build step-based orchestration to stand up a simple IIS webserver. - How to use puppet modules within a plan. - How to use PowerShell cmdlets to execute a command. PUPPET OVERVIEW61
  • 62. What’s Next? - Fill out the follow-up survey! - Join the Puppet Community slack! (especially the #bolt and #windows channels) https://slack.puppet.com - Attend our virtual Puppet Camp Central on 9/24. Includes talks about Bolt on Windows! https://info.puppet.com/09-24-Puppet-Camp-America-Central.html PUPPET OVERVIEW62
  • 64. Get in Touch ● Matt Stone: matthew.stone@puppet.com ● John Laffey: john.laffey@puppet.com ● Dan Shauver: shauver@puppet.com ● Rajesh Radhakrishnan: rajesh.radhakrishnan@puppet.com ● Paul Reed: paul.reed@puppet.com 64