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
ライセンス
Unknown
ダウンロード
118
所有者
DevOps Coach/Trainer/Path Finder