SlideShare a Scribd company logo
1 of 21
Stacki and Chef at Pardot
David Peterson
Lead Systems Engineer
david.peterson@salesforce.com
About Me
I joined Salesforce in 2014 and am currently a Lead Systems Engineer based out of
Atlanta, GA. I help lead the infrastructure design and scaling of Salesforce’s
product offering, Pardot Marketing Automation.
Prior to Salesforce, I worked at Perfect Sense Digital where I was the Lead
Engineer in architecting and implementing HGTV and Travel Channel's new
website infrastructure in AWS. I also helped design and implement the
infrastructure for digital media sites such as Food Network, Univision, Coca-Cola,
Walmart, Lionsgate, BET, Snagfilms, National Geographic, and others.
Prior to PSD, I worked at ChannelAdvisor, an e-commerce SaaS company, where I
helped design and manage the infrastructure responsible for processing over $3
billion in GMV.
Agenda
▪ Why Stacki (I’m assuming version 3.2)
▪ Stacki global configuration for multiple DCs
▪ Stacki chef cart setup
▪ Specific Chef configurations and how we handle server
re-provisions
▪ Proper ordering with multiple carts
▪ Questions
Why Stacki
▪ Managing thousands of servers is easy (csv)
▪ HP and Dell raid controller support
▪ Easy out of the box provisioning but deep customization available
▪ Ability to re-provision without losing data
▪ Easy network/subnet configuration and host assignment
▪ YUM repo support
▪ Command line, command line, command line
▪ Support
Stacki Global Configurations
[root@stacki]# stack list attr
SCOPE ATTR VALUE SOURCE
--------- Confirm_Private_PureRootPassword a G
--------- HttpConf /etc/httpd/conf G
--------- HttpConfigDirExt /etc/httpd/conf.d G
--------- HttpRoot /var/www/html G
--------- Info_CertificateCountry US G
--------- Info_CertificateLocality Solana Beach G
--------- Info_CertificateOrganization StackIQ G
--------- Info_CertificateState California G
--------- Info_ClusterContact ---------------------------------------------------------------------------- G
--------- Info_ClusterLatlong N32.87 W117.22 G
--------- Info_ClusterName Stacki G
--------- Info_ClusterURL http://stackihost.local/ G
--------- Info_FQDN stackihost.local G
--------- Kickstart_BoxDir /export/stack G
--------- Kickstart_DistroDir /export/stack G
--------- Kickstart_Keyboard us G
--------- Kickstart_Lang en_US G
--------- Kickstart_Langsupport en_US G
(continued)...
Stacki Global Configurations
[root@stacki]# stack add attr attr=datacenter value=DC-EAST
[root@stacki]# stack add attr attr=chef_server value=https://chef-dc-east.xyz.com:443/organizations/companyX
[root@stacki]# stack list attr
SCOPE ATTR VALUE SOURCE
--------- chef_server https://chef-dc-east.xyz.com:443/organizations/companyX G
--------- datacenter DC-EAST G
Chef Stacki Cart
[root@stacki]# stack add cart chef
[root@stacki]# stack list cart
NAME BOXES
chef: -----
[root@stacki]# tree /export/stack/carts/chef/
├── graph
│ └── cart-chef.xml
├── nodes
│ └── cart-chef-backend.xml
└── RPMS
Chef Config
/export/stack/carts/chef/nodes/cart-chef-backend.xml
<?xml version="1.0" standalone="no"?>
<kickstart>
<description>
chef cart backend appliance extensions
</description>
<package>chef</package>
<!-- shell code for post RPM installation -->
<post>
mkdir -p /etc/chef /var/log/chef /var/run/chef
</post>
Chef Config
XML tag Overview
● <post>
○ This tag allows the admin to run scripts after the package installation is done. The
scripts can be in any interpreted language present on the installed system.
● <boot order=”post”>
○ This section is a collection of shell scripts that are run on first-boot after all services
and daemons have started. This is typically used to run scripts that interact with
system daemons, or to finish and clean-up the installation process.
Chef Config
/export/stack/carts/chef/nodes/cart-chef-backend.xml
<post cond="not 'proxyout' in hostname">
############# DC-EAST ##########
if [ "&datacenter;" == "DC-EAST" ]
then
<file name="/etc/chef/client.rb">
<![CDATA[
# Chef Client Config File
# Dynamically generated by Stacki
log_level :info
log_location STDOUT
chef_server_url "#CHEF_SERVER#"
validation_client_name "prod-validator"
validation_key "/etc/chef/validation.pem"
client_key "/etc/chef/client.pem"
ssl_verify_mode :verify_none
http_proxy 'http://proxyout.dc-east.local.com:3128'
https_proxy 'http://proxyout.dc-east.local.com:3128'
environment 'production'
node_name "#HOSTNAME#"
]]>
</file>
# Need to add the chef server and client hostname to the client.rb file
sed -i 's,#CHEF_SERVER#,&chef_server;,g' /etc/chef/client.rb
sed -i 's/#HOSTNAME#/&hostname;.&domainname;/g' /etc/chef/client.rb
fi
</post>
Chef Config
/export/stack/carts/chef/nodes/cart-chef-backend.xml
<post cond="'proxyout' in hostname">
<file name="/etc/chef/client.rb">
<![CDATA[
# Chef Client Config File
# Dynamically generated by Stacki
log_level :info
log_location STDOUT
chef_server_url "#CHEF_SERVER#"
validation_client_name "prod-validator"
validation_key "/etc/chef/validation.pem"
client_key "/etc/chef/client.pem"
ssl_verify_mode :verify_none
environment 'production'
# Using default node name (fqdn)
node_name "#HOSTNAME#"
]]>
</file>
# Need to add the chef server and client hostname to the client.rb file
sed -i 's,#CHEF_SERVER#,&chef_server;,g' /etc/chef/client.rb
sed -i 's/#HOSTNAME#/&hostname;.&domainname;/g' /etc/chef/client.rb
</post>
Chef Config
/export/stack/carts/chef/nodes/cart-chef-backend.xml
<post>
if [ "&datacenter;" == "DC-EAST" ]
then
<file name="/etc/chef/first-boot.json">
{
"run_list": [
"role[base]",
"role[dc_east]"
]
}
</file>
<file name="/etc/chef/validation.pem" perms="0644">
-----BEGIN RSA PRIVATE KEY-----
asdfasdfasdfasdfasdfasdfasdfasdfasdfsadfasdfasdfasdfsadfasdfasdfasdfsadfsadfasdf
adsasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasfasdfasdfasdfasdfa
-----END RSA PRIVATE KEY-----
</file>
<file name="/etc/chef/encrypted_data_bag_secret" perms="0400">
asdfasdfasdfasdfasfdasfdasdfasfdasdfasfasdfasfdasdfasdfsafasfdasfdsadfasdfasdfasdf
adsfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasfdasdfasdfasdfasdfasdfa
</file>
fi
</post>
######### DC-EAST END ########
Chef Config: Server Provisioning
● Two attributes attached to a host control what happens to existing data on that host when it is configured
to be provisioned by setting the action attribute: “stack set host boot host1.local.com action=install”
○ nukecontroller
■ If set to “False”: Leaves the existing RAID controller setup as it is
■ If set to “True”: Removes all existing RAID groups and LUNS
○ nukedisks
■ If set to “False”: Only removes everything in the “/” and “/var/log” partition
■ If set to “True”: Will remove all partitions from all disks
[root@stacki]# stack list host attr host1.local.com |egrep 'nuke|HOST'
HOST SCOPE ATTR VALUE SOURCE
host1.local.com: --------- nukecontroller false H
host1.local.com: --------- nukedisks false H
Chef Config: Server Provisioning
/export/stack/carts/chef/nodes/cart-chef-backend.xml
# If we are nuking disks we are assuming this is a new server
# or the chef client/node has been deleted out of the chef server if it existed.
<boot order="post" cond="nukedisks">
# Run chef-client for the first time
/usr/bin/chef-client -j /etc/chef/first-boot.json -L /var/log/chef/chef.log
# Make a backup of the chef private key in case we need to re-provision/upgrade a server
mkdir -p /data/chef-backup
chown root:root /data/chef-backup
chmod 700 /data/chef-backup
cp -a /etc/chef/* /data/chef-backup
</boot>
[root@stacki]# stack set host attr host1.local.com attr=nukedisks value=true
[root@stacki]# stack list host attr host1.local.com |egrep 'nukedisks|HOST'
HOST SCOPE ATTR VALUE SOURCE
host1.local.com: --------- nukedisks true H
Chef Config: Server Provisioning
/export/stack/carts/chef/nodes/cart-chef-backend.xml
# If we are not nuking the disks we are assuming we are re-loading or upgrading
# the OS and need to keep the client.pem chef key so chef-client can run properly
<boot order="post" cond="not nukedisks">
cp /data/chef-backup/client.pem /etc/chef/
/usr/bin/chef-client -L /var/log/chef/chef.log
</boot>
</kickstart>
Chef Cart Config
● Put your chef RPM file in /export/stack/carts/chef/RPMS/ directory
● Assign your chef cart to a box
● Compile a cart when adding/removing RPMs to update the repo
[root@stacki]# stack enable cart chef box=default
[root@stacki]# stack compile cart chef
[root@stacki]# stack list cart chef
NAME BOXES
chef: default
Chef Cart Config
PRO TIP: When making xml config changes, always verify them by running the “stack list host
profile” command which does syntax checking and gives you the full generated kickstart file
[root@stacki]# stack list host profile host1.local.com|less
<?xml version="1.0" standalone="no"?>
<profile lang="kickstart">
<section name="kickstart">
<![CDATA[
#
# Node Traversal Order
#
# /export/stack/pallets/stacki/3.2/redhat/x86_64/nodes/partitions-save.xml (stacki)
# /export/stack/pallets/stacki/3.2/redhat/x86_64/nodes/pre-ssh-key.xml (stacki)
# /export/stack/pallets/stacki/3.2/redhat/x86_64/nodes/storage-controller-client.xml (stacki)
# /export/stack/pallets/stacki/3.2/redhat/x86_64/nodes/nukedisks.xml (stacki)
# /export/stack/pallets/stacki/3.2/redhat/x86_64/nodes/partition.xml (stacki)
(continued)...
Chef Cart Ordering
[root@stacki]# stack list cart
NAME BOXES
base: default
custom-rpms: default
chef: default
[root@stacki]# stack list host profile host1.local.com|less
<?xml version="1.0" standalone="no"?>
<profile lang="kickstart">
<section name="kickstart">
<![CDATA[
#
# Node Traversal Order
#
...
# /export/stack/pallets/stacki/3.2/redhat/x86_64/nodes/do-partition.xml (stacki)
# /export/stack/carts/chef/nodes/cart-chef-backend.xml (unknown)
# /export/stack/pallets/stacki/3.2/redhat/x86_64/nodes/base.xml (stacki)
# /export/stack/carts/base/nodes/cart-base-backend.xml (unknown)
# /export/stack/carts/custom-rpms/nodes/cart-custom-rpms-backend.xml (unknown)
(continued)...
Chef Cart Ordering
/export/stack/carts/chef/graph/cart-chef.xml
<?xml version="1.0" standalone="no"?>
<graph>
<description>
chef cart
</description>
<order head="backend" tail="cart-chef-backend"/>
<edge from="backend" to="cart-chef-backend"/>
</graph>
<?xml version="1.0" standalone="no"?>
<graph>
<description>
chef cart
</description>
<order head="backend" tail="cart-chef-backend"/>
<edge from="backend" to="cart-chef-backend"/>
<order head="cart-base-backend" tail="cart-chef-backend"/>
<edge from="cart-base-backend" to="cart-chef-backend"/>
</graph>
Chef Cart Ordering
[root@stacki]# stack list host profile host1.local.com|less
<?xml version="1.0" standalone="no"?>
<profile lang="kickstart">
<section name="kickstart">
<![CDATA[
#
# Node Traversal Order
#
...
# /export/stack/pallets/stacki/3.2/redhat/x86_64/nodes/do-partition.xml (stacki)
# /export/stack/carts/base/nodes/cart-base-backend.xml (unknown)
# /export/stack/carts/chef/nodes/cart-chef-backend.xml (unknown)
# /export/stack/pallets/stacki/3.2/redhat/x86_64/nodes/base.xml (stacki)
# /export/stack/carts/custom-rpms/nodes/cart-custom-rpms-backend.xml (unknown)
(continued)...
thank y u

More Related Content

Viewers also liked

How Developers and Quality Engineer Collaborate at Salesforce
How Developers and Quality Engineer Collaborate at SalesforceHow Developers and Quality Engineer Collaborate at Salesforce
How Developers and Quality Engineer Collaborate at SalesforceSalesforce Engineering
 
Секреты успешного собеседования: что нужно знать при устройстве на работу. Пр...
Секреты успешного собеседования: что нужно знать при устройстве на работу. Пр...Секреты успешного собеседования: что нужно знать при устройстве на работу. Пр...
Секреты успешного собеседования: что нужно знать при устройстве на работу. Пр...«Велес Капитал»
 
презентация тищук
презентация тищукпрезентация тищук
презентация тищукPower Point
 
Famous Interior Design Firms In Pakistan
Famous Interior Design Firms In PakistanFamous Interior Design Firms In Pakistan
Famous Interior Design Firms In PakistanMahin Shahid
 
Operationalizing Big Data as a Service
Operationalizing Big Data as a ServiceOperationalizing Big Data as a Service
Operationalizing Big Data as a ServiceSalesforce Engineering
 
Business planEntrepreneurship Business Plan of Travel Agency for local and in...
Business planEntrepreneurship Business Plan of Travel Agency for local and in...Business planEntrepreneurship Business Plan of Travel Agency for local and in...
Business planEntrepreneurship Business Plan of Travel Agency for local and in...AFAAQSALEEM
 

Viewers also liked (9)

How Developers and Quality Engineer Collaborate at Salesforce
How Developers and Quality Engineer Collaborate at SalesforceHow Developers and Quality Engineer Collaborate at Salesforce
How Developers and Quality Engineer Collaborate at Salesforce
 
Секреты успешного собеседования: что нужно знать при устройстве на работу. Пр...
Секреты успешного собеседования: что нужно знать при устройстве на работу. Пр...Секреты успешного собеседования: что нужно знать при устройстве на работу. Пр...
Секреты успешного собеседования: что нужно знать при устройстве на работу. Пр...
 
Getting to NO NINES
Getting to NO NINESGetting to NO NINES
Getting to NO NINES
 
презентация тищук
презентация тищукпрезентация тищук
презентация тищук
 
Famous Interior Design Firms In Pakistan
Famous Interior Design Firms In PakistanFamous Interior Design Firms In Pakistan
Famous Interior Design Firms In Pakistan
 
Operationalizing Big Data as a Service
Operationalizing Big Data as a ServiceOperationalizing Big Data as a Service
Operationalizing Big Data as a Service
 
Kuliah 2 Jejas Sel
Kuliah 2 Jejas SelKuliah 2 Jejas Sel
Kuliah 2 Jejas Sel
 
Krishma
KrishmaKrishma
Krishma
 
Business planEntrepreneurship Business Plan of Travel Agency for local and in...
Business planEntrepreneurship Business Plan of Travel Agency for local and in...Business planEntrepreneurship Business Plan of Travel Agency for local and in...
Business planEntrepreneurship Business Plan of Travel Agency for local and in...
 

Similar to Stacki and Chef at Pardot

StackiFest16: Stacki 1600+ Server Journey - Dave Peterson, Salesforce
StackiFest16: Stacki 1600+ Server Journey - Dave Peterson, Salesforce StackiFest16: Stacki 1600+ Server Journey - Dave Peterson, Salesforce
StackiFest16: Stacki 1600+ Server Journey - Dave Peterson, Salesforce StackIQ
 
How to install squid proxy on server or how to install squid proxy on centos o
How to install squid proxy on server  or how to install squid proxy on centos oHow to install squid proxy on server  or how to install squid proxy on centos o
How to install squid proxy on server or how to install squid proxy on centos oProxiesforrent
 
Automate Your FME Server Installs, Take a Five Minute Break
Automate Your FME Server Installs, Take a Five Minute BreakAutomate Your FME Server Installs, Take a Five Minute Break
Automate Your FME Server Installs, Take a Five Minute BreakSafe Software
 
NLIT 2011: Chef & Capistrano
NLIT 2011: Chef & CapistranoNLIT 2011: Chef & Capistrano
NLIT 2011: Chef & Capistranonickblah
 
glance replicator
glance replicatorglance replicator
glance replicatoririx_jp
 
Salesforce at Stacki Atlanta Meetup February 2016
Salesforce at Stacki Atlanta Meetup February 2016Salesforce at Stacki Atlanta Meetup February 2016
Salesforce at Stacki Atlanta Meetup February 2016StackIQ
 
Global Azure Austria 2023 - Fast feedback with pull request deployments
Global Azure Austria 2023 - Fast feedback with pull request deploymentsGlobal Azure Austria 2023 - Fast feedback with pull request deployments
Global Azure Austria 2023 - Fast feedback with pull request deploymentsMarc Müller
 
Deploy Rails Application by Capistrano
Deploy Rails Application by CapistranoDeploy Rails Application by Capistrano
Deploy Rails Application by CapistranoTasawr Interactive
 
Atmosphere Conference 2015: Taming the Modern Datacenter
Atmosphere Conference 2015: Taming the Modern DatacenterAtmosphere Conference 2015: Taming the Modern Datacenter
Atmosphere Conference 2015: Taming the Modern DatacenterPROIDEA
 
Variant Configurition in SAP: Beginners Guide | www.sapdocs.info
Variant Configurition in SAP: Beginners Guide | www.sapdocs.infoVariant Configurition in SAP: Beginners Guide | www.sapdocs.info
Variant Configurition in SAP: Beginners Guide | www.sapdocs.infosapdocs. info
 
Nko workshop - node js crud & deploy
Nko workshop - node js crud & deployNko workshop - node js crud & deploy
Nko workshop - node js crud & deploySimon Su
 
Securing your MySQL / MariaDB Server data
Securing your MySQL / MariaDB Server dataSecuring your MySQL / MariaDB Server data
Securing your MySQL / MariaDB Server dataColin Charles
 
Presentation iv implementasi 802x eap tls peap mscha pv2
Presentation iv implementasi  802x eap tls peap mscha pv2Presentation iv implementasi  802x eap tls peap mscha pv2
Presentation iv implementasi 802x eap tls peap mscha pv2Hell19
 
Clouldera Implementation Guide for Production Deployments
Clouldera Implementation Guide for Production DeploymentsClouldera Implementation Guide for Production Deployments
Clouldera Implementation Guide for Production DeploymentsAhmed Mekawy
 
DWX 2023 - Schnelles Feedback mit Pull-Request Deployments
DWX 2023 - Schnelles Feedback mit Pull-Request DeploymentsDWX 2023 - Schnelles Feedback mit Pull-Request Deployments
DWX 2023 - Schnelles Feedback mit Pull-Request DeploymentsMarc Müller
 
Into The Box 2018 Going live with commandbox and docker
Into The Box 2018 Going live with commandbox and dockerInto The Box 2018 Going live with commandbox and docker
Into The Box 2018 Going live with commandbox and dockerOrtus Solutions, Corp
 
Going live with BommandBox and docker Into The Box 2018
Going live with BommandBox and docker Into The Box 2018Going live with BommandBox and docker Into The Box 2018
Going live with BommandBox and docker Into The Box 2018Ortus Solutions, Corp
 
Instrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con GitlabInstrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con GitlabSoftware Guru
 

Similar to Stacki and Chef at Pardot (20)

StackiFest16: Stacki 1600+ Server Journey - Dave Peterson, Salesforce
StackiFest16: Stacki 1600+ Server Journey - Dave Peterson, Salesforce StackiFest16: Stacki 1600+ Server Journey - Dave Peterson, Salesforce
StackiFest16: Stacki 1600+ Server Journey - Dave Peterson, Salesforce
 
Stacki - The1600+ Server Journey
Stacki - The1600+ Server JourneyStacki - The1600+ Server Journey
Stacki - The1600+ Server Journey
 
How to install squid proxy on server or how to install squid proxy on centos o
How to install squid proxy on server  or how to install squid proxy on centos oHow to install squid proxy on server  or how to install squid proxy on centos o
How to install squid proxy on server or how to install squid proxy on centos o
 
Automate Your FME Server Installs, Take a Five Minute Break
Automate Your FME Server Installs, Take a Five Minute BreakAutomate Your FME Server Installs, Take a Five Minute Break
Automate Your FME Server Installs, Take a Five Minute Break
 
NLIT 2011: Chef & Capistrano
NLIT 2011: Chef & CapistranoNLIT 2011: Chef & Capistrano
NLIT 2011: Chef & Capistrano
 
glance replicator
glance replicatorglance replicator
glance replicator
 
Salesforce at Stacki Atlanta Meetup February 2016
Salesforce at Stacki Atlanta Meetup February 2016Salesforce at Stacki Atlanta Meetup February 2016
Salesforce at Stacki Atlanta Meetup February 2016
 
Global Azure Austria 2023 - Fast feedback with pull request deployments
Global Azure Austria 2023 - Fast feedback with pull request deploymentsGlobal Azure Austria 2023 - Fast feedback with pull request deployments
Global Azure Austria 2023 - Fast feedback with pull request deployments
 
What's New in ZF 1.10
What's New in ZF 1.10What's New in ZF 1.10
What's New in ZF 1.10
 
Deploy Rails Application by Capistrano
Deploy Rails Application by CapistranoDeploy Rails Application by Capistrano
Deploy Rails Application by Capistrano
 
Atmosphere Conference 2015: Taming the Modern Datacenter
Atmosphere Conference 2015: Taming the Modern DatacenterAtmosphere Conference 2015: Taming the Modern Datacenter
Atmosphere Conference 2015: Taming the Modern Datacenter
 
Variant Configurition in SAP: Beginners Guide | www.sapdocs.info
Variant Configurition in SAP: Beginners Guide | www.sapdocs.infoVariant Configurition in SAP: Beginners Guide | www.sapdocs.info
Variant Configurition in SAP: Beginners Guide | www.sapdocs.info
 
Nko workshop - node js crud & deploy
Nko workshop - node js crud & deployNko workshop - node js crud & deploy
Nko workshop - node js crud & deploy
 
Securing your MySQL / MariaDB Server data
Securing your MySQL / MariaDB Server dataSecuring your MySQL / MariaDB Server data
Securing your MySQL / MariaDB Server data
 
Presentation iv implementasi 802x eap tls peap mscha pv2
Presentation iv implementasi  802x eap tls peap mscha pv2Presentation iv implementasi  802x eap tls peap mscha pv2
Presentation iv implementasi 802x eap tls peap mscha pv2
 
Clouldera Implementation Guide for Production Deployments
Clouldera Implementation Guide for Production DeploymentsClouldera Implementation Guide for Production Deployments
Clouldera Implementation Guide for Production Deployments
 
DWX 2023 - Schnelles Feedback mit Pull-Request Deployments
DWX 2023 - Schnelles Feedback mit Pull-Request DeploymentsDWX 2023 - Schnelles Feedback mit Pull-Request Deployments
DWX 2023 - Schnelles Feedback mit Pull-Request Deployments
 
Into The Box 2018 Going live with commandbox and docker
Into The Box 2018 Going live with commandbox and dockerInto The Box 2018 Going live with commandbox and docker
Into The Box 2018 Going live with commandbox and docker
 
Going live with BommandBox and docker Into The Box 2018
Going live with BommandBox and docker Into The Box 2018Going live with BommandBox and docker Into The Box 2018
Going live with BommandBox and docker Into The Box 2018
 
Instrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con GitlabInstrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con Gitlab
 

More from Salesforce Engineering

Locker Service Ready Lightning Components With Webpack
Locker Service Ready Lightning Components With WebpackLocker Service Ready Lightning Components With Webpack
Locker Service Ready Lightning Components With WebpackSalesforce Engineering
 
Techniques to Effectively Monitor the Performance of Customers in the Cloud
Techniques to Effectively Monitor the Performance of Customers in the CloudTechniques to Effectively Monitor the Performance of Customers in the Cloud
Techniques to Effectively Monitor the Performance of Customers in the CloudSalesforce Engineering
 
Predictive System Performance Data Analysis
Predictive System Performance Data AnalysisPredictive System Performance Data Analysis
Predictive System Performance Data AnalysisSalesforce Engineering
 
Aspect Oriented Programming: Hidden Toolkit That You Already Have
Aspect Oriented Programming: Hidden Toolkit That You Already HaveAspect Oriented Programming: Hidden Toolkit That You Already Have
Aspect Oriented Programming: Hidden Toolkit That You Already HaveSalesforce Engineering
 
A Smarter Pig: Building a SQL interface to Pig using Apache Calcite
A Smarter Pig: Building a SQL interface to Pig using Apache CalciteA Smarter Pig: Building a SQL interface to Pig using Apache Calcite
A Smarter Pig: Building a SQL interface to Pig using Apache CalciteSalesforce Engineering
 
Implementing a Content Strategy Is Like Running 100 Miles
Implementing a Content Strategy Is Like Running 100 MilesImplementing a Content Strategy Is Like Running 100 Miles
Implementing a Content Strategy Is Like Running 100 MilesSalesforce Engineering
 
Salesforce Cloud Infrastructure and Challenges - A Brief Overview
Salesforce Cloud Infrastructure and Challenges - A Brief OverviewSalesforce Cloud Infrastructure and Challenges - A Brief Overview
Salesforce Cloud Infrastructure and Challenges - A Brief OverviewSalesforce Engineering
 
Global State Management of Micro Services
Global State Management of Micro ServicesGlobal State Management of Micro Services
Global State Management of Micro ServicesSalesforce Engineering
 

More from Salesforce Engineering (20)

Locker Service Ready Lightning Components With Webpack
Locker Service Ready Lightning Components With WebpackLocker Service Ready Lightning Components With Webpack
Locker Service Ready Lightning Components With Webpack
 
Scaling HBase for Big Data
Scaling HBase for Big DataScaling HBase for Big Data
Scaling HBase for Big Data
 
Techniques to Effectively Monitor the Performance of Customers in the Cloud
Techniques to Effectively Monitor the Performance of Customers in the CloudTechniques to Effectively Monitor the Performance of Customers in the Cloud
Techniques to Effectively Monitor the Performance of Customers in the Cloud
 
Predictive System Performance Data Analysis
Predictive System Performance Data AnalysisPredictive System Performance Data Analysis
Predictive System Performance Data Analysis
 
Apache HBase State of the Project
Apache HBase State of the ProjectApache HBase State of the Project
Apache HBase State of the Project
 
Hit the Trail with Trailhead
Hit the Trail with TrailheadHit the Trail with Trailhead
Hit the Trail with Trailhead
 
HBase/PHOENIX @ Scale
HBase/PHOENIX @ ScaleHBase/PHOENIX @ Scale
HBase/PHOENIX @ Scale
 
Scaling up data science applications
Scaling up data science applicationsScaling up data science applications
Scaling up data science applications
 
Containers and Security for DevOps
Containers and Security for DevOpsContainers and Security for DevOps
Containers and Security for DevOps
 
Aspect Oriented Programming: Hidden Toolkit That You Already Have
Aspect Oriented Programming: Hidden Toolkit That You Already HaveAspect Oriented Programming: Hidden Toolkit That You Already Have
Aspect Oriented Programming: Hidden Toolkit That You Already Have
 
Monitoring @ Scale in Salesforce
Monitoring @ Scale in SalesforceMonitoring @ Scale in Salesforce
Monitoring @ Scale in Salesforce
 
Performance Tuning with XHProf
Performance Tuning with XHProfPerformance Tuning with XHProf
Performance Tuning with XHProf
 
A Smarter Pig: Building a SQL interface to Pig using Apache Calcite
A Smarter Pig: Building a SQL interface to Pig using Apache CalciteA Smarter Pig: Building a SQL interface to Pig using Apache Calcite
A Smarter Pig: Building a SQL interface to Pig using Apache Calcite
 
Implementing a Content Strategy Is Like Running 100 Miles
Implementing a Content Strategy Is Like Running 100 MilesImplementing a Content Strategy Is Like Running 100 Miles
Implementing a Content Strategy Is Like Running 100 Miles
 
Salesforce Cloud Infrastructure and Challenges - A Brief Overview
Salesforce Cloud Infrastructure and Challenges - A Brief OverviewSalesforce Cloud Infrastructure and Challenges - A Brief Overview
Salesforce Cloud Infrastructure and Challenges - A Brief Overview
 
Koober Preduction IO Presentation
Koober Preduction IO PresentationKoober Preduction IO Presentation
Koober Preduction IO Presentation
 
Finding Security Issues Fast!
Finding Security Issues Fast!Finding Security Issues Fast!
Finding Security Issues Fast!
 
Microservices
MicroservicesMicroservices
Microservices
 
Global State Management of Micro Services
Global State Management of Micro ServicesGlobal State Management of Micro Services
Global State Management of Micro Services
 
The Future of Hbase
The Future of HbaseThe Future of Hbase
The Future of Hbase
 

Recently uploaded

GDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentationGDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentationGDSCAESB
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxwendy cai
 
Past, Present and Future of Generative AI
Past, Present and Future of Generative AIPast, Present and Future of Generative AI
Past, Present and Future of Generative AIabhishek36461
 
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)dollysharma2066
 
Effects of rheological properties on mixing
Effects of rheological properties on mixingEffects of rheological properties on mixing
Effects of rheological properties on mixingviprabot1
 
pipeline in computer architecture design
pipeline in computer architecture  designpipeline in computer architecture  design
pipeline in computer architecture designssuser87fa0c1
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxJoão Esperancinha
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024Mark Billinghurst
 
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdfCCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdfAsst.prof M.Gokilavani
 
Churning of Butter, Factors affecting .
Churning of Butter, Factors affecting  .Churning of Butter, Factors affecting  .
Churning of Butter, Factors affecting .Satyam Kumar
 
Biology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxBiology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxDeepakSakkari2
 
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdfCCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdfAsst.prof M.Gokilavani
 
Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024hassan khalil
 
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerStudy on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerAnamika Sarkar
 
complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...asadnawaz62
 
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort serviceGurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort servicejennyeacort
 
Risk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdfRisk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdfROCENODodongVILLACER
 
Work Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvvWork Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvvLewisJB
 
main PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfidmain PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfidNikhilNagaraju
 

Recently uploaded (20)

GDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentationGDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentation
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptx
 
Past, Present and Future of Generative AI
Past, Present and Future of Generative AIPast, Present and Future of Generative AI
Past, Present and Future of Generative AI
 
Exploring_Network_Security_with_JA3_by_Rakesh Seal.pptx
Exploring_Network_Security_with_JA3_by_Rakesh Seal.pptxExploring_Network_Security_with_JA3_by_Rakesh Seal.pptx
Exploring_Network_Security_with_JA3_by_Rakesh Seal.pptx
 
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
 
Effects of rheological properties on mixing
Effects of rheological properties on mixingEffects of rheological properties on mixing
Effects of rheological properties on mixing
 
pipeline in computer architecture design
pipeline in computer architecture  designpipeline in computer architecture  design
pipeline in computer architecture design
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024
 
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdfCCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
 
Churning of Butter, Factors affecting .
Churning of Butter, Factors affecting  .Churning of Butter, Factors affecting  .
Churning of Butter, Factors affecting .
 
Biology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxBiology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptx
 
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdfCCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
 
Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024
 
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerStudy on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
 
complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...
 
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort serviceGurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
 
Risk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdfRisk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdf
 
Work Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvvWork Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvv
 
main PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfidmain PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfid
 

Stacki and Chef at Pardot

  • 1. Stacki and Chef at Pardot David Peterson Lead Systems Engineer david.peterson@salesforce.com
  • 2. About Me I joined Salesforce in 2014 and am currently a Lead Systems Engineer based out of Atlanta, GA. I help lead the infrastructure design and scaling of Salesforce’s product offering, Pardot Marketing Automation. Prior to Salesforce, I worked at Perfect Sense Digital where I was the Lead Engineer in architecting and implementing HGTV and Travel Channel's new website infrastructure in AWS. I also helped design and implement the infrastructure for digital media sites such as Food Network, Univision, Coca-Cola, Walmart, Lionsgate, BET, Snagfilms, National Geographic, and others. Prior to PSD, I worked at ChannelAdvisor, an e-commerce SaaS company, where I helped design and manage the infrastructure responsible for processing over $3 billion in GMV.
  • 3. Agenda ▪ Why Stacki (I’m assuming version 3.2) ▪ Stacki global configuration for multiple DCs ▪ Stacki chef cart setup ▪ Specific Chef configurations and how we handle server re-provisions ▪ Proper ordering with multiple carts ▪ Questions
  • 4. Why Stacki ▪ Managing thousands of servers is easy (csv) ▪ HP and Dell raid controller support ▪ Easy out of the box provisioning but deep customization available ▪ Ability to re-provision without losing data ▪ Easy network/subnet configuration and host assignment ▪ YUM repo support ▪ Command line, command line, command line ▪ Support
  • 5. Stacki Global Configurations [root@stacki]# stack list attr SCOPE ATTR VALUE SOURCE --------- Confirm_Private_PureRootPassword a G --------- HttpConf /etc/httpd/conf G --------- HttpConfigDirExt /etc/httpd/conf.d G --------- HttpRoot /var/www/html G --------- Info_CertificateCountry US G --------- Info_CertificateLocality Solana Beach G --------- Info_CertificateOrganization StackIQ G --------- Info_CertificateState California G --------- Info_ClusterContact ---------------------------------------------------------------------------- G --------- Info_ClusterLatlong N32.87 W117.22 G --------- Info_ClusterName Stacki G --------- Info_ClusterURL http://stackihost.local/ G --------- Info_FQDN stackihost.local G --------- Kickstart_BoxDir /export/stack G --------- Kickstart_DistroDir /export/stack G --------- Kickstart_Keyboard us G --------- Kickstart_Lang en_US G --------- Kickstart_Langsupport en_US G (continued)...
  • 6. Stacki Global Configurations [root@stacki]# stack add attr attr=datacenter value=DC-EAST [root@stacki]# stack add attr attr=chef_server value=https://chef-dc-east.xyz.com:443/organizations/companyX [root@stacki]# stack list attr SCOPE ATTR VALUE SOURCE --------- chef_server https://chef-dc-east.xyz.com:443/organizations/companyX G --------- datacenter DC-EAST G
  • 7. Chef Stacki Cart [root@stacki]# stack add cart chef [root@stacki]# stack list cart NAME BOXES chef: ----- [root@stacki]# tree /export/stack/carts/chef/ ├── graph │ └── cart-chef.xml ├── nodes │ └── cart-chef-backend.xml └── RPMS
  • 8. Chef Config /export/stack/carts/chef/nodes/cart-chef-backend.xml <?xml version="1.0" standalone="no"?> <kickstart> <description> chef cart backend appliance extensions </description> <package>chef</package> <!-- shell code for post RPM installation --> <post> mkdir -p /etc/chef /var/log/chef /var/run/chef </post>
  • 9. Chef Config XML tag Overview ● <post> ○ This tag allows the admin to run scripts after the package installation is done. The scripts can be in any interpreted language present on the installed system. ● <boot order=”post”> ○ This section is a collection of shell scripts that are run on first-boot after all services and daemons have started. This is typically used to run scripts that interact with system daemons, or to finish and clean-up the installation process.
  • 10. Chef Config /export/stack/carts/chef/nodes/cart-chef-backend.xml <post cond="not 'proxyout' in hostname"> ############# DC-EAST ########## if [ "&datacenter;" == "DC-EAST" ] then <file name="/etc/chef/client.rb"> <![CDATA[ # Chef Client Config File # Dynamically generated by Stacki log_level :info log_location STDOUT chef_server_url "#CHEF_SERVER#" validation_client_name "prod-validator" validation_key "/etc/chef/validation.pem" client_key "/etc/chef/client.pem" ssl_verify_mode :verify_none http_proxy 'http://proxyout.dc-east.local.com:3128' https_proxy 'http://proxyout.dc-east.local.com:3128' environment 'production' node_name "#HOSTNAME#" ]]> </file> # Need to add the chef server and client hostname to the client.rb file sed -i 's,#CHEF_SERVER#,&chef_server;,g' /etc/chef/client.rb sed -i 's/#HOSTNAME#/&hostname;.&domainname;/g' /etc/chef/client.rb fi </post>
  • 11. Chef Config /export/stack/carts/chef/nodes/cart-chef-backend.xml <post cond="'proxyout' in hostname"> <file name="/etc/chef/client.rb"> <![CDATA[ # Chef Client Config File # Dynamically generated by Stacki log_level :info log_location STDOUT chef_server_url "#CHEF_SERVER#" validation_client_name "prod-validator" validation_key "/etc/chef/validation.pem" client_key "/etc/chef/client.pem" ssl_verify_mode :verify_none environment 'production' # Using default node name (fqdn) node_name "#HOSTNAME#" ]]> </file> # Need to add the chef server and client hostname to the client.rb file sed -i 's,#CHEF_SERVER#,&chef_server;,g' /etc/chef/client.rb sed -i 's/#HOSTNAME#/&hostname;.&domainname;/g' /etc/chef/client.rb </post>
  • 12. Chef Config /export/stack/carts/chef/nodes/cart-chef-backend.xml <post> if [ "&datacenter;" == "DC-EAST" ] then <file name="/etc/chef/first-boot.json"> { "run_list": [ "role[base]", "role[dc_east]" ] } </file> <file name="/etc/chef/validation.pem" perms="0644"> -----BEGIN RSA PRIVATE KEY----- asdfasdfasdfasdfasdfasdfasdfasdfasdfsadfasdfasdfasdfsadfasdfasdfasdfsadfsadfasdf adsasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasfasdfasdfasdfasdfa -----END RSA PRIVATE KEY----- </file> <file name="/etc/chef/encrypted_data_bag_secret" perms="0400"> asdfasdfasdfasdfasfdasfdasdfasfdasdfasfasdfasfdasdfasdfsafasfdasfdsadfasdfasdfasdf adsfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasfdasdfasdfasdfasdfasdfa </file> fi </post> ######### DC-EAST END ########
  • 13. Chef Config: Server Provisioning ● Two attributes attached to a host control what happens to existing data on that host when it is configured to be provisioned by setting the action attribute: “stack set host boot host1.local.com action=install” ○ nukecontroller ■ If set to “False”: Leaves the existing RAID controller setup as it is ■ If set to “True”: Removes all existing RAID groups and LUNS ○ nukedisks ■ If set to “False”: Only removes everything in the “/” and “/var/log” partition ■ If set to “True”: Will remove all partitions from all disks [root@stacki]# stack list host attr host1.local.com |egrep 'nuke|HOST' HOST SCOPE ATTR VALUE SOURCE host1.local.com: --------- nukecontroller false H host1.local.com: --------- nukedisks false H
  • 14. Chef Config: Server Provisioning /export/stack/carts/chef/nodes/cart-chef-backend.xml # If we are nuking disks we are assuming this is a new server # or the chef client/node has been deleted out of the chef server if it existed. <boot order="post" cond="nukedisks"> # Run chef-client for the first time /usr/bin/chef-client -j /etc/chef/first-boot.json -L /var/log/chef/chef.log # Make a backup of the chef private key in case we need to re-provision/upgrade a server mkdir -p /data/chef-backup chown root:root /data/chef-backup chmod 700 /data/chef-backup cp -a /etc/chef/* /data/chef-backup </boot> [root@stacki]# stack set host attr host1.local.com attr=nukedisks value=true [root@stacki]# stack list host attr host1.local.com |egrep 'nukedisks|HOST' HOST SCOPE ATTR VALUE SOURCE host1.local.com: --------- nukedisks true H
  • 15. Chef Config: Server Provisioning /export/stack/carts/chef/nodes/cart-chef-backend.xml # If we are not nuking the disks we are assuming we are re-loading or upgrading # the OS and need to keep the client.pem chef key so chef-client can run properly <boot order="post" cond="not nukedisks"> cp /data/chef-backup/client.pem /etc/chef/ /usr/bin/chef-client -L /var/log/chef/chef.log </boot> </kickstart>
  • 16. Chef Cart Config ● Put your chef RPM file in /export/stack/carts/chef/RPMS/ directory ● Assign your chef cart to a box ● Compile a cart when adding/removing RPMs to update the repo [root@stacki]# stack enable cart chef box=default [root@stacki]# stack compile cart chef [root@stacki]# stack list cart chef NAME BOXES chef: default
  • 17. Chef Cart Config PRO TIP: When making xml config changes, always verify them by running the “stack list host profile” command which does syntax checking and gives you the full generated kickstart file [root@stacki]# stack list host profile host1.local.com|less <?xml version="1.0" standalone="no"?> <profile lang="kickstart"> <section name="kickstart"> <![CDATA[ # # Node Traversal Order # # /export/stack/pallets/stacki/3.2/redhat/x86_64/nodes/partitions-save.xml (stacki) # /export/stack/pallets/stacki/3.2/redhat/x86_64/nodes/pre-ssh-key.xml (stacki) # /export/stack/pallets/stacki/3.2/redhat/x86_64/nodes/storage-controller-client.xml (stacki) # /export/stack/pallets/stacki/3.2/redhat/x86_64/nodes/nukedisks.xml (stacki) # /export/stack/pallets/stacki/3.2/redhat/x86_64/nodes/partition.xml (stacki) (continued)...
  • 18. Chef Cart Ordering [root@stacki]# stack list cart NAME BOXES base: default custom-rpms: default chef: default [root@stacki]# stack list host profile host1.local.com|less <?xml version="1.0" standalone="no"?> <profile lang="kickstart"> <section name="kickstart"> <![CDATA[ # # Node Traversal Order # ... # /export/stack/pallets/stacki/3.2/redhat/x86_64/nodes/do-partition.xml (stacki) # /export/stack/carts/chef/nodes/cart-chef-backend.xml (unknown) # /export/stack/pallets/stacki/3.2/redhat/x86_64/nodes/base.xml (stacki) # /export/stack/carts/base/nodes/cart-base-backend.xml (unknown) # /export/stack/carts/custom-rpms/nodes/cart-custom-rpms-backend.xml (unknown) (continued)...
  • 19. Chef Cart Ordering /export/stack/carts/chef/graph/cart-chef.xml <?xml version="1.0" standalone="no"?> <graph> <description> chef cart </description> <order head="backend" tail="cart-chef-backend"/> <edge from="backend" to="cart-chef-backend"/> </graph> <?xml version="1.0" standalone="no"?> <graph> <description> chef cart </description> <order head="backend" tail="cart-chef-backend"/> <edge from="backend" to="cart-chef-backend"/> <order head="cart-base-backend" tail="cart-chef-backend"/> <edge from="cart-base-backend" to="cart-chef-backend"/> </graph>
  • 20. Chef Cart Ordering [root@stacki]# stack list host profile host1.local.com|less <?xml version="1.0" standalone="no"?> <profile lang="kickstart"> <section name="kickstart"> <![CDATA[ # # Node Traversal Order # ... # /export/stack/pallets/stacki/3.2/redhat/x86_64/nodes/do-partition.xml (stacki) # /export/stack/carts/base/nodes/cart-base-backend.xml (unknown) # /export/stack/carts/chef/nodes/cart-chef-backend.xml (unknown) # /export/stack/pallets/stacki/3.2/redhat/x86_64/nodes/base.xml (stacki) # /export/stack/carts/custom-rpms/nodes/cart-custom-rpms-backend.xml (unknown) (continued)...