问题描述
当使用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任务。如果有新的功能支持,将会更便利。