AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 819239
Accepted
M. Glatki
M. Glatki
Asked: 2016-12-08 02:24:54 +0800 CST2016-12-08 02:24:54 +0800 CST 2016-12-08 02:24:54 +0800 CST

如何在 Ansible 中使用 AWS EC2 Iam 角色

  • 772

我在分配有 Iam 角色的 EC2 实例上运行 Ansible。我正在运行这个剧本:

$ cat s3.yaml
---
- hosts: localhost
  remote_user: ec2-user
  tasks:
    - name: download ec2.py from s3
      s3:
        bucket: mybucket
        object: /ec2.py
        dest: /tmp/ec2.py
        mode: get

使用 -vvv 运行它会提供以下错误消息:

fatal: [localhost]: FAILED! => {
    "changed": false, 
    "failed": true, 
    "invocation": {
        "module_args": {
            "aws_access_key": null, 
            "aws_secret_key": null, 
            "bucket": "mybucket", 
            "dest": "/tmp/ec2.py", 
            "ec2_url": null, 
            "encrypt": true, 
            "expiry": "600", 
            "headers": null, 
            "marker": null, 
            "max_keys": "1000", 
            "metadata": null, 
            "mode": "get", 
            "object": "/ec2.py", 
            "overwrite": "always", 
            "permission": [
                "private"
            ], 
            "prefix": null, 
            "profile": null, 
            "region": null, 
            "retries": 0, 
            "rgw": false, 
            "s3_url": null, 
            "security_token": null, 
            "src": null, 
            "validate_certs": true, 
            "version": null
        }, 
        "module_name": "s3"
    }, 
    "msg": "Source bucket cannot be found"
}

根据文档,带有 boto 的 Ansible 应该能够获得 EC2 实例角色。

到目前为止,我有:

  • 尝试了文档,这意味着它应该可以正常工作。
  • 已验证我的 boto 版本是否足够新(boto 2.42)
  • 已验证 EC2 实例角色具有正确的权限(aws s3 cp s3://mybucket/ec2.py /tmp/ec2.py工作正常)
  • 已验证 EC2 实例凭证可通过curl http://169.254.169.254/latest/meta-data/iam/security-credentials/s3access

这个已回答的问题和文档表明这是可能的。

我可以在不直接将实例凭据提供给 boto/ansible 的情况下完成此操作吗?如果是,如何。文档似乎有点缺乏。

amazon-ec2 amazon-web-services ansible ansible-playbook amazon-iam
  • 2 2 个回答
  • 4375 Views

2 个回答

  • Voted
  1. Best Answer
    M. Glatki
    2016-12-16T05:46:16+08:002016-12-16T05:46:16+08:00

    经过更多的调试和试验,我发现问题的原因是 Ansible S3 模块中的一个错误。

    我在原始问题中引用的 ansible playbook 仅适用于 IAM 角色除了GetObject权限之外还具有ListBucket权限的情况。

    • 1
  2. Proteos
    2017-02-09T16:49:19+08:002017-02-09T16:49:19+08:00

    我遇到了完全相同的问题。我发现如果我通过 ansible playbook 提供 AWS 访问密钥 ID 和秘密访问密钥,它将工作并从 S3 下载对象。使用内联提供的键将其作为 ansible 命令运行也可以。因此,“找不到源存储桶”消息具有误导性,这是由于 Ansible 无法使用 IAM 角色。

    Ansible GitHub中有一张 bug 票(我猜是同一作者打开的),但仍未解决。

    • 0

相关问题

  • 权限被拒绝(公钥)。从本地 Ubuntu 到 Amazon EC2 服务器的 SSH

  • 管理员如何管理他们的 EC2 EBS 和快照?

  • 云有多大?[关闭]

  • EC2 映像启动

  • 如何将安全组添加到正在运行的 EC2 实例?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve