O módulo ansible S3 atualmente não possui uma maneira integrada de sincronizar os buckets com o disco de forma recursiva.
Em teoria, você pode tentar coletar as chaves para baixar com um
- name: register keys for syncronization
s3:
mode: list
bucket: hosts
object: /data/*
register: s3_items
- name: sync s3 bucket to disk
s3:
mode=get
bucket=hosts
object={{ item }}
dest=/etc/data/conf/
with_items: s3_bucket_items.s3_keys
Embora muitas vezes eu veja essa solução, ela não parece funcionar com versões atuais ansible / boto, devido a um bug com 'diretórios' aninhados do S3 (veja este relatório de bug para mais informações), e o ansible módulo S3 não criando subdiretórios para chaves. Acredito que também seja possível que você tenha problemas de memória usando esse método ao sincronizar intervalos muito grandes.
Eu também gostaria de acrescentar que você provavelmente não quer usar credenciais codificadas em seus playbooks - eu sugiro que você use Perfis de instância do IAM EC2 , que são muito mais seguros e confortáveis.
Uma solução que funcione para mim seria:
- name: Sync directory from S3 to disk
command: "s3cmd sync -q --no-preserve s3://hosts/{{ item }}/ /etc/data/conf/"
with_items:
- data