Initial commit

This commit is contained in:
Raphaël Hertzog
2016-06-21 12:33:55 +02:00
commit dcfdc638b9
14 changed files with 274 additions and 0 deletions
+8
View File
@@ -0,0 +1,8 @@
# -*- coding: utf-8 -*-
# vim: ft=sls
{% from "letsencrypt-sh/map.jinja" import letsencrypt_sh with context %}
letsencrypt-sh-pkg-apache:
pkg.installed:
- name: {{ letsencrypt_sh.pkg_apache }}
+22
View File
@@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
# vim: ft=sls
{% from "letsencrypt-sh/map.jinja" import letsencrypt_sh with context %}
letsencrypth-sh-config:
file.managed:
- name: {{ letsencrypt_sh.config_file }}
- source: salt://letsencrypt-sh/files/config.sh
- mode: 644
- user: root
- group: root
- template: jinja
letsencrypt-sh-domains:
file.managed:
- name: {{ letsencrypt_sh.domains_txt }}
- source: salt://letsencrypt-sh/files/domains.txt
- mode: 644
- user: root
- group: root
- template: jinja
+21
View File
@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# vim: ft=sls
{% from "letsencrypt-sh/map.jinja" import letsencrypt_sh with context %}
{% if letsencrypt_sh.cron_enabled %}
letsencrypt-sh-cron:
cron.present:
- name: {{ letsencrypt_sh.cron_command }}
- user: root
- identifier: letsencrypt-sh-cron
- minute: {{ letsencrypt_sh.cron_minute }}
- hour: {{ letsencrypt_sh.cron_hour }}
- dayweek: {{ letsencrypt_sh.cron_dayweek }}
- comment: Renew TLS certificates with letsencrypt.org
{% else %}
disable-letsencrypt-sh-cron:
cron.absent:
- user: root
- identifier: letsencrypt-sh-cron
{% endif %}
+13
View File
@@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
# vim: ft=yaml
letsencrypt_sh:
pkg: 'letsencrypt.sh'
pkg_apache: 'letsencrypt.sh-apache2'
config_file: '/etc/letsencrypt.sh/conf.d/defaults.sh'
basedir: '/var/lib/letsencrypt.sh'
domains_txt: '/var/lib/letsencrypt.sh/domains.txt'
cron_command: 'letsencrypt.sh --cron >/var/log/letsencrypt.sh.log 2>&1; res=$?; [ $res -eq 0 ] || cat /var/log/letsencrypt.sh.log; exit $res'
cron_minute: random
cron_hour: random
cron_dayweek: random
cron_enabled: True
+74
View File
@@ -0,0 +1,74 @@
{% set cfg_client = salt['pillar.get']('letsencrypt-sh:config', {}) -%}
{%- macro get_config(configname, default_value) -%}
{%- set varname = configname.replace("-", "_") -%}
{%- if configname in cfg_client -%}
{{ varname|upper }}="{{ cfg_client[configname] }}"
{%- else -%}
#{{ varname|upper }}="{{ default_value }}"
{%- endif -%}
{%- endmacro -%}
# This file is managed by Salt, do not edit by hand!
# Based on letsencrypt.sh version 0.1.0 default config
########################################################
# This is the main config file for letsencrypt.sh #
# #
# Default values of this config are in comments #
########################################################
# Path to certificate authority (default: https://acme-v01.api.letsencrypt.org/directory)
{{ get_config('ca', 'https://acme-v01.api.letsencrypt.org/directory') }}
# Path to license agreement (default: https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2015.pdf)
{{ get_config('license', 'https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2015.pdf') }}
# Which challenge should be used? Currently http-01 and dns-01 are supported
{{ get_config('challengetype', 'http-01') }}
# Base directory for account key, generated certificates and list of domains (default: $SCRIPTDIR -- uses config directory if undefined)
{{ get_config('basedir', '/var/lib/letsencrypt.sh') }}
# Output directory for challenge-tokens to be served by webserver or deployed in HOOK (default: $BASEDIR/.acme-challenges)
{{ get_config('wellknown', '/var/lib/letsencrypt.sh/acme-challenges') }}
# Location of private account key (default: $BASEDIR/private_key.pem)
{{ get_config('private-key', '${BASEDIR}/private_key.pem') }}
# Location of private account registration information (default: $BASEDIR/private_key.json)
{{ get_config('private-key-json', '${BASEDIR}/private_key.json') }}
# Default keysize for private keys (default: 4096)
{{ get_config('keysize', '4096') }}
# Path to openssl config file (default: <unset> - tries to figure out system default)
{{ get_config('openssl_cnf', '') }}
# Program or function called in certain situations
#
# After generating the challenge-response, or after failed challenge (in this case altname is empty)
# Given arguments: clean_challenge|deploy_challenge altname token-filename token-content
#
# After successfully signing certificate
# Given arguments: deploy_cert domain path/to/privkey.pem path/to/cert.pem path/to/fullchain.pem
#
# BASEDIR and WELLKNOWN variables are exported and can be used in an external program
# default: <unset>
{{ get_config('hook', '') }}
# Chain clean_challenge|deploy_challenge arguments together into one hook call per certificate (default: no)
{{ get_config('hook-chain', 'no') }}
# Minimum days before expiration to automatically renew certificate (default: 30)
{{ get_config('renew-days', '30') }}
# Regenerate private keys instead of just signing new certificates on renewal (default: no)
{{ get_config('private-key-renew', 'no') }}
# Which public key algorithm should be used? Supported: rsa, prime256v1 and secp384r1
{{ get_config('key-algo', 'rsa') }}
# E-mail to use during the registration (default: <unset>)
{{ get_config('contact-email', '') }}
# Lockfile location, to prevent concurrent access (default: $BASEDIR/lock)
{{ get_config('lockfile', '${BASEDIR}/lock') }}
+5
View File
@@ -0,0 +1,5 @@
{%- from "letsencrypt-sh/map.jinja" import letsencrypt_sh with context -%}
# This file is managed by Salt, do not edit by hand!
{% for domain in letsencrypt_sh.domains -%}
{{ domain }}
{% endfor -%}
+8
View File
@@ -0,0 +1,8 @@
# -*- coding: utf-8 -*-
# vim: ft=sls
include:
- letsencrypt-sh.install
- letsencrypt-sh.config
- letsencrypt-sh.apache
- letsencrypt-sh.cron
+8
View File
@@ -0,0 +1,8 @@
# -*- coding: utf-8 -*-
# vim: ft=sls
{% from "letsencrypt-sh/map.jinja" import letsencrypt_sh with context %}
letsencrypt-sh-pkg:
pkg.installed:
- name: {{ letsencrypt_sh.pkg }}
+29
View File
@@ -0,0 +1,29 @@
# -*- coding: utf-8 -*-
# vim: ft=jinja
{## Start with defaults from defaults.sls ##}
{% import_yaml 'letsencrypt-sh/defaults.yaml' as default_settings %}
{##
Setup variable using grains['os_family'] based logic, only add key:values here
that differ from whats in defaults.yaml
##}
{% set os_family_map = salt['grains.filter_by']({
'Debian': {},
'Suse': {},
'Arch': {},
'RedHat': {},
}
, grain="os_family"
, merge=salt['pillar.get']('letsencrypt-sh:lookup'))
%}
{## Merge the os_family_map to the default settings ##}
{% do default_settings.letsencrypt_sh.update(os_family_map) %}
{## Merge in letsencrypt-sh pillar ##}
{% set letsencrypt_sh = salt['pillar.get'](
'letsencrypt-sh',
default=default_settings.letsencrypt_sh,
merge=True
)
%}