ansibleguy.infra_certs
Ansibleロール - 証明書ジェネレーター
Linuxサーバーで使用する証明書を作成するためのAnsibleロールです。
テスト済みのOS:
- Debian 11
- Debian 12
インストール方法
# 最新版
ansible-galaxy role install git+https://github.com/ansibleguy/infra_certs
# galaxyからのインストール
ansible-galaxy install ansibleguy.infra_certs
# カスタムロールパスへのインストール
ansible-galaxy install ansibleguy.infra_certs --roles-path ./roles
# 依存関係のインストール
ansible-galaxy install -r requirements.yml
使い方
シンプルなAnsible GUIが欲しいですか?私の Ansible WebUI をチェックしてください。
注意点
自己署名証明書と最小CAモードでは、実行ごとに1つの証明書しか作成されません。
再実行の場合は、'certs'タグを使用することでオーバーヘッドを節約できます。
LetsEncryptモードでは、定義された複数の証明書を作成または削除します。
設定例
LetsEncryptの設定例:
certs:
mode: 'le_certbot'
path: '/etc/apache2/ssl'
letsencrypt:
certs:
myNiceSite:
domains: ['myRandomSite.net', 'ansibleguy.net']
email: '[email protected]'
service: 'apache'
自己署名証明書の設定例:
certs:
mode: 'selfsigned' # もしくは'snakeoil'(より早い)
path: '/etc/nginx/ssl'
group_key: 'nginx'
owner_cert: 'nginx'
cert:
cn: '私の素晴らしい証明書!'
org: 'AnsibleGuy'
country: 'AT'
email: '[email protected]'
domains: ['mySoGreat.site', 'ansibleguy.net']
ips: ['192.168.44.2']
pwd: !vault ...
最小CAの設定例:
certs:
mode: 'ca'
path: '/etc/ca/certs'
mode_key: '0400'
cert:
name: 'custom_file_name' # 拡張子が追加されます
cn: '私の素晴らしい証明書!'
org: 'AnsibleGuy'
country: 'AT'
email: '[email protected]'
domains: ['mySoGreat.site', 'ansibleguy.net']
ca:
path: '/etc/ca'
cn: 'SUPER CertificateAuthority'
org: 'AnsibleGuy'
country: 'AT'
email: '[email protected]'
pwd: !vault ...
最小CAを使用することで、'cert'設定を変更してロールを再実行することで、CAに署名された複数の証明書を作成できます。
パスワードを暗号化するために'ansible-vault'を使用することをお勧めします:
ansible-vault encrypt_string
実行方法
プレイブックを実行します:
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml --ask-vault-pass
以下のタグも利用可能です:
- certs => CAタスクを無視し、証明書のみを生成
- selfsigned
- config
- certs
エラーのデバッグには、実行時に'debug'変数を設定できます:
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml -e debug=yes
機能
パッケージのインストール
- Ansibleの依存関係(最小限)
- 暗号化の依存関係
設定
4つの可能なモード:
- 自己署名証明書を生成
- 最小証明書機関を使用して署名された証明書を作成
- LetsEncrypt-Certbotを設定して公に有効な証明書を生成
- NginxおよびApacheでサポートされています
- ホストは、有効なパブリックDNSレコードが設定されている必要があります
- 80/tcpポートで公にアクセス可能である必要があります
デフォルト設定:
- モード => 自己署名
情報
注: このロールは現在、Debianベースのシステムのみをサポートしています。
注: このロールのほとんどの機能は、オプトインまたはアウト可能です。
すべての利用可能なオプションについては、メインのデフォルトファイルにあるデフォルト設定を確認してください!
注: 証明書を一括管理する必要がある場合は、完全なPublic Key Infrastructureを作成および管理できるansibleguy.infra_pkiロールを確認してください。
注: 証明書ファイルの名前(定義済みの変数名またはCommonName)は以下のように更新されます:
- スペースはアンダースコアに変換されます
- "0-9a-zA-Z."を除くすべての文字が削除されます
- ファイル拡張子(_crt/chain.crt/key/csr_)が追加されます
警告: 提供するすべての設定/変数の有効性はチェックされません。無効な設定がロールを壊す可能性があります!
情報: LetsEncryptの更新が機能するには、以下への外向き接続を許可する必要があります:
80/tcp、443/tcp+udp への acme-v02.api.letsencrypt.org、staging-v02.api.letsencrypt.org(_デバッグモード_)、および r3.o.lencr.org
Meat-role to generate/manage certificates for other roles
ansible-galaxy install ansibleguy.infra_certs