StackiFest16: Building a Cart

Preview:

Citation preview

Workshop - Building a cart

Aishwarya VenkataramanSoftware Engineer

What is a Cart?Site Specific Pallets▪ Contains site-specific RPM

▪ Contains site-specific configurations

▪ Structurally and Functionally equivalent to a Pallet

Example: Client Cart▪ Contains RPMS to install DevOps tools

▪ Contains custom post-install scripts to configure DevOps tools

▪ Contains custom post-install scripts to run DevOps tools to bring system up to requisite configuration.

Adding a New InfluxDB Cart

# stack add cart influxDb

# stack list cart

NAME BOXES

screen: default

influxDb: ---------

Customizing a Cart

# cd /export/stack/carts/influxDb

Add the InfluxDB rpm

# cd RPMS

# wget https://s3.amazonaws.com/influxdb/influxdb-0.10.3-1.x86_64.rpm

# vim nodes/cart-influxDb-backend.xml

Modifying Node XML file

<?xml version="1.0" standalone="no"?><kickstart><description>InfluxDb cart backend appliance extensions</description>

<package>influxdb</package>

<!-- shell code for post RPM installation --><post>/sbin/chkconfig --add influxdb/sbin/chkconfig influxdb on</post></kickstart>

Adding Cart to a Box

# stack list box

NAME OS PALLETS CARTS

default: redhat os-6.7-6.x stacki-3.0-6.x ipmi-1.0-3.0 screen

# stack enable cart influxDb

# stack list box

NAME OS PALLETS CARTS

default: redhat os-6.7-6.x stacki-3.0-6.x ipmi-1.0-3.0 screen influxDb

Viewing the Host Profile

%packages --ignoremissingfoundation-rcsinfluxdblibcapntpopensshopenssh-askpassOpenssh-clients

%post --log=/var/log/stack-install.log

/sbin/chkconfig --add influxdb/sbin/chkconfig influxdb on

%end%post --log=/var/log/stack-install.log

cat >> /var/log/stack-install.log << 'EOF'/export/stack/carts/influxDb/nodes/cart-influxDb-backend.xml: end post sectionEOF

# stack list host profile node204 > /tmp/node204.cfg

Adding Conditionals to Node XML

<?xml version="1.0" standalone="no"?><kickstart>

<description> influxDb cart backend appliance extensions </description>

<package>influxdb</package>

<!-- shell code for post RPM installation --><post cond="'&appliance;' == 'prod'">/sbin/chkconfig --add influxdb/sbin/chkconfig influxdb on</post></kickstart>

Additional Node XML Customizations<?xml version="1.0" standalone="no"?><kickstart>

<description> influxDb cart backend appliance extensions </description>

<package>influxdb</package><!-- shell code for post RPM installation --><post cond="'&appliance;' == 'prod'">/sbin/chkconfig --add influxdb/sbin/chkconfig influxdb on</post><post><file name="/etc/motd" perms="0755">Influx package is available</file></post></kickstart>

Modifying Graph XML file

<?xml version="1.0" standalone="no"?><graph> <description> influxDb cart </description>

<order head="backend" tail="cart-influxDb-backend"/> <edge from="backend" to="cart-influxDb-backend"/>

<order head="prod" tail="cart-influxDb-prod"/> <edge from="prod" to="cart-influxDb-prod"/></graph>

Viewing the Host Profile

stack list host profile node204 > /tmp/node204.cfg

%packages --ignoremissingfoundation-rcsinfluxdblibcapntpopensshopenssh-askpassOpenssh-clients

%post --log=/var/log/stack-install.log

/sbin/chkconfig --add influxdb/sbin/chkconfig influxdb on

%end%post --log=/var/log/stack-install.log

cat >> /var/log/stack-install.log << 'EOF'/export/stack/carts/influxDb/nodes/cart-influxDb-backend.xml: end post sectionEOF

Deploying RPMS on the fly# stack compile cart influxDb# stack report host yum node204 | stack report script | ssh -T node204

%packages --ignoremissingfoundation-rcsinfluxdblibcapntpopensshopenssh-askpassOpenssh-clients

%post --log=/var/log/stack-install.log

/sbin/chkconfig --add influxdb/sbin/chkconfig influxdb on

%end%post --log=/var/log/stack-install.log

cat >> /var/log/stack-install.log << 'EOF'/export/stack/carts/influxDb/nodes/cart-influxDb-backend.xml: end post sectionEOF

Viewing the Host Profile

stack list host profile node204 > /tmp/node204.cfg

%packages --ignoremissingfoundation-rcsinfluxdblibcapntpopensshopenssh-askpassOpenssh-clients

%post --log=/var/log/stack-install.log

/sbin/chkconfig --add influxdb/sbin/chkconfig influxdb on

%end%post --log=/var/log/stack-install.log

cat >> /var/log/stack-install.log << 'EOF'/export/stack/carts/influxDb/nodes/cart-influxDb-backend.xml: end post sectionEOF

Cart is ready to roll!

Recommended