OpenWest 2014-05-10 Where's the Waldo, SaltStack Proxy Minions
Managing network gear and
"dumb" devices using
SaltStack Proxy Minions1
C. R. Oldham
• North Central Association, Director of IT
• Marvell Semiconductor, Compute Environment Manager
• HopeKids, Executive Director
• SaltStack, Platform Engineer
• Keyboard + Monitor Give it to C. R.
What is Salt?
• Salt is more than just configuration management, it makes up a unified
system control platform.
• Complete infrastructure control
• A foundation API for communication
• Remote execution, job management, state discovery
• Control and view all aspects from one source, one medium
• Salt is Simplicity
• Salt is designed to be simple
• Easy to set up, use, understand, and extend
• Diving in is the right way to learn
Founded on Remote Execution
• The foundation of Salt is remote execution. Salt's unique remote
execution system enables extremely fast and reliable remote
control of systems
• Remote Execution allows for server commands to be sent
around an infrastructure
• ZeroMQ topology enables powerful and high speed
• Commands can be executed quickly and in parallel across large
numbers of nodes to execute commands and gather information
Not Just for Large Infrastructure
• Salt can scale up or down as
far as you need to go
• Home networks
• "Micro" networks
– Arduino, Raspberry Pi,
• "Dumb" devices
– Switches, Routers
– Coffee Makers
– Sprinkler Systems
• Remote Services
• Google Apps
• Anything with a REST api
Remote Execution Examples
salt -G 'os:Ubuntu' pkg.upgrade
salt '*' pkg.install openssl refresh=True
salt '*' service.restart apache
salt '*' shadow.set_password root '$1$UY...
Minion - to - Master Communication
• Each minion runs a salt-minion
– Python runtime, average RSS 30 MB
– Minions connect to master
– Master controls minions
• What if devices we want to
control can't spare 30 MB?
• Enter the PROXY MINION
What exactly IS a PROXY MINION??!
A process forked from a regular salt-minion that
has the sole purpose of talking to a device that
cannot run a minion.
GRU == salt-master Minion == salt-minion
Minions == proxy-minion
Car == proxied device
Where we are going eventually...
salt datacenter-network state.highstate
Aren't there other tools?
• Web interface
• The CLI tool that shall remain nameless
• Ephemeral-connection oriented tools drop changes on
• Bootstrapping ssh connections over and over can be slow
• Needed a persistent connection to overcome