wcm_io_devops.apache

wcm_io_devops.apache

CI

これは、RHEL/CentOS、Debian/Ubuntu、SLES、SolarisにApache 2.xをインストールするためのAnsibleロールです。

wcm.ioフォーク

wcm.ioは、オリジナルのgeerlingguy.apacheリポジトリへの変更をより早く統合するために独自のフォークを管理し始めました。

wcm.ioのフォークは、オリジナルの機能にいくつかの新しい機能を追加しています:

ネームスペース

このロールは、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/apache2geerlingguy.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 GeerlingAnsible for DevOpsの著者)によって2014年に作成されました。

このフォークはwcm.ioによってメンテナンスされています。

プロジェクトについて

Apache 2.x for Linux. (fork of geerlingguy.apache)

インストール
ansible-galaxy install wcm_io_devops.apache
ライセンス
mit
ダウンロード
117.3k
所有者
Tools for Configuration Management and Deployment