forked from infra/ansible
Merge branch 'master' of kishi/infra into master
This commit is contained in:
commit
ede4e49e33
4
host_vars/nabia.binary.kitchen
Normal file
4
host_vars/nabia.binary.kitchen
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
acme_san_domains:
|
||||||
|
- "librenms.binary.kitchen"
|
||||||
|
- "racktables.binary.kitchen"
|
16
roles/acme/defaults/main.yml
Normal file
16
roles/acme/defaults/main.yml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
acme_home: "/opt/acme"
|
||||||
|
acme_staging: False
|
||||||
|
|
||||||
|
acme_nsupdate_key: "/opt/acme/nsupdate.key"
|
||||||
|
acme_nsupdate_keyalgo: "hmac-sha512"
|
||||||
|
acme_nsupdate_server: "neon.binary-kitchen.net"
|
||||||
|
|
||||||
|
acme_sh_url: "https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh"
|
||||||
|
acme_dns_nsupdate_url: "https://raw.githubusercontent.com/Neilpang/acme.sh/master/dnsapi/dns_nsupdate.sh"
|
||||||
|
|
||||||
|
acme_reloadcmd: "/etc/ssl/private/reload.sh"
|
||||||
|
acme_key: "/etc/ssl/private/host.key"
|
||||||
|
acme_cert: "/etc/ssl/private/host.cert"
|
||||||
|
acme_ca: "/etc/ssl/private/host.ca"
|
||||||
|
acme_fullchain: "/etc/ssl/private/host.fullchain"
|
5
roles/acme/files/reload.sh
Executable file
5
roles/acme/files/reload.sh
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
[ -d '/etc/reload.d' ] && for x in "/etc/reload.d/"*; do
|
||||||
|
[ -e "$x" ] && "$x"
|
||||||
|
done
|
||||||
|
exit 0
|
86
roles/acme/tasks/main.yml
Normal file
86
roles/acme/tasks/main.yml
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
---
|
||||||
|
- name: Create acme home directory
|
||||||
|
file:
|
||||||
|
path: "{{ acme_home }}"
|
||||||
|
state: "directory"
|
||||||
|
|
||||||
|
- name: Get nsupdate.key
|
||||||
|
shell: "pdnsutil list-tsig-keys | grep '^acme-{{ inventory_hostname }}. {{ acme_nsupdate_keyalgo }}'"
|
||||||
|
register: "pdns_nsupdate_key"
|
||||||
|
failed_when: "False"
|
||||||
|
changed_when: "False"
|
||||||
|
delegate_to: "{{ acme_nsupdate_server }}"
|
||||||
|
|
||||||
|
- name: Update updatepolicy.aliases
|
||||||
|
lineinfile:
|
||||||
|
path: "/etc/powerdns/updatepolicy.aliases"
|
||||||
|
regexp: '^alias\["{{ inventory_hostname}}\."\]'
|
||||||
|
line: 'alias["{{ inventory_hostname }}."] = {"{{ ''.","''.join(acme_san_domains) }}."} '
|
||||||
|
delegate_to: "{{ acme_nsupdate_server }}"
|
||||||
|
|
||||||
|
- name: Generate nsupdate.key
|
||||||
|
shell: "pdnsutil generate-tsig-key 'acme-{{ inventory_hostname }}.' '{{ acme_nsupdate_keyalgo }}'"
|
||||||
|
register: "pdns_nsupdate_genkey"
|
||||||
|
when: "pdns_nsupdate_key is defined and pdns_nsupdate_key.rc != 0"
|
||||||
|
delegate_to: "{{ acme_nsupdate_server }}"
|
||||||
|
|
||||||
|
- name: Get nsupdate.key again
|
||||||
|
shell: "pdnsutil list-tsig-keys | grep '^acme-{{ inventory_hostname }}. {{ acme_nsupdate_keyalgo }}'"
|
||||||
|
register: "pdns_nsupdate_key"
|
||||||
|
when: "pdns_nsupdate_genkey is defined"
|
||||||
|
changed_when: "False"
|
||||||
|
delegate_to: "{{ acme_nsupdate_server }}"
|
||||||
|
|
||||||
|
- name: Write nsupdate.key to file
|
||||||
|
template:
|
||||||
|
src: "nsupdate.key.j2"
|
||||||
|
dest: "{{ acme_nsupdate_key }}"
|
||||||
|
when: "pdns_nsupdate_key is defined"
|
||||||
|
|
||||||
|
- name: Check acme.sh exists
|
||||||
|
stat:
|
||||||
|
path: "{{ acme_home }}/acme.sh"
|
||||||
|
register: "stat_acme_sh"
|
||||||
|
|
||||||
|
- name: Fetch acme.sh
|
||||||
|
get_url:
|
||||||
|
url: "{{ acme_sh_url }}"
|
||||||
|
dest: "/tmp/acme.sh"
|
||||||
|
mode: "0755"
|
||||||
|
register: "fetch_acme_sh"
|
||||||
|
when: "not stat_acme_sh.stat.exists"
|
||||||
|
|
||||||
|
- name: Install acme.sh
|
||||||
|
shell: "./acme.sh --home '{{ acme_home }}' --install"
|
||||||
|
args:
|
||||||
|
chdir: "/tmp"
|
||||||
|
creates: "{{ acme_home }}/acme.sh"
|
||||||
|
when: "fetch_acme_sh is defined"
|
||||||
|
|
||||||
|
- name: Create acme dnsapi directory
|
||||||
|
file:
|
||||||
|
path: "{{ acme_home }}/dnsapi"
|
||||||
|
state: "directory"
|
||||||
|
|
||||||
|
- name: Fetch acme.sh dns_nsupdate
|
||||||
|
get_url:
|
||||||
|
url: "{{ acme_dns_nsupdate_url }}"
|
||||||
|
dest: "{{ acme_home }}/dnsapi/"
|
||||||
|
mode: "0755"
|
||||||
|
|
||||||
|
- name: Create acme certificate directory
|
||||||
|
file:
|
||||||
|
path: "{{ acme_home }}/{{ inventory_hostname }}"
|
||||||
|
state: "directory"
|
||||||
|
|
||||||
|
- name: Copy reload.sh
|
||||||
|
copy:
|
||||||
|
src: "reload.sh"
|
||||||
|
dest: "{{ acme_reloadcmd }}"
|
||||||
|
mode: "0755"
|
||||||
|
|
||||||
|
- name: Issue certificate
|
||||||
|
shell: "{{ lookup('template','acme.sh.request.j2').replace('\n',' ') }}"
|
||||||
|
args:
|
||||||
|
chdir: "{{ acme_home }}"
|
||||||
|
creates: "{{ acme_cert }}"
|
22
roles/acme/templates/acme.sh.request.j2
Normal file
22
roles/acme/templates/acme.sh.request.j2
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
NSUPDATE_KEY="{{ acme_nsupdate_key }}"
|
||||||
|
NSUPDATE_SERVER="{{ acme_nsupdate_server }}"
|
||||||
|
"{{ acme_home }}/acme.sh"
|
||||||
|
--home "{{ acme_home }}"
|
||||||
|
--log
|
||||||
|
--issue
|
||||||
|
-k 4096
|
||||||
|
-d "{{ inventory_hostname }}"
|
||||||
|
--dns dns_nsupdate
|
||||||
|
{% if acme_san_domains is defined %}
|
||||||
|
{% for domain in acme_san_domains %}
|
||||||
|
-d "{{ domain }}"
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% if acme_staging is defined and acme_staging %}
|
||||||
|
--staging
|
||||||
|
{% endif %}
|
||||||
|
--cert-file "{{ acme_cert }}"
|
||||||
|
--key-file "{{ acme_key }}"
|
||||||
|
--ca-file "{{ acme_ca }}"
|
||||||
|
--fullchain-file "{{ acme_fullchain }}"
|
||||||
|
--reloadcmd "{{ acme_reloadcmd }}"
|
4
roles/acme/templates/nsupdate.key.j2
Normal file
4
roles/acme/templates/nsupdate.key.j2
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
key acme-{{ inventory_hostname }}. {
|
||||||
|
algorithm {{ acme_nsupdate_keyalgo }};
|
||||||
|
secret "{{ pdns_nsupdate_key.stdout.split(' ')[2] }}";
|
||||||
|
};
|
1
simulatepb.sh
Executable file → Normal file
1
simulatepb.sh
Executable file → Normal file
@ -2,3 +2,4 @@
|
|||||||
export ANSIBLE_NOCOWS=1
|
export ANSIBLE_NOCOWS=1
|
||||||
test -e ./ansible.log && rm ./ansible.log
|
test -e ./ansible.log && rm ./ansible.log
|
||||||
ansible-playbook site.yml --check --diff
|
ansible-playbook site.yml --check --diff
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user