【问题标题】:Create EC2 instance by Ansible with aws credentialsAnsible 使用 aws 凭证创建 EC2 实例
【发布时间】:2016-12-07 11:10:36
【问题描述】:

我遵循了这 3 个指南:

我写了这个 Ansible 剧本

---
- hosts: localhost
  connection: local
  gather_facts: false

  tasks:
    - include_vars: aws_credentials.yml
    - name: Creating EC2 Ubuntu instance
      ec2:
        instance_type: t1.micro
        image: ami-86e0ffe7
        region: us-west-2
        key_name: my-aws-key
        zone: us-west-2a
        vpc_subnet_id: subnet-04199d61
        group_id: sg-cf6736aa
        assign_public_ip: yes
        count: 1
        wait: true
        volumes:
          - device_name: /dev/sda1
            volume_type: gp2
            volume_size: 10
        instance_tags:
          Name: ansible-test
          Project: test
          Ansible: manageable

      register: ec2

然后我运行ansible-playbook create-ec2.yml -v --private-key ~/.ssh/my-key --vault-password-file ~/.password/to_ansible_vault

我收到了这条消息

播放 [本地主机] ******************************************* ********************

任务 [include_vars] ******************************************* *****************

ok: [localhost] => {"ansible_facts": {"ec2_access_key": "decrypted_acces_key_XXXXX", "ec2_secret_key": "decrypted_secret_key_XXXXX"}, "changed": false}

任务 [创建 EC2 Ubuntu 实例] **************************************** ****

致命:[本地主机]:失败! => {"changed": false, "failed": true, "msg": "没有处理程序准备好进行身份验证。检查了 1 个处理程序。['HmacAuthV4Handler'] 检查您的凭据"}

没有更多主机了 ******************************************* ******************

[警告]:无法创建重试文件“create-ec2.retry”。 [Errno 2] 没有这样的文件或目录:''

播放回顾 ************************************************ ************************

localhost : ok=1 已更改=0 无法访问=0 失败=1

当我运行 ansible-vault view aws_credentials.yml --vault-password-file ~/.password/to_ansible_vault 时,我得到了加密 aws_credentials.yml 的可读内容, 像这样:

---
ec2_access_key: "XXXXX"
ec2_secret_key: "XXXXX"

当我使用普通的 aws_credentials.yml 时,它也不起作用。只有当我导出我的凭据时,它才能正常工作。 有人可以帮我吗,我该如何编写剧本来创建具有存储在加密文件中的凭据的 ec2 实例?

【问题讨论】:

标签: amazon-web-services amazon-ec2 ansible ansible-playbook


【解决方案1】:

在这种情况下,我认为您应该将密钥直接提供给 ec2 模块。
试试这个:

   - name: Creating EC2 Ubuntu instance
      ec2:
        aws_access_key: "{{ ec2_access_key }}"
        aws_secret_key: "{{ ec2_secret_key }}"
        instance_type: t1.micro
        image: ami-86e0ffe7
        region: us-west-2
        ...

The code 建议它只检查模块的参数和环境变量,而不是主机变量。

【讨论】:

    【解决方案2】:

    您还可以将 AWS API 密钥导出到操作系统环境变量,例如: export AWS_ACCESS_KEY=XXXXXXX

    在这种情况下,在 Ansible 场景中,您需要设置: - name: Creating EC2 Ubuntu instance ec2: aws_access_key: "{{ lookup('env', 'AWS_ACCESS_KEY') }}" aws_secret_key: "{{ lookup('env', 'AWS_SECRET_KEY') }}" instance_type: t1.micro image: ami-86e0ffe7 region: us-west-2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-24
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 2018-07-15
      • 1970-01-01
      相关资源
      最近更新 更多