blauwe_lucht.docker_webapps
blauwe_lucht.docker_webapps
Ansibleロールは、単一のDockerホスト上で複数のWebアプリをHTTPSで実行します。 自己署名証明書またはLet's Encrypt証明書で署名されています。
このロールは、nginxを実行するリバースプロキシコンテナを作成し、nginxを設定して 登録されたWebアプリへのリクエストを転送します。リクエストがあれば各Webアプリは Let's Encrypt証明書を取得し、WebアプリにHTTPSでアクセスできるようになります。 これらの証明書はcertbotコンテナを通じて自動的に更新されます。 Let's Encryptを使用しない場合はHTTPS用の自己署名証明書が生成されます。
現在の状態
アルファ版。テスト目的でのみこのロールを使用してください。まだモレキュールテストは書かれていません。
要件
ノードはすでにDockerを実行している必要があります。これは geerlingguy.dockerのロールを使って行うことができます。
ロール変数
docker_webapps
実行するWebアプリの設定。例:
docker_webapps:
- name: samtris
docker_image: blauwelucht/samtris:v2.0
port: 8080
volumes:
- /var/log:/var/log
name
生成されるDocker Composeサービスの名前と、 リバースプロキシがリッスンするサブドメインの名前です。
docker_image
Webアプリをホストするために使用されるイメージです。 このロールは更新されたDockerイメージをチェックしないため、タグを使用することをお勧めします。
port
Webアプリがリッスンしているコンテナのポートです。
volumes
ボリュームはオプションです。生成される docker-compose.ymlにそのままコピーされます。
docker_webapps_use_lets_encrypt
Dockerホストがインターネットからアクセスできる場合のみ、use_lets_encryptをtrueに設定してください。 これはLet's Encryptが証明書リクエストを検証するために必要です。 use_lets_encryptがfalseのときは、自己署名証明書が使用されます。
docker_webapps_domain_name
すべてのサブドメインが属するドメイン名です。
docker_webapps_email_address
docker_webapps_organization_name
docker_webapps_country_name
自己署名証明書とLet's Encrypt証明書を取得するために使用される メールアドレス、組織、国名です。
docker_webapps_docker_compose_project
Docker Compose用のプロジェクト名です。同じ名前のDocker Composeプロジェクトがすでにある場合のみ 上書きする必要があります。
docker_webapps_reverse_proxy_container_name
リバースプロキシコンテナの名前です。すでにその名前のコンテナがある場合のみ 上書きする必要があります。
docker_webapps_certbot_renew_container_name
証明書更新用のcertbotコンテナの名前です。すでにその名前のコンテナがある場合のみ 上書きする必要があります。
docker_webapps_certbot_staging_param
実験時は、docker_webapps_certbot_staging_paramを "--staging"に設定して、Let's Encryptのレート制限に引っかからないようにします。
依存関係
なし
例プレイブック
- hosts: servers
roles:
- name: blauwe_lucht/docker_webapps
vars:
docker_webapps:
- name: samtris
docker_image: blauwelucht/samtris:v2.0
port: 8080
docker_webapps_use_lets_encrypt: true
docker_webapps_domain_name: example.com
docker_webapps_email_address: [email protected]
docker_webapps_organization_name: ACME
docker_webapps_country_name: NL
注意事項
- FQDN
<site.domain>
がサーバーに解決されることを確認してください。 FQDNはリバースプロキシがリクエストを適切なWebアプリにルーティングするために使用されます。 - 各Webアプリに対してnginxがリッスンするために、追加のサイト名が登録されます。
これにより、テストサーバーでAnsibleスクリプトをテストすることができます:
<site>-tst.<domain>
。 - Webアプリコンテナの更新を管理する最良の方法は、イメージ名にタグを使用することです。 docker_webapps設定変数のタグを更新すると、変更が検出され、新しいイメージがプルされて既存のコンテナを置き換えます。
- Let's Encrypt証明書を削除/更新するには、certbotコンテナ内で
certbot delete --cert-name <fqdn>
を実行します。 そうしないと、履歴の一部が残り、-0001プレフィックスの付いた新しい証明書が生成され、 nginxによって見つけられなくなります。 重要: 一度に1つの証明書のみを削除/更新するようにしてください。そうしないと、nginxは起動に失敗します。 なぜなら、1つのサイトのSSL証明書が欠如している間に設定がまだ指定されているためです。(まだこれを修正する方法は見つかっていません)。 - Let's Encrypt証明書を使用しない場合でも、WebアプリにはHTTPSでアクセスできますが、 自己署名された証明書であるため、ブラウザに警告が表示されます。 これらのWebアプリについては、その警告を安全に無視できます。
ライセンス
BSD
著者情報
このロールは2020年にBlauwe Luchtによって作成されました。
Role to run multiple webapps on https on a single Docker host, signed with self-signed or Let's Encrypt certificates.
ansible-galaxy install blauwe_lucht.docker_webapps