Copia arquivos para o depósito aws s3 usando Ansible

1

Meu plano é copiar o arquivo de ec2 para s3 bucket usando ansible, aqui eu faço o playbook, mas estou com algum erro:

copy2s3.yml

---
- name: Copy to s3
   s3:
     aws_access_key: "{{ lookup('env','aws_key') }}"
     aws_secret_key: "{{ lookup('env','aws_secret') }}"
     bucket: "{{ aws_packages_bucket }}"
     object: "/JI79IML/my_part_X86_64_c7.15.tar.gz"
     dest: "/data/parts/JI79IML/my_part_X86_64_c7.15.tar.gz"
     mode: get
     overwrite: no

Primeiros erros abaixo:

$ ansible-playbook copy2s3.yml -i 172.18.2.12,

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

The error appears to have been in '/home/ubuntu/bk/copy2s3.yml': line 2, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

---
- name: Copy to s3
^ here
    
por Nullpointer 03.04.2017 / 15:27

3 respostas

2

O nome do módulo (s3) deve estar no mesmo nível de recuo que o name :

- name: Copy to s3
  s3:
    aws_access_key: "{{ lookup('env','aws_key') }}"
    aws_secret_key: "{{ lookup('env','aws_secret') }}"
    bucket: "{{ aws_packages_bucket }}"
    object: "/JI79IML/my_part_X86_64_c7.15.tar.gz"
    dest: "/data/parts/JI79IML/my_part_X86_64_c7.15.tar.gz"
    mode: get
    overwrite: no
    
por 03.04.2017 / 16:20
0

Para copiar o objeto do servidor local para o S3 usando o módulo Ansible, use

mode: put

get será usado para fazer o download do objeto.

Referência

    
por 11.08.2017 / 14:40
0

Eu tive um problema semelhante ao usar aws_s3, o módulo de substituição para s3.

Verifique se você tem o boto (para s3 e aws_s3) e o boto3 (para aws_s3) instalados corretamente.

Eu tinha boto & boto3 instalado mas, devido a brincar com ambientes virtuais, eles foram instalados apenas para o Python3.5 e nenhuma outra versão do python. Assim, o python (Python2.7 na minha configuração) que o Ansible usa não pôde importar os bots e falhou com essa mensagem de erro muito esotérica.

Para garantir que tudo esteja instalado corretamente, execute python na linha de comando e tente importar manualmente o boto:

13:20 $ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import boto
>>> import boto3
>>> 
13:21 $ python3
Python 3.5.2 (default, Sep 14 2017, 22:51:06) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import boto
>>> import boto3
>>> 

Se você receber um erro em python, receberá o erro em Ansible.

    
por 28.10.2017 / 14:47

Tags