Марионеточная ОШИБКА Модуля Postgresql 400 Недопустимых параметров onlyif

У меня есть модуль, названный oss_puppetserver, который имеет init.pp и database.pp.

database.pp класс включается/включается/присваивается через hiera для хоста, сам модуль использует существующий puppetlabs-postgresql модуль, который развертывается на/etc/puppet/environments/testing/modules/postgresql через r10k, и oss_puppetserver модуль развертывается на/etc/puppet/environments/testing/site/oss_puppetserver, файл database.pp содержит следующий код:

class oss_puppetserver::database {

  class { 'postgresql::globals':
    manage_package_repo => true,
    version             => '9.4',
    repo_proxy          => 'proxy:8080',
    datadir             => '/opt/pgpuppet/data',
    xlogdir             => '/opt/pgpuppet/xlog',
    logdir              => '/opt/pgpuppet/log',
  } ->
  class { 'postgresql::server':
    ip_mask_deny_postgres_user => '0.0.0.0/32',
    ip_mask_allow_all_users    => '0.0.0.0/0',
    listen_addresses           => '*',
  }
  postgresql::server::db { 'test1':
     user    => 'test2',
     password => 'test2',
  }
}

init.pp:

#lots of descriptive comments
class oss_puppetserver {
}

Однако проблема, кажется, что узел, кажется, возвращает следующее:

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter onlyif on Postgresql_psql[grant:database:GRANT test2 - ALL - test1] at /etc/puppet/environments/testing/modules/postgresql/manifests/server/grant.pp:229 on node host.test.bla
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run

Это, кажется, продолжает зависание на определенном типе, и я понятия не имею, почему, я посмотрел на код внутри grant.pp, и они, кажется, незаконные строки:

  $_onlyif = $onlyif_function ? {
'table_exists' => "SELECT true FROM pg_tables WHERE tablename = '${_togrant_object}'",
    default        => undef,
  }

  $grant_cmd = "GRANT ${_privilege} ON ${_object_type} \"${_togrant_object}\" TO
  \"${role}\""
  postgresql_psql { "grant:${name}":
    command    => $grant_cmd,
    db         => $on_db,
    port       => $port,
    psql_user  => $psql_user,
    psql_group => $group,
    psql_path  => $psql_path,
    unless     => $_unless,
    onlyif     => $_onlyif,
    require    => Class['postgresql::server']
  }

хотя я не совсем могу различить, почему точно это перестало работать или почему параметр был бы недопустим, как errormessage предполагает.

Я попробовал к redploy модули и переписываю класс многократно. Я могу только предположить в этой точке, что проблема, кажется, с наличием объявлений класса в классе и пропавших без вести чего-то вроде включения или требует. Но мои попытки были бесполезны до сих пор. Или это или я пропускаем что-то чрезвычайно очевидное. Я ценил бы любую справку или предложение в этой точке начиная с других serverfault регистраций, которые включали Ошибку 400 Недопустимых параметров, XXX сообщений не имели большой смысл мне, по крайней мере, это не было узнаваемо мне с моей точки зрения, возможно, я просто неправильно понял.

Спасибо заранее за любые предложения относительно того, что я мог возможно попробовать или сделать для решения проблемы.

0
задан 11 August 2015 в 18:15
1 ответ

Итак, я просто хотел написать ответ на свой собственный вопрос, похоже, что была проблема с кэшированием марионеточных серверов типов и провайдеров для модуля. Я перепрофилировал его с 'r10k puppetfile install -v', а затем перезапустил марионеточный сервер. Похоже, что-то застряло в кэше.

Теперь эта проблема, кажется, исправлена и все работает нормально. Надеюсь, это кому-нибудь поможет.

.
0
ответ дан 5 December 2019 в 12:24

Теги

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