Skip to content

Instantly share code, notes, and snippets.

@renoirb
Last active October 4, 2017 01:05
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save renoirb/6346165 to your computer and use it in GitHub Desktop.
Save renoirb/6346165 to your computer and use it in GitHub Desktop.
Development environment overriding prod for manifest development

Workspace files:

workspace/salt-master/
  - Vagrantfile
  - etc/
    - salt/ 
      - master.d/
        - remotes.conf
        - NOTE: anything else that I want in ALL environments)
  - salt/
    - master
    - salt-dev/
      - NOTE: Woudl represent the base, but to override in development context
    - salt-webapps/
      - NOTE: Would represent the base specific to webapps (a different workspace) in dev context
    - pillar-dev/
      - NOTE: Would represent the pillar but in dev context
  - base/
    - NOTE: External git project with the base
  - pillar/
    - NOTE: External git project as the basic prod pillar files
#
# Development environment master file
# /etc/salt/master
file_roots:
base:
- /srv/salt
- /srv/salt-webapps
dev:
- /srv/salt-dev
- /srv/salt-webapps-dev
- /srv/salt
- /srv/salt-webapps
state_verbose: True
state_output: full
#state_top: vagrant.sls
pillar_roots:
base:
- /srv/pillar
dev:
- /srv/pillar-dev
- /srv/pillar
# The level of messages to send to the console.
# One of 'garbage', 'trace', 'debug', info', 'warning', 'error', 'critical'.
log_level: info
# The level of messages to send to the log file.
# One of 'garbage', 'trace', 'debug', info', 'warning', 'error', 'critical'.
log_level_logfile: info
#
# Backend configuration
# Used in both dev and base environment
#
fileserver_backend:
- roots
- git
gitfs_remotes:
- https://github.com/SmartReceipt/salt_logstash.git
# - file:///var/git/saltmaster
base:
'*':
- dhcp
- dns
- git
- groups
- hosts
- network
- mail
- mercurial
- ntp
- subversion
- sudo
- users
- logging
- lvm
- xfs
- monitor
'app*':
- apache.webplatform
- apache.docs
- apache.talk
- apache.blog
- apache.dabblet
- glusterfs
- mediawiki
- mediawiki.appserver
- mediawiki.scaler
- qwebirc
- qwebirc.daemon
- mediawiki.jobrunner
'backup*':
- backup
- backup.master
'bots*':
- bots
'code*':
- gerrit
'db*':
- backup.db
- mysql.server
- rsync
'deployment*':
- backup.mediawiki_xml
- backup.mediawiki_images
- backup.salt_master
- glusterfs
- mediawiki
- logging.syslog_ng
- logging.udp2log
- python
- python.mysqldb
'storage*':
- glusterfs
- glusterfs.server
- glusterfs.images_volume
- glusterfs.appstorage
'memcache*':
- memcached
'monitor*':
- monitor.gmetad
- monitor.web
- apache
- apache.ganglia
'project*':
- apache
- apache.buggenie
'kuma.webplatform.org':
- apache
- apache.kuma
- kuma
'piwik*':
- apache
- piwik
- apache.stats
- php.apache
- apache.disabled
# -*- mode: ruby -*-
# vi: set ft=ruby :
pref_interface = ['en0: Wi-Fi (AirPort)']
# Some auto-selection magic
# http://stackoverflow.com/questions/17729757/preferred-fallback-network-interfaces-with-vagrant
vm_interfaces = %x( VBoxManage list bridgedifs | grep ^Name ).gsub(/Name:\s+/, '').split("\n")
pref_interface = pref_interface.map {|n| n if vm_interfaces.include?(n)}.compact
$network_interface = pref_interface[0]
Vagrant.configure("2") do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.ssh.forward_agent = true
config.vm.network :public_network, :bridge => $network_interface
config.vm.define :deployment do |deployment|
deployment.vm.hostname = "deployment"
deployment.vm.network :private_network, ip: "10.10.11.2"
deployment.vm.synced_folder "etc/salt/master.d/", "/etc/salt/master.d"
deployment.vm.synced_folder "../base/", "/srv/salt"
deployment.vm.synced_folder "salt/salt-dev/", "/srv/salt-dev"
deployment.vm.synced_folder "../salt-webapps/", "/srv/salt-webapps"
deployment.vm.synced_folder "salt/salt-webapps-dev/", "/srv/salt-webapps-dev"
deployment.vm.synced_folder "../pillar/", "/srv/pillar"
deployment.vm.synced_folder "salt/pillar-dev/", "/srv/pillar-dev"
deployment.vm.synced_folder "../runner/", "/srv/runner"
deployment.vm.provider "virtualbox" do |v|
v.name = "deployment"
end
deployment.vm.provision :salt do |c|
c.minion_config = "salt/minion"
c.master_config = "salt/master"
c.minion_key = "salt/key/minion.pem"
c.minion_pub = "salt/key/minion.pub"
c.master_key = "salt/key/master.pem"
c.master_pub = "salt/key/master.pub"
c.install_master = true
c.seed_master = {deployment: "salt/key/master.pub", piwik0: "salt/key/minion.pub"}
c.run_highstate = false
c.accept_keys = true
c.verbose = true
c.bootstrap_options = "-D"
c.temp_config_dir = "/tmp"
end
end
config.vm.define :tracking0 do |tracking0|
tracking0.vm.hostname = "tracking0"
tracking0.vm.network :private_network, ip: "10.10.11.3"
tracking0.vm.provider "virtualbox" do |v|
v.name = "tracking0"
v.customize ["modifyvm", :id, "--memory", "2048"]
end
tracking0.vm.provision :salt do |c|
c.minion_config = "salt/minion"
c.minion_key = "salt/key/minion.pem"
c.minion_pub = "salt/key/minion.pub"
c.verbose = true
c.bootstrap_options = "-D"
c.temp_config_dir = "/tmp"
c.run_highstate = false
end
end
config.vm.define :lb0 do |lb0|
lb0.vm.hostname = "lb0"
lb0.vm.network :private_network, ip: "10.10.11.4"
lb0.vm.provider "virtualbox" do |v|
v.name = "lb0"
end
lb0.vm.provision :salt do |c|
c.minion_config = "salt/minion"
c.minion_key = "salt/key/minion.pem"
c.minion_pub = "salt/key/minion.pub"
c.verbose = true
c.bootstrap_options = "-D"
c.temp_config_dir = "/tmp"
c.run_highstate = false
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment