Reputation: 993
I am trying to setup Spark cluster using the Ansible in EC2. The following is the task to create the servers, after creating the servers I want to add the first server's public IP to the group 'master' and rest of the servers to 'slaves':
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
But while executing I am getting this error:
{"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'
I am unable to figure out where the error is, Can anybody help me what is the issue.
Upvotes: 3
Views: 260
Reputation: 68289
You may want to try slicing:
- name: adding host to slaves
add_host:
name: "{{ item.public_ip }}"
groups: slaves
ansible_user: ubuntu
with_items: "{{ public.instances[1:] }}"
Upvotes: 2