add the salt playground :)
This commit is contained in:
parent
1d19508b1d
commit
68e0ed1f4a
|
@ -0,0 +1,20 @@
|
||||||
|
# Create a Virtual Machine
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dd if=/dev/zero of=salt.hda bs=1M count=1 seek=10239
|
||||||
|
wget http://cdimage.debian.org/debian-cd/8.6.0/amd64/iso-cd/debian-8.6.0-amd64-netinst.iso
|
||||||
|
kvm -hda salt.hda -m 1024 -smp 2 -net nic,model=e1000 -net user -cdrom
|
||||||
|
```
|
||||||
|
|
||||||
|
Now run the Debian installation. Hostname: `server1`
|
||||||
|
|
||||||
|
# Bootstrap
|
||||||
|
|
||||||
|
Configure a recent version, eg. *stretch*
|
||||||
|
|
||||||
|
```shell
|
||||||
|
apt-get install salt-master salt-minion
|
||||||
|
```
|
||||||
|
|
||||||
|
Set `master` to `localhost` in `/etc/salt/minion`, restart the
|
||||||
|
minion. `salt-key -A` to accept the minion in the master.
|
|
@ -0,0 +1,30 @@
|
||||||
|
lxc.utsname = {{ id }}
|
||||||
|
# Handled by lxc@.service
|
||||||
|
lxc.start.auto = 0
|
||||||
|
lxc.rootfs = /var/lib/lxc/{{ id }}/rootfs
|
||||||
|
lxc.rootfs.backend = dir
|
||||||
|
|
||||||
|
lxc.autodev = 1
|
||||||
|
lxc.kmsg = 0
|
||||||
|
|
||||||
|
{% for interface in container.interfaces %}
|
||||||
|
lxc.network.type={{ interface['type'] }}
|
||||||
|
lxc.network.flags=up
|
||||||
|
{% if interface['type'] == 'veth' %}
|
||||||
|
lxc.network.veth.pair={{ id }}-{{ interface['type'] }}
|
||||||
|
{% endif %}
|
||||||
|
{% if interface.get('v4') %}
|
||||||
|
lxc.network.ipv4={{ interface['v4'] }}
|
||||||
|
{% endif %}
|
||||||
|
{% if interface.get('bridge') %}
|
||||||
|
lxc.network.link={{ interface['bridge'] }}
|
||||||
|
{% endif %}
|
||||||
|
{% if interface.get('name') %}
|
||||||
|
lxc.network.name={{ interface['name'] }}
|
||||||
|
{% endif %}
|
||||||
|
#lxc.network.ipv4.gateway=
|
||||||
|
#lxc.network.ipv6=
|
||||||
|
#lxc.network.ipv6.gateway=fe80::1
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
## TODO: limits + caps
|
|
@ -0,0 +1,38 @@
|
||||||
|
public:
|
||||||
|
interfaces:
|
||||||
|
- type: veth
|
||||||
|
bridge: br-core
|
||||||
|
name: core
|
||||||
|
v4: 172.20.72.1/26
|
||||||
|
- type: phys
|
||||||
|
bridge: bond0.2
|
||||||
|
name: public
|
||||||
|
v4: 172.20.76.1/23
|
||||||
|
|
||||||
|
servers:
|
||||||
|
interfaces:
|
||||||
|
- type: veth
|
||||||
|
bridge: br-core
|
||||||
|
name: core
|
||||||
|
v4: 172.20.72.2/26
|
||||||
|
|
||||||
|
priv1:
|
||||||
|
interfaces:
|
||||||
|
- type: veth
|
||||||
|
bridge: br-core
|
||||||
|
name: core
|
||||||
|
v4: 172.20.72.3/26
|
||||||
|
|
||||||
|
priv2:
|
||||||
|
interfaces:
|
||||||
|
- type: veth
|
||||||
|
bridge: br-core
|
||||||
|
name: core
|
||||||
|
v4: 172.20.72.4/26
|
||||||
|
|
||||||
|
upstream1:
|
||||||
|
interfaces:
|
||||||
|
- type: veth
|
||||||
|
bridge: br-core
|
||||||
|
name: core
|
||||||
|
v4: 172.20.72.5/26
|
|
@ -0,0 +1,35 @@
|
||||||
|
{%- import_yaml "lxc-containers-1/containers.yaml" as containers -%}
|
||||||
|
|
||||||
|
lxc:
|
||||||
|
pkg.installed: []
|
||||||
|
|
||||||
|
{% for id, container in containers.items() %}
|
||||||
|
|
||||||
|
/var/lib/lxc/{{ id }}:
|
||||||
|
cmd.run:
|
||||||
|
- name: lxc-create -n {{ id }} -B dir -t download -- -d debian -r jessie -a amd64 -- --packages salt-minion
|
||||||
|
- require:
|
||||||
|
- pkg: lxc
|
||||||
|
- creates: /var/lib/lxc/{{ id }}
|
||||||
|
|
||||||
|
/var/lib/lxc/{{ id }}/config:
|
||||||
|
file.managed:
|
||||||
|
- source: salt://lxc-containers-1/config
|
||||||
|
- template: 'jinja'
|
||||||
|
- context:
|
||||||
|
id: {{ id }}
|
||||||
|
container: {{ container }}
|
||||||
|
|
||||||
|
autostart-{{ id }}:
|
||||||
|
service.enabled:
|
||||||
|
- name: lxc@{{ id }}
|
||||||
|
require_in:
|
||||||
|
file: /var/lib/lxc/{{ id }}/config
|
||||||
|
|
||||||
|
start-{{ id }}:
|
||||||
|
service.running:
|
||||||
|
- name: lxc@{{ id }}
|
||||||
|
require:
|
||||||
|
- service: autostart-{{ id }}
|
||||||
|
|
||||||
|
{% endfor %}
|
|
@ -0,0 +1,2 @@
|
||||||
|
lxc:
|
||||||
|
pkg.installed: []
|
|
@ -0,0 +1,6 @@
|
||||||
|
salt-master:
|
||||||
|
pkg.installed: []
|
||||||
|
service.running:
|
||||||
|
- require:
|
||||||
|
- pkg: salt-master
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
{% set bond_slaves = ['eth1', 'eth2'] %}
|
||||||
|
|
||||||
|
{% for slave in bond_slaves %}
|
||||||
|
{{ slave }}:
|
||||||
|
network.managed:
|
||||||
|
- enabled: True
|
||||||
|
type: slave
|
||||||
|
master: bond0
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
bond0:
|
||||||
|
network.managed:
|
||||||
|
- name: bond0
|
||||||
|
proto: manual
|
||||||
|
type: bond
|
||||||
|
mode: 802.3ad
|
||||||
|
slaves: {{ ' '.join(bond_slaves) }}
|
||||||
|
miimon: 100
|
||||||
|
|
||||||
|
{% for vlan in range(1, 15) %}
|
||||||
|
bond0.{{ vlan }}:
|
||||||
|
network.managed:
|
||||||
|
- type: vlan
|
||||||
|
use:
|
||||||
|
- network: bond0
|
||||||
|
require:
|
||||||
|
- network: bond0
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
br-core:
|
||||||
|
network.managed:
|
||||||
|
- type: bridge
|
||||||
|
ports: bond0.1
|
||||||
|
proto: manual
|
||||||
|
bypassfirewall: True
|
||||||
|
use:
|
||||||
|
- network: bond0.1
|
||||||
|
require:
|
||||||
|
- network: bond0.1
|
||||||
|
|
||||||
|
|
||||||
|
br-public:
|
||||||
|
network.managed:
|
||||||
|
- type: bridge
|
||||||
|
ports: bond0.2
|
||||||
|
proto: manual
|
||||||
|
bypassfirewall: True
|
||||||
|
use:
|
||||||
|
- network: bond0.2
|
||||||
|
require:
|
||||||
|
- network: bond0.2
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
base:
|
||||||
|
'server1':
|
||||||
|
- salt-master
|
||||||
|
- server1-network
|
||||||
|
- lxc-containers-1
|
Loading…
Reference in New Issue