Salt Master

To setup salt master (change address):

Requirements:

sudo apt-get update
sudo apt-get -y install python-pip python-git
sudo pip install netaddr apache-libcloud

Then download salt installer and install it

wget -O install_salt.sh https://bootstrap.saltstack.com
sudo sh install_salt.sh -D -U -M stable 2015.8.11

Replace /etc/salt/master with the following content:

## specific PNDA saltmaster config
auto_accept: True      # auto accept minion key on new minion provisioning

## Using GitFS backend
fileserver_backend:
  - git
  - minion

gitfs_remotes:
  - file:///home/cloud-user/git_repos/saltmaster.git:
    - root: salt

gitfs_base: master

# Do not merge top.sls files across multiple environments
top_file_merging_strategy: same

ext_pillar:
   - git: __env__ file:///home/cloud-user/git_repos/saltmaster.git root=pillar

# To autoload new created modules, states add and remove salt keys,
# update bastion /etc/hosts file automatically ... add the following reactor configuration
reactor:
  - 'minion_start':
    - salt://reactor/sync_all.sls
  - 'salt/cloud/*/created':
    - salt://reactor/create_bastion_host_entry.sls
  - 'salt/cloud/*/destroying':
    - salt://reactor/delete_bastion_host_entry.sls

file_recv: True

failhard: True

## end of specific PNDA saltmaster config

Then save and restart salt master process

sudo restart salt-master

In order for the salt/cloud events to work, you need to configure salt-cloud inside salt. It means, having /etc/salt/cloud and /etc/salt/cloud.{providers,profiles}.d configuration files.

Git repo for Salt recipes

On the saltmaster instance, setup git repos (need to be done once and only once):

mkdir /home/cloud-user/git_repos
cd /home/cloud-user/git_repos
for r in salt-cloud.git saltmaster.git; do
  mkdir $r
  cd $r
  git --bare init
  cd -
done

Git repo initialization

For the following git repos from the pnda git server:

  • platform-salt
  • platform-salt-cloud

On a developer workstation, after cloning the said repos, perform the following steps where saltmaster refers to the remote saltmaster server:

cd <local-path>/platform-salt
git remote add saltmaster ssh://cloud-user@saltmaster/home/cloud-user/git_repos/saltmaster.git
cd <local-path>/platform-salt-cloud
git remote add saltmaster ssh://cloud-user@saltmaster/home/cloud-user/git_repos/salt-cloud.git

So that once making updates, you will need to put them both on the pnda git server and the saltmaster git remotes

git push saltmaster master

Miscellaneous (salt-master)

Setup access to repo from local (need to be done once)

cd /home/cloud-user/johndoe
git clone file:///home/saltgit/saltmaster.git

results matching ""

    No results matching ""