Saurabh Goyal
Saurabh Goyal

Reputation: 647

How to pull a variable file from S3 in Ansible

My requirement is that I want to dynamically include a variable file in my Ansible script. I can do that by putting following in my ansible task-

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

- name: Some other task
  cp: copy something

Above works if I keep the dev.yml in my vars directory. Now I actually do not want to put the dev.yml in the directory, I want to pull it from S3 and then use the variable in it. Something like below-

- 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

The above will actually not work. How do I do this?

Upvotes: 1

Views: 2590

Answers (1)

Saurabh Goyal
Saurabh Goyal

Reputation: 647

Thanks Konstantin Suvorov for help. I just needed to add delegate_to in my task.

- 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

Upvotes: 2

Related Questions