2017-07-03 1 views
0

Ich habe einen Beispiel-Anwendungsfall, wo ich "glob" durch "URL" in nur wenigen Zeilen in der Datei ersetzen möchte. Der Rest der Datei muss nicht ersetzt werden.Inhalte in einer Datei nur in bestimmten Zeilen ersetzen

/publishfarm 
     { 
     # client headers which should be passed through to the render instances 
     # (feature supported since dispatcher build 2.6.3.5222) 
     /clientheaders 
      { 
       $include "clientheaders.any" 
      } 
     # hostname globbing for farm selection (virtual domain addressing) 
     /virtualhosts 
      { 
       $include "publish-vhosts.any" 
      } 
     # the load will be balanced among these render instances 
     /renders 
      { 
      $include "publish-renders.any" 
      } 
     # only handle the requests in the following acl. default is 'none' 
     # the glob pattern is matched against the first request line 
     /filter 
      { 
      # deny everything and allow specific entries 
      /0001 { /type "deny" /glob "*" } 

      # open consoles 
     # /0012 { /type "allow" /glob "* /crx/*" } # allow content repository 
     # /0013 { /type "allow" /glob "* /system/*" } # allow OSGi console 

      # allow non-public content directories 
     # /0021 { /type "allow" /glob "* /apps/*" } # allow apps access 
     # /0022 { /type "allow" /glob "* /bin/*" } 


     # /0024 { /type "allow" /glob "* /libs/*" } 
     # /0025 { /type "deny" /glob "* /libs/shindig/proxy*" } # if you enable /libs close access to proxy 

     # /0026 { /type "allow" /glob "* /home/*" } 
     # /0027 { /type "allow" /glob "* /tmp/*" } 
     # /0028 { /type "allow" /glob "* /var/*" } 


      /0023 { /type "allow" /glob "* /content*" } # disable this rule to allow mapped content only 

      # enable specific mime types in non-public content directories 
     /0041 { /type "allow" /glob "* *.css *" } # enable css 
     /0042 { /type "allow" /glob "* *.gif *" } # enable gifs 
     /0043 { /type "allow" /glob "* *.ico *" } # enable icos 
     /0044 { /type "allow" /glob "* *.js *" } # enable javascript 
     /0045 { /type "allow" /glob "* *.png *" } # enable png 
     /0046 { /type "allow" /glob "* *.swf *" } # enable flash 
     /0047 { /type "allow" /glob "* *.svg *" } # enable SVG 
     /0048 { /type "allow" /glob "* *.woff *" } # enable woff 
     /0049 { /type "allow" /glob "* *.ttf *" } # enable ttf 
     /0050 { /type "allow" /glob "* *.eot *" } # enable eot 
     /0051 { /type "allow" /glob "* *.jpg *" } # enable jpg 

     # enable features 
     /0061 { /type "allow" /glob "POST /content/[.]*.form.html" } # allow POSTs to form selectors under content 
     /0062 { /type "allow" /glob "* /libs/cq/personalization/*" } # enable personalization 
     /0063 { /type "allow" /glob "POST /content/[.]*.commerce.cart.json" } # allow POSTs to update the shopping cart 


      # deny content grabbing 
      /0081 { /type "deny" /glob "GET *.infinity.json*" } 
      /0082 { /type "deny" /glob "GET *.tidy.json*"  } 
      /0083 { /type "deny" /glob "GET *.sysview.xml*" } 
      /0084 { /type "deny" /glob "GET *.docview.json*" } 
      /0085 { /type "deny" /glob "GET *.docview.xml*" } 
      /0086 { /type "deny" /glob "GET *.*[0-9].json*" } 
      /0087 { /type "deny" /glob "GET *.feed.xml*"  } 
     # /0088 { /type "allow" /glob "GET *.1.json*"  } # allow one-level json requests 

Ich möchte glob in nur diese Blöcke von URL ersetzen und nicht für die gesamte Datei. Die Inhalte, die ich will, ersetzt werden sollen

 # enable specific mime types in non-public content directories 
    /0041 { /type "allow" /glob "* *.css *" } # enable css 
    /0042 { /type "allow" /glob "* *.gif *" } # enable gifs 
    /0043 { /type "allow" /glob "* *.ico *" } # enable icos 
    /0044 { /type "allow" /glob "* *.js *" } # enable javascript 
    /0045 { /type "allow" /glob "* *.png *" } # enable png 
    /0046 { /type "allow" /glob "* *.swf *" } # enable flash 
    /0047 { /type "allow" /glob "* *.svg *" } # enable SVG 
    /0048 { /type "allow" /glob "* *.woff *" } # enable woff 
    /0049 { /type "allow" /glob "* *.ttf *" } # enable ttf 
    /0050 { /type "allow" /glob "* *.eot *" } # enable eot 
    /0051 { /type "allow" /glob "* *.jpg *" } # enable jpg 

Hier der Fang die Zeilennummern ist festgelegt sind nicht. Wie kann ich dies in ansible erreichen.

Ich habe das gemacht: 41,51s/glob/url in dieser Datei öffne in vim und notiere dann die Anfangs- und die Endzeile. Aber wie gesagt, diese Zeilennummern ändern sich ständig.

+0

Wenn meine Antwort Ihre Frage beantwortet, würde ich es begrüßen, wenn Sie es als solches markieren würden. Wenn nicht, bin ich offen dafür, herauszufinden, wie es verbessert werden könnte. – rasebo

Antwort

-1

Ich werde vorschlagen, dass Sie ein Skript schreiben, kann die ganze Zeile zu finden, die enable css, enable gifs und usw. muss die glob in url zu ersetzen.

0

Ich konnte dies mit folgendem Befehl tun:

# ansible 127.0.0.1 -m replace -a "path='/my/path/test_file' regexp='W*(/glob)\W*(.*)W*(css)W*(.*)css$' replace='url \"* *.css *\" } # enable css'" 

Der W*(/glob)\W*(.*)W*(css)W*(.*)css$ Regex paßt alles zwischen „glob“ und dem Ende der Zeile, wenn es mit „css“ endet.

, die in diese innerhalb einer Task-Datei übersetzen sollte:

- replace: 
    path: /my/path/test_file 
    regexp: 'W*(/glob)\W*(.*)W*(css)W*(.*)css$' 
    replace: 'url \"* *.css *\" } # enable css'' 

Der Nachteil dieser Methode ist, dass Sie entweder ein Block für jede der CSS ersetzen müssten, Gifs, ICOS, Javascript etc.

also, ein besserer Ansatz wäre with_items zu verwenden und die Erweiterung verarbeiten und kommentieren wir wie so das Spiel tun:

- hosts: myhostgroup 
    tasks: 
    - replace: 
     path: /my/path/test_file 
     regexp: 'W*(/glob)\W*(.*)W*({{ item.extension }})W*(.*){{ item.comment }}$' 
     replace: 'url "* *.{{ item.extension }} *" } # enable {{ item.comment }}' 
     with_items: 
     - { extension: 'css', comment: 'css' } 
     - { extension: 'gif', comment: 'gifs' } 
     - { extension: 'ico', comment: 'icos' } 
     - { extension: 'js', comment: 'javascript' } 
     - { extension: 'png', comment: 'png' } 
     - { extension: 'swf', comment: 'flash' } 
     - { extension: 'svg', comment: 'SVG' } 
     - { extension: 'woff', comment: 'woff' } 
     - { extension: 'ttf', comment: 'ttf' } 
     - { extension: 'eot', comment: 'eot' } 
     - { extension: 'jpg', comment: 'jpg' } 

ich bin sicher, dass die Regex co utd verbessert werden, aber das hat für meinen Test auf Ihrer Datei funktioniert.

Verwandte Themen