小编Chr*_*is 的帖子

使用基于请求字符串的 LDAP 动态验证 Apache?

是否可以将请求 URI 的一部分用作 mod_authnz_ldapRequire ldap-group指令的输入?

我正在尝试动态检查对一堆不同项目目录的访问,所有目录都在http://testserver.com/projects/下,这样访问的用户/projects/abc将被检查cn=abc,ou=groups,dc=test. 理想情况下,我希望在不为每个项目创建单独的 Location 指令的情况下执行此操作,因为很可能有数百个。

我想出了这个,它说明了一般概念,但它不起作用(project_name 不检索实际变量内容):

<Location /projects>
    SetEnvIf Request_URI "/projects/([-a-z0-9A-Z_]+)/" project_name=$1

    AuthType Basic
    AuthBasicProvider ldap
    AuthName "Restricted Resource - SVN (LDAP)"
    AuthLDAPURL "ldap://127.0.0.1:389/dc=test?uid"
    AuthLDAPGroupAttributeIsDN off
    AuthLDAPGroupAttribute memberUid
    Require ldap-group cn=%{project_name},ou=groups,dc=test
</Location>
Run Code Online (Sandbox Code Playgroud)

帮助?

ldap environment-variables mod-auth-ldap apache-2.2

12
推荐指数
1
解决办法
673
查看次数

堆叠机架式服务器很糟糕吗?

我有几台戴尔 1U 机架式服务器,我需要暂时将它们移出机架。

他们互相叠在一起是不是很糟糕?

physical-environment rackmount

12
推荐指数
2
解决办法
5611
查看次数

Puppet:检查变量集

编辑:我想出了我认为最好的方法来解决这个问题。感谢人们回答了我的问题 - 它一路走来。我将发布我的解决方案,以便其他人可以在需要时找到它。

原问题:

我想使用 puppet 来自动配置我们的一些 NFS 文件系统。但是,我希望清单在这样做之前确保它在正确的网络上有一个 IP。

Puppet 通过interfacesipaddress_***事实帮助提供了有关机器分配的 IP 的事实。问题是我需要检查所有接口(我宁愿不对它们的连接方式做出假设)。

问题 1:Puppet 可以遍历事实列表吗?例如:

for $if in $interfaces {
     //do something
}
Run Code Online (Sandbox Code Playgroud)

问题 2:如果 Puppet 可以做到这一点,是否有一种方法可以将字符串评估为变量。interfaces提供了一种非常好的方式来了解有多少ipaddress_***network_***变量,但即使我可以遍历它的值,我也需要执行以下操作:

for $if in $interfaces {
    $net_var = eval("network_${if}")
    if $net_var = /^192\.168\.2\.0$/ {
        //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?我是不是完全错了(对 Puppet 来说有点新)?

我最终做了什么:

Puppet 允许您为模块定义自定义解析器函数。这些自定义函数只是 ruby​​,因此您可以有效地在其中执行任何您想做的事情,包括循环。

你把它们放在<module_dir>/lib/puppet/parser/functions/. 为了做我想做的事,我创建<module_dir>/lib/puppet/parser/functions/has_network.rb了以下内容:

#has_network.rb
require 'ipaddr'

module Puppet::Parser::Functions
    newfunction(:has_network, :type => :rvalue) do …
Run Code Online (Sandbox Code Playgroud)

puppet

6
推荐指数
1
解决办法
5308
查看次数