首页 > 解决方案 > 使用 Ansible lineinfile 模块添加“#”符号的问题

问题描述

我正在尝试在 /etc/auto.master 文件下的一行前面添加一个 # 符号,如下所示

名称:设置 auto.master 步骤 1

    lineinfile:
     path: /etc/auto.master
     regexp: '^+auto.master'
     line: '^#+auto.master'

但是,当我运行我的剧本时,这就是我得到的

失败的!=> {"changed": false, "module_stderr": "与 ifmliae1p.bbh.com 的共享连接已关闭。\r\n", "module_stdout": "回溯(最近一次通话最后):\r\n 5.94-16341 -164301267793697/AnsiballZ_lineinfile.py\",第 102 行,在 \r\n _ansiballz_main()\r\n 文件 \"/root/.ansible/tmp/ansible-tmp-1590180565.94-16341-164301267793697/Ansibal\r\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\r\n 文件 \"/root/.ansible/tmp/ansible-tmp-1590180565.94-16341-164301267793697/AnsiballZ_lineinfile.py\", 第 40 行,ininvokele.modules.files.lineinfile ', init_globals=None, run_name='', alter_sys=True)\r\n 文件 \"/usr/lib64/python2.7/runpy.py\", 第 176 行, 在 run_module\r\n fname, loader, pkg_name)\ne 82, in _run_module_code\ r\n mod_name、mod_fname、mod_loader、pkg_name)\r\n 文件\"/usr/lib64/python2.7/runpy.py\",第 72 行,_run_code\r\n run_globals 中的执行代码\r\n文件 _lineinfile_payload.zip/ansible/modules/files/lineinfile.py\",第 573 行,在 \r\n 文件 \"/tmp/ansible_lineinfile_payload_KyHa6O/ansible_lineinfile_payload.zip/ansible/modules/file\"/tmp/ansible_lineinfile_payload_KyHa6O/ansible_lineinfile_payload .zip/ansible/modules/files/lineinfile.py\",第 277 行,当前\r\n 文件 \"/usr/lib64/python2.7/re.py\",第 190 行,在 r\n 文件中\"/usr/lib64/python2.7/re.py\",第 242 行,在 _compile\r\n 中引发错误,v # invalid expression\r\nsre_constants。错误:没有可重复的内容\r\n", "msg": "MODULE FAILURE\n参见 stdo

我不确定为什么它不起作用。ansible 文档页面上的示例似乎工作正常。

标签: pythonansible

解决方案


显然,我的想法偏向了一边。我认为这条线是问题

line: '^#+auto.master'

但这是罪魁祸首

regexp: '^+auto.master'

加号必须像这样转义。

  regexp: '^\+auto.master'
  line: '#+auto.master'

推荐阅读