repleo.nginx

Ansibleロール - Nginxサーバー

ビルドステータス Ansible Galaxy

このロールはNginxウェブサーバーをインストールして設定します。ユーザーはサイトに適用したい任意のHTTP設定パラメータを指定できます。数多くのサイトを追加し、好みに応じた設定が可能です。

このロールは簡単にHTTPSウェブサーバーをインストールするためのLetsencrypt SSLをサポートしています。

要件

このロールはAnsible 1.4以上が必要で、プラットフォーム要件はメタデータファイルに記載されています。

ロール変数

このロールに渡すことができる変数とその簡単な説明は次のとおりです。

# nginx.confの強制生成。通常、nginx.confは存在しない場合のみ作成されます。
# このパラメータがtrueの場合、現在のnginx.confが上書きされます。
create_nginx_conf: true

# 許可される最大クライアント数
nginx_max_clients: 512                                

# HTTPパラメータのハッシュ。ここには
# 有効なnginxのHTTPパラメータを追加できます。
# (詳細についてはnginxのドキュメントを参照。)
nginx_http_params:                                    
  sendfile: "on"                                      
  tcp_nopush: "on"
  tcp_nodelay: "on"
  keepalive_timeout: "65"
  access_log: "/var/log/nginx/access.log"
  error_log: "/var/log/nginx/error.log"

# Nginxのサーバーを定義するハッシュのリスト。
# HTTPパラメータと同様に、有効なサーバーのパラメータをここに定義できます。
nginx_sites:
- file_name: foo
  listen: 8080
  server_name: localhost
  root: "/tmp/site1"
  ssl:
    supplier: "local"
    local_keystore_dir: "{{ playbook_dir }}/files/"
    key: "ssl.key"
    certificate: "ssl_chain.pem"
  locations:
    - name: /
      lines:
        - "try_files: $uri $uri/ /index.html"
    - name: /images/
      lines:
        - "try_files: $uri $uri/ /index.html"
  lines:
    - "return 301 https://$http_host$request_uri;"
- file_name: bar
  listen: 9090
  server_name: ansible
  root: "/tmp/site2"
  locations:
    - name: /
      lines:
        - "try_files: $uri $uri/ /index.html"
    - name: /images/
      lines:
        - "try_files: $uri $uri/ /index.html"

  1. HTTPディレクティブを指定してNginxをインストールしますが、サイトは設定しない:

    • hosts: all roles:
      • {role: nginx, create_nginx_conf: true, nginx_http_params: { sendfile: "on", access_log: "/var/log/nginx/access.log"}, nginx_sites: [] }
  2. 前の例とは異なるHTTPディレクティブでNginxをインストールしますが、ここでもサイトは設定しない。

    • hosts: all roles:
      • {role: nginx, create_nginx_conf: true, nginx_http_params: { tcp_nodelay: "on", error_log: "/var/log/nginx/error.log"}, nginx_sites: [] }

注意:渡されたHTTPディレクティブが有効であることを確認してください。このロールはディレクティブの有効性をチェックしません。詳細についてはnginxのドキュメントを参照してください。

  1. Nginxをインストールし、設定にサイトを追加します。

    • hosts: all

      roles:

      • { role: nginx, create_nginx_conf: true, nginx_http_params: { tcp_nodelay: "on", error_log: "/var/log/nginx/error.log"}, nginx_sites: [ - file_name: bar, server_name: localhost, listen: 8080, locations: [ - name: /, lines: [ - "try_files: $uri $uri/ /index.html" ] - name: /images/, lines: [ - "try_files: $uri $uri/ /index.html" ] ] ] }

注意:各サイトはハッシュのリストで表され、生成された設定は/etc/nginx/sites-available/に配置され、/etc/nginx/sites-enabled/から対応するシンボリックリンクが作成されます。

特定のサイト設定のファイル名は"file_name"というキーのハッシュで指定され、有効なサーバーディレクティブが追加できます。

  1. Nginxをインストールし、2つのサイトを追加します(異なる方法)。

    • hosts: all

      roles:

      • { role: nginx, create_nginx_conf: true, nginx_http_params: { tcp_nodelay: "on", error_log: "/var/log/nginx/error.log"}, nginx_sites: [ - file_name: bar, server_name: localhost, listen: 8080, locations: [ - name: /, lines: [ - "try_files: $uri $uri/ /index.html" ] - name: /images/, lines: [ - "try_files: $uri $uri/ /index.html" ] ] } - file_name: bar, server_name: ansible, listen: 9090, root: "/tmp/site2", locations: [ - name: /, lines: [ - "try_files: $uri $uri/ /index.html" ] - name: /images/, lines: [ - "try_files: $uri $uri/ /index.html" ] ] }
  2. 既存のNginxインストールに仮想ホストを追加(必要に応じてNginxをインストール)。

    • hosts: all

      roles:

      • { role: nginx, nginx_sites: [ - file_name: bar, server_name: localhost, listen: 8080, locations: [ - name: /, lines: [ - "try_files: $uri $uri/ /index.html" ] - name: /images/, lines: [ - "try_files: $uri $uri/ /index.html" ] ] } - file_name: bar, server_name: ansible, listen: 9090, root: "/tmp/site2", locations: [ - name: /, lines: [ - "try_files: $uri $uri/ /index.html" ] - name: /images/, lines: [ - "try_files: $uri $uri/ /index.html" ] ] ] }

注意:create_nginx_conf: trueのパラメータがない場合、このロールはnginx.confを上書きしません。このオプションを使用することで、異なるサービスのインストールスクリプトに基づいて、既存のnginxインストールに仮想ホストを追加できます。

  1. HTTPSサーバーの例(キーのインストールを含む)

    • hosts: all

      roles:

      • { role: nginx, nginx_sites: [ - file_name: bar, server_name: localhost, listen: 8080, ssl: { supplier: "local" local_keystore_dir: "{{ playbook_dir }}/files/", key: localhost.key, certificate: localhost_chain.pem }, locations: [ - name: /, lines: [ - "try_files: $uri $uri/ /index.html" ] - name: /images/, lines: [ - "try_files: $uri $uri/ /index.html" ] ] ] }

注意:sslキーと証明書は、呼び出しプロジェクトのfilesディレクトリに存在する必要があります。

  1. LetsEncryptキーのインストールを含むHTTPSサーバーの例

    • hosts: all

      roles:

      • { role: nginx, nginx_separate_logs_per_site: true, nginx_sites: [ - file_name: bar.ssl, server_name: "example.com www.example.com", listen: 443, ssl: { supplier: "letsencrypt", domains: [ "example.com", "www.example.com" ], generate_redirect: true }, locations: [ - name: /, lines: [ - "try_files: $uri $uri/ /index.html" ] - name: /images/, lines: [ - "try_files: $uri $uri/ /index.html" ] ] ] }

ハンドラー

NGINXロールは2つのハンドラーを提供します:

  • Nginxをリロード
  • Nginxを再起動

Nginx設定のリロードは、ダウンタイムなしでウェブサーバーを更新する機能を提供します。ただし、古いプロセスが更新されない可能性があります。再起動はウェブサーバーを停止して再起動し、(短い)ダウンタイムを引き起こします。

例:

- name: 設定ファイルのテンプレート
  template: src=template.j2 dest=/etc/foo.conf
  notify:
     - restart nginx

依存関係

なし

ライセンス

BSD

著者情報

Repleo, アムステルフェーン, ホランダ -- www.repleo.nl
Jeroen Arnoldus (jeroen@repleo.nl)

元のバージョン:

Benno Joy

プロジェクトについて

Ansible role for installing nginx, including support for SSL, letsencrypt and virtual host deployments

インストール
ansible-galaxy install repleo.nginx
ライセンス
bsd-2-clause
ダウンロード
1.5k
所有者
Continuous delivery and software development experts