我想在 Ansible 中编写一个任务来执行以下命令:
“systemctl set-default Graphical.target”,不使用 shell/命令模块。
不确定“ansible.builtin.systemd”模块是否有此选项。
您可以使用该command模块并使用一些魔法来为您的问题提供幂等解决方案。实际上没有具体的模块,并且给定的 systemd 模块的更改请求已关闭且未合并。
- name: "Get current systemd default"
command: "systemctl get-default"
changed_when: false
register: systemdefault
- name: "Set default to graphical target"
command: "systemctl set-default graphical.target"
when: "'graphical' not in systemdefault.stdout"
Run Code Online (Sandbox Code Playgroud)
当然这需要使用命令。但是,当您知道何时需要使用命令时,没有什么不好的理由不使用命令。它看起来不太好——好吧。但最终,自定义模块也会在后台执行相同的操作,对于这样的“单一”问题可能有点复杂。实际上“链接”解决方案的作用是相同的,但有必要明确知道链接文件的位置(参见 Debian)。
小智 5
执行的时候systemctl set-default graphical.target可以看到这个日志
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
Run Code Online (Sandbox Code Playgroud)
然后您可以使用file模块创建符号链接,如下所示
- name: Change default target
hosts: all
become: yes
gather_facts: no
tasks:
- name: Change default target to graphical.target
file:
src: /usr/lib/systemd/system/graphical.target
dest: /etc/systemd/system/default.target
state: link
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6777 次 |
| 最近记录: |