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

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

nodetest1 {
  include firewalld
}

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

Как я могу включать это и что я пропускаю?

0
задан 29 June 2015 в 22:40
3 ответа

Модули следует клонировать в каталог модулей среды, например, / 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 только проверяет, доступен ли определенный класс в каталоге:


Include-Like Behavior

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.

In order для использования модуля:

README

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
}

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

1
ответ дан 4 December 2019 в 13:48

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

$ 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',},
                },],
    }
}

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

1
ответ дан 4 December 2019 в 13:48

Для куклы 3:

Убедитесь, что это:

nodetest1 {
  include firewalld
}

записано на

/etc/puppet/manifests/site.pp

или что файл импортирован внутри этого файла с:

import path/to/file.pp

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

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

в качестве стартового файла.

Для куклы 4:

Почти то же самое, что и для куклы 3. Пути следующие

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

или если вы используете окружения

/etc/puppetlabs/code/environments/<env>/manifest/site.pp
0
ответ дан 4 December 2019 в 13:48

Теги

Похожие вопросы