2017-04-13 96 views
0

我的要求是我想在我的Ansible腳本中動態地包含變量文件。我可以按照我的任務爲ansible如何從Ansible中的S3中抽取變量文件

- name: Include vars file 
    include_vars: vars/dev.yml 

- name: Some other task 
    cp: copy something 

上述工作,如果我保持dev.yml在我瓦爾目錄中做到這一點的推杆。現在我實際上不想將dev.yml放在目錄中,我想從S3中取出它,然後使用它中的變量。像下面的東西 -

- name: Get dev file 
    s3: 
    bucket: bucket_name 
    object: object_name 
    dest: "dest_directory" ## Here I want the destination to be vars/dev.yml 
    mode: get 
    aws_access_key: "{{ s3.aws_access_key }}" 
    aws_access_key: "{{ s3.aws_secret_key }}" 

- name: Include vars file 
    include_vars: vars/dev.yml 

- name: Some other task that uses vars in dev.yml 
    template: render some template using vars in dev.yml and copy to server 

上述實際上不起作用。我該怎麼做呢?

+0

爲什麼這不起作用?請記住,應該在控制主機上獲取dev.yml,而不是託管主機。 –

+0

@KonstantinSuvorov - 好的我明白了,謝謝。但是目前我首先使用's3'模塊下載託管主機上的文件,然後使用'fetch'模塊將其複製到控制主機,然後使用它來加載變量。有什麼方法可以直接從s3獲取文件來控制主機? –

+0

嘗試'委託_to'? –

回答

0

謝謝Konstantin Suvorov尋求幫助。我只需要在我的任務中添加delegate_to

- name: Get dev file 
    s3: 
    bucket: bucket_name 
    object: object_name 
    dest: vars/dev.yml 
    mode: get 
    aws_access_key: "{{ s3.aws_access_key }}" 
    aws_access_key: "{{ s3.aws_secret_key }}" 
    delegate_to: localhost 

- name: Include vars file 
    include_vars: vars/dev.yml