首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Puppet:将YAML与puppetlabs/firewall结合使用

Puppet:将YAML与puppetlabs/firewall结合使用
EN

Stack Overflow用户
提问于 2016-04-12 08:26:14
回答 1查看 2.1K关注 0票数 0

直到最近,我们一直在以一种非常基本的方式使用puppet。为了管理iptables,我们创建了一个iptables-save文件并加载它。我想修改iptables管理,并使用puppetlabs/防火墙模块。

最佳实践建议我使用.yaml文件来处理这个问题,但是我在使用hiera()和yaml文件时遇到了很多问题。

我希望common.yaml有一个与某个组关联的范围列表:

代码语言:javascript
复制
firewall_group:
  localdomain:
    - 10.0.0.3/32
    - 10.10.0.0/26
  anotherdomain:
    - 172.0.1.0/26

我希望在其他一些{$certname}.yaml中包含一个端口列表,主机将接受来自某个组列表的访问:

代码语言:javascript
复制
ports:
  ssh: 
    number: 22 
    groups:
      - localdomain
  http:
    number: 80
    groups:
      - localdomain
      - anotherdomain

使用puppetlabs/firewall创建这些防火墙规则的最佳方式是什么?(假设hiera.yaml正确地查找这些.yaml文件)我将.pp文件放在init.pp包含的custom_fw/manifests/core.pp中。

我尝试过使用$ports.each方法和create_resources ()方法搜索“嵌套的yaml loop puppet”,但我确信我犯了一些错误,导致puppet应用失败。

提前感谢您的任何见解!

EN

回答 1

Stack Overflow用户

发布于 2016-04-12 10:05:17

我在这个特定的问题上花了一些时间,并提出了以下解决方案。

首先,获取我的模块alexharvey/firewall_multi。在撰写本文时,您还需要最新的puppetlabs/防火墙模块(v1.8.0),尽管我愿意为需要与早期版本的Puppet Labs防火墙兼容的任何人修补我的模块。

firewall_multi模块为Puppet Labs防火墙模块提供了一个多路复用器前端,允许我们指定源和目标的阵列。

其次,您需要Hiera version3,它具有alias lookup function,它允许您为Hiera数组定义一个别名,该别名可以在Hiera中的其他地方使用。

您现在可以执行以下操作:

代码语言:javascript
复制
---
mylocaldomain:
  - 10.0.0.3/32
  - 10.10.0.0/26
myotherdomain:
  - 172.0.1.0/26

myclass::firewall_multis:
  '00099 accept tcp port 22 for ssh':
    dport: '22'
    action: 'accept'
    proto: 'tcp'
    source: "%{alias('mylocaldomain')}"
myotherclass::firewall_multis:
  '00200 accept tcp port 80 for http':
    dport: '80'
    action: 'accept'
    proto: 'tcp'
    source: "%{alias('myotherdomain')}"

和:

代码语言:javascript
复制
class myclass (
  $firewall_multis,
) {
  validate_hash($firewall_multis)
  create_resources(firewall_multi, $firewall_multis)
  ...
}

class myotherclass (
  $firewall_multis,
) {
  validate_hash($firewall_multis)
  create_resources(firewall_multi, $firewall_multis)
  ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36561572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档