This role obtains HTTPS certificates using the ACME protocol from Let's Encrypt, the acme.sh utility, and the DNS-01 challenge.
Name | Required | Example | Description |
---|---|---|---|
acme_batch |
no | <list> |
Supply the below parameters as a list, see examples. |
domain |
yes | foobar.com |
Domain to obtain certificates for. |
provider |
yes | cf |
DNS provider to use. See How to use DNS API for details. E.g. if the command is --dns dns_cf , then this argument should be cf . |
credential |
yes | See in Examples | Dictionary holding all your export ... variables, as explained on the above link. |
wildcard |
no | true |
If true , obtains not only the base certificate, but the wildcard certificate too, via SAN. E.g. if the domain is foobar.com , the certificate will be valid for *.foobar.com as well. Defaults to false . |
cronjob |
no | true |
If true , deploy cronjob to automatically renew the certificate every month. Defaults to false . |
staging |
no | true |
If true , uses staging servers instead of production. Use for testing. Defaults to false . |
sleep |
no | 60 |
Wait this many seconds for DNS updates to propagate. Defaults to 20 . |
min_days |
no | 45 |
If the certificate already exists, and expires sooner than this many days, renew it. Defaults to 60 . Since Let's Encrypt certs are valid for 90 days, a value of 60 triggers a renewal if the cert is older than 30 days. This also means that you can effectively disable the renewal by setting this to 0 . Nevertheless, it's useful to leave it on, since it tests whether consecutive renewals in the future will work or not. |
reload_cmd |
no | /sbin/nginx -s reload |
If specified and cronjob is true , this command is also added to the cronjob, and runs 1 hour after the renewal. Otherwise no reload command is run. |
- include_role:
name: noobient.acme
vars:
domain: foo.com
provider: cf
credential:
CF_Key: 'asdf1234'
CF_Email: '[email protected]'
- include_role:
name: noobient.acme
vars:
domain: bar.com
provider: cf
credential:
CF_Token: 'asdf1234'
CF_Account_ID: 'qwer5678'
CF_Zone_ID: 'zxcv3456'
staging: true
wildcard: true
cronjob: true
sleep: 60
min_days: 45
reload_cmd: /sbin/nginx -s reload
Key | Type | Example | Description |
---|---|---|---|
acme.changed |
boolean | false |
true if acme.cert_file has been updated, false if not. |
acme.san |
list | [*.foo.com, foo.com] |
List of certificate Subject Alternative Names. |
acme.cert_file |
string | /etc/foo.com/foo.com.cer |
Path to deployed certificate. |
acme.key_file |
string | /etc/foo.com/foo.com.key |
Path to deployed private key. |
acme.ca_file |
string | /etc/foo.com/ca.cer |
Path to deployed CA certificate. |
acme.fullchain_file |
string | /etc/foo.com/fullchain.cer |
Path to deployed full certificate chain (CA + own). |
Platform | Support | Status |
---|---|---|
Linter | ✅ | |
AlmaLinux 8 | ✅ | |
AlmaLinux 9 | ✅ | |
Fedora 40 | ✅ | |
Fedora 41 | ✅ | |
Ubuntu 20.04 | ✅ | |
Ubuntu 22.04 | ✅ | |
Ubuntu 24.04 | ✅ |