如何使用Ansible自动接受Unix版MS ODBC的EULA完成CentOS7系统更新
解决CentOS7更新时MS ODBC驱动EULA交互问题方案
方案1:预设RPM全局宏(长期生效,适配安装/更新全场景)
MS ODBC驱动的RPM包在安装、更新时都会读取RPM全局宏判断是否已接受EULA,提前写入配置即可永久跳过交互确认,在系统更新任务前新增如下任务:
- name: 预配置接受MS ODBC驱动EULA copy: content: "%_msodbcsql_eula_acceptance yes" dest: /etc/rpm/macros.msodbcsql mode: '0644'
方案2:给更新任务传递生效环境变量
之前环境变量不生效,通常是因为没有绑定到dnf模块的执行上下文,子进程无法继承全局环境变量,调整后的完整任务写法如下:
tasks: - name: 预配置接受MS ODBC驱动EULA copy: content: "%_msodbcsql_eula_acceptance yes" dest: /etc/rpm/macros.msodbcsql mode: '0644' - name: 更新系统全量包 dnf: name: '*' state: latest environment: ACCEPT_EULA: Y
补充说明
- 若CentOS7未安装dnf,可直接将
dnf模块替换为yum模块,配置逻辑完全一致 - 若仅需临时处理单次更新,可省略写RPM宏的任务,仅给更新任务加
environment参数即可
内容的提问来源于stack exchange,提问作者Kevin Nelson
相关产品推荐
相关产品推荐

