消息:没有处理程序准备好进行身份验证。检查了 1 个处理程序。 ['HmacAuthV4Handler'] 检查您的凭据
msg: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV4Handler'] Check your credentials
所以我尝试 运行 ansible 在 aws 上的 ec2 实例上,这是我第一次在一个新实例上,但每次我尝试 运行 一个游戏我都无法获得围绕此错误消息:
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。
对于遇到此问题的人,您可以通过在 playbook 中设置 become/sudo: False
和 connection: local
来解决。
---
- hosts: localhost
connection: local
become: False
tasks:
...
...
希望这对其他人有所帮助。
我解决了这个问题,我想我对什么是环境变量没有真正的了解。我通过在我的 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。
在我的例子中,变量必须用引号引起来(单引号或双引号都无所谓)。
差:
export AWS_ACCESS_KEY_ID=AK123
export AWS_SECRET_ACCESS_KEY=abc123
好:
export AWS_ACCESS_KEY_ID='AK123'
export AWS_SECRET_ACCESS_KEY='abc123'
好:
export AWS_ACCESS_KEY_ID="AK123"
export AWS_SECRET_ACCESS_KEY="abc123"
值得一提的是ec2 module makes use of the package boto
, while there is a newer module ec2_instance,它使用了boto3
.
显然,这两个 packages/versions 检测凭据或其环境的方式存在差异。我还没有找到使 ec2
模块在 ECS 容器内工作的解决方案,很可能是因为发布最新版本的 boto 时 ECS 不存在,因此它没有检测“实例”的能力ECS容器的配置文件”。使用 ec2_instance
这可以开箱即用,无需任何额外配置。
所以我尝试 运行 ansible 在 aws 上的 ec2 实例上,这是我第一次在一个新实例上,但每次我尝试 运行 一个游戏我都无法获得围绕此错误消息:
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。
对于遇到此问题的人,您可以通过在 playbook 中设置 become/sudo: False
和 connection: local
来解决。
---
- hosts: localhost
connection: local
become: False
tasks:
...
...
希望这对其他人有所帮助。
我解决了这个问题,我想我对什么是环境变量没有真正的了解。我通过在我的 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。
在我的例子中,变量必须用引号引起来(单引号或双引号都无所谓)。
差:
export AWS_ACCESS_KEY_ID=AK123
export AWS_SECRET_ACCESS_KEY=abc123
好:
export AWS_ACCESS_KEY_ID='AK123'
export AWS_SECRET_ACCESS_KEY='abc123'
好:
export AWS_ACCESS_KEY_ID="AK123"
export AWS_SECRET_ACCESS_KEY="abc123"
值得一提的是ec2 module makes use of the package boto
, while there is a newer module ec2_instance,它使用了boto3
.
显然,这两个 packages/versions 检测凭据或其环境的方式存在差异。我还没有找到使 ec2
模块在 ECS 容器内工作的解决方案,很可能是因为发布最新版本的 boto 时 ECS 不存在,因此它没有检测“实例”的能力ECS容器的配置文件”。使用 ec2_instance
这可以开箱即用,无需任何额外配置。