要安装使用适用于Linux的PHP Microsoft SQL驱动程序所需的mssql-tools附带的msodbcsql,需要以下命令
sudo ACCEPT_EULA=Y apt-get install mssql-tools
然而,当使用Puppet安装它时,这会失败,目前使用的木偶代码
package { 'mssql-tools' : ensure => latest, }
但这会返回错误:
ERROR: The EULA was not accepted. Installation aborted.
Puppet可以成功安装此软件包。 我在调用package命令之前已经尝试过设置环境变量。
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/
答案 0 :(得分:1)
看来这是一个要求的功能;使用环境值运行包实体。
但是因为有一个功能冻结,这将不会在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",
}
如果已经安装了软件包,则除非用于使其幂等于不运行。
这种方法的缺点是,只有当你想要在其他系统上使用apt-get时,这才有效。你应该使用if语句提供$osfamily
来使用正确的包管理器。