Ansible-在没有提示的情况下进行版本升级



在Ubuntu上,我想用命令"进行发布升级";通过Ansible,但它有无法避免的提示。

有没有一种方法可以使用Ansible来回答运行Ansible脚本的用户的提示?

我们有几个服务器无法使用SSH访问,但使用Ansible可以访问。

服务器在Ubuntu 16.04上,所有服务器都需要升级到Ubuntu 20.04。

在这个过程中,有很多不可避免的提示。

有没有一种方法可以使用ansible剧本,让运行ansible脚本的用户在shell脚本提示下回答问题?

您可以使用expect模块。示例:

- name: Upgrading Software
expect:
command: do-release-upgrade
responses:
'First Question in the prompt' : 'y'
'Second Question in the prompt' : 'y'

但是,您希望在没有提示的情况下执行do版本升级。

- shell: do-release-upgrade -f DistUpgradeViewNonInteractive

请注意:

  • 请确保在升级前有备份和/或快照
  • 确保所有软件包都是最新版本
  • 确保已安装更新管理器核心
  • 确保在do版本升级后重新启动计算机

另外,请阅读我的第一条评论。由于您没有与机器的SSH连接,因此很难进行调试,也很难在出现问题时查看情况。

注意,Ubuntu默认情况下会将日志保留在/var/log/dist-upgrade,使用这些日志来检查/验证升级。他们提供了很多帮助!

这对我来说是一个有效的解决方案。

这适用于从Ubuntu 16升级到Ubuntu18以及Ubuntu 18到Ubuntu 20

但这里的问题是,如果您错过了一个问题,服务器将无法访问

---
- name: Upgrading Software
shell: echo "N N N N N N N N N N" | do-release-upgrade -f DistUpgradeViewNonInteractive
- name: Reboot the machine (Wait up to 10 min)
include_tasks: /vagrant/ansible/roles/_handlers/reboot-and-reconect.yml
when: reboot_and_reconnect == "y"

注意:请注意,在开始版本升级之前,必须更新和升级所有软件包。

当很难从头开始设置新服务器,然后安装所需的软件包和其他东西时,这是一个演练解决方案。

相关内容

  • 没有找到相关文章

最新更新