shell - 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
解决方案
推荐阅读
- c++ - 创建字符串数组的有效方法
- r - 根据前导空格的数量将一列分成新列
- python - 识别谷歌语音识别断管python
- django - 密码重置未重定向到 Django 中的模板
- android - XmlResourceParser 在调用 next() 后停留在 START_DOCUMENT 状态
- c - 如何检查c socket中的TCP端口是否可用?
- javascript - 在 ASP.NET 应用程序中通过 jQuery 提交表单
- c# - 已验证实体的选择列表上的验证异常
- node.js - Atom 编辑器自定义节点 js 模块的自动完成功能
- git - 带有bitbucket的Visual Studio 2017,终端提示已禁用