Amazon s3 Ansible文件没有';S3不存在,但复制存在
我正在尝试将配置文件从ec2实例上的文件夹迁移到s3存储桶。每次部署时,我们都使用ansible更新对这些配置文件的更改,我在使用s3时遇到了一些问题。下面是旧的ansible部分,用于将配置文件更新到ec2Amazon s3 Ansible文件没有';S3不存在,但复制存在,amazon-s3,ansible-playbook,Amazon S3,Ansible Playbook,我正在尝试将配置文件从ec2实例上的文件夹迁移到s3存储桶。每次部署时,我们都使用ansible更新对这些配置文件的更改,我在使用s3时遇到了一些问题。下面是旧的ansible部分,用于将配置文件更新到ec2 - name: Install config files copy: src="{{core_repo}}/config/{{item.path}}" dest=/opt/company/config owner=user group=user mode=0644 directory_
- name: Install config files
copy: src="{{core_repo}}/config/{{item.path}}" dest=/opt/company/config owner=user group=user mode=0644 directory_mode=0755
with_items: config_files
tags:
- deploy
没什么疯狂的,只是复制一堆具有特定权限的文件。Ansible的副本在查找配置文件中描述的文件时没有问题
下面是我的新ansible部分,用于将配置文件更新到s3
- name: Install config files
s3: bucket=company-config object="/{{item.path}}" src="{{core_repo}}/config/{{item.path}}" mode=put aws_access_key=access aws_secret_key=secret
with_items: config_files
tags:
- deploy
如您所见,我没有改变引用文件本身的方式。但是,我现在收到的每个文件都有一个错误:
failed: [ip] => (item={'path': 'application.properties'}) => {"failed": true, "item": {"path": "application.properties"}}
msg: Local object for PUT does not exist
知道我做错了什么吗?或者有没有关于如何解决此问题的建议?我使用的是ansible playbook 1.9.4。假设您希望将文件从EC2实例复制到S3,并且文件已使用Install config files任务复制到EC2实例,则文件位于EC2实例上的
/opt/company/config
中
src
属性应更改为“/opt/company/config/{{{item.path}”
并按如下方式调用s3模块:
- name: Install config files
s3: bucket=company-config object="/{{item.path}}" src="/opt/company/config/{{item.path}}" mode=put aws_access_key=access aws_secret_key=secret
with_items: config_files
tags:
- deploy
如果您想将文件直接从Ansible主机复制到S3,那么您可以使用local_操作调用S3模块。各自的任务是:
- name: Install config files
become: no
local_action: s3 bucket=company-config object="/{{item.path}}" src="{{core_repo}}/config/{{item.path}}" mode=put aws_access_key=access aws_secret_key=secret
with_items: config_files
tags:
- deploy
您是从Ansible主机还是从EC2实例将文件复制到S3?@PasiH我是从Ansible主机将文件复制到S3。我的目的是后者。在s3命令前面加上本地_操作会引发另一个错误:failed:[ip->127.0.0.1]=>(item={'path':'application.properties'})=>{“failed”:true,“item”:{“path”:“application.properties”},“parsed”:false}[sudo via ansible,key=key]密码:看起来你正在用
sudo
运行剧本。尝试禁用Install config files
任务中的sudo
(答案已更新)。