如何通过Puppet Manifest在Apache中启用AllowOverride?

时间:2017-06-12 18:17:49

标签: apache puppet manifest

如果您查看httpd.conf,您可以看到' AllowOverride无',我想将此更改为' AllowOverride All',但是请通过下面的Puppet清单执行此操作。

我尝试使用'目录'但它无效。在此示例中将AllowOverride更改为All的正确方法是什么?

的httpd.conf

# ************************************
# Vhost template in module puppetlabs-apache
# Managed by Puppet
# ************************************

<VirtualHost *:443>
  ServerName test.example.com
  ## Vhost docroot
  DocumentRoot "/var/www/html"

  ## Directories, there should at least be a declaration for /var/www/html

  <Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
  </Directory>

apache.pp

  apache::vhost { 'test.example.com':
    port        => '443',
    docroot     => '/var/www/html',
    ssl         => true,
    ssl_cert    => "${ssl_base}/ssl.crt",
    ssl_key     => "${ssl_base}/ssl.key",
    directories => [
      {
        'path'          => '/var/www/html',
        'options'       => 'Indexes FollowSymLinks',
        'allowoverride' => 'All',
      },
    ],
  }
}

3 个答案:

答案 0 :(得分:1)

您似乎需要使用&#34; allow_override&#34;而不是&#34; allowoverride&#34;或&#34;覆盖&#34;根据给出的例子。现在,这将创建所需的vhost文件。

<强> apache.pp

apache::vhost { 'test.example.com':
  port        => '443',
  docroot     => '/var/www/html',
  ssl         => true,
  ssl_cert    => "${ssl_base}/ssl.crt",
  ssl_key     => "${ssl_base}/ssl.key",
  directories => [
  {
    'path'          => '/var/www/html',
    'options'       => 'Indexes FollowSymLinks',
    'allow_override' => 'All',
  },
],
}
}

答案 1 :(得分:0)

从puppet文档中,您可以使用override设置它: https://forge.puppet.com/puppetlabs/apache#override

以下是apache模块用于设置AllowOverride值的模板: https://github.com/puppetlabs/puppetlabs-apache/blob/61301b5a8d5fa2bf1e98b1d8532aaf141a27f365/templates/vhost/_directories.erb#L55-L57

您的代码应如下所示:

apache::vhost { 'test.example.com':
    port        => '443',
    docroot     => '/var/www/html',
    ssl         => true,
    ssl_cert    => "${ssl_base}/ssl.crt",
    ssl_key     => "${ssl_base}/ssl.key",
    directories => [
      {
        'path'          => '/var/www/html',
        'options'       => 'Indexes FollowSymLinks',
        'override' => 'All',
      },
    ],
  }
}

以下是他们如何在其中一个单元测试中使用覆盖的示例: https://github.com/puppetlabs/puppetlabs-apache/blob/2931d0ebc4a0582e5209e9994ab8ae5c445d87b7/spec/acceptance/vhost_spec.rb#L998-L1015

答案 2 :(得分:0)

我在httpd.conf文件中使用了ruby模板。

这里,allowoverride的值是根据层次结构和环境从hiera传递的。

如果您的httpd.conf在不同环境中保持不变,则可以通过文件资源方法

传递它