Ansible动态库存:检索ec2库存的身份验证错误

时间:2017-02-24 15:29:19

标签: amazon-web-services dynamic ansible ansible-inventory

我使用Ansible的动态库存功能使用以下内容连接到AWS账户中的ec2实例:

AWS_PROFILE=personal ansible-playbook cifarm.yml -C

我已将https://raw.github.com/ansible/ansible/devel/contrib/inventory/ec2.py复制到库存目录下的https://raw.github.com/ansible/ansible/devel/contrib/inventory/ec2.ini文件中。

在运行AWS_PROFILE=personal ansible-playbook cifarm.yml -C时,它会抛出以下错误:

输出: 错误:库存脚本(inventory / ec2.py)出现执行错误:ERROR:"验证错误,检索ec2库存。   - 找到了AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY环境变量,但可能不正确   - 在'〜/ .boto,〜/ .aws / credentials'中找到Boto配置,但包含的凭据可能不正确",而:获取EC2实例

我正在从MAC OS运行剧本。请注意,我能够成功运行:

aws ec2 describe-instances --page-size 5 --profile personal

这证明凭据是正确的,并且我已导出AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY。

我尝试执行inventory / ec2.py文件,如下所示:

./ec2.py --list

然后又出现了同样的错误。我看到一个帖子,建议更新机器上的时间,我正在运行剧本。所以我运行了ntpdate -u

但问题仍然存在。我不知道是什么原因。 非常感谢任何帮助/建议。

1 个答案:

答案 0 :(得分:3)

我设法解决了这个问题。在这里解释它让其他人受益。当我为AWS_PROFILE = personal生成aws凭据时,我在〜/ .aws / credentials中有以下环境变量的值:

  1. aws_access_key_id
  2. aws_secret_access_key
  3. aws_session_token。
  4. 但是,如果你查看ec2.py,它需要一个名为aws_security_token的变量值。所以我所做的就是将变量名从aws_session_token更改为〜/ .aws / credentials中的aws_security_token。

    瞧。工作正常。