Skip to content

Instantly share code, notes, and snippets.

@silenius
Created November 4, 2016 12:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save silenius/dc60775f23cc81356b414380f48f3ae4 to your computer and use it in GitHub Desktop.
Save silenius/dc60775f23cc81356b414380f48f3ae4 to your computer and use it in GitHub Desktop.
{% set ezjail_config = salt['pillar.get']('ezjail:conf') %}
include:
- ezjail.install
- ezjail.service
ezjail_conf:
file.managed:
- name: /usr/local/etc/ezjail.conf
- user: root
- group: wheel
- mode: 755
- contents: |
{%- for k,v in ezjail_config.items() %}
{{ k }}="{{ v }}"
{%- endfor %}
- require:
- pkg: ezjail
ezjail_init:
cmd.run:
- name: /usr/local/bin/ezjail-admin install
- unless: test -d {{ ezjail_config['ezjail_jaildir'] }}
- require:
- file: ezjail_conf
ezjail_flavours:
file.recurse:
- name: /usr/jails/flavours
- source: salt://ezjail/files/flavours
- dir_mode: 755
- file_mode: 755
- user: root
- group: wheel
- template: jinja
- clean: True
- require:
- cmd: ezjail_init
{%- for jail in salt['pillar.get']('ezjail:jails').values() %}
{% if jail.get('present', True) %}
ezjail_{{ jail.name }}:
cmd.run:
- name: /usr/local/bin/ezjail-admin create -f {{ jail.flavour }} {{ jail.name }} {{ jail.interface }}\|{{ jail.ip }}
- unless: test -d {{ ezjail_config['ezjail_jaildir'] }}/{{ jail.name }}
- require:
- cmd: ezjail_init
- file: ezjail_flavours
ezjail_{{ jail.name }}_start:
cmd.wait:
- name: /usr/local/bin/ezjail-admin start {{ jail.name }}
- watch:
- cmd: ezjail_{{ jail.name }}
- require:
- service: ezjail
{% if jail.minion_id %}
ezjail_{{ jail.name }}_force_minion_id:
file.managed:
- name: /usr/jails/{{ jail.name }}/usr/local/etc/salt/minion.d/01-id.conf
- contents: |
id: {{ jail.minion_id }}
- watch:
- cmd: ezjail_{{ jail.name }}_start
- require_in:
- cmd: ezjail_{{ jail.name }}_start_minion
{% endif %}
ezjail_{{ jail.name }}_start_minion:
cmd.wait:
- name: jexec -U root {{ jail.name }} service salt_minion onestart
- watch:
- cmd: ezjail_{{ jail.name }}_start
ezjail_{{ jail.name }}_accept_key:
event:
- wait
- name: jail/created
- data:
name: {{ jail.name }}
ip: {{ jail.ip }}
- watch:
- cmd: ezjail_{{ jail.name }}_start
{% else %}
ezjail_{{ jail.name }}_remove:
cmd.run:
- name: /usr/local/bin/ezjail-admin delete -fw {{ jail.name }}
- onlyif: test -d {{ ezjail_config['ezjail_jaildir'] }}/{{ jail.name }}
ezjail_{{ jail.name }}_remove_key:
event:
- wait
- name: jail/removed
- data:
name: {{ jail.name }}
ip: {{ jail.ip }}
- watch:
- cmd: ezjail_{{ jail.name }}_remove
{% endif %}
{%- endfor %}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment