インストール中に/var/www/kibana/config.jsファイルのコードの1行を変更したい
elasticsearch: "http://"+window.location.hostname+":9200"
に
elasticsearch: "http://192.168.1.200:9200"
ここでは、以下に示すように、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
{{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 }} \" "
^
ネストされた引用符の数に関係なく、全体を囲む引用符を追加することを強制せずに(書き込みたい行に応じてトリッキーに不可能になる可能性があります)、どのような場合でも機能するソリューションは、コロンを出力することです単純にコロンを文字列として返すJinja2式を使用します。
{{ ":" }}
またはあなたの完全な行で:
line="elasticsearch\: \" {{ elasticsearch_URL }}{{ ":" }}{{ elasticsearch_port }} \" "
コロンを引用符で区切っておくだけです-
regexp="(elasticsearch.* \"http.*)$" line="elasticsearch':' \" {{ elasticsearch_URL }}:{{ elasticsearch_port }} \" "
foo=bar
は1行のディレクティブにより適した形式ですが、とにかくパラメーターを使用して既に複数の行にまたがっているので、単に=
から:
、それはあなたの文字列にコロンがあることについて大騒ぎしません。
- 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
すでに文字列です。その中のコロンをエスケープする必要はありません(ここに示すように、できません)。
line="elasticsearch: \" {{ elasticsearch_URL }}:{{ elasticsearch_port }} \" "