【问题标题】:Error using array in puppet function Each在 puppet 函数中使用数组时出错 Each
【发布时间】:2015-12-02 11:35:03
【问题描述】:

我正在尝试在 puppet 中进行循环,我将此代码放在 manifests/site.pp 中

class ubuntu_fw {
        ufw::allow { "allow-ssh-from-all":
          port => 22,
        }

        $trustips = ["1.1.1.1", "2.2.2.2"]

        $trustips.each |$trustip| {
                ufw::allow { "allow-all-from-trusted-$trustip":
                        from => $trustip,
                }
        }
}

但我得到这个错误

"无法解析环境生产:'.' 处的语法错误; /opt/puppet/manifests/site.pp:13 处的预期“}”

使用 puppet 3.4.3

【问题讨论】:

  • 好像这个版本的木偶不支持循环(详情here)。
  • 您可能希望使用 future 解析器 (docs.puppetlabs.com/puppet/3.8/reference/…) 以利用循环和其他更高级的 DSL 功能。
  • 感谢 Evgeny!启用未来的工作。

标签: loops each puppet


【解决方案1】:

正如 Evgeny 所说,循环、迭代等在 Puppet 4 中可用。(此处记录的新功能:https://docs.puppetlabs.com/references/4.0.0/function.html

您可以升级到 4.0,也可以在 Puppet > 3.7.3 中启用 Future 解析器来模拟新语法。

您可以通过以下方式做到这一点:

  • 在运行 puppet apply 或 puppet agent -t 时将 --parser future 添加到 cli 中
  • parser = future 添加到puppet.confmain 配置部分

您可以使用以下 Puppet 代码更改 puppet.conf

augeas { 'puppet.conf':
  context => '/files/etc/puppet/puppet.conf',
  changes => [
    'set main/parser future',
  ],
}

【讨论】:

    猜你喜欢
    • 2012-02-27
    • 2011-11-14
    • 1970-01-01
    • 2021-04-30
    • 2021-03-23
    • 1970-01-01
    • 2022-01-19
    • 2015-12-18
    • 1970-01-01
    相关资源
    最近更新 更多