AWS提供ansible

时间:2016-05-23 18:28:40

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

当我想要配置ec2时,我得到了错误。这就是我设置环境的方式。

我把我的aws凭证放在〜/ .boto

cat / etc / ansible / hosts

   [local]
  localhost

cat /etc/ansible/ec2-vars/testserver.yml

   ec2_keypair: "ansible"
   ec2_security_group: "sg-*******"
   ec2_instance_type: "t2.micro"
   ec2_image: "ami-********"
   ec2_subnet_ids: ['subnet-*******','subnet-REDACTED','subnet-REDACTED']
   ec2_region: "us-east-1"
   ec2_tag_Name: "testserver"
   ec2_tag_Type: "testserver"
   ec2_tag_Environment: "development"
   ec2_volume_size: 8

cat /etc/ansible/provision-ec2.yml

     ---
      - hosts: localhost
        connection: local
        gather_facts: false
        user: root
        pre_tasks:
         - include_vars: ec2_vars/{{type}}.yml
        roles:
         - provision-ec2

cat /etc/ansible/roles/provision-ec2/tasks/main.yml

          ---
          - name: Provision EC2 Box
             local_action:
            module: ec2
           key_name: "{{ ec2_keypair }}"
           group_id: "{{ ec2_security_group }}"
            instance_type: "{{ ec2_instance_type }}"
            image: "{{ ec2_image }}"
            vpc_subnet_id: "{{ ec2_subnet_ids|random }}"
            region: "{{ ec2_region }}"
            instance_tags: '{"Name":"{{ec2_tag_Name}}","Type":"       {{ec2_tag_Type}}","Environment":"{{ec2_tag_Environment}}"}'
      assign_public_ip: yes
      wait: true
      count: 1
      volumes:
     - device_name: /dev/sda1
     device_type: gp2
      volume_size: "{{ ec2_volume_size }}"
      delete_on_termination: true
       register: ec2

       - debug: var=item
       with_items: ec2.instances

     - add_host: name={{ item.public_ip }} >
                     groups=tag_Type_{{ec2_tag_Type}},tag_Environment_{{ec2_tag_Environment}}
         ec2_region={{ec2_region}}
         ec2_tag_Name={{ec2_tag_Name}}
         ec2_tag_Type={{ec2_tag_Type}}
         ec2_tag_Environment={{ec2_tag_Environment}}
         ec2_ip_address={{item.public_ip}}
        with_items: ec2.instances

        - name: Wait for the instances to boot by checking the ssh port
       wait_for: host={{item.public_ip}} port=22 delay=60 timeout=320     state=started
   with_items: ec2.instances

现在我运行以下命令,这就是我得到的。

  [root@ip-**-**-*** ansible]# ansible-playbook -vv -i localhost, -e     "type=testservers" provision-ec2.yml
   Using /etc/ansible/ansible.cfg as config file

     PLAYBOOK: provision-ec2.yml   ****************************************************
 1 plays in provision-ec2.yml

  PLAY [localhost] ***************************************************************

 TASK [include_vars] ************************************************************
task path: /etc/ansible/provision-ec2.yml:7
 fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "file":    "/etc/ansible/ec2_vars/testservers.yml", "msg": "Source file not found."}

  NO MORE HOSTS LEFT *************************************************************
    to retry, use: --limit @provision-ec2.retry

  PLAY RECAP *********************************************************************
  localhost                  : ok=0    changed=0    unreachable=0    failed=1

请帮忙。

新错误:

任务[规定-ec2:提供EC2方框] ************************************* ** 任务路径:/etc/ansible/roles/provision-ec2/tasks/main.yml:2 致命的:[localhost - > localhost]:失败了! => {"更改":false,"失败":true," msg":"没有处理程序准备好进行身份验证。检查了1名处理程序。 [' HmacAuthV4Handler']检查您的凭据"}

没有更多的主人左翼***************************************** ******************         重试,使用: - limit @ provision-ec2.retry

回放********************************************* ************************ localhost:ok = 1 changed = 0 unreachable = 0 failed = 1

1 个答案:

答案 0 :(得分:2)

您正在混合下划线和连字符。

cat / etc / ansible / ec2-vars /testserver.yml

include_vars: ec2_vars / {{type}}。yml