【问题标题】:msg: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV4Handler'] Check your credentialsmsg:没有处理程序准备好进行身份验证。检查了 1 个处理程序。 ['HmacAuthV4Handler'] 检查您的凭据
【发布时间】: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


【解决方案1】:

对于遇到此问题的人,您可以通过在 playbook 中设置 become/sudo: Falseconnection: local 来解决它。

---
- hosts: localhost
  connection: local
  become: False
  tasks:
   ...
   ...

希望这对其他人有所帮助。

【讨论】:

    【解决方案2】:

    我解决了这个问题,我想我并没有真正了解环境变量是什么。我通过在我的 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。

    【讨论】:

      【解决方案3】:

      在我的情况下,变量必须用引号引起来(单引号或双引号都没有关系)。

      不好:

      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"
      

      【讨论】:

      • 在 var 中有很多特殊字符很重要。例如,单引号不会扩展 $ 或 !,而双引号会。如果您对这些字符使用双精度数,这将导致身份验证失败
      【解决方案4】:

      值得一提的是,ec2 模块使用了包boto,而有一个更新的模块ec2_instance,它使用了boto3

      显然,这两个软件包/版本检测凭据或其环境的方式有所不同。我还没有找到使ec2 模块在 ECS 容器中工作的解决方案,很可能是因为在发布最新版本的 boto 时 ECS 不存在,因此它没有检测“实例配置文件”的功能ECS 容器。使用ec2_instance,此功能开箱即用,无需任何额外配置。

      【讨论】:

        猜你喜欢
        • 2011-07-20
        • 2013-07-29
        • 2018-11-15
        • 1970-01-01
        • 2012-11-09
        • 1970-01-01
        • 2018-09-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多