geerlingguy.apache

Ansibleロール: Apache 2.x

CI

このAnsibleロールは、RHEL/CentOS、Debian/Ubuntu、SLES、SolarisにApache 2.xをインストールします。

必要条件

SSL/TLSを使用する場合は、自分自身の証明書とキーのファイルを提供する必要があります。openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout example.key -out example.crtのようなコマンドで自己署名証明書を生成できます。

PHPを使用するApacheの場合、geerlingguy.phpロールを使用してPHPをインストールすることをお勧めします。mod_php(例えば、Ubuntu向けにlibapache2-mod-php5などの正しいパッケージをphp_packagesに追加)を使用するか、geerlingguy.apache-php-fpmを使用してApacheをPHPに接続することができます。詳細はそのロールの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の設定フォルダーに置くことができ、このロールによって追加された便利(だがより基本的な)vhostsファイルをスキップできます。また、独自のテンプレートを設定して、VirtualHostsのレイアウトをさらにカスタマイズすることも可能です。

apache_remove_default_vhost: false

Debian/Ubuntuでは、Apacheの設定にデフォルトの仮想ホストが含まれています。この設定ファイルを削除したい場合はtrueに設定してください。

apache_global_vhost_settings: |
  DirectoryIndex index.php index.html
  # 他のグローバル設定を続けて追加してください。

この変数を使用して、ロールが提供するvhostsファイル内でApacheのグローバル設定を追加または上書きできます。デフォルトでは、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のvhostsは設定されていませんが、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_no_log: true

プレイブックを実行する際に、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
  - ssl
apache_mods_disabled: []

有効にするまたは無効にするApacheモジュール(適切な場所にシンボリックリンクされます)。利用可能なすべてのモジュールは、Apache設定ディレクトリ内のmods-availableフォルダー(Debian/Ubuntuの場合は/etc/apache2/mods-available)を参照してください。

apache_packages:
  - [プラットフォーム固有]

インストールするパッケージのリスト。この設定はRedHatまたはDebianベースのシステムのプラットフォーム固有のパッケージのセットにデフォルト設定されています(デフォルト値はvars/RedHat.ymlおよびvars/Debian.ymlを参照)。

apache_state: started

このロールが実行されるときにApacheデーモンの初期状態を設定します。一般的にこれはstartedのままであるべきですが、プレイブックの実行中にApacheの設定を修正する必要がある場合や、ロールが実行される時にApacheを起動しないようにしたい場合はstoppedに設定できます。

apache_enabled: yes

Apacheサービスのブート時の状態を設定します。一般的にはyesのままでよいですが、サービスを無効にしたままAnsibleを実行する必要がある場合はnoに設定できます。

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_certificatefalseに設定します。この場合、プレイブックの他の部分でSSL証明書が生成される場合、すべてのvhostsが設定されるまでプレイブックを複数回実行する必要があるかもしれません。

.htaccessを使用した基本認証

Basic認証サポートが必要な場合は、カスタムテンプレートを通じて追加するか、次のようにVirtualHost設定にextra_parametersを追加できます:

    extra_parameters: |
      <Directory "/var/www/password-protected-directory">
        Require valid-user
        AuthType Basic
        AuthName "Please authenticate"
        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: geerlingguy.apache }

vars/main.yml

apache_listen_port: 8080
apache_vhosts:
  - {servername: "example.com", documentroot: "/var/www/vhosts/example_com"}

ライセンス

MIT / BSD

著者情報

このロールは2014年にJeff Geerlingによって作成されました。彼はAnsible for DevOpsの著者です。

プロジェクトについて

Apache 2.x for Linux.

インストール
ansible-galaxy install geerlingguy.apache
ライセンス
mit
ダウンロード
10.3M
所有者
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns