che*_*hen 28 regex ansible ansible-playbook
我想在安装期间更改文件/var/www/kibana/config.js中的一行代码
elasticsearch: "http://"+window.location.hostname+":9200"
Run Code Online (Sandbox Code Playgroud)
至
elasticsearch: "http://192.168.1.200:9200"
Run Code Online (Sandbox Code Playgroud)
在这里,我尝试使用lineinfile来执行此操作,如下所示
- name: Comment out elasticsearch the config.js to ElasticSearch server
lineinfile:
dest=/var/www/kibana/config.js
backrefs=true
regexp="(elasticsearch.* \"http.*)$"
line="elasticsearch\: \" {{ elasticsearch_URL }}:{{ elasticsearch_port }} \" "
state=present
Run Code Online (Sandbox Code Playgroud)
我已经设置的变量{{elasticsearch_URL}}
,并{{elasticsearch_port}}
以http://192.168.1.200
和9200
分别.
这是我遇到的错误消息:
ERROR: Syntax Error while loading YAML script, /Users/shuoy/devops_workspace/ansible_work/logging-for-openstack/roles/kibana/tasks/Debian.yml
Note: The error may actually appear before this position: line 29, column 25
regexp="(elasticsearch.* \"http.*)$"
line="elasticsearch\: \" {{ elasticsearch_URL }}:{{ elasticsearch_port }} \" "
^
Run Code Online (Sandbox Code Playgroud)
小智 23
你需要将整行包含"
在:
出现的位置.
lineinfile:
'dest=/var/www/kibana/config.js
backrefs=true
regexp="(elasticsearch.* \"http.*)$"
line="elasticsearch\: \ {{ elasticsearch_URL }}:{{ elasticsearch_port }} \ "
state=present'
Run Code Online (Sandbox Code Playgroud)
udo*_*dan 17
在任何情况下都可以使用的解决方案,无论您有多少嵌套引号,并且不强迫您在整个事物周围添加更多引号(根据您要编写的行,这可能会变得棘手到不可能)是输出冒号通过Jinja2表达式,它只是将冒号作为字符串返回:
{{ ":" }}
Run Code Online (Sandbox Code Playgroud)
或者在你的完整行:
line="elasticsearch\: \" {{ elasticsearch_URL }}{{ ":" }}{{ elasticsearch_port }} \" "
Run Code Online (Sandbox Code Playgroud)
the*_*est 11
只需将冒号分别保留在引号中 -
regexp="(elasticsearch.* \"http.*)$" line="elasticsearch':' \" {{ elasticsearch_URL }}:{{ elasticsearch_port }} \" "