首页 > 解决方案 > Ansible:在树莓派上修改 cmdline.txt

问题描述

我正在修改 /boot/cmdline.txt 以将容器功能添加到 Raspberry Pi,因此我需要cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory在同一行中添加到文件中。

我正在尝试使用该lineinfile模块来做这件事,但没有取得多大成功:

- hosts: mypi
  become: yes
  tasks:
  - name: Enable container features
    lineinfile:
      path: /boot/cmdline.txt
      regex: " cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory"
      line: " cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory"
      insertafter: EOF
      state: present

我一直在尝试修改insertafter为 BOF,insertbefore也使用正则表达式来匹配最后一个单词......但它最终添加了一个回车。我一直无法找到不添加新行的方法。

标签: ansible

解决方案


由于文件中只有一行,因此您可以使用replace或来做到这一点lineinfile。这是replace版本:

  - name: Enable container features
    replace:
      path: cmdline.txt
      regexp: '^([\w](?!.*\b{{ item }}\b).*)$'
      replace: '\1 {{ item }}'
    with_items:
    - "cgroup_enable=cpuset"
    - "cgroup_memory=1"
    - "cgroup_enable=memory"

从这里偷了答案


推荐阅读