使用Ansible S3模块来同步EC2实例中的文件

下面的播放是将S3存储桶中的文件同步到EC2中的实例的正确方法吗?

我正在从我的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/ 

安全的S3模块目前没有内置的方法recursion同步桶到磁盘。

从理论上讲,你可以尝试收集键下载一个

 - 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 

虽然我经常看到这个解决scheme,但是由于嵌套的S3'目录' 错误 (更多信息参见这个错误报告 ),它似乎不适用于当前的ansible / boto版本,而且安全的S3模块不会为密钥创build子目录。 我相信,在同步超大桶时,您也可能会遇到一些使用此方法的内存问题。

我还想补充一点,你很可能不想使用编码到你的剧本中的证书 – 我build议你使用IAM EC2实例configuration文件,而这个configuration文件更加安全和舒适。

一个适合我的解决scheme是:

 - name: Sync directory from S3 to disk command: "s3cmd sync -q --no-preserve s3://hosts/{{ item }}/ /etc/data/conf/" with_items: - data