2016-10-01 3 views
2

내 사용자 지정 라이브러리를 만들었으므로 내 사용자 지정 라이브러리를 내 리포지토리의 공용 폴더에 추가했습니다. 그 점에서 변수를 동적으로 전달해야합니다. 그것은 기밀 패스워드입니다. 그래서 나는 금고에서 "금고 (vault)"를 사용하고 있습니다.책임감있는 include_vars 사용 방법

내 요구 사항은 호스트 앞에 tasks\main.ymlinclude_vars을 전달하는 방법입니다.

예 :이 같은 mytasks.yml

- include_vars: sample_vault.yml 
- include: sample_tasks.yml 
- hosts: localhost 
    tasks: 
    name: "free task" 
    command: ls -a 

내 디렉토리 구조 : 내가 사용 호스트 작업을 실행하기 전에 다음

myfolder 
    - common 
     -library 
     -my file.py 
     - sample_tasks.yml 

    - mytasks 
     -mytasks.yml(my main master playbook file) 
     -sample_vault.yml (note:i create this using vault for confidential purpose) 
     - roles 
     -myrole 

내가 sample_vault.yml 파일에 전달 된 변수를 사용하여 sample_tasks 파일을 실행해야 책임감있는. 추가 변수를 사용하면 암호가 표시되므로 필요하지 않습니다. ,

ERROR! 'include_vars' is not a valid attribute for a Play

답변

7

당신은이 방법을 include_vars 사용할 수 없습니다 그것은 tasks 아래에서만 사용 가능한 :

tasks/main.yml 파일에 include_vars을 사용하여, 다음과 같은 오류를 보여줍니다.
sample_tasks.yml이 작업 목록 인 경우 작업 영역 레벨에서도 사용할 수 없습니다. 설명을 보려면 other answer을 참조하십시오.

- hosts: localhost 
    vars_files: 
    - sample_vault.yml 
    tasks: 
    name: "free task" 
    command: ls -a 

또는 별도의 변수로 파일을 전달합니다 :

이 같은 vars_files을 사용할 수 있습니다

ansible-playbook --ask-vault-pass -e @sample_vault.yml myplaybook.yml 
+0

감사합니다 좋은 대답을! 'vars_files'로 전환함으로써, 2+ 환경에서'environment' 파일로 저장된 파일의'include_vars'에 문제가 있습니다! – andi