Linux 使用puppet模块camptocamp bind创建主DNS和从DNS

Linux 使用puppet模块camptocamp bind创建主DNS和从DNS,linux,dns,puppet,Linux,Dns,Puppet,尝试使用puppet模块camptocamp绑定创建主/从(冗余)DNS。在从属配置文件中,我将传输\u source=>'192.168.1.20'设置为主ip:192.168.1.20。然后,它应该同步dns记录并将其从主机复制到从主机 但我收到的投诉是,它只能设置为奴隶区。我遵循了puppet forge的自述文件来完成本模块: dnsmaster.pp class profile::dnsbind::server { include 'bind' bind::zone {'examp

尝试使用puppet模块camptocamp绑定创建主/从(冗余)DNS。在从属配置文件中,我将传输\u source=>'192.168.1.20'设置为主ip:192.168.1.20。然后,它应该同步dns记录并将其从主机复制到从主机

但我收到的投诉是,它只能设置为奴隶区。我遵循了puppet forge的自述文件来完成本模块:

dnsmaster.pp

class profile::dnsbind::server {

include 'bind'

bind::zone {'example.com':
  ensure       => 'present',
  zone_contact => 'contact.example.com',
  zone_ns      => ['ns0.example.com'],
  zone_serial  => '2012112901',
  zone_ttl     => '604800',
  zone_origin  => 'example.com',
}

bind::a { 'example.com':
  ensure    => 'present',
  zone      => 'example.com',
  ptr       => false,
  hash_data => {
    'host1' => { owner => '192.168.0.1', },
    'host2' => { owner => '192.168.0.2', },
  },
}
}
class profile::dnsbind::server_slave {

include 'bind'

bind::zone {'example.com':
  ensure       => 'present',
  zone_contact => 'contact.example.com',
  zone_ns      => ['ns0.example.com'],
  zone_serial  => '2012112901',
  zone_ttl     => '604800',
  zone_origin  => 'example.com',
  transfer_source => '192.168.1.20', 
}
}
dnsslave.pp

class profile::dnsbind::server {

include 'bind'

bind::zone {'example.com':
  ensure       => 'present',
  zone_contact => 'contact.example.com',
  zone_ns      => ['ns0.example.com'],
  zone_serial  => '2012112901',
  zone_ttl     => '604800',
  zone_origin  => 'example.com',
}

bind::a { 'example.com':
  ensure    => 'present',
  zone      => 'example.com',
  ptr       => false,
  hash_data => {
    'host1' => { owner => '192.168.0.1', },
    'host2' => { owner => '192.168.0.2', },
  },
}
}
class profile::dnsbind::server_slave {

include 'bind'

bind::zone {'example.com':
  ensure       => 'present',
  zone_contact => 'contact.example.com',
  zone_ns      => ['ns0.example.com'],
  zone_serial  => '2012112901',
  zone_ttl     => '604800',
  zone_origin  => 'example.com',
  transfer_source => '192.168.1.20', 
}
}
错误消息:

Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Function Call, Zone 'example.com': transfer_source can be set only for slave zones! at /etc/puppetlabs/code/environments/production/modules/bind/manifests/zone.pp:80:5 at /etc/puppetlabs/code/environments/production/manifests/profile_dns2.pp:5 on node centos7-3
    Warning: Not using cache on failed catalog
    Error: Could not retrieve catalog; skipping run
然后,它应该将dns记录从主机同步并复制到主机 奴隶

但我收到的投诉是,它只能设置为奴隶区

显然,模块无法识别您正在尝试配置从属区域。你认为它怎么会知道?显然不是因为存在
transfer\u source
属性

我遵循了puppet forge的自述文件来完成本模块:

我相信您是从自述文件中提取示例区域定义(对于主区域)开始的,我承认这个模块的文档有点劣质。但是,还是要考虑实际阅读文档,而不仅仅是浏览它们。如果您这样做了,您会在
transfer\u source
参数的文档之后立即找到
zone\u type
参数的文档:

$zone_type=master

指定区域是否为主/从/前向


使用此选项可指定您正在配置从属区域。

感谢John迄今为止的帮助,我已编辑了此问题,因为在添加您建议的参数时出现了一个问题,该参数实际上解决了第一个问题,但随后出现了其他问题。如果您有新问题,请将其作为一个问题提出。在这里,将您已经发布的问题修改为其他问题是不可接受的,尤其是在收到答案后。因此,我已经回滚了您的编辑。好吧,我不确定是否应该编辑或问新问题。如果我确定我不想编辑问题,那么当我准备对此进行评论时,会弹出一个弹出窗口。但是我开始了一个