【发布时间】:2021-02-26 15:41:44
【问题描述】:
因此,我尝试在 AWS 上的 ec2 实例上运行 ansible,这是第一次在新实例上运行,但每次尝试运行游戏时,我都无法绕过此错误消息:
PLAY [localhost]
**************************************************************
TASK: [make one instance]
*****************************************************
failed: [localhost] => {"failed": true} msg: No handler was ready to
authenticate. 1 handlers were checked. ['HmacAuthV4Handler'] Check
your credentials
FATAL: all hosts have already failed -- aborting
PLAY RECAP
********************************************************************
to retry, use: --limit @/home/ubuntu/ans_test.retry
localhost : ok=0 changed=0 unreachable=0
failed=1
我认为我的 IAM 用户和组中的权限可能有问题。我已经给了我的 IAM 用户和组 ReadOnlyAccess、AdministratorAccess 和 PowerUserAccess。我有一个访问 ID 和秘密访问密钥,我使用以下命令将其设置为环境变量:
export AWS_ACCESS_KEY_ID='AK123'
export AWS_SECRET_ACCESS_KEY='abc123'
将 'AK123' 和 'abc123' 替换为我的实际 id 和键值。为了使 ansible ec2 任务正常工作,我还需要做什么?
更新:
我解决了这个问题,我想我对环境变量是什么并没有真正的了解。我通过在我的 ec2 任务中设置我的 aws_access_key 和 aws_secret_key 来修复它,下面是我的工作手册
- hosts: localhost
connection: local
gather_facts: False
tasks:
#this task creates 5 ec2 instances that are all named demo and are copies of the image specified
- name: Provision a set of instances
ec2:
aws_access_key: .....
aws_secret_key: ....
key_name: .....
group: .....
instance_type: t2.micro
image: ......
region: us-east-1
ec2_url: .......
wait: true
exact_count: 5
count_tag:
Name: Demo
instance_tags:
Name: Demo
register: ec2
我想现在我需要开始使用 ansible vault 来保存我的密钥和 ID。
【问题讨论】:
-
你能在你的问题中加入剧本吗?
-
我认为Ansible不会在整个播放过程中保留环境变量。你有没有试过在命令中设置变量,比如
command: " export AWS_ACCESS_KEY_ID='AK123' && export AWS_SECRET_ACCESS_KEY='abc123' && actual command"?
标签: amazon-web-services amazon-ec2 ansible ec2-ami aws-ec2