Skip to content

Commit 946e2d0

Browse files
Julien LEVIEILmyii
Julien LEVIEIL
authored andcommitted
feat(freebsd): add FreeBSD support
1 parent 52eec77 commit 946e2d0

File tree

10 files changed

+128
-7
lines changed

10 files changed

+128
-7
lines changed

vault/config/clean.sls

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# -*- coding: utf-8 -*-
22
# vim: ft=sls syntax=yaml softtabstop=2 tabstop=2 shiftwidth=2 expandtab autoindent
3+
{% from "vault/map.jinja" import vault with context %}
34

45
vault-config-clean-file-absent:
56
file.absent:
6-
- name: /etc/vault
7+
- name: {{ vault.config_path }}/vault

vault/config/config.sls

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
vault-config-config-file-serialize:
77
file.serialize:
8-
- name: /etc/vault/conf.d/config.json
8+
- name: {{ vault.config_path }}/vault/conf.d/config.json
99
- encoding: utf-8
1010
- formatter: json
1111
- dataset: {{ vault.config | json }}

vault/config/self-sign.sls

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@ vault-config-self-signed-cmd-script:
1212
- source: salt://vault/files/cert-gen.sh.j2
1313
- template: jinja
1414
- args: {{ vault.self_signed_cert.hostname }} {{ vault.self_signed_cert.password }}
15-
- cwd: /etc/vault
16-
- creates: /etc/vault/{{ vault.self_signed_cert.hostname }}.pem
15+
- cwd: {{ vault.config_path }}/vault
16+
- creates: {{ vault.config_path }}/vault/{{ vault.self_signed_cert.hostname }}.pem

vault/defaults.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ vault:
1010
verify_download: true
1111
self_signed_cert:
1212
enabled: false
13+
config_path: /etc
1314
config:
1415
listener:
1516
tcp:

vault/files/vault.conf.j2

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ script
1818
{%- if vault.dev_mode %}
1919
-dev \
2020
{% else %}
21-
-config="/etc/vault/conf.d/config.json" \
21+
-config="{{ vault.config_path }}/vault/conf.d/config.json" \
2222
{% endif -%}
2323
>>/var/log/vault.log 2>&1
2424
end script

vault/files/vault.service.fbsd.j2

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
{% from "vault/map.jinja" import vault with context -%}
2+
#!/bin/sh
3+
4+
# PROVIDE: vault
5+
# REQUIRE: DAEMON
6+
# KEYWORD: shutdown
7+
#
8+
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
9+
# to enable this service:
10+
#
11+
# vault_enable (bool):boolSet it to YES to enable vault.
12+
#toDefault is "NO".
13+
# vault_user (user):userSet user to run vault.
14+
#toDefault is "vault".
15+
# vault_group (group):groupSet group to run vault.
16+
#toDefault is "vault".
17+
# vault_config (dir):dirSet vault config file.
18+
#vaultDefault is "/usr/local/etc/vault/conf.d/vault.json".
19+
# vault_syslog_output_enable (bool):boolSet to enable syslog output.
20+
#boolSetDefault is "NO". See daemon(8).
21+
# vault_syslog_output_priority (str):strSet syslog priority if syslog enabled.
22+
#strSetDefault is "info". See daemon(8).
23+
# vault_syslog_output_facility (str):strSet syslog facility if syslog enabled.
24+
#strSetDefault is "daemon". See daemon(8).
25+
26+
. /etc/rc.subr
27+
28+
name=vault
29+
rcvar=vault_enable
30+
31+
load_rc_config $name
32+
33+
: ${vault_enable:="NO"}
34+
: ${vault_user:="vault"}
35+
: ${vault_group:="vault"}
36+
: ${vault_config:="{{ vault.config_path }}/vault/conf.d/config.json"}
37+
: ${vault_env:="HOME=/var/lib/vault"}
38+
39+
DAEMON=$(/usr/sbin/daemon 2>&1 | grep -q syslog ; echo $?)
40+
if [ ${DAEMON} -eq 0 ]; then
41+
: ${vault_syslog_output_enable:="NO"}
42+
: ${vault_syslog_output_priority:="info"}
43+
: ${vault_syslog_output_facility:="daemon"}
44+
if checkyesno vault_syslog_output_enable; then
45+
vault_syslog_output_flags="-t ${name} -T ${name}"
46+
47+
if [ -n "${vault_syslog_output_priority}" ]; then
48+
vault_syslog_output_flags="${vault_syslog_output_flags} -s ${vault_syslog_output_priority}"
49+
fi
50+
51+
if [ -n "${vault_syslog_output_facility}" ]; then
52+
vault_syslog_output_flags="${vault_syslog_output_flags} -l ${vault_syslog_output_facility}"
53+
fi
54+
fi
55+
else
56+
vault_syslog_output_enable="NO"
57+
vault_syslog_output_flags=""
58+
fi
59+
60+
pidfile=/var/run/vault.pid
61+
procname="/usr/local/bin/vault"
62+
command="/usr/sbin/daemon"
63+
command_args="-f ${vault_syslog_output_flags} -p ${pidfile} /usr/bin/env ${vault_env} ${procname} server {% if vault.dev_mode %} -dev {% else %} -config=${vault_config} {% endif %}"
64+
65+
extra_commands="reload monitor"
66+
monitor_cmd=vault_monitor
67+
start_precmd=vault_startprecmd
68+
{% if not vault.dev_mode %}
69+
required_files="$vault_config"
70+
{% endif %}
71+
72+
vault_monitor()
73+
{
74+
sig_reload=USR1
75+
run_rc_command "reload"
76+
}
77+
78+
vault_startprecmd()
79+
{
80+
if [ ! -e ${pidfile} ]; then
81+
install -o ${vault_user} -g ${vault_group} /dev/null ${pidfile};
82+
fi
83+
84+
if [ ! -d ${vault_dir} ]; then
85+
install -d -o ${vault_user} -g ${vault_group} ${vault_dir}
86+
fi
87+
}
88+
89+
run_rc_command "$1"

vault/files/vault.service.j2

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ After=network-online.target
88
User=vault
99
Group=vault
1010
PIDFile=/var/run/vault/vault.pid
11-
ExecStart=/usr/local/bin/vault server {% if vault.dev_mode %} -dev {% else %} -config=/etc/vault/conf.d {% endif %}
11+
ExecStart=/usr/local/bin/vault server {% if vault.dev_mode %} -dev {% else %} -config={{ vault.config_path }}/vault/conf.d {% endif %}
1212
ExecReload=/bin/kill -HUP $MAINPID
1313
KillMode=process
1414
KillSignal=SIGTERM

vault/osfamilymap.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,11 @@ Arch:
1313

1414
MacOS:
1515
platform: darwin_amd64
16+
17+
FreeBSD:
18+
gpg_pkg: gnupg
19+
platform: freebsd_amd64
20+
config_path: /usr/local/etc
21+
service:
22+
path: /usr/local/etc/rc.d/vault
23+
source: salt://vault/files/vault.service.fbsd.j2

vault/package/install.sls

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ vault-package-install-file-symlink:
5353
- target: /opt/vault/bin/vault
5454
- force: true
5555

56+
{% if grains['os_family'] != "FreeBSD" %}
5657
vault-package-install-pkg-installed:
5758
pkg.installed:
5859
- name: {{ vault.setcap_pkg }}
@@ -64,3 +65,21 @@ vault-package-install-cmd-run:
6465
- pkg: vault-package-install-pkg-installed
6566
- onchanges:
6667
- archive: vault-package-install-archive-extracted
68+
{% else %}
69+
vault-package-install-login-file:
70+
file.replace:
71+
- name: /etc/login.conf
72+
- pattern: |
73+
^daemon:\\(?:\n|\r\n?)(.+)$(?:\n|\r\n?)^(\t):tc=default:
74+
- flags: ['MULTILINE']
75+
- repl: |
76+
daemon:\\
77+
\t:memorylocked=256M:\\
78+
\t:tc=default:
79+
80+
vault-package-install-cmd-run:
81+
cmd.run:
82+
- name: cap_mkdb /etc/login.conf
83+
- onchanges:
84+
- file: vault-package-install-login-file
85+
{% endif %}

vault/service/init.sls

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ vault-service-init-file-managed:
88
- name: {{ vault.service.path }}
99
- source: {{ vault.service.source }}
1010
- template: jinja
11-
{% if grains.init == 'upstart' %}
11+
{% if grains.os_family == "FreeBSD" %}
12+
- mode: 555
13+
{% endif %}
14+
{% if grains.get('init', '') == 'upstart' %}
1215
cmd.run:
1316
- name: initctl reload-configuration
1417
- onchanges:

0 commit comments

Comments
 (0)