Use o módulo Ansible S3 para sincronizar arquivos em instâncias do EC2

2

A reprodução abaixo é o caminho certo para sincronizar arquivos do bucket do S3 com instâncias no EC2?

Estou executando meu jogo do meu mac.

    - name: "syncing S3 for Keys"
      hosts: ec2instances
        s3:
          aws_access_key: "{{ aws_access_key }}"
          aws_secret_key: "{{ aws_secret_key }}"
          bucket: hosts
          mode: get
          object: /data/*
          dest: /etc/data/conf/
    
por JJK 10.10.2016 / 11:07

1 resposta

1

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
    
por 28.12.2016 / 12:13