Назад | Перейти на главную страницу

Марионетка включает модуль firewalld не работает

Я клонировал этот модуль на мой марионеточный сервер. Кажется, я не могу понять, как я должен включать это в узел. Я делаю:

nodetest1 {
  include firewalld
}

Но это не относится ко всей конфигурации, которую я установил, например Я взял zone.pp файл в папке примеров и скопирован в папку манифестов. Однако на узле новая зона не создается.

Как я могу это включить и что мне не хватает?

Сначала убедитесь, что модуль находится в вашем modulepath. Чтобы выяснить, что настроено в качестве вашего modulepath:

$ sudo puppet config print modulepath
/etc/puppet/modules:/usr/share/puppet/modules

Итак, в моем случае должен быть /etc/puppet/modules/firewalld каталог.

Во-вторых, чтобы определить узел согласно примеру определение должно выглядеть примерно так:

node nodetest1 {
    class {'firewalld::configuration':
            default_zone    =>      'custom',
    }

    # define a zone
    firewalld::zone { 'custom':
        description => 'This is an example zone',
        services    => ['ssh', 'dhcpv6-client'],
        ports       => [{
                port        => '1234',
                protocol    => 'tcp',},],
        masquerade  => true,
        forward_ports   => [{
                port        => '123',
                protocol    => 'tcp',
                to_port     => '321',
                to_addr     => '1.2.3.4',},],
        rich_rules  => [{
                family      => 'ipv4',
                source      => {
                    address     => '1.1.1.1',
                    invert      => true,},
                destination     => {
                    address     => '2.2.2.2/24',},
                port        => {
                    portid      => '123-321',
                    protocol    => 'udp',},

                log     => {
                    prefix      => 'testing',
                    level       => 'notice',
                    limit       => '3/s',},
                audit       => {
                    limit       => '2/h',},
                action      => {
                    action_type => 'reject',
                    reject_type => 'icmp-host-prohibited',
                    limit       => '2/m',},
                },],
    }
}

Если это не так, посмотрите в кабинет кукловода и nodetestжурналы (в RHEL-подобных дистрибутивах, /var/log/messages).

Модули следует клонировать в каталог модулей среды, например, / etc / puppet / environment / production / modules / firewalld:


Базовый путь к модулю

The base modulepath is a list of global module directories for use with all environments. It
can be configured with the basemodulepath setting, but its default value is probably suitable
for you unless you’re doing something unusual.

The default value of the basemodulepath setting is 
$codedir/modules:/opt/puppetlabs/puppet/modules. (On Windows, it will just use 
$codedir\modules.)

и чтобы заставить модуль быть найденным, следует использовать следующий синтаксис:

nodetest1 {
  class { '::firewalld': }
}

Обратите внимание, что include проверяет только наличие определенного класса в каталоге:


Поведение, подобное включению

The include, require, contain, and hiera_include functions let you safely declare a class
multiple times; no matter how many times you declare it, a class will only be added to the
catalog once. This can allow classes or defined types to manage their own dependencies, and
lets you create overlapping “role” classes where a given node can have more than one role.

Чтобы использовать модуль:

ПРОЧТИ МЕНЯ

This is puppet-firewalld a puppet module for firewalld.

You have several ways how to install it:

a) Install module from Puppet Forge
# puppet module install jpopelka-firewalld

b) If you run Fedora/EPEL7, use
# yum install puppet-firewalld

c) If you want to keep up with upstream git repo, you can do:
$ cd ~; mkdir git; cd git
$ git clone https://github.com/jpopelka/puppet-firewalld.git
$ su -c 'ln -s /home/user/git/puppet-firewalld /etc/puppet/modules/firewalld'


Look in the examples/ folder for usage.

See http://jpopelka.fedorapeople.org/puppet-firewalld/doc
for documentation, or generate it yourself:
puppet doc --mode rdoc --outputdir ./moduledocs --modulepath /etc/puppet/modules/

Объявите один из примеров:

firewalld::service { 'dummy':
    description => 'My dummy service',
    ports       => [{port => '1234', protocol => 'tcp',},],
    modules     => ['some_module_to_load'],
    destination => {ipv4 => '224.0.0.251', ipv6 => 'ff02::fb'},
}

вместо того

nodetest1 {
  include firewalld
}

чтобы развернуть некоторые функции модуля.

Для Марионетки 3:

Посмотрите, что это:

nodetest1 {
  include firewalld
}

написано

/etc/puppet/manifests/site.pp

или файл, который импортируется в этот файл с помощью:

import path/to/file.pp

Это также применимо, если вы используете среды, но путь по умолчанию

/etc/puppet/environment/<env>/manifests/site.pp

как начальный файл.

Для Марионетки 4:

Примерно так же, как в Puppet 3. Пути

/etc/puppetlabs/puppet/manifests/site.pp

или если вы используете среды

/etc/puppetlabs/code/environments/<env>/manifest/site.pp