我可以在安装 yum 包时自动接受 MS SQL 许可条款吗?

Nat*_*ith 9 yum centos ansible

我正在使用Ansible将MS SQL Server 2017 配置到CentOS 7.4 机器。我首先通过命令行浏览了本指南并且它有效,但我的最终目标是“Ansible-ize”它。但是,当我进入安装命令行工具的步骤时,该-y开关无法接受许可证。

[user@host ~]$ sudo yum install -y mssql-tools unixODBC-devel
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package mssql-tools.x86_64 0:14.0.6.0-1 will be installed
--> Processing Dependency: msodbcsql < 13.2.0.0 for package: mssql-tools-14.0.6.0-1.x86_64
--> Processing Dependency: msodbcsql >= 13.1.0.0 for package: mssql-tools-14.0.6.0-1.x86_64
---> Package unixODBC-devel.x86_64 0:2.3.1-11.el7 will be installed
--> Running transaction check
---> Package msodbcsql.x86_64 0:13.1.9.1-1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package          Arch     Version          Repository                     Size
================================================================================
Installing:
 mssql-tools      x86_64   14.0.6.0-1       packages-microsoft-com-prod   249 k
 unixODBC-devel   x86_64   2.3.1-11.el7     pwbank_repo                    55 k
Installing for dependencies:
 msodbcsql        x86_64   13.1.9.1-1       packages-microsoft-com-prod   4.0 M

Transaction Summary
================================================================================
Install  2 Packages (+1 Dependent package)

Total size: 4.2 M
Installed size: 4.4 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
The license terms for this product can be downloaded from
https://aka.ms/odbc131eula and found in
/usr/share/doc/msodbcsql/LICENSE.TXT . By entering 'YES',
you indicate that you accept the license terms.

Do you accept the license terms? (Enter YES or NO)
YES
  Installing : msodbcsql-13.1.9.1-1.x86_64                                  1/3 
The license terms for this product can be downloaded from
http://go.microsoft.com/fwlink/?LinkId=746949 and found in
/usr/share/doc/mssql-tools/LICENSE.txt . By entering 'YES',
you indicate that you accept the license terms.

Do you accept the license terms? (Enter YES or NO)
YES
  Installing : mssql-tools-14.0.6.0-1.x86_64                                2/3 
  Installing : unixODBC-devel-2.3.1-11.el7.x86_64                           3/3 
  Verifying  : msodbcsql-13.1.9.1-1.x86_64                                  1/3 
  Verifying  : unixODBC-devel-2.3.1-11.el7.x86_64                           2/3 
  Verifying  : mssql-tools-14.0.6.0-1.x86_64                                3/3 

Installed:
  mssql-tools.x86_64 0:14.0.6.0-1      unixODBC-devel.x86_64 0:2.3.1-11.el7     

Dependency Installed:
  msodbcsql.x86_64 0:13.1.9.1-1                                                 

Complete!
Run Code Online (Sandbox Code Playgroud)

我注意到在提示我说RPMDB 在 yum 之外改变之前有一个警告。这是否意味着微软以自己的方式专门修改了这个rpm,因此yum不知道如何处理它?

我的目标

尽管上述适用于“手动”安装,但我正在尝试“ansible-ize”上述内容。我的剧本一直有效,直到我开始玩这个游戏:

- name: Upgrade all installed packages, and install new ones
  package:
    name: '{{item}}'
    state: latest
  with_items:
    - '*'
    - mssql-server
    - mssql-tools
    - unixODBC-devel
Run Code Online (Sandbox Code Playgroud)

上面的播放将更新我当前安装的所有包并安装MS SQL Server 2017就好了,但它会在尝试安装mssql-tools包时挂起,我认为是因为它正在等待用户接受许可证。

我的问题

如果我的剧本挂起,我如何“ansible-ize”这个安装,等待用户接受许可证?

对于奖励积分,有一个步骤我必须运行sudo /opt/mssql/bin/mssql-conf setup并按照屏幕上的提示进行操作,这再次阻碍了我的配置。我正在浏览它一次,找到它的输出文件,看看我是否不能在我重新配置一个新盒子时直接复制它。或者,我正在阅读Expect。

Arn*_*ion 11

- name: install mssql-server repo (CentOS, RedHat)
  get_url:
    url: "{{ centos_repo_url }}"
    dest: /etc/yum.repos.d/mssql-server.repo
  when: ansible_distribution in ['CentOS', 'RedHat']

- name: install mssql-server repo (Ubuntu)
  get_url:
    url: "{{ ubuntu_repo_url }}"
    dest: /etc/apt/sources.list.d/mssql-server.list
  when: ansible_distribution == 'Ubuntu'

- name: refresh apt-get cache for server repo (Ubuntu)
  command: apt-get update
  when: ansible_distribution == 'Ubuntu'

- name: install mssql-server package
  package:
    name: mssql-server
    state: latest

- name: install mssql-tools package
  package:
    name: mssql-tools
    state: latest
  environment:
    ACCEPT_EULA: 'y'
Run Code Online (Sandbox Code Playgroud)

https://github.com/Microsoft/sql-server-samples/tree/master/samples/features/high%20availability提供了用于安装和配置 SQL Server(以及创建 Pacemaker 管理的可用性组)的示例手册/Linux/Ansible%20Playbook

  • 谢谢,这个解决了。特别是我缺少的`environment:ACCEPT_EULA:'y'`。 (2认同)

小智 6

这应该适用于工具的 EULA

sudo ACCEPT_EULA=Y apt-get install -y mssql-tools unixodbc-dev

至于无人值守安装,您可以在安装过程中为大多数事情指定环境变量或命令行选项。查看示例:用于 Red Hat Enterprise Linux 的无人值守 SQL Server 安装脚本。

注意:我注意到链接中的 repo 仍然指向旧的 pre-RTM repo。请在我们更正它们时使用这些存储库。