首页 > 解决方案 > Ansible:在文件的现有行上附加正则表达式

问题描述

我必须使用 Ansible 模块来编辑 ssl.conf 文件 - 每次我导入新证书时。目前我正在使用 shell 模块执行 sed 命令,但如果可能的话,我想使用 lineinfile

sed -i '/^SSLRequire/ s/.$/|^.*.us-gov-vodafone-1.*\//' ssl.conf -i_backup_$(date "+%m%d%y")

给定的 sed 将删除行尾的 / 并附加 '|^。.us-gov-vodafone-1。/'

我尝试了不同的方法来实现它,但不能。

任何建议将不胜感激。

我尝试了下面的代码,但它没有给我正确的结果

---
- hosts: ub2
#  user: ansible
  vars:
   test:
   - '|^.*.us-gov-vodafone-1.*/'
  tasks:
  - name: append reguler expression
    lineinfile:
     dest: /tmp/ssl.conf
     backrefs: yes
     state: present
     regexp: '^(SSLRequire(?!.*\b{{ test }}\b).*)$'
     line: '\1 {{ test }}'


PLAY [ub2] ***************************************************************************************************************************************************

TASK [Gathering Facts] ***************************************************************************************************************************************
ok: [192.168.56.102]

TASK [append reguler expression] *****************************************************************************************************************************
fatal: [192.168.56.102]: FAILED! => {"changed": false, "module_stderr": "Shared connection to 192.168.56.102 closed.\r\n", "module_stdout": "Traceback (most recent call last):\r\n  File \"/home/ansible/.ansible/tmp/ansible-tmp-1546198717.33-9064765281500/AnsiballZ_lineinfile.py\", line 113, in <module>\r\n    _ansiballz_main()\r\n  File \"/home/ansible/.ansible/tmp/ansible-tmp-1546198717.33-9064765281500/AnsiballZ_lineinfile.py\", line 105, in _ansiballz_main\r\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\r\n  File \"/home/ansible/.ansible/tmp/ansible-tmp-1546198717.33-9064765281500/AnsiballZ_lineinfile.py\", line 48, in invoke_module\r\n    imp.load_module('__main__', mod, module, MOD_DESC)\r\n  File \"/tmp/ansible_lineinfile_payload_LyoFsx/__main__.py\", line 524, in <module>\r\n  File \"/tmp/ansible_lineinfile_payload_LyoFsx/__main__.py\", line 515, in main\r\n  File \"/tmp/ansible_lineinfile_payload_LyoFsx/__main__.py\", line 264, in present\r\n  File \"/usr/lib/python2.7/re.py\", line 194, in compile\r\n    return _compile(pattern, flags)\r\n  File \"/usr/lib/python2.7/re.py\", line 251, in _compile\r\n    raise error, v # invalid expression\r\nsre_constants.error: bad character range\r\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
        to retry, use: --limit @/home/ansible/find_and_append_2.retry

PLAY RECAP ***************************************************************************************************************************************************
192.168.56.102             : ok=1    changed=0    unreachable=0    failed=1

标签: shellsedansible

解决方案


推荐阅读