This talk is an exploration of how to build Chef Server 12 clusters with Chef Provisioning, including premium features like Chef Reporting and Chef Analytics. I will cover several new capabilities and tools in the Chef ecosystem that makes it easier than ever before to build and manage scalable Chef Server clusters.
https://youtu.be/HUQA1Ikm5Iw
Presented at All Things Open, Raleigh NC, October 2014. Why do people love Ansible for automation? Good question! We walked through several Ansible use cases.
Ansible: How to Get More Sleep and Require Less CoffeeSarah Z
Why you need automation, configuration management and remote execution in your life. An intro to Ansible and how it can make your life in Ops infinitely easier.
(Click 2nd slide for video) Deploy PHP apps faster in 2017. This talk focuses on how PHP developers can use simple Ansible scripts to rapidly configure new dev and production servers from scratch, and deploy their apps. No more "snowflake servers"!
This is a general introduction to DevOps essentials and Ansible, with a few extras for PHP developers, including some best practice tips and overview of two major Ansible-based PHP projects, Drupal-VM and Trellis (modern WordPress setup).
This Presentation is an introducing to the IT automation environment, starting from a sys admin point of view.
The purpose of these tools is to help in troubleshooting and handling an heterogeneous it environment to ensure availability and reliability.
DevOpsDays Austin 2016 talk. Compliance and security are the next steps after Infrastructure as Code and Test-Driven Infrastructure in expanding your DevOps workflow. Chef's open-source InSpec and audit cookbooks provide an accessible pattern for building compliance into your continuous delivery pipelines.
A revamped version of the Ansible intro talk from February 2015, brought up-to-date for the January Ansible meetup in Berlin.
Join our group: https://www.meetup.com/Ansible-Berlin
Presented at All Things Open, Raleigh NC, October 2014. Why do people love Ansible for automation? Good question! We walked through several Ansible use cases.
Ansible: How to Get More Sleep and Require Less CoffeeSarah Z
Why you need automation, configuration management and remote execution in your life. An intro to Ansible and how it can make your life in Ops infinitely easier.
(Click 2nd slide for video) Deploy PHP apps faster in 2017. This talk focuses on how PHP developers can use simple Ansible scripts to rapidly configure new dev and production servers from scratch, and deploy their apps. No more "snowflake servers"!
This is a general introduction to DevOps essentials and Ansible, with a few extras for PHP developers, including some best practice tips and overview of two major Ansible-based PHP projects, Drupal-VM and Trellis (modern WordPress setup).
This Presentation is an introducing to the IT automation environment, starting from a sys admin point of view.
The purpose of these tools is to help in troubleshooting and handling an heterogeneous it environment to ensure availability and reliability.
DevOpsDays Austin 2016 talk. Compliance and security are the next steps after Infrastructure as Code and Test-Driven Infrastructure in expanding your DevOps workflow. Chef's open-source InSpec and audit cookbooks provide an accessible pattern for building compliance into your continuous delivery pipelines.
A revamped version of the Ansible intro talk from February 2015, brought up-to-date for the January Ansible meetup in Berlin.
Join our group: https://www.meetup.com/Ansible-Berlin
Spot Trading - A case study in continuous delivery for mission critical finan...SaltStack
This is a presentation given by Jeremy Alons, Spot Trading, at the DevOps Summit Chicago in August 2014. Jeremy shares how Spot Trading does automated deployments for mission-critical financial services with a case study in continuous delivery.
SaltConf 2014 keynote - Thomas Jackson, LinkedIn
Safety with Power tools
As infrastructure scales, simple tasks become increasingly difficult. For large infrastructures to be manageable, we use automation. But automation, like any power tool, comes with its own set of risks and challenges. Automation should be handled like production code, and great care should be exercised with power tools. This talk will cover how SaltStack is used at LinkedIn and offer tips and tricks for automating management with SaltStack at massive scale including a look at LinkedIn-inspired Salt features such as blacklist and pre-req states. It will also cover Salt master and minion instrumentation and a compilation of how not to use Salt.
Presentation of my TechTalk at eSapce (Every Thursday one of the departments make a session about something recently begun to use or a new technology, this was my session from SysOps team.) This is an introduction to Ansible, and how to get started with it ... and since then we moved to Ansible :-)
Ansible is a great tool for many purposes like: configuration management, contentious deployment, and multi-tier orchestration ... and more!
- http://tech.aabouzaid.com/
- http://espace.com.eg/
- http://ansible.com/
From Ansible's website: "Ansible is a radically simple IT automation engine that automates cloud provisioning, configuration management, application deployment, intra-service orchestration, and many other IT needs."
This introduction is based on ansible official docs, capturing most important information to make it easy to understand Ansible main concepts.
Local Dev on Virtual Machines - Vagrant, VirtualBox and AnsibleJeff Geerling
Developing web applications and websites locally can be troublesome if you use pre-built server packages like WAMP or MAMP, or an install tool to get Java or Ruby on your computer. Develop using modern best practices by using Vagrant, VirtualBox and Ansible to manage your development environments!
Monitor-Driven Development Using AnsibleItamar Hassin
Discusses an XP approach to writing Ansible scripts: Start with a failing test and write code around it to make it pass. Write monitoring code, let it drive your Ansible code to have a functioning server. I use ServerSpec and Cucumber as the monitoring code. Broader subject is that Ansible code should be treated as regular application code - use TDD, SCM, CI and pairing to create a single delivery team consisting of devs and sysadmins as a delivery team.
Slides from Ansible Oxford meetup on 29th July 2015: Cows and Containers. How does Ansible play with Docker? How can we use Ansible to build, ship and run Docker containers?
Configuration Management - Finding the tool to fit your needsSaltStack
This presentation was originally given by Joseph Hall, SaltStack senior engineer, at the combined Montreal Python and DevOps Montreal meet up on April 14, 2014. Here is the talk abstract: In ye olde days of web, a company might manage a handful of servers, each manually and frequently tuned and re-tuned to the company's needs. Those days are gone. Server farms now dominate, and it is no longer reasonable to manage individual servers by hand. Various configuration management tools have stepped in to help the modern engineer, but which to choose? It is not an easy question, and canned pitches from sales people are unlikely to take into account all of your variables. This talk will attempt to discuss The Big Four objectively, and from what angles they approach the task at hand.
A presentation delivered by Arctiq, onsite in Toronto, on Mar 1, 2017. The presentation discusses Ansible as an automation tool for Linux, Windows, and network devices. Reach out if you would like more information www.arctiq.ca
Title: Ansible, best practices.
Ansible has taken a prominent place in the configmanagement world. By now many people involved in DevOps have taken a look at it, or done a first project with it. Now it is time to step back and look at quality and craftmanship. Bas Meijer, Ansible ambassador, will talk about Ansible best practices, and will show tips, tricks and examples based on several projects.
About the speaker
Bas is a systems engineer and software developer and wasted decades on latenight hacking. He is currently helping out 2 enterprises with continuous delivery and devops.
Spot Trading - A case study in continuous delivery for mission critical finan...SaltStack
This is a presentation given by Jeremy Alons, Spot Trading, at the DevOps Summit Chicago in August 2014. Jeremy shares how Spot Trading does automated deployments for mission-critical financial services with a case study in continuous delivery.
SaltConf 2014 keynote - Thomas Jackson, LinkedIn
Safety with Power tools
As infrastructure scales, simple tasks become increasingly difficult. For large infrastructures to be manageable, we use automation. But automation, like any power tool, comes with its own set of risks and challenges. Automation should be handled like production code, and great care should be exercised with power tools. This talk will cover how SaltStack is used at LinkedIn and offer tips and tricks for automating management with SaltStack at massive scale including a look at LinkedIn-inspired Salt features such as blacklist and pre-req states. It will also cover Salt master and minion instrumentation and a compilation of how not to use Salt.
Presentation of my TechTalk at eSapce (Every Thursday one of the departments make a session about something recently begun to use or a new technology, this was my session from SysOps team.) This is an introduction to Ansible, and how to get started with it ... and since then we moved to Ansible :-)
Ansible is a great tool for many purposes like: configuration management, contentious deployment, and multi-tier orchestration ... and more!
- http://tech.aabouzaid.com/
- http://espace.com.eg/
- http://ansible.com/
From Ansible's website: "Ansible is a radically simple IT automation engine that automates cloud provisioning, configuration management, application deployment, intra-service orchestration, and many other IT needs."
This introduction is based on ansible official docs, capturing most important information to make it easy to understand Ansible main concepts.
Local Dev on Virtual Machines - Vagrant, VirtualBox and AnsibleJeff Geerling
Developing web applications and websites locally can be troublesome if you use pre-built server packages like WAMP or MAMP, or an install tool to get Java or Ruby on your computer. Develop using modern best practices by using Vagrant, VirtualBox and Ansible to manage your development environments!
Monitor-Driven Development Using AnsibleItamar Hassin
Discusses an XP approach to writing Ansible scripts: Start with a failing test and write code around it to make it pass. Write monitoring code, let it drive your Ansible code to have a functioning server. I use ServerSpec and Cucumber as the monitoring code. Broader subject is that Ansible code should be treated as regular application code - use TDD, SCM, CI and pairing to create a single delivery team consisting of devs and sysadmins as a delivery team.
Slides from Ansible Oxford meetup on 29th July 2015: Cows and Containers. How does Ansible play with Docker? How can we use Ansible to build, ship and run Docker containers?
Configuration Management - Finding the tool to fit your needsSaltStack
This presentation was originally given by Joseph Hall, SaltStack senior engineer, at the combined Montreal Python and DevOps Montreal meet up on April 14, 2014. Here is the talk abstract: In ye olde days of web, a company might manage a handful of servers, each manually and frequently tuned and re-tuned to the company's needs. Those days are gone. Server farms now dominate, and it is no longer reasonable to manage individual servers by hand. Various configuration management tools have stepped in to help the modern engineer, but which to choose? It is not an easy question, and canned pitches from sales people are unlikely to take into account all of your variables. This talk will attempt to discuss The Big Four objectively, and from what angles they approach the task at hand.
A presentation delivered by Arctiq, onsite in Toronto, on Mar 1, 2017. The presentation discusses Ansible as an automation tool for Linux, Windows, and network devices. Reach out if you would like more information www.arctiq.ca
Title: Ansible, best practices.
Ansible has taken a prominent place in the configmanagement world. By now many people involved in DevOps have taken a look at it, or done a first project with it. Now it is time to step back and look at quality and craftmanship. Bas Meijer, Ansible ambassador, will talk about Ansible best practices, and will show tips, tricks and examples based on several projects.
About the speaker
Bas is a systems engineer and software developer and wasted decades on latenight hacking. He is currently helping out 2 enterprises with continuous delivery and devops.
Node setup, resource, and recipes - Fundamentals Webinar Series Part 2Chef
Part 2 of a 6 part series introducing you to the fundamentals of Chef.
This session includes:
* Node Setup
* Chef Resources and Recipes
After viewing this webinar you will be able to:
- Login to the node in your Chef Training Lab
- Install Chef nodes using "knife bootstrap"
- Explain how knife bootstrap configures a node to use the - Organization created in the previous section
- Explain the basic configuration needed to run chef-client
- Describe in detail what a cookbook is
- Create a new cookbook
- Explain what a recipe is
- Describe how to use the package, service, and template - resources
- Upload a cookbook to the Chef Server
- Explain what a run list is, and how to set it for a node - via knife
- Explain the output of a chef-client run
Video of this webinar can be found at the following URL
https://www.youtube.com/watch?v=S5lHUpzoCYo&list=PL11cZfNdwNyPnZA9D1MbVqldGuOWqbumZ
EC2 AMI Factory with Chef, Berkshelf, and PackerGeorge Miranda
Presentation accompanying a Live Demo at the AWS Pop-Up Loft in San Francisco on using Chef + Berks + Packer to create an AWS EC2 AMI Factory.
Demo Repo available here -- https://github.com/gmiranda23/chef-ami-factory
Presentation from the Spring 2011 OpenStack Design Summit. Blueprint URL is https://blueprints.launchpad.net/openstack-devel/+spec/openstack-deployment-cookbooks
NGINX Can Do That? Test Drive Your Config File!Jeff Anderson
I have had countless conversations with developers, projects managers, and even executives that end up being about nginx and what it can do. Usually, the phrase "nginx can do that?" comes up. More often than not, the answer is YES. What happens though, is the nginx config file can get unwieldy. How can we assert that it will behave how it needs to over time? How can we avoid introducing inadvertent regressions?
AWS OpsWorks Under the Hood (DMG304) | AWS re:Invent 2013Amazon Web Services
AWS OpsWorks lets you model your application with layers that define the building blocks of your application: load balancers, application servers, databases, etc. But did you know that you can also extend OpsWorks layers or build your own custom layers? Whether you need to perform a specific task or install a new software package, OpsWorks gives you the tools to install and configure your instances consistently, and evolve them in an automated and predictable fashion through your application’s lifecycle. We'll dive into the development process including how to use attributes, recipes, and lifecycle events; show how to develop your environment locally; and provide troubleshooting steps that reduce your development time.
This was the supporting presentation from our DevOps Virtual Office Hours session.
We asked customers to bring their questions – technical or otherwise – that they would like answered about DevOps on AWS.
Check out the recording of the session on the AWS Webinars YouTube Channel here: http://youtu.be/pw9hlPqtHAA
A talk I gave at the recent Advanced AWS Meeup - this is a detailed guide to how I installed and set up Spinnaker to work with our infrastructure at Stitch Fix. I go over the various problems I ran into and how I solved them. I hope this can be useful for others setting up, or interested in setting up Spinnaker for their purposes.
**Big thanks to Armory for recording the talks! Video for this talk can be found here: https://youtu.be/ywzPblFpIE0 (I'm the second speaker)**
Habitat-managed Chef with Policyfiles: Learn how to leverage the power of Habitat, chef-client and Policyfiles to produce an immutable application containing all of your chef cookbooks that can be locally tested and provides a consistent and guaranteed picture of desired configuration state across all target environments.
This talk is an in-depth look at all we, at Chef, have learned and what we love and what could be better about Configuration Management, Continuous Delivery and DevOps. We'll explore the pain points that still exist, especially as teams try to bring containers and microservices into production. We’ll then explore how to ensure the apps you build, deploy, and manage behave consistently in any runtime — metal, VMs, containers, and PaaS. You'll spend less time on the environment and more time building features.
Presented by Simon Fisher at DevOps World London November 2016
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Chef Provisioning a Chef Server Cluster - ChefConf 2015
1.
2.
3. Chef Provisioning a Chef Server Cluster
Joshua Timberman
joshua@chef.io
@jtimberman
https://www.flickr.com/photos/jamidwyer/2844765976
4. Before we begin, provisioning a Chef Server:
• Run chef-client...
• Which talks to a different Chef Server...
• Which downloads a recipe that...
• Creates machines that run chef-client...
• That install Chef Server packages...
• Which then run chef-server-ctl reconfigure...
• Which runs chef-solo to configure the Chef Server
10. Bootstrap a Chef Server with Chef Solo
sudo
chef-‐solo
-‐c
/etc/chef/solo.rb
-‐j
~/chef.json
-‐r
http://s3.amazonaws.com/chef-‐solo/bootstrap-‐latest.tar.gz
11. As it turns out...
This is a pretty good idea!
https://www.flickr.com/photos/nao904/6084536885
12. chef-server-ctl reconfigure
frontend-‐chef-‐server%
sudo
chef-‐server-‐ctl
reconfigure
Starting
Chef
Client,
version
11.18.0
Compiling
Cookbooks...
Recipe:
private-‐chef::default
....
Recipe:
private-‐chef::default
*
file[/etc/opscode/chef-‐server-‐running.json]
action
create
(up
to
date)
Running
handlers:
Running
handlers
complete
Chef
Client
finished,
7/228
resources
updated
in
7.282379304
seconds
opscode
Reconfigured!
13. omnibus-ctl reconfigure...
def
reconfigure(exit_on_success=true)
status
=
run_command(
"chef-‐solo
-‐c
#{base_path}/embedded/cookbooks/solo.rb
-‐j
#{base_path}/embedded/cookbooks/dna.json"
)
if
status.success?
log
"#{display_name}
Reconfigured!"
exit!
0
if
exit_on_success
else
exit!
1
end
end
14. Hosted Chef... is different (and that's the problem)
• Built using Chef cookbooks
• (yay! ...but)
• Many forked community cookbooks
• (before berkshelf/librarian)
• One cookbook per component/service
• (postgresql, erchef, authz, rabbitmq, solr, etc)
• Growth over time
• (over 10k commits)
• Not the same as what customers use
• (chef-server-ctl reconfigure vs "knife ssh and chef-client")
16. Chef Server 12
"There is One Chef Server,
and it is Open Source"
- Adam Jacob
https://www.chef.io/blog/2014/09/08/there-is-one-chef-server-and-it-is-open-source/
17. You've probably heard this by now...
• Multi-tenancy - required feature for Hosted Chef
• Chef Push Jobs is opened now
• Remove tension between Open Source Chef and
Enterprise Chef codebase
• Remove tension between Hosted Enterprise Chef
and Enterprise Chef code, too
18. Current state: Installing
Chef Server 12
Or, "this is how you do it manually per the
documentation at docs.chef.io"
http://docs.chef.io/server/install_server.html
19. Installing Chef Server 12
sudo
dpkg
-‐i
chef-‐server-‐core*.deb
sudo
vi
/etc/opscode/chef-‐server.rb
sudo
chef-‐server-‐ctl
reconfigure
20. Or there's a cookbook for that...
curl
-‐L
https://www.chef.io/chef/install.sh
|
sudo
bash
sudo
mkdir
-‐p
/var/chef/cache
/var/chef/cookbooks
wget
-‐qO-‐
https://supermarket.chef.io/cookbooks/chef-‐server/
download
|
sudo
tar
xvzC
/var/chef/cookbooks
wget
-‐qO-‐
https://supermarket.chef.io/cookbooks/chef-‐server-‐
ingredient/download
|
sudo
tar
xvzC
/var/chef/cookbooks
wget
-‐qO-‐
https://supermarket.chef.io/cookbooks/packagecloud/
download
|
sudo
tar
xvzC
/var/chef/cookbooks
sudo
chef-‐solo
-‐o
'recipe[chef-‐server::default]'
21. But if you want a cluster...
##
On
the
first
node
("bootstrap
backend")
sudo
dpkg
-‐i
chef-‐server-‐core*.deb
sudo
vi
/etc/opscode/chef-‐server.rb
##
manage
some
server
blocks
for
the
cluster
per
docs
sudo
chef-‐server-‐ctl
reconfigure
sudo
rsync
-‐avz
/etc/opscode
root@frontend.example.com:/etc
##
On
the
second
node
("frontend")
sudo
dpkg
-‐i
chef-‐server-‐core*.deb
sudo
chef-‐server-‐ctl
reconfigure
23. Wait. What was that?
##
On
the
first
node
("bootstrap
backend")
sudo
dpkg
-‐i
chef-‐server-‐core*.deb
sudo
vi
/etc/opscode/chef-‐server.rb
##
manage
some
server
blocks
according
to
docs.chef.io...
sudo
chef-‐server-‐ctl
reconfigure
sudo
rsync
-‐avz
/etc/opscode
root@frontend.example.com:/etc
##
On
the
second
node
("frontend")
sudo
dpkg
-‐i
chef-‐server-‐core*.deb
sudo
chef-‐server-‐ctl
reconfigure
29. What is Chef Provisioning?
• Previously known as "Chef Metal"
• Manage machines as Chef resources
• Various provisioners available
• several come with ChefDK, e.g., aws, azure
• Available as rubygems
• Makes it easy to reason about standing up a cluster
30. Chef Provisioning has `machine` resources
machine
'database'
do
recipe
'example-‐postgresql::server'
end
machine
'cache'
do
recipe
'example-‐memcached'
end
machine
'www1'
do
recipe
'example-‐nginx'
end
machine
'www2'
do
recipe
'example-‐nginx
end
31. Chef Provisioning extends Chef's Recipe DSL
#
AWS
EC2...
with_driver('aws::us-‐west-‐2')
with_machine_options(
:bootstrap_options
=>
{
:key_name
=>
'hc-‐metal-‐provisioner',
:image_id
=>
'ami-‐b99ed989',
:instance_type
=>
'm3.medium'
}
)
#
Microsoft
Azure...
with_driver('azure')
with_machine_options(
:image_id
=>
'Ubuntu-‐14_04_1-‐LTS-‐amd64-‐server-‐20140927-‐en-‐us-‐30GB',
:bootstrap_options
=>
{
:vm_size
=>
'Standard_D1',
:other_options
=>
'Slides
are
only
so
big...'
}
)
32.
33. Chef Provisioning a Chef Server Cluster
machine
'backend'
do
recipe
'chef-‐server-‐cluster::bootstrap-‐backend'
end
machine
'frontend'
do
recipe
'chef-‐server-‐cluster::frontend'
end
machine
'analytics'
do
recipe
'chef-‐server-‐cluster::analytics'
end
44. Checkpoint!
• ./.chef/config.rb for knife and chef-client
• Uploaded cookbooks (using Policyfiles*)
• Uploaded data bags
• AWS authentication credentials in ~/.aws/config
• SSH private key in ~/.ssh/keyname
* Due to time constraints, Policyfile discussion is not appearing in this talk
45. Provisioner node run list
%
knife
node
show
chefconf-‐provisioner
Node
Name:
chefconf-‐provisioner
Environment:
_default
FQDN:
IP:
10.13.37.102
Run
List:
recipe[chef-‐server-‐cluster::cluster-‐provision]
Roles:
Recipes:
chef-‐server-‐cluster::cluster-‐provision,
chef-‐server-‐
cluster::setup-‐provisioner,
chef-‐server-‐cluster::setup-‐ssh-‐keys
Platform:
mac_os_x
10.10.2
Tags:
55. Merge the configuration
#
Merge
the
attributes
with
the
data
bag
values,
and
the
search
#
results
for
other
servers.
node.default['chef-‐server-‐cluster'].merge!(chef_server_config)
56. Configuration template
template '/etc/opscode/chef-server.rb' do
source 'chef-server.rb.erb'
variables(:chef_server_config => node['chef-server-cluster'],
:chef_servers => chef_servers)
notifies :reconfigure, 'chef_server_ingredient[chef-server-core]'
end
61. Rendered: analytics
topology
'standalone'
analytics_fqdn
'analytics.jtimberman.name'
Analytics config for the Chef Server is in:
/etc/opscode/analytics/actions-source.json
63. Configuration template
template '/etc/opscode/chef-server.rb' do
source 'chef-server.rb.erb'
variables(:chef_server_config => node['chef-server-cluster'],
:chef_servers => chef_servers)
notifies :reconfigure, 'chef_server_ingredient[chef-server-core]'
end
What is chef_server_ingredient??
64. chef-server-ingredient cookbook
• What is an ingredient?
• Clever, what's an addon?
• What does the cookbook do?
• How does the resource work?
• Primitive resource for installing/managing Chef Server
add-ons
65. This automates these manual steps
%
sudo
chef-‐server-‐ctl
install
opscode-‐manage
%
sudo
opscode-‐manage-‐ctl
reconfigure
66. chef_server_ingredient resources...
chef_server_ingredient
'chef-‐server-‐core'
do
notifies
:reconfigure,
'chef_server_ingredient[chef-‐server-‐core]'
end
chef_server_ingredient
'opscode-‐reporting'
do
notifies
:reconfigure,
'chef_server_ingredient[opscode-‐reporting]'
end
chef_server_ingredient
'opscode-‐manage'
do
notifies
:reconfigure,
'chef_server_ingredient[opscode-‐manage]'
end
chef_server_ingredient
'opscode-‐analytics'
do
notifies
:reconfigure,
'chef_server_ingredient[opscode-‐analytics]'
end
69. chef_server_ingredient
action
:install
do
packagecloud_repo
'chef/stable'
do
type
value_for_platform_family(:debian
=>
'deb',
:rhel
=>
'rpm')
end
package
new_resource.package_name
do
options
new_resource.options
version
new_resource.version
end
end
action
:reconfigure
do
ctl_cmd
=
ctl_command
execute
"#{new_resource.package_name}-‐reconfigure"
do
command
"#{ctl_cmd}
reconfigure"
end
end
70. Omnibus package pattern is consistent:
• Install the package
• Write the configuration*
• Run the reconfigure command
• Configuration can happen first - and does with the
Chef Provisioning recipes
* or rsync it from a node, RIGHT?
71. Remember this?
sudo
rsync
-‐avz
/etc/opscode
root@frontend.example.com:/etc
Hint: No one wants to remember this
72. Hello, machine_file!
%w{
actions-‐source.json
webui_priv.pem
}.each
do
|analytics_file|
machine_file
"/etc/opscode-‐analytics/#{analytics_file}"
do
local_path
"/tmp/stash/#{analytics_file}"
machine
'bootstrap-‐backend'
action
:download
end
end
%w{
pivotal.pem
webui_pub.pem
}.each
do
|opscode_file|
machine_file
"/etc/opscode/#{opscode_file}"
do
local_path
"/tmp/stash/#{opscode_file}"
machine
'bootstrap-‐backend'
action
:download
end
end
73. And the 'files' property of machine resource
machine
'frontend'
do
recipe
'chef-‐server-‐cluster::frontend'
action
:converge
converge
true
files('/etc/opscode/webui_priv.pem'
=>
'/tmp/stash/webui_priv.pem',
'/etc/opscode/webui_pub.pem'
=>
'/tmp/stash/webui_pub.pem',
'/etc/opscode/pivotal.pem'
=>
'/tmp/stash/pivotal.pem')
end
machine
'analytics'
do
recipe
'chef-‐server-‐cluster::analytics'
action
:converge
converge
true
files('/etc/opscode-‐analytics/actions-‐source.json'
=>
'/tmp/stash/actions-‐source.json',
'/etc/opscode-‐analytics/webui_priv.pem'
=>
'/tmp/stash/webui_priv.pem')
end
74. Sure, we could rsync in the recipe...
• But then we have to setup SSH keys between the
nodes
• And all files in /etc/opscode, including ones put there
by someone that shouldn't be there...
75. chef-client on the provisioner
%
CHEF_NODE=chefconf-‐provisioner
chef-‐client
-‐c
.chef/config.rb
Starting
Chef
Client,
version
12.0.3
[2015-‐02-‐18T14:28:12-‐07:00]
WARN:
Using
experimental
Policyfile
feature
resolving
cookbooks
for
run
list:
["chef-‐server-‐cluster::cluster-‐
provision@0.0.9
(e1e803c)"]
Synchronizing
Cookbooks:
-‐
chef-‐server-‐ingredient
-‐
chef-‐server-‐cluster
-‐
apt
-‐
packagecloud
-‐
chef-‐vault
Compiling
Cookbooks...
...
SNIP
converging
3
machines
...
Chef
Client
finished,
11/16
resources
updated
in
1248.519725
seconds
76. machine resources converging
*
machine[bootstrap-‐backend]
action
converge
-‐
Create
bootstrap-‐backend
with
AMI
ami-‐b99ed989
in
us-‐west-‐2
-‐
create
node
bootstrap-‐backend
at
https://api.opscode.com/organizations/jtimberman-‐chefconf
-‐
update
run_list
from
[]
to
["recipe[chef-‐server-‐cluster::bootstrap]"]
-‐
waiting
for
bootstrap-‐backend
(i-‐553a519c
on
aws::us-‐west-‐2)
to
be
connectable
-‐
bootstrap-‐backend
is
now
connectable
-‐
generate
private
key
(2048
bits)
-‐
create
directory
/etc/chef
on
bootstrap-‐backend
-‐
write
file
/etc/chef/client.pem
on
bootstrap-‐backend
-‐
create
client
bootstrap-‐backend
at
clients
-‐
add
public_key
=
"-‐-‐-‐-‐-‐BEGIN
PUBLIC
KEY-‐-‐-‐-‐-‐n...SNIP...-‐-‐-‐-‐-‐END
PUBLIC
KEY-‐-‐-‐-‐-‐n"
-‐
Add
bootstrap-‐backend
to
client
read
ACLs
-‐
Add
bootstrap-‐backend
to
client
update
ACLs
-‐
create
directory
/etc/chef/ohai/hints
on
bootstrap-‐backend
-‐
write
file
/etc/chef/ohai/hints/ec2.json
on
bootstrap-‐backend
-‐
write
file
/etc/chef/client.rb
on
bootstrap-‐backend
-‐
write
file
/tmp/chef-‐install.sh
on
bootstrap-‐backend
-‐
run
'bash
-‐c
'
bash
/tmp/chef-‐install.sh''
on
bootstrap-‐backend
[bootstrap-‐backend]
Starting
Chef
Client,
version
12.1.1
Chef
Client
finished,
25/32
resources
updated
in
453.570204517
seconds
-‐
run
'chef-‐client
-‐l
auto'
on
bootstrap-‐backend
77. Create and connect to EC2 instance
*
machine[bootstrap-‐backend]
action
converge
-‐
Create
bootstrap-‐backend
with
AMI
ami-‐b99ed989
in
us-‐west-‐2
-‐
create
node
bootstrap-‐backend
at
https://api.opscode.com/
organizations/jtimberman-‐chefconf
-‐
update
run_list
from
[]
to
["recipe[chef-‐server-‐
cluster::bootstrap]"]
-‐
waiting
for
bootstrap-‐backend
(i-‐553a519c
on
aws::us-‐west-‐2)
to
be
connectable
-‐
bootstrap-‐backend
is
now
connectable
78. Create the API client and give permission
*
machine[bootstrap-‐backend]
action
converge
-‐
generate
private
key
(2048
bits)
-‐
create
directory
/etc/chef
on
bootstrap-‐backend
-‐
write
file
/etc/chef/client.pem
on
bootstrap-‐backend
-‐
create
client
bootstrap-‐backend
at
clients
-‐
add
public_key
=
"RSA
Public
key
content"
-‐
Add
bootstrap-‐backend
to
client
read
ACLs
-‐
Add
bootstrap-‐backend
to
client
update
ACLs
79. Bootstrap like you may have seen...
*
machine[bootstrap-‐backend]
action
converge
-‐
create
directory
/etc/chef/ohai/hints
on
bootstrap-‐backend
-‐
write
file
/etc/chef/ohai/hints/ec2.json
on
bootstrap-‐backend
-‐
write
file
/etc/chef/client.rb
on
bootstrap-‐backend
-‐
write
file
/tmp/chef-‐install.sh
on
bootstrap-‐backend
-‐
run
'bash
-‐c
'
bash
/tmp/chef-‐install.sh''
on
bootstrap-‐
backend
[bootstrap-‐backend]
Starting
Chef
Client,
version
12.1.1
Chef
Client
finished,
25/32
resources
updated
in
453.57
seconds
-‐
run
'chef-‐client
-‐l
auto'
on
bootstrap-‐backend
80. machine files
*
machine_file[/etc/opscode-‐analytics/actions-‐source.json]
action
download
-‐
download
file
/etc/opscode-‐analytics/actions-‐source.json
on
bootstrap-‐backend
to
/tmp/stash/actions-‐source.json
*
machine_file[/etc/opscode-‐analytics/webui_priv.pem]
action
download
-‐
download
file
/etc/opscode-‐analytics/webui_priv.pem
on
bootstrap-‐backend
to
/tmp/stash/webui_priv.pem
*
machine_file[/etc/opscode/pivotal.pem]
action
download
-‐
download
file
/etc/opscode/pivotal.pem
on
bootstrap-‐backend
to
/tmp/stash/pivotal.pem
*
machine_file[/etc/opscode/webui_pub.pem]
action
download
-‐
download
file
/etc/opscode/webui_pub.pem
on
bootstrap-‐backend
to
/tmp/stash/webui_pub.pem
...SNIP
-‐
upload
file
/tmp/stash/webui_priv.pem
to
/etc/opscode/webui_priv.pem
on
frontend
-‐
upload
file
/tmp/stash/webui_pub.pem
to
/etc/opscode/webui_pub.pem
on
frontend
-‐
upload
file
/tmp/stash/pivotal.pem
to
/etc/opscode/pivotal.pem
on
frontend
82. Wrap-up and takeaways
• Chef Server 12 is totally what you want to use
• Using Chef to build Chef is awesome
• Chef Provisioning makes deploying to EC2 easy
• chef-server-cluster is a full working example
• chef-server-ingredient is a lower level primitive
• (and used by chef-server cookbook, too!)
• Build your own with chef-server-ingredient