使用 puppet 自动安装 msodbcsql
Automate installation of msodbcsql with puppet
要安装使用 PHP Microsoft SQL Linux 驱动程序所需的 mssql-tools 附带的 msodbcsql,需要以下命令
sudo ACCEPT_EULA=Y apt-get install mssql-tools
然而,当用 Puppet 安装这个时,失败了,当前使用的 puppet 代码
package { 'mssql-tools' : ensure => latest, }
但是这个returns一个错误:
ERROR: The EULA was not accepted. Installation aborted.
Puppet 需要什么才能成功安装此包。
我已经尝试在调用包命令之前设置环境变量。
Exec { environment => [ "ACCEPT_EULA=Y" ] }
微软的安装说明在这里:
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 { "/usr/bin/apt-get -yq install msodbcsql":
environment => "ACCEPT_EULA=Y",
unless => "/usr/bin/dpkg -l msodbcsql | tail -1 | grep ^ii",
}
如果软件包已经安装,unless 用于使 not 幂等运行。
此方法的缺点是它仅在使用 apt-get 时有效,如果您希望此方法也适用于其他系统,您应该提供 $osfamily
with if 语句以使用正确的包管理器。
要安装使用 PHP Microsoft SQL Linux 驱动程序所需的 mssql-tools 附带的 msodbcsql,需要以下命令
sudo ACCEPT_EULA=Y apt-get install mssql-tools
然而,当用 Puppet 安装这个时,失败了,当前使用的 puppet 代码
package { 'mssql-tools' : ensure => latest, }
但是这个returns一个错误:
ERROR: The EULA was not accepted. Installation aborted.
Puppet 需要什么才能成功安装此包。 我已经尝试在调用包命令之前设置环境变量。
Exec { environment => [ "ACCEPT_EULA=Y" ] }
微软的安装说明在这里:
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 { "/usr/bin/apt-get -yq install msodbcsql":
environment => "ACCEPT_EULA=Y",
unless => "/usr/bin/dpkg -l msodbcsql | tail -1 | grep ^ii",
}
如果软件包已经安装,unless 用于使 not 幂等运行。
此方法的缺点是它仅在使用 apt-get 时有效,如果您希望此方法也适用于其他系统,您应该提供 $osfamily
with if 语句以使用正确的包管理器。