SaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and States

100 %
0 %
Information about SaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and States
Technology

Published on March 25, 2014

Author: SaltStack

Source: slideshare.net

Description

This session will expand your knowledge of cutting-edge techniques for creating Salt states and formulas. Users will obtain a thorough understanding of how states interact with pillars, as well as map.jinja files. We'll discuss how to make formulas OS agnostic and show how the usage of external pillars combined with a map file can result in formulas that are easy to explain, easy to learn, and easy to update.

Salt Formulas and States Forrest Alvarez

Formulas are the evolution of Salt states, they are the future of Salt.

Salt States Core of Salt ! Range from basic to very complex ! Used for provisioning and deployment

States Refresher Syntax is fairly simple ! Modular focus ! Ease of use

Example State nginx: pkg: - installed service: - running - enable: True - reload: True

State Directory Structure /srv/salt/nginx/init.sls - Installs and starts service ! /srv/salt/mysql/client.sls - installs client ! /srv/salt/mysql/server.sls - installs the server and starts the service

Salt States Can Become Complex apache: pkg: - installed {% if grains[‘os_family’] == ‘RedHat’ %} - name: httpd {% elif grains[‘os_family’] == ‘Debian’ %} - name: apache2 {% endif %}

Pillar Exploitation OS variables that shouldn’t be in pillar are ! Pillar becomes bloated ! Harder to understand for new users

Combine pillar and state complexity

Complexity leads to problems Different operating systems ! Multiple locations in a state ! Several states require changes

How Do We Address This? Ease of use ! Simple to modify multiple locations ! Can be applied to existing configurations

Salt Formulas Evolution of the Salt states ! Easy to write because you already are ! Somewhat difficult to understand how they work

Formula Directory Structure /srv/salt/apache/init.sls ! /srv/salt/apache/conf.sls ! /srv/salt/apache/map.jinja !

The Core of Formulas, map.jinja Sets data based on OS grains ! Merges with Pillar data ! Centralizes variables !

Creating The Map {% set apache = salt[‘grains.filter_by’]({ ‘Debian’: { ‘server’: ‘apache2’, ‘service’: ‘apache2’, ‘conf’: ‘/etc/apache2/apache.conf’, }, ‘RedHat’: { ‘server’: ‘httpd’, ‘service’: ‘httpd’, ‘conf’: ‘/etc/httpd/httpd.conf’, }, }, merge=salt[‘pillar.get’](‘apache:lookup’)) %}

Using Maps in States {% from “apache/map.jinja” import apache with context %} ! apache: pkg: - installed - name: {{ apache.server }} service: - running - name: {{ apache.service }} - enable: True

Before apache: pkg: - installed {% if grains[‘os_family’] == ‘RedHat’ %} - name: httpd {% elif grains[‘os_family’] == ‘Debian’ %} - name: apache2 {% endif %} service: - running {% if grains[‘os_family’] == ‘RedHat’ %} - name: httpd {% elif grains[‘os_family’] == ‘Debian’ %} - name: apache2 {% endif %} - enable: True

After {% from “apache/map.jinja” import apache with context %} ! apache: pkg: - installed - name: {{ apache.server }} service: - running - name: {{ apache.service }} - enable: True

A Few Seconds After That

More Maps in States {% from “apache/map.jinja” import apache with context %} ! include: - apache ! apache_conf: file: - managed - name: {{ apache.conf }} - source: {{ salt[‘pillar.get’](‘apache:lookup:config:tmpl’) }} # Notice this variable doesn’t live in our map - template: jinja - user: root - group: root - mode: ‘0644’ - watch_in: - service: apache

Pillars Splitting pillar data ! Identifying it with sets of states 
 Will all be combined in the end

Pillar Directory Structure /srv/pillar/top.sls ! /srv/pillar/apache.sls ! /srv/pillar/php.sls

The Pillar Top.sls base: ‘*’: - apache - php

Extending Your Pillar apache: lookup: config: tmpl: salt://apache/files/redhat/httpd.conf

Merging Maps With Pillars Multiple pillars further reduce complexity ! Easy to include several pillars in your top pillar ! Pillar variables can overwrite map

Overwriting Maps apache: lookup: config: tmpl: salt://apache/files/redhat/ server: my_custom_apache

Clear Location of Variables Where did I miss that conf name change? ! Did I make sure to update all my requires? ! Hey, could you modify this value?

The Simpler the Better Works great even if you only have a single OS ! Easy to hand off ! Fewer files to manage

Managing Formulas Directory structure is the same as always ! One map file per formula ! Pillars are just included in your top pillar

Creating a Formula map.jinja ! Example Pillar ! Modular structure

Writing Formulas Effectively Think about what is OS based ! Consider what might need to be expanded ! Look at how someone else would see your formula

Premade Salt Formulas Over 75 formulas publicly available ! Not all formulas require the map ! Fork it with GIT and modify as needed

Contributing Back Fork an existing repo ! Ask for a repo to be made ! Contact the members

IRC: forrest ! Twitter: failvarez ! GitHub: gravyboat Questions?

Sources XKCD: Kayak comic - http://xkcd.com/209/ Easy button - http://dealer-communications.com/wp-content/uploads/2014/01/easy_button.png Bad cabling - http://farm3.staticflickr.com/2353/2219131561_31feee1745.jpg Earl of Lemongrab - http://fc03.deviantart.net/fs70/i/2013/108/e/3/lemongrab_by_twillis-d6266g9.png Dat Map - http://cdn.memegenerator.net/instances/500x/43904408.jpg Bruce Lee - http://www.elliottcaras.com/wp-content/uploads/2013/11/Bruce-Lee-Simplicity-is-the-key-2-brilliance.jpg Structure of Salt - http://upload.wikimedia.org/wikipedia/commons/2/29/NaCl.png Github OctoCat - http://www.iconsdb.com/icons/download/black/github-10-512.png

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

SaltConf14 - Forrest Alvarez, Choice Hotels - Salt ...

This session will expand your knowledge of cutting-edge techniques for creating Salt states and formulas. Users will obtain a thorough ...
Read more

SaltConf14 - YouTube

Most of the SaltStack customer and users talks from SaltConf14 held in Salt Lake ... SaltConf14 - Forrest Alvarez, Choice Hotels ... United States ...
Read more

os formulas - Natok24.Com

SaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and States Duration: 34m 32s. FORMULAS PARA CALCULAR UN TRANSFORMADOR Duration: 11m 46s.
Read more