2017-09-08 3 views
0

나는 Anothing에서 yaml 템플릿을 생성 중이고 연결 문자열 두 개를 잘라내려고합니다. 연결 때문에 regex_replace에 올바르게 파이프되지 않기 때문에 다음 코드가 작동하지 않습니다. 는 난 단지 일반적으로 그냥 하나 개의 변수로이 두 가지 결합 할 수 있습니다 (이 예에서는 처음 10 개 문자) 처음 n 문자연결이 끊긴 연결 문자열

을 원하는 다음

{{variabel [:10] }}

을하지만 난 할 결코 수 있어요 없습니다입니다 이 경우에는 작업중인 파일이 변수와 결합되어 yaml 파일로 저장되기 때문에 ...

기본적으로 새 변수를 결합하거나 생성하지 않고 문자열을 자르고 싶습니다.

- hosts: localhost 
    gather_facts: False 


    vars: 
    foo: "somelongstring" 


    tasks: 
- name: Display debug output 
     debug: 
      msg: "{{ foo + '-moretext' | regex_replace('^.{0,10}', '\\1') }} " 

답변

1

복잡한 식 (필터 시퀀스 제외)에 필터 또는 연산자를 적용하려면 괄호로 묶어야합니다.

그래서 한 행동에 연결의 결과를 잘라야합니다 :

msg: "{{ (foo + '-moretext')[:10] }} " 

BTW, 또한 truncate filter이 : 내가 찾던 정확히 무엇을

msg: "{{ (foo + '-moretext') | truncate(10, True, '') }} " 
+0

, 감사합니다 .. 내가 모를 수가 신뢰할 수있는 문서에서 잘린 필터를 찾지 만 내 북마크 폴더에 안전한 장소가있는 것을 찾았습니다. https://github.com/lxhunter/ansible-filter-plugins/blob/master/docs/jinja_functions.md –

+1

대부분의 필터는 jinja2 내장 필터입니다. h ttp : //jinja.pocoo.org/docs/2.9/templates/#builtin-filters. 추가 된 필터는 http://docs.ansible.com/ansible/latest/playbooks_filters.html에 문서화되어 있습니다. 찾은 링크는 사용 가능한 모든 필터를 요약 한 것입니다. – zigarn

관련 문제