wcm_io_devops.apache
wcm_io_devops.apache
これは、RHEL/CentOS、Debian/Ubuntu、SLES、SolarisにApache 2.xをインストールするためのAnsibleロールです。
wcm.ioフォーク
wcm.ioは、オリジナルのgeerlingguy.apacheリポジトリへの変更をより早く統合するために独自のフォークを管理し始めました。
wcm.ioのフォークは、オリジナルの機能にいくつかの新しい機能を追加しています:
プルリクエスト #150
- Debian、RedHat/Amazon Linux、およびSUSEでの
apache_listen_port
とapache_listen_port_ssl
のサポート - Debian、RedHat/Amazon Linux、およびSUSEでの
apache_mods_enabled
のサポート
- Debian、RedHat/Amazon Linux、およびSUSEでの
問題 https://github.com/geerlingguy/ansible-role-apache/issues/81
問題 https://github.com/geerlingguy/ansible-role-apache/issues/21
ネームスペース
このロールは、wcm-io-devops
のネームスペース内で公開されています。
バージョン管理
このフォークのバージョン番号は、フォークされたリポジトリのバージョンに従います。
オリジナルのバージョンを維持するために、wcm.ioのリリースには4番目のバージョン番号が追加され、-
で区切られ、wcm.ioのリリースごとに増加します。例:3.0.0-1
および3.0.0-2
。
要件
SSL/TLSを使用する場合は、自分の証明書とキーのファイルを用意する必要があります。自己署名証明書を生成するには、openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout example.key -out example.crt
のようなコマンドを使用します。
ApacheをPHPで使用する場合は、PHPをインストールするためにgeerlingguy.php
ロールを使用することをお勧めします。mod_phpを使用するか(適切なパッケージを追加します。例:Ubuntuにはlibapache2-mod-php5
)、geerlingguy.apache-php-fpm
を使用してApacheとPHPをFPM経由で接続します。詳細については、そのロールのREADMEをご覧ください。
ロール変数
利用可能な変数は以下にリストされており、デフォルト値も記載されています(defaults/main.yml
を参照):
apache_enablerepo: ""
Apacheをインストールする際に使用するリポジトリ(RHEL/CentOSシステムでのみ使用)。OSのコアリポジトリにないApacheの新しいバージョンを使用したい場合は、EPELのようなリポジトリを使用してください(これはgeerlingguy.repo-epel
ロールでインストールできます)。
apache_listen_ip: "*"
apache_listen_port: 80
apache_listen_port_ssl: 443
ApacheがリッスンするIPアドレスとポート。ポート80または443で他のサービス(リバースプロキシなど)がリッスンしている場合にデフォルトを変更するのに便利です。
apache_create_vhosts: true
apache_vhosts_filename: "vhosts.conf"
apache_vhosts_template: "vhosts.conf.j2"
これがtrueに設定されている場合、このロールの変数によって管理されるvhostsファイルが作成され、Apacheの設定フォルダに配置されます。falseに設定すると、自分のvhostsファイルをApacheの設定フォルダに配置し、このロールによって追加された便利な(しかし基本的な)ものをスキップできます。さらにカスタマイズが必要な場合は自分のテンプレートへのパスを設定して、使用するテンプレートを上書きすることもできます。apache_create_vhosts
がfalseに設定されている場合、vhosts.conf
はプロビジョニング中に削除されます。
apache_remove_default_vhost: false
Debian/UbuntuとRedHat/CentOSでは、デフォルトの仮想ホストがApacheの設定に含まれています。これをtrueに設定すると、そのデフォルトの仮想ホスト設定ファイルが削除されます。
apache_remove_default_vhost_ssl: false
RedHat/CentOSベースのシステムでは、ssl.confにデフォルトの仮想ホストがあります。これをtrueに設定してssl.confの仮想ホストを削除します。
apache_global_vhost_settings: |
DirectoryIndex index.php index.html
# その他のグローバル設定を以下の行に追加。
この変数を使用して、ロールによって提供されるvhostsファイルにグローバルなApache設定を追加または上書きできます(apache_create_vhosts
がtrueの場合)。デフォルトでは、DirectoryIndex設定のみが設定されます。
apache_vhosts:
# 追加のオプショナルプロパティ: 'serveradmin, serveralias, extra_parameters'。
- servername: "local.dev"
documentroot: "/var/www/html"
各仮想ホストごとに一連のプロパティを追加します。必要なservername
、必要なdocumentroot
、オプションのallow_override
(デフォルトはapache_allow_override
の値)、オプションのoptions
(デフォルトはapache_options
の値)、オプションのserveradmin
、オプションのserveralias
、オプションのextra_parameters
(ここに追加の設定行を追加できます)。
extra_parameters
を使用してwww.
サイトへのリダイレクトのためにRewriteRuleを追加する例を示します:
- servername: "www.local.dev"
serveralias: "local.dev"
documentroot: "/var/www/html"
extra_parameters: |
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
|
はYAMLのマルチラインスカラーを示し、改行が生成される設定ファイルに保持されます。
apache_vhosts_ssl: []
デフォルトではSSL仮想ホストは構成されていませんが、apache_vhosts
と同様のパターンを使用して追加できます。追加のディレクティブの例は以下の通りです:
apache_vhosts_ssl:
- servername: "local.dev"
documentroot: "/var/www/html"
certificate_file: "/home/vagrant/example.crt"
certificate_key_file: "/home/vagrant/example.key"
certificate_chain_file: "/path/to/certificate_chain.crt"
extra_parameters: |
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
その他のSSLディレクティブは、他のSSL関連のロール変数で管理できます。
apache_ssl_protocol: "All -SSLv2 -SSLv3"
apache_ssl_cipher_suite: "AES256+EECDH:AES256+EDH"
クライアントがサーバーに安全な接続を行う際に使用される/許可されるSSLプロトコルと暗号スイート。これらは安全なデフォルトですが、最大限のセキュリティ、パフォーマンス、または互換性のために、これらの設定を調整する必要がある場合があります。
apache_allow_override: "All"
apache_options: "-Indexes +FollowSymLinks"
各vhostのdocumentroot
ディレクトリに対するAllowOverride
およびOptions
ディレクティブのデフォルト値。vhostは、allow_override
またはoptions
を指定することによって、これらの値を上書きできます。
apache_mods_enabled:
- rewrite.load
- ssl.load
apache_mods_disabled: []
(Debian/Ubuntuのみ)有効または無効にするApacheのモジュール(これらは適切な場所にシンボリックリンクされます)。利用可能なすべてのモジュールについては、Apacheの設定ディレクトリ内のmods-available
フォルダを参照してください(デフォルトでは/etc/apache2/mods-available
)。
apache_packages:
- [プラットフォーム固有]
インストールするパッケージのリスト。これはRedHatまたはDebianベースのシステム向けのプラットフォーム固有のパッケージのセットがデフォルトです(デフォルト値についてはvars/RedHat.yml
およびvars/Debian.yml
を参照)。
apache_state: started
このロールが実行されるときに適用されるApacheデーモンの初期状態を設定します。通常はstarted
のままにしますが、プレイブックの実行中にApacheの設定を修正する必要がある場合や、他の理由でApacheを開始したくない場合はstopped
に設定できます。
apache_packages_state: present
_ondrej/apache2
、geerlingguy.repo-epel、またはgeerlingguy.repo-remiなどの追加リポジトリを有効にした場合、新しいバージョンに簡単にアップグレードする手段が必要かもしれません。これをlatest
に設定(RHELではapache_enablerepo
と組み合わせて)し、別のリポジトリから異なるApacheバージョンに直接アップグレードできます(Apacheをアンインストールして再インストールするのではなく)。
apache_ignore_missing_ssl_certificate: true
vhost証明書が存在する場合のみSSL vhostsを作成したい場合(例:Let’s Encryptを使用する場合)、apache_ignore_missing_ssl_certificate
をfalseに設定します。これを行うと、すべてのvhostsが設定されるまで、プレイブックを複数回実行する必要があるかもしれません(プレイブックの別の部分がSSL証明書を生成している場合)。
#apache_rhel_custom_vhosts_path: /etc/httpd/vhosts.d
RHEL/CentOSでは、場合によっては仮想ホストファイルにカスタムディレクトリを使用したいことがあります。その場合は、この変数を使用します。
.htaccessを用いた基本認証
基本認証のサポートが必要な場合、カスタムテンプレートを通じて、またはVirtualHost設定にextra_parameters
を追加することによって追加できます。
extra_parameters: |
<Directory "/var/www/password-protected-directory">
Require valid-user
AuthType Basic
AuthName "認証してください"
AuthUserFile /var/www/password-protected-directory/.htpasswd
</Directory>
VirtualHostディレクティブ内のすべてをパスワードで保護するには、Directory
の代わりにLocation
ブロックを使用します:
<Location "/">
Require valid-user
....
</Location>
.htpasswd
ファイルを自分のプレイブック内で生成またはアップロードする必要があります。この機能をより統合的にサポートする役割も他にあるかもしれません。
依存関係
なし。
例プレイブック
- hosts: webservers
vars_files:
- vars/main.yml
roles:
- { role: wcm_io_devops.apache }
vars/main.yml
内:
apache_listen_port: 8080
apache_vhosts:
- {servername: "example.com", documentroot: "/var/www/vhosts/example_com"}
ライセンス
MIT / BSD
著者情報
このロールは、Jeff Geerling(Ansible for DevOpsの著者)によって2014年に作成されました。
このフォークはwcm.ioによってメンテナンスされています。