根据Ansible中的索引将EC2主机添加到不同的组

时间:2017-07-14 07:02:37

标签: amazon-web-services amazon-ec2 ansible ansible-2.x

我正在尝试使用EC2中的Ansible来设置Spark群集。以下是创建服务器的任务,在创建服务器之后,我想将第一台服务器的公共IP添加到“master”组,其余服务器添加到“slave”:

  tasks:
     - name: creating public instance
       ec2:
         aws_access_key: "{{ AWS_ACCESS_KEY_ID }}"
         aws_secret_key: "{{ AWS_SECRET_ACCESS_KEY }}"
         instance_type: "t2.micro"
         instance_tags: { 'name': 'test' }
         image: "ami-936d9d93"
         count: "{{ count }}"
         wait: yes
         group_id: "sg-47230b20"
         region: "ap-northeast-1"
         state: present
         vpc_subnet_id: "subnet-f4c674ac"
         assign_public_ip: yes
         key_name: "test-key"
       register: public
       - name: adding host to master
         add_host:
           name: "{{ public.instances[0]['public_ip'] }}"
           groups: master
           ansible_user: ubuntu
       - name: adding host to slaves
         add_host: 
           name: "{{ public.instances[item]['public_ip'] }}"
           groups: slaves
           ansible_user: ubuntu
        with_sequence: start=1 end=3 stride=1

但在执行时我收到此错误:

{"failed": true, "msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'list object' has no attribute u'1'

我无法弄清楚错误的位置,任何人都可以帮我解决问题。

1 个答案:

答案 0 :(得分:2)

您可以尝试slicing

  - name: adding host to slaves
     add_host: 
       name: "{{ item.public_ip }}"
       groups: slaves
       ansible_user: ubuntu
    with_items: "{{ public.instances[1:] }}"