我正在尝试使用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'
我无法弄清楚错误的位置,任何人都可以帮我解决问题。
答案 0 :(得分:2)
您可以尝试slicing:
- name: adding host to slaves
add_host:
name: "{{ item.public_ip }}"
groups: slaves
ansible_user: ubuntu
with_items: "{{ public.instances[1:] }}"