#!/bin/sh # Author: Pekka Helenius (~Fincer), 2018 # # - This script creates two different text strings for two minions: minion_1 & minion_2 # - This script is meant to be run on Salt master # # - This script creates the following files on master: # /srv/pillar/top.sls # /srv/pillar/minion-1.sls # /srv/pillar/minion-2.sls # /srv/salt/files/pillarfile # /srv/salt/myfirstpillar.sls if [ $(id -u) -eq 0 ]; then mkdir -p /srv/pillar tee /srv/pillar/top.sls <<PILLAR_TOP base: 'minion_1': - minion-1 'minion_2': - minion-2 PILLAR_TOP tee /srv/pillar/minion-1.sls <<MINION_1_DATA test_variable: 'secret like coffee shop wants to say hello to the world' MINION_1_DATA tee /srv/pillar/minion-2.sls <<MINION_2_DATA test_variable: 'hidden miniart: superman vs. hulk figures' MINION_2_DATA mkdir -p /srv/salt/files tee /srv/salt/files/pillarfile << PILLARFILE_CONTENT This is my pillarfile which has the following content: {{ pillar['test_variable'] }} PILLARFILE_CONTENT tee /srv/salt/myfirstpillar.sls <<GENERIC_PILLAR pillar_file: file.managed: - user: 1000 - group: 1000 - name: /tmp/pillarfile_for_{{ grains['id'] }} - source: salt://files/pillarfile - makedirs: True - template: jinja GENERIC_PILLAR if [ ! -f /srv/salt/myfirstpillar.sls ] || \ [ ! -f /srv/salt/files/pillarfile ] || \ [ ! -f /srv/pillar/top.sls ]; then echo "Salt files missing. Aborting." exit 1 else salt 'minion_*' test.ping if [ $? -eq 0 ]; then echo -e "\e[1m\n**Salt -- pillar.items output**\n\e[0m" salt 'minion_*' pillar.items echo -e "\e[1m\n**Salt -- state.apply output**\n\e[0m" salt 'minion_*' state.apply myfirstpillar echo -e "\e[1m\n**Salt -- get file output with head command**\n\e[0m" salt 'minion_*' cmd.run 'head /tmp/pillarfile_for*' fi fi else echo "Run this script as root (or with sudo)" fi