L-P.acmetool
ansible-role-acmetool
acmetool
をインストール、設定、および実行して、Let's EncryptのTLS証明書を生成します。
acmetool
は、redirector
モードを使用するように設定されます。ポート80でリッスンし、チャレンジリクエストでないものをすべてリダイレクトします(HTTP 308)。
詳細はGitHubのacmeを参照してください。
要件
become: true
が必要です。ほとんどの操作はrootとして実行する必要がありますが、残りはこのロールによって作成されるacme
ユーザーの下で実行されます。acmetool
がチャレンジを提供できるように、ポート80/TCPを開放する必要があります。デフォルトで
redirector
モードが使用されるため、HTTPサーバーを実行する必要はありません。このロールを実行した後に、生成された証明書を使用するサーバーをインストールできます。プロバイダーを選択し、そのAPIエンドポイントを
acmetool_server
に設定してください。詳細は以下を参照。自動更新には
cron
パッケージが必要です。
ロール変数
必須
# LetsEncryptでドメインを登録するために使うメールアドレス。
acmetool_email: "[email protected]"
# 登録するドメインのスペース区切りリスト。
acmetool_domains: "www.example.com example.com"
その他
# CAサーバー。テスト目的でデフォルトはacme-stagingサーバーです。
# 本番サーバーに変更する必要があります:
# https://acme-v01.api.letsencrypt.org/directory
acmetool_server: "https://acme.example.com/directory"
# サーバーがECキーをサポートしていない場合(例:murmur)、これをRSAに変更します。
acmetool_key_type: "ecdsa"
# acmetoolがroot(sudo)としてフックを実行することを信頼できない場合は、これをfalseに設定します。
acmetool_enable_hooks: false
完全なリストはdefaultsを参照してください。
例のプレイブック
- hosts: all
roles:
- { role: "L-P.acmetool", become: true }
Debianでは、サービスはインストール時にデフォルト設定で自動的に有効になり、起動されるため、nginxのインストールに失敗し、dpkgが半壊状態になります。
これを避けるために、acmetool
とnginx
のインストールの間に以下のプレイを実行できます。nginxがまだ設定されていない場合にのみ実行されます。
- hosts: all
become: true
tasks:
- name: Stop acmetool
tags: "nginx"
command: "service acmetool stop"
args:
creates: "/etc/nginx/nginx.conf"
同様の方法で失敗する他のサービスに適応できます。
ライセンス
MIT