Итак, просто чтобы понять это, преимущество интерфейса в том, что я могу отделить вызов метода от любого конкретного класса. Вместо этого создается экземпляр интерфейса, где реализация предоставляется из того класса, который я выбираю, который реализует этот интерфейс. Таким образом, у меня есть много классов, которые имеют сходную, но немного отличающуюся функциональность, а в некоторых случаях (случаи, связанные с намерением интерфейса) не заботятся о том, какой именно объект.
Например, я мог бы интерфейс движения. Метод, который делает что-то «движение», и любой объект (Person, Car, Cat), который реализует интерфейс движения, может быть передан и передан для перемещения. Без метода, каждый из которых знает тип класса.
вам нужно заключить всю строку в "
, где появляется :
.
lineinfile:
'dest=/var/www/kibana/config.js
backrefs=true
regexp="(elasticsearch.* \"http.*)$"
line="elasticsearch\: \ {{ elasticsearch_URL }}:{{ elasticsearch_port }} \ "
state=present'
foo=bar
является более подходящим форматом для однострочной директивы, но поскольку вы все равно уже охватываете несколько строк с вашими параметрами, просто измените =
на :
, и он не будет суетиться с двоеточием в вашей строке.
- 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 }} \" "
Просто держите двоеточие в кавычках отдельно -
regexp="(elasticsearch.* \"http.*)$" line="elasticsearch':' \" {{ elasticsearch_URL }}:{{ elasticsearch_port }} \" "
Решение, которое будет работать в любом случае независимо от того, сколько вложенных котировок вы могли бы иметь и не заставляя вас добавлять больше цитат вокруг всего (что может оказаться сложным в невозможном в зависимости от строки, которую вы хотите записать) выведите двоеточие через выражение Jinja2, которое просто возвращает двоеточие в виде строки:
{{ ":" }}
Или в вашей полной строке:
line="elasticsearch\: \" {{ elasticsearch_URL }}{{ ":" }}{{ elasticsearch_port }} \" "
awk -F{{ ":" }} '/[^{{ ":" }}]*{{ ":" }}\$/{print " " $1 "{{ ":" }} " $2}' /tmp/shadow
– ceving
26 January 2017 в 10:23