Initial import

This commit is contained in:
Jan Philipp Timme 2019-12-08 14:07:24 +01:00
commit c73da78ee9
12 changed files with 137 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.vagrant

7
README.md Normal file
View File

@ -0,0 +1,7 @@
# Vagrant based salt test environment
This is a simple multi machine vagrant test environment.
It spins up one salt-master and two salt-minion machines, and creates a rough working salt skeleton environment on them for testing purposes.
Simply run `vagrant up` to spin everything up.
In case you want to adjust the configuration, use `vagrant rsync` to refresh the files within the virtual machines.

68
Vagrantfile vendored Normal file
View File

@ -0,0 +1,68 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# Use this box as base for all machines
config.vm.box = "debian/buster64"
# Define primary salt-master vm
config.vm.define "salt-master", primary: true do |master|
master.vm.hostname = "salt-master"
# Define network for salt management
master.vm.network "private_network", ip: "10.254.254.2", virtualbox__intnet: "salt-management"
# Sync salt pillar + state files here
master.vm.synced_folder ".", "/vagrant", type: "rsync", rsync__exclude: [".git/",]
# Provide dependencies (also for gitfs)
master.vm.provision :shell, :inline => "sudo apt-get -y install git-core python3-pygit2 python3-setuptools python3-tornado"
# Symlink states + pillar to /srv
master.vm.provision :shell, :inline => "ln -s /vagrant/saltstack/salt /srv/"
master.vm.provision :shell, :inline => "ln -s /vagrant/saltstack/pillar /srv/"
# Use vagrant salt provisioner (uses most recent salt-bootstrap script)
# See https://www.vagrantup.com/docs/provisioning/salt.html
master.vm.provision :salt do |salt|
salt.bootstrap_options = '-F -c /tmp/ -P -x python3'
salt.colorize = true
salt.install_master = true
salt.minion_config = "saltstack/config/minion-master"
salt.master_config = "saltstack/config/master"
salt.verbose = true
end
master.vm.provision :shell, :inline => "echo salt-master is up!"
master.vm.provision :shell, :inline => "ip addr show"
end # config.vm.define "salt-master"
# Define two salt-minion vms
(1..2).each do |i|
config.vm.define "salt-minion-#{i}" do |minion|
minion.vm.hostname = "salt-minion-#{i}"
# Define network for salt management
minion.vm.network "private_network", ip: "10.254.254.2#{i}", virtualbox__intnet: "salt-management"
# Use vagrant salt provisioner (uses most recent salt-bootstrap script)
# See https://www.vagrantup.com/docs/provisioning/salt.html
minion.vm.provision :salt do |salt|
salt.bootstrap_options = '-F -c /tmp/ -P -x python3'
salt.colorize = true
salt.install_master = false
salt.masterless = false
salt.minion_config = "saltstack/config/minion-#{i}"
salt.verbose = true
end
minion.vm.provision :shell, :inline => "echo salt-minion #{i} is up!"
minion.vm.provision :shell, :inline => "ip addr show"
end # config.vm.define "salt-minion-#{i}"
end # (1..2).each do |i|
end # Vagrant.configure

14
saltstack/config/master Normal file
View File

@ -0,0 +1,14 @@
interface: 10.254.254.2
auto_accept: True
fileserver_backend:
- roots
file_roots:
base:
- /srv/salt/
pillar_roots:
base:
- /srv/pillar

View File

@ -0,0 +1,2 @@
id: 'minion-1'
master: 10.254.254.2

View File

@ -0,0 +1,2 @@
id: 'minion-2'
master: 10.254.254.2

View File

@ -0,0 +1,2 @@
id: 'minion-master'
master: 10.254.254.2

View File

@ -0,0 +1,7 @@
test:
foo: True
bar: is open
baz:
- first
- second
- third

3
saltstack/pillar/top.sls Normal file
View File

@ -0,0 +1,3 @@
base:
'*':
- test.data

View File

@ -0,0 +1,4 @@
### THIS FILE IS MANAGED BY SALT STATE `test`.
### YOUR CHANGES WILL BE OVERWRITTEN!
{% set pillar = salt['pillar.get']('test') %}
{{ pillar.foo }}

View File

@ -0,0 +1,21 @@
test_create_temp_file:
file.managed:
- name: /tmp/test.file
- mode: 0666
- user: root
- group: root
- template: jinja
- contents: |
{% set pillar = salt['pillar.get']('test') %}
{{ pillar.foo }}
{{ pillar.bar }}
test_create_other_temp_file:
file.managed:
- name: /tmp/test2.file
- mode: 0444
- user: root
- group: root
- template: jinja
- source: salt://test/files/test.template

6
saltstack/salt/top.sls Normal file
View File

@ -0,0 +1,6 @@
base:
'salt-master':
- test
'minion-*':
- test