我想创建一个 ansible 任务。 playbook 本身应该在我的新 Linux 环境中安装和配置一些设置,因此,我需要做的事情之一就是安装 zsh,然后,以这种方式向 /etc/zsh/zshenv 写入一行:
- name: Check if /etc/zsh/zshenv exists
ansible.builtin.stat:
path: "/etc/zsh/zshenv"
register: file_status
- name: Creates /etc/zsh/zshenv if it doesn't exists
ansible.builtin.file:
path: /etc/zsh/zshenv
state: touch
owner: root
group: root
mode: '0644'
when: not file_status.stat.exists
- name: configure ZDOTDIR en /etc/zsh/zshenv
ansible.builtin.lineinfile:
path: /etc/zsh/zshenv
line: 'ZDOTDIR=$HOME/.config/zsh/'
state: present
我想知道是否有任何方法可以只使用一两个任务而不是三个。更好的是,由于我没有运行 ansible 的经验,我想知道是否有更好的方法来做到这一点。
提前非常感谢!
lineinfile
模块具有 create
参数来创建文件(如果尚不存在)mode
、group
和 owner
,就像 file
模块一样。总而言之,您只需要一项任务即可实现您的目标:
- name: Configure ZDOTDIR en /etc/zsh/zshenv
ansible.builtin.fileinfile:
path: /etc/zsh/zshenv
line: 'ZDOTDIR=$HOME/.config/zsh/'
create: true
state: present
owner: root
group: root
mode: '0644'