MySQL Server - модуль Puppet Labs и Oracle Linux 7 - PullRequest
0 голосов
/ 07 марта 2019

С помощью популярного серверного модуля MySQL от Puppet Labs он устанавливает $provider для mariadb в Oracle Linux 7.x, что вызывает проблемы, если я не использую Maria, а вместо этого использую Percona. Вопрос в params.pp. Мне было интересно, если есть способ заставить $provider быть MySQL. Я мог бы попытаться создать символическую ссылку на mariadb.log, чтобы обойти эту проблему, но это ужасно ...

Вот код из params.pp:

case $::osfamily {
'RedHat': {
  case $::operatingsystem {
    'Fedora': {
      if versioncmp($::operatingsystemrelease, '19') >= 0 or $::operatingsystemrelease == 'Rawhide' {
        $provider = 'mariadb'
      } else {
        $provider = 'mysql'
      }
    }
    /^(RedHat|CentOS|Scientific|OracleLinux)$/: {
      if versioncmp($::operatingsystemmajrelease, '7') >= 0 {
        $provider = 'mariadb'
      } else {
        $provider = 'mysql'
      }
    }
    default: {
      $provider = 'mysql'
    }
  }

Источник: https://github.com/puppetlabs/puppetlabs-mysql/blob/master/manifests/params.pp

Error: Could not set 'present' on ensure: No such file or directory @ rb_sysopen - /var/log/mariadb/mariadb.log at /[redacted]/modules/mysql/manifests/server/installdb.pp:25

В сущности, я ищу изящный обходной путь через Puppet для поездок. Но не достаточно опытный, чтобы знать, как это осуществить. (

Спасибо!

1 Ответ

0 голосов
/ 07 марта 2019

То, что вы пытаетесь работать через провайдера, предполагает, что вы подходите к этому через ресурсы, такие как mysql::db, но это никогда не сработает, если сервер не настроен на совпадение. The *Переменная 1004 *, которую вы выделяете в вопросе, установлена ​​и используется только внутри класса mysql::params, и только для определенных семейств ОС, даже там.Это обычная переменная, принадлежащая классу, а не параметр класса, и, будучи недокументированной, она должна считаться закрытой для этого класса.В любом случае, нет, Puppet не предоставляет возможности переопределить значение этой переменной без изменения модуля.

Это класс mysql::server, который предоставляет возможность для настройки альтернативной развилки MySQL.Он предлагает многочисленные параметры , с помощью которых вы можете настроить все детали, но нет универсального механизма для настройки другой индивидуальности MySQL. Я думаю, вы обнаружите, что если вы сделаете это правильно, то все типы ресурсов будут просто работать.В любом случае вам не следует объявлять какие-либо ресурсы с частными типами ресурсов или переопределять свойства ресурсов, которые вы не объявляете.

Пример, охватывающий почти точный вариант использования, о котором вы спрашивали:представлен в модуле docs как Установить Percona Server на CentOS .Обратите внимание, что я скопировал заголовок из документов, но слово «Установить» в нем немного вводит в заблуждение.Это должно не только установить сервер, но и настроить для всех типов ресурсов модуля значение управление этим.

Я понимаю, что вы бы предпочли более простой способнастроить для ветки не по умолчанию, но модуль в настоящее время не предлагает ее.

...