在Ansible中使用OpenSUSE事务性服务器进行更新

79次阅读
没有评论

问题描述

当使用OpenSUSE事务性服务器时,需要使用transactional-update命令来替代Zypper进行系统更新。用户想知道是否可以在Ansible中实现这一操作。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

目前,Ansible还没有原生支持transactional-update的功能。然而,你可以使用command(或shell)模块来执行这个命令。有一个新的功能请求正在处理中,你可以在这个链接上查看详情:https://github.com/ansible-collections/community.general/issues/3159

以下是在Ansible中使用transactional-update命令的示例:

- name: 使用transactional-update安装软件包
  ansible.builtin.command: transactional-update --continue pkg install your_package_name

你可以添加多个软件包名称。--continue参数非常重要,因为否则只有最后一次调用transactional-update会生效。

需要注意的是,这种方法存在一些局限性。首先,它需要系统重新启动才能使更新生效,虽然可以从Ansible触发重新启动,但这可能会中断当前的Ansible运行。其次,需要考虑到所有对/etc/目录的更改都需要在transactional-update run(或shell)中应用,而从那里你无法访问所有位置,比如/home,这是Ansible通常用于存储临时数据的位置。

因此,如果你需要在Ansible中使用transactional-update进行系统更新,你可以使用上述方法,但要注意上述局限性,特别是系统重新启动可能会中断当前的Ansible任务。如果有新的功能支持,将会更便利。

正文完