gpt4 book ai didi

amazon-web-services - Ansible 和 s3 模块

转载 作者:行者123 更新时间:2023-12-01 19:39:35 25 4
gpt4 key购买 nike

我正在尝试使用 Ansible 将一些文件下载到我的各个 EC2 实例。我遇到的问题是我的 AWS 凭证。 AWS Ansible 模块都运行良好,包括 S3 模块。以下内容(当我替换我的 AWS 凭证时)就像一个魅力。

  - name: upload data import file
s3: aws_access_key=<accesskey> aws_secret_key=<secretkey> bucket=my-bucket object=/data.zip mode=get

但是,我需要我编写的 Ansible 剧本和角色可供任何人使用,并且我不想对任何 AWS 凭证进行硬编码。在我使用 Ansible AWS 模块的其他地方,我已经消除了 aws_access_key 和 aws_secret_key,并且它工作得很好,因为 Ansible 在环境变量中查找这些值。但是,对于所有其他用途,我将它们作为本地操作运行。因此,它从我的本地计算机中提取凭据,这就是我想要的。问题是当我在一个实例上运行 S3 模块时,如果我消除凭据参数,我会得到:

failed: [54.173.19.238] => {"failed": true}
msg: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV1Handler'] Check your credentials

我想这是因为由于我没有指定凭据,所以它在我的实例上的环境变量中查找它们,而这些变量尚未设置。我也不想将它们设置在实例的环境变量中。

有没有办法可以使用 ansible 从 S3 下载文件,而不必指定我的 AWS 凭证?

最佳答案

ansible 中的 S3 模块不支持配置文件选项,但如果您已将 aws_key 和 aws_secret 作为变量导出,则可以这样使用:

export aws_key="AAAAAAAAAAAAAAAAAAAAAAAAAA"
export aws_secret="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

然后你可以像这样使用它们:

s3:
aws_access_key: "{{ lookup('env','aws_key') }}"
aws_secret_key: "{{ lookup('env','aws_secret') }}"
bucket: "my-bucket"
object: "/data.zip"
mode: get

希望这能帮助您或任何正在寻找的人在 ansible playbook 中使用本地环境变量。谢谢

关于amazon-web-services - Ansible 和 s3 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28997757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com