2017-11-03 6 views
0

많은 csv 파일이 있으며 다양한 구성에 대한 조회 데이터가 포함되어 있습니다.가능 : 조회 파일에서 변수를 만드는 방법

#eg of lookup file csv 
hostname,ip,country,type,port 
atlanta1,1.2.3.4,US,ui,8080 
toronto1,1.2.3.5,CA,ui,8080 
toronto2,1.2.3.9,CA,db,8000 
another3,1.2.3.6,UK,db,8000 

우리는

# Eg. concatenated variables http:{{hostname}}:{{port}} from above lookup csv file 
ui_cluster = http://atlanta1:8080;http://toronto1:8080 
db_cluster = http://atlanta1:8000;http://toronto1:8000 

.. 그리고 마지막으로 연결된 변수가 최종 플레이 북에서 사용되는 다음 다른 플레이 북에서 사용 할 필요가 복잡한 & 연결된 변수를 채울 필요가

#configurations in final customer template 
my_build_script_UIcluster= {{ui_cluster}} 
my_build_script_DBcluster= {{db_cluster}} 

위의 조회에서 생성 된 변수를 템플릿 내에서 사용하고자합니다. 이것을 위해 또는 최선의 접근 방법은 무엇입니까?

+0

시작을위한 "* 조회 파일 *"이 무엇인지 설명하십시오. – techraf

+0

안녕 조회는 게시물에 예제로 넣었습니다 그냥 CSV 파일입니다. – diaryfolio

+0

방금 ​​정규 파일에 "* lookup file *"이라는 이름을 사용 했습니까? 아마도 독자 (및 검색 엔진 사용자)와 Anipal [조회] (https://docs.ansible.com/ansible/latest/playbooks_lookups.html)을 혼동 할 수 있습니다. 맞습니까? 그리고 "위의 조회 *에서"실제로 조회를 의미하지는 않습니다. 훌륭한 의사 소통 기술! – techraf

답변

1

은 다음을 사용할 수 jinja2 csv lookup filter :

csvfile 조회가 CSV (쉼표로 구분 된 값) 형식의 파일의 내용을 판독한다. 조회는 첫 번째 열이 keyname과 일치하는 행을 찾고 다른 열이 지정되지 않는 한 두 번째 열의 값을 반환합니다.

(공식 문서부터) 룩업 필터는 각 라인이 키 값 개체로 표시되는 배열을 반환한다. 당신은 하나의 키 값의 목록을 만들 수 jinja2 map filter를 사용할 수 있습니다

객체의 순서에 필터를 적용하거나 속성을 찾습니다. 이것은 개체 목록을 처리 할 때 유용하지만 실제로는 특정 값에만 관심이있는 입니다.

(공식 문서에서) 이것은 당신이 아닌 복사 및 붙여 넣기 답변을 입력해도 필요한 모든 것을해야합니다.

+0

안녕하세요, 나는 조회 필터를 이미 완료했습니다. 그리고 변수를 사용하면 작동합니다. 그러나 중간에 복잡한 변수를 만들고 나서 최종 템플릿에이 복잡한/연결된 변수를 사용하려고합니다. – diaryfolio

+1

'set_fact'를 사용하여 사실을 동적으로 추가 할 수 있습니다. Jinja2 템플릿 문자열을 거기에서 사용할 수 있습니다. 지금까지 작성한 실제 코드를 포함하도록 질문을 업데이트하면 나는 무엇인가를 알아 내려고 노력할 수 있습니다. – Max