使用puppet自动安装msodbcsql

时间:2017-05-15 16:31:28

标签: php sql-server linux puppet

要安装使用适用于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/

1 个答案:

答案 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来使用正确的包管理器。