galaxyproject.nginx

nginx

nginxサーバーをインストールして管理するためのAnsibleロールです。

要件

このロールは、DebianシステムではAPTから、Enterprise LinuxシステムではEPELから、SmartOSではpkginからnginxをインストールします。他のシステムやインストール方法はサポートされていません。

ロール変数

すべての変数はオプションです。

一般設定

  • nginx_flavor(デフォルト: full): インストールするnginxパッケージ(選択肢は、あなたのDebianベースのディストリビューションのnginxメタパッケージプロバイダーを参照してください)。RedHatベースのディストリビューションでは、galaxy(「Galaxy nginx」、nginxのアップロードおよびpamモジュールを含む)か、EPEL nginxの他の値になります。この値はpkgin/SmartOSのインストール時には使用されません。一般的にはTUSを使用でき、fullは将来に向けた安全なデフォルトです。
  • nginx_servers: server {}(バーチャルホスト)のテンプレートのリスト(templates/nginx/に対する相対パスで、ファイルの末尾に.j2が自動的に追加されます)。
  • nginx_ssl_servers: nginx_serversと同様ですが、SSLが設定されている場合のみインストールされます。
  • nginx_conf_http: nginx.confhttp {}セクションに任意のオプションを設定します。これはハッシュ(辞書)で、キーがnginx設定オプション、値がオプションの値です。
  • nginx_default_redirect_uri: EPELからnginxを使用する場合、デフォルトのバーチャルホストが有効になります。このオプションは、デフォルトのバーチャルホストがどのURIにリダイレクトされるべきかを制御します。nginx変数がサポートされています。
  • nginx_enable_default_server(デフォルト: true): デフォルトのEPELバーチャルホストを有効または無効にします。
  • nginx_supervisor: supervisorの下でnginxを実行します(特定のsupervisor変数を設定する必要があります)。
  • nginx_conf_dir(デフォルト: /etc/nginx): nginxの設定ディレクトリ

SSL設定

nginx_conf_ssl_certificate*変数はSSLの使用を制御します。設定されていない場合、SSLは有効になりません。使用法については、例のプレイブックを参照してください。

  • nginx_conf_ssl_certificate: リモートホスト上のSSL証明書のファイル名。
  • nginx_conf_ssl_certificate_key: リモートホスト上のSSLプライベートキーのファイル名。
  • nginx_conf_ssl_ciphers: nginx.confssl_ciphersオプション、これはリストです。
  • nginx_conf_ssl_protocols: nginx.confssl_protocolsオプション、これもリストです。

外部SSL設定

  • nginx_ssl_role(デフォルト: 未定義): SSLを設定するために実行するロール。これにより、例えばusegalaxy_eu.certbotの使用が可能になります。このロールは、nginxがポート80でセットアップされて実行された後ですが、nginxがSSLを使用しようとする前に実行する必要があります(certbotが実行されるまで、nginxが期待する証明書はまだ存在しないため)。これを設定すると、SSLロールが適切なタイミングで実行されます。nginx_ssl_serversも参照してください。
  • nginx_conf_ssl_certificate: SSL証明書のファイル名。
  • nginx_conf_ssl_certificate_key: SSLプライベートキーのファイル名。

このモードでは、nginx_conf_ssl_certificate*変数は絶対パスである必要があります。

プレイブックSSL設定

nginx_ssl_roleが未設定の場合、このロールを使用してプレイブックから証明書とキーをコピーできます。

  • nginx_ssl_conf_dir(デフォルト: <nginx_conf_dir>/ssl): SSL証明書やその他のSSL関連ファイルをコピーする場所。
  • nginx_ssl_src_dir(デフォルト: files/ssl): SSL証明書のコピー元。
  • sslkeys: プライベートキーを含むハッシュ(辞書)。キーは、nginx_conf_ssl_certificate_keyに一致するファイル名(先頭のパス要素なし)。
  • nginx_conf_ssl_trusted_certificate: OCSPスタップリング用の信頼された証明書のファイル名(設定するとスタッピングが有効になります)。

このモードでは、nginx_conf_ssl_certificate*変数は相対パスである必要があります。ただし、レガシーの理由により、リモートホスト上のファイルへの絶対パスであることも可能です。この場合、証明書はnginx_ssl_src_dir内でパスのディレクトリ部分が削除された状態で検索されます。パスが絶対でない場合は、ソースに対してはnginx_ssl_src_dirに、宛先に対してはnginx_ssl_conf_dirに対する相対パスです。

SELinux

SELinuxが強制モードの場合、いくつかの追加アクションが実行されます:

  • certbot_well_known_rootが設定されている場合、すべてのサブディレクトリに対してhttpd_sys_content_tの権限を許可するように更新されます。
  • nginx_selinux_allow_local_connections(デフォルト: false): nginxがローカルホストに接続できるようにします。

依存関係

必須ではありませんが、geerlingguy.repo-epelを使用してAnsibleでEPELを有効にすることができます。

例のプレイブック

証明書を取得する場所によっていくつかのプレイブックの例を示します。

ローカルSSL証明書

プレイブックに保存されているSSL証明書を使用してnginxをインストールします(証明書は{{ playbook_dir }}/files/ssl/snakeoil_cert.pemにあります):

- name: Install and configure nginx
  hosts: webservers
  vars:
    sslkeys:
      snakeoil_privatekey.pem: |
        -----BEGIN PRIVATE KEY-----
        MIIE...
        -----END PRIVATE KEY-----
    nginx_conf_ssl_certificate: snakeoil_cert.pem
    nginx_conf_ssl_certificate_key: snakeoil_privatekey.pem
    nginx_servers:
      - vhost1
      - vhost2
    nginx_conf_http:
      client_max_body_size: 1g
  roles:
    - galaxyproject.nginx

Let's Encrypt

Certbotを使用してLet's Encryptから取得したSSL証明書でnginxをインストールします(usegalaxy_eu.certbot利用):

- name: Install and configure nginx
  hosts: webservers
  vars:
    nginx_conf_ssl_certificate: /etc/ssl/certs/fullchain.pem
    nginx_conf_ssl_certificate_key: /etc/ssl/private/private.pem
    nginx_servers:
      - vhost1
      - vhost2
    nginx_ssl_servers:
      - vhost1_ssl
      - vhost2_ssl
    nginx_conf_http:
      client_max_body_size: 1g
    nginx_ssl_role: usegalaxy_eu.certbot
    certbot_auth_method: --webroot
    certbot_domains:
      - vhost1.example.org
      - vhost2.example.org
    certbot_admin_email: [email protected]
    certbot_agree_tos: --agree-tos
    certbot_well_known_root: /var/www/_well-known_root
    certbot_post_renewal: |
      systemctl restart nginx || true
  roles:
    - galaxyproject.nginx

templates/nginx/vhost1.j2templates/nginx/vhost2.j2には、次のような内容を追加してください:

server {
    location /.well-known/ {
        root {{ certbot_well_known_root }};
    }
}

自己署名証明書

生成された自己署名SSL証明書を使用してnginxをインストールします(ファイアウォールの背後でセキュアなサービスをテストするのに良いオプションです)。

- name: Install and configure nginx
  hosts: webservers
  vars:
    nginx_servers:
      - vhost1
      - vhost2
    nginx_ssl_servers:
      - vhost1_ssl
      - vhost2_ssl
    nginx_conf_http:
      client_max_body_size: 1g
    nginx_ssl_role: galaxyproject.self_signed_certs
    openssl_domains: # certbot_domainsと同様の動作
      - vhost1.example.org
      - vhost2.example.org
    # これらは証明書とPKを保存したい場所に設定できます。
    nginx_conf_ssl_certificate_key: /etc/ssl/private/{{ openssl_domains[0] }}.pem
    nginx_conf_ssl_certificate: /etc/ssl/certs/{{ openssl_domains[0] }}.crt
  roles:
    - galaxyproject.nginx

ライセンス

Academic Free License ("AFL") v. 3.0

著者情報

プロジェクトについて

Install and manage an nginx server.

インストール
ansible-galaxy install galaxyproject.nginx
ライセンス
Unknown
ダウンロード
28.7k
所有者
Galaxy is an open, web-based platform for data-intensive research.