【问题标题】:ec2_instance_facts botocore.exceptions.NoCredentialsError: Unable to locate credentialsec2_instance_facts botocore.exceptions.NoCredentialsError:无法找到凭据
【发布时间】:2018-12-29 01:28:31
【问题描述】:

当我尝试在 AWS 上对我的 EC2 机器运行我的 ansible playbook 并使用 ec2_instance_facts 模块收集一些事实时。我收到以下错误:

botocore.exceptions.NoCredentialsError: Unable to locate credentials

Aws CLI:

[ansible@control aws]$ aws --version
aws-cli/1.16.81 Python/2.7.5 Linux/3.10.0-862.el7.x86_64 botocore/1.12.71

Ansible:

[ansible@control aws]$ ansible --version
ansible 2.7.5
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/home/ansible/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /bin/ansible
  python version = 2.7.5 (default, Oct 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
[ansible@control aws]$

我确实使用 aws configure 添加了我的凭据

[ansible@control aws]$ aws configure
AWS Access Key ID [****************SGWA]:
AWS Secret Access Key [****************kZwS]:
Default region name [ca-central]:
Default output format [None]:
[ansible@control aws]$

并且它被正确保存:

[ansible@control aws]$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************SGWA shared-credentials-file
secret_key     ****************kZwS shared-credentials-file
    region               ca-central              env    AWS_DEFAULT_REGION

我检查了凭据

ansible@control .aws]$ cat credentials
    [default]
    aws_access_key_id = **********************GWA
    aws_secret_access_key = ***************************kZwS

我也检查了配置

[ansible@control .aws]$ cat config
[default]
region = ca-central

我的账号 ansible 有AmazonEC2FullAccess

不太清楚我在这里缺少什么!有任何想法吗?

谢谢

【问题讨论】:

  • 您可以尝试按照docs.ansible.com/ansible/latest/scenario_guides/… 中的说明设置凭据,看看是否有帮助
  • 你是否正在为 ec2_instance_facts: 模块运行 delegate_to: localhost 的 ansible,因为如果没有,ansible 将在远程机器上运行该模块,这可能与 ~/.aws/credentials 不一样ansible@control 机器在你的例子中
  • 得到了同样的错误,我的ansible中没有delegate_to

标签: amazon-ec2 ansible


【解决方案1】:

最好的解决方案是不要直接将 Ansible 与 AWS 一起使用,因为包没有很好地腌制。尝试使用 terraform 等其他项目来管理 AWS,并使用 Ansible 来自动执行任务。

【讨论】:

    猜你喜欢
    • 2021-04-25
    • 2022-08-11
    • 2016-01-22
    • 2020-06-03
    • 2019-11-26
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多