Автоматизировать установку msodbcsql с помощью puppet

Чтобы установить msodbcsql, который поставляется с mssql-tools, необходимыми для использования PHP Microsoft SQL Driver для Linux, необходима следующая команда

sudo ACCEPT_EULA=Y apt-get install mssql-tools

Однако при установке этого с Puppet, это терпит неудачу, код Puppet в настоящее время используется

package { 'mssql-tools'      : ensure => latest, }

Но это возвращает ошибку:

ERROR: The EULA was not accepted. Installation aborted.

Что бы понадобилось, чтобы Puppet смог успешно установить этот пакет.
Я уже пытался установить переменную среды перед вызовом команды пакета.

Exec { environment => [ "ACCEPT_EULA=Y" ] }

Инструкции по установке Microsoft находятся здесь:

https://blogs.msdn.microsoft.com/sqlnativeclient/2017/02/04/odbc-driver-13-1-for-linux-released/

И это страница драйвера:

https://www.microsoft.com/en-us/sql-server/developer-get-started/php/ubuntu/

2

Решение

Похоже, что это функция, которая была запрошена; Запустите объект пакета со значением среды.

Но так как есть функция замораживания, она не будет реализована в Puppet 4.x (https://projects.puppetlabs.com/issues/6400)

Обходной путь — не использовать объект пакета, а объект exec:

exec { "/usr/bin/apt-get -yq install msodbcsql":
environment => "ACCEPT_EULA=Y",
unless => "/usr/bin/dpkg -l msodbcsql | tail -1 | grep ^ii",
}

Где, если не используется, чтобы сделать его idempotent не запускаться, если пакет уже установлен.

Недостатком этого метода является то, что он работает только при использовании apt-get, если вы хотите, чтобы это работало и на других системах, и вы должны предоставить $osfamily с помощью оператора if использовать правильный менеджер пакетов.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]