Чтобы установить 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/
Похоже, что это функция, которая была запрошена; Запустите объект пакета со значением среды.
Но так как есть функция замораживания, она не будет реализована в 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 использовать правильный менеджер пакетов.
Других решений пока нет …