Thanks for the suggestion Brian and senorsmile but I realized after
creating a task that ensures the tags exist before running the add_host
module I don't think this has anything to do with the api.

The add_host task is just adding the IP address of the instance to a group

TASK: [cep_aws | add hosts to fresh group] ************************************
creating host via 'add_host': hostname=172.20.16.148

but it bombs out

AttributeError: 'NoneType' object has no attribute 'add_group'

Any ideas what could be causing this?

Cheers

On Wed, Aug 19, 2015 at 7:15 AM, David Neudorfer <
david.neudor...@warbyparker.com> wrote:

> Nevermind this should work.
>
> http://docs.ansible.com/ansible/playbooks_loops.html#do-until-loops
>
> On Wed, Aug 19, 2015 at 7:12 AM, David Neudorfer <
> david.neudor...@warbyparker.com> wrote:
>
>> I'd love to use the wait_for module to ensure the tags exist before
>> moving to the next step but I don't see a way to run a command like:
>>
>> aws ec2 describe-instances \
>> --filter \
>> "Name=tag:ansible,Values=awsqa_helios_web" \
>> "Name=instance-state-code,Values=16" \
>> --query "Reservations[].Instances[].Tags[]"
>>
>> and wait for the module to register the expected output before moving on.
>>
>> Thanks for the help guys.
>>
>> On Fri, Aug 14, 2015 at 12:38 PM, Brian Coca <bc...@ansible.com> wrote:
>>
>>> The wait_for and/or pause modules can help you with this.
>>>
>>> On Fri, Aug 14, 2015 at 12:29 PM, senorsmile <senorsm...@gmail.com>
>>> wrote:
>>> > You didn't specify this in your description, but from your naming it is
>>> > clear you're using add_host after provisioning new aws nodes.  I don't
>>> > believe this is an Ansible issue but an AWS issue.  After creating the
>>> node,
>>> > it's takes a little while for the api to respond that it exists (my
>>> guess
>>> > any way).  You might be able to pause if anything in your ec2 task
>>> changes,
>>> > to give aws a minute to register the new vm.  See
>>> >
>>> > http://docs.ansible.com/ansible/pause_module.html
>>> >
>>> >
>>> > On Friday, August 14, 2015 at 7:06:45 AM UTC-7, David Neudorfer wrote:
>>> >>
>>> >> Issue Type:
>>> >> Bug Report
>>> >>
>>> >> Ansible Version:
>>> >> ansible 1.9.0.1
>>> >>   configured module search path = None
>>> >>
>>> >> Environment:
>>> >> CentOS release 6.6 (Final)
>>> >>
>>> >> Summary:
>>> >>
>>> >> Using the `add_host` module fails on the first run. When run a second
>>> time
>>> >> it works.
>>> >>
>>> >> Steps To Reproduce:
>>> >>
>>> >> - name: add hosts to fresh group
>>> >>
>>> >>   add_host: >
>>> >>
>>> >>     hostname={{ item.private_ip }}
>>> >>
>>> >>     groups=fresh
>>> >>   with_items: created.tagged_instances
>>> >>
>>> >>
>>> >> Expected Results:
>>> >>
>>> >> TASK: [jaf_aws | add hosts to fresh group]
>>> >> ************************************
>>> >>
>>> >> creating host via 'add_host': hostname=172.20.16.135
>>> >>
>>> >> added host to group via add_host module: fresh
>>> >> ok: [localhost]
>>> >>
>>> >>
>>> >> Actual Results:
>>> >>
>>> >> ASK: [jaf_aws | add hosts to fresh group]
>>> >> ************************************
>>> >> creating host via 'add_host': hostname=172.20.16.135
>>> >> fatal: [localhost] => Traceback (most recent call last):
>>> >>   File
>>> >>
>>> "/opt/wp/virtualenv/hegemon/lib/python2.7/site-packages/ansible/runner/__init__.py",
>>> >> line 582, in _executor
>>> >>     exec_rc = self._executor_internal(host, new_stdin)
>>> >>   File
>>> >>
>>> "/opt/wp/virtualenv/hegemon/lib/python2.7/site-packages/ansible/runner/__init__.py",
>>> >> line 811, in _executor_internal
>>> >>     complex_args=complex_args
>>> >>   File
>>> >>
>>> "/opt/wp/virtualenv/hegemon/lib/python2.7/site-packages/ansible/runner/__init__.py",
>>> >> line 1028, in _executor_internal_inner
>>> >>     result = handler.run(conn, tmp, module_name, module_args, inject,
>>> >> complex_args)
>>> >>   File
>>> >>
>>> "/opt/wp/virtualenv/hegemon/lib/python2.7/site-packages/ansible/runner/action_plugins/add_host.py",
>>> >> line 82, in run
>>> >>     grp.add_host(new_host)
>>> >>   File
>>> >>
>>> "/opt/wp/virtualenv/hegemon/lib/python2.7/site-packages/ansible/inventory/group.py",
>>> >> line 67, in add_host
>>> >>     host.add_group(self)
>>> >> AttributeError: 'NoneType' object has no attribute 'add_group'
>>> >>
>>> >> FATAL: all hosts have already failed -- aborting
>>> >>
>>> >>
>>> >>
>>> >> Another example with debug output.
>>> >>
>>> >> TASK: [cep_aws | set hostnames]
>>> >> ***********************************************
>>> >> <172.20.16.148> REMOTE_MODULE hostname name="awsqa-cep-primary00"
>>> >>
>>> >> changed: [localhost -> 172.20.16.148] => (item={'ramdisk': None,
>>> 'kernel':
>>> >> 'aki-919dcaf8', 'root_device_type': 'ebs', 'private_dns_name':
>>> >> 'ip-172-20-16-148.ec2.internal', 'tags': {'ansible':
>>> 'awsqa_cep_primary',
>>> >> 'group': 'ancillary', 'Name': 'awsqa-cep-primary00', 'env': 'awsqa',
>>> 'app':
>>> >> 'cep', 'class': 'private'}, 'key_name': 'aws', 'public_ip': None,
>>> >> 'image_id': 'ami-cda70ca6', 'tenancy': 'default', 'private_ip':
>>> >> '172.20.16.148', 'groups': {'sg-642d9a03': 'sg_to_bind',
>>> 'sg-58c64a3f':
>>> >> 'sg_ec2_qa_cep', 'sg-76cf6c11': 'sg_from_nagios', 'sg-a34d95c4':
>>> >> 'sg_from_warp'}, 'public_dns_name': u'', 'state_code': 16, 'id':
>>> >> 'i-b7960465', 'placement': 'us-east-1b', 'ami_launch_index': '0',
>>> >> 'dns_name': u'', 'region': 'us-east-1', 'ebs_optimized': False,
>>> >> 'launch_time': '2015-08-13T23:28:38.000Z', 'instance_type':
>>> 'm3.large',
>>> >> 'state': 'running', 'root_device_name': '/dev/sda', 'hypervisor':
>>> 'xen',
>>> >> 'virtualization_type': 'paravirtual', 'architecture': 'x86_64'}) =>
>>> >> {"changed": true, "item": {"ami_launch_index": "0", "architecture":
>>> >> "x86_64", "dns_name": "", "ebs_optimized": false, "groups":
>>> {"sg-58c64a3f":
>>> >> "sg_ec2_qa_cep", "sg-642d9a03": "sg_to_bind", "sg-76cf6c11":
>>> >> "sg_from_nagios", "sg-a34d95c4": "sg_from_warp"}, "hypervisor":
>>> "xen", "id":
>>> >> "i-b7960465", "image_id": "ami-cda70ca6", "instance_type": "m3.large",
>>> >> "kernel": "aki-919dcaf8", "key_name": "aws", "launch_time":
>>> >> "2015-08-13T23:28:38.000Z", "placement": "us-east-1b",
>>> "private_dns_name":
>>> >> "ip-172-20-16-148.ec2.internal", "private_ip": "172.20.16.148",
>>> >> "public_dns_name": "", "public_ip": null, "ramdisk": null, "region":
>>> >> "us-east-1", "root_device_name": "/dev/sda", "root_device_type":
>>> "ebs",
>>> >> "state": "running", "state_code": 16, "tags": {"Name":
>>> >> "awsqa-cep-primary00", "ansible": "awsqa_cep_primary", "app": "cep",
>>> >> "class": "private", "env": "awsqa", "group": "ancillary"}, "tenancy":
>>> >> "default", "virtualization_type": "paravirtual"}, "name":
>>> >> "awsqa-cep-primary00"}
>>> >>
>>> >> TASK: [cep_aws | debug var=item]
>>> >> **********************************************
>>> >>
>>> >> ok: [localhost] => (item={'ramdisk': None, 'kernel': 'aki-919dcaf8',
>>> >> 'root_device_type': 'ebs', 'private_dns_name':
>>> >> 'ip-172-20-16-148.ec2.internal', 'tags': {'ansible':
>>> 'awsqa_cep_primary',
>>> >> 'group': 'ancillary', 'Name': 'awsqa-cep-primary00', 'env': 'awsqa',
>>> 'app':
>>> >> 'cep', 'class': 'private'}, 'key_name': 'aws', 'public_ip': None,
>>> >> 'image_id': 'ami-cda70ca6', 'tenancy': 'default', 'private_ip':
>>> >> '172.20.16.148', 'groups': {'sg-642d9a03': 'sg_to_bind',
>>> 'sg-58c64a3f':
>>> >> 'sg_ec2_qa_cep', 'sg-76cf6c11': 'sg_from_nagios', 'sg-a34d95c4':
>>> >> 'sg_from_warp'}, 'public_dns_name': u'', 'state_code': 16, 'id':
>>> >> 'i-b7960465', 'placement': 'us-east-1b', 'ami_launch_index': '0',
>>> >> 'dns_name': u'', 'region': 'us-east-1', 'ebs_optimized': False,
>>> >> 'launch_time': '2015-08-13T23:28:38.000Z', 'instance_type':
>>> 'm3.large',
>>> >> 'state': 'running', 'root_device_name': '/dev/sda', 'hypervisor':
>>> 'xen',
>>> >> 'virtualization_type': 'paravirtual', 'architecture': 'x86_64'}) => {
>>> >>     "item": {
>>> >>         "ami_launch_index": "0",
>>> >>         "architecture": "x86_64",
>>> >>         "dns_name": "",
>>> >>         "ebs_optimized": false,
>>> >>         "groups": {
>>> >>             "sg-58c64a3f": "sg_ec2_qa_cep",
>>> >>             "sg-642d9a03": "sg_to_bind",
>>> >>             "sg-76cf6c11": "sg_from_nagios",
>>> >>             "sg-a34d95c4": "sg_from_warp"
>>> >>         },
>>> >>         "hypervisor": "xen",
>>> >>         "id": "i-b7960465",
>>> >>         "image_id": "ami-cda70ca6",
>>> >>         "instance_type": "m3.large",
>>> >>         "kernel": "aki-919dcaf8",
>>> >>         "key_name": "aws",
>>> >>         "launch_time": "2015-08-13T23:28:38.000Z",
>>> >>         "placement": "us-east-1b",
>>> >>         "private_dns_name": "ip-172-20-16-148.ec2.internal",
>>> >>         "private_ip": "172.20.16.148",
>>> >>         "public_dns_name": "",
>>> >>         "public_ip": null,
>>> >>         "ramdisk": null,
>>> >>         "region": "us-east-1",
>>> >>         "root_device_name": "/dev/sda",
>>> >>         "root_device_type": "ebs",
>>> >>         "state": "running",
>>> >>         "state_code": 16,
>>> >>         "tags": {
>>> >>             "Name": "awsqa-cep-primary00",
>>> >>             "ansible": "awsqa_cep_primary",
>>> >>             "app": "cep",
>>> >>             "class": "private",
>>> >>             "env": "awsqa",
>>> >>             "group": "ancillary"
>>> >>         },
>>> >>         "tenancy": "default",
>>> >>         "virtualization_type": "paravirtual"
>>> >>     },
>>> >>     "var": {
>>> >>         "item": {
>>> >>             "ami_launch_index": "0",
>>> >>             "architecture": "x86_64",
>>> >>             "dns_name": "",
>>> >>             "ebs_optimized": false,
>>> >>             "groups": {
>>> >>                 "sg-58c64a3f": "sg_ec2_qa_cep",
>>> >>                 "sg-642d9a03": "sg_to_bind",
>>> >>                 "sg-76cf6c11": "sg_from_nagios",
>>> >>                 "sg-a34d95c4": "sg_from_warp"
>>> >>             },
>>> >>             "hypervisor": "xen",
>>> >>             "id": "i-b7960465",
>>> >>             "image_id": "ami-cda70ca6",
>>> >>             "instance_type": "m3.large",
>>> >>             "kernel": "aki-919dcaf8",
>>> >>             "key_name": "aws",
>>> >>             "launch_time": "2015-08-13T23:28:38.000Z",
>>> >>             "placement": "us-east-1b",
>>> >>             "private_dns_name": "ip-172-20-16-148.ec2.internal",
>>> >>             "private_ip": "172.20.16.148",
>>> >>             "public_dns_name": "",
>>> >>             "public_ip": null,
>>> >>             "ramdisk": null,
>>> >>             "region": "us-east-1",
>>> >>             "root_device_name": "/dev/sda",
>>> >>             "root_device_type": "ebs",
>>> >>             "state": "running",
>>> >>             "state_code": 16,
>>> >>             "tags": {
>>> >>                 "Name": "awsqa-cep-primary00",
>>> >>                 "ansible": "awsqa_cep_primary",
>>> >>                 "app": "cep",
>>> >>                 "class": "private",
>>> >>                 "env": "awsqa",
>>> >>                 "group": "ancillary"
>>> >>             },
>>> >>             "tenancy": "default",
>>> >>             "virtualization_type": "paravirtual"
>>> >>         }
>>> >>     }
>>> >> }
>>> >>
>>> >> TASK: [cep_aws | add hosts to fresh group]
>>> >> ************************************
>>> >> creating host via 'add_host': hostname=172.20.16.148
>>> >> fatal: [localhost] => Traceback (most recent call last):
>>> >>   File
>>> >>
>>> "/opt/wp/virtualenv/hegemon/lib/python2.7/site-packages/ansible/runner/__init__.py",
>>> >> line 582, in _executor
>>> >>     exec_rc = self._executor_internal(host, new_stdin)
>>> >>   File
>>> >>
>>> "/opt/wp/virtualenv/hegemon/lib/python2.7/site-packages/ansible/runner/__init__.py",
>>> >> line 811, in _executor_internal
>>> >>     complex_args=complex_args
>>> >>   File
>>> >>
>>> "/opt/wp/virtualenv/hegemon/lib/python2.7/site-packages/ansible/runner/__init__.py",
>>> >> line 1028, in _executor_internal_inner
>>> >>     result = handler.run(conn, tmp, module_name, module_args, inject,
>>> >> complex_args)
>>> >>   File
>>> >>
>>> "/opt/wp/virtualenv/hegemon/lib/python2.7/site-packages/ansible/runner/action_plugins/add_host.py",
>>> >> line 82, in run
>>> >>     grp.add_host(new_host)
>>> >>   File
>>> >>
>>> "/opt/wp/virtualenv/hegemon/lib/python2.7/site-packages/ansible/inventory/group.py",
>>> >> line 67, in add_host
>>> >>     host.add_group(self)
>>> >> AttributeError: 'NoneType' object has no attribute 'add_group'
>>> >>
>>> >>
>>> >>
>>> >> FATAL: all hosts have already failed -- aborting
>>> >>
>>> > --
>>> > You received this message because you are subscribed to the Google
>>> Groups
>>> > "Ansible Project" group.
>>> > To unsubscribe from this group and stop receiving emails from it, send
>>> an
>>> > email to ansible-project+unsubscr...@googlegroups.com.
>>> > To post to this group, send email to ansible-project@googlegroups.com.
>>> > To view this discussion on the web visit
>>> >
>>> https://groups.google.com/d/msgid/ansible-project/4092ddd6-d1f1-4aa0-b7a6-14dceda655c7%40googlegroups.com
>>> .
>>> >
>>> > For more options, visit https://groups.google.com/d/optout.
>>>
>>>
>>>
>>> --
>>> Brian Coca
>>>
>>> --
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "Ansible Project" group.
>>> To unsubscribe from this topic, visit
>>> https://groups.google.com/d/topic/ansible-project/hTh22Y5J7Zs/unsubscribe
>>> .
>>> To unsubscribe from this group and all its topics, send an email to
>>> ansible-project+unsubscr...@googlegroups.com.
>>> To post to this group, send email to ansible-project@googlegroups.com.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/ansible-project/CAJ5XC8kCTXb63Tq%2Bx0zSCEo%3DiUKqWJh6qUG%2BZCUD%3DGEhELKxow%40mail.gmail.com
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>>
>> --
>>
>> David Neudorfer
>>
>> Automation Engineer
>>
>> WARBY PARKER
>> <http://www.google.com/url?q=http%3A%2F%2Fwww.warbyparker.com%2F&sa=D&sntz=1&usg=AFrqEzfkTF4rhdwjlARqomkRV4TIc34NxA>
>>
>
>
>
> --
>
> David Neudorfer
>
> Automation Engineer
>
> WARBY PARKER
> <http://www.google.com/url?q=http%3A%2F%2Fwww.warbyparker.com%2F&sa=D&sntz=1&usg=AFrqEzfkTF4rhdwjlARqomkRV4TIc34NxA>
>



-- 

David Neudorfer

Automation Engineer

WARBY PARKER
<http://www.google.com/url?q=http%3A%2F%2Fwww.warbyparker.com%2F&sa=D&sntz=1&usg=AFrqEzfkTF4rhdwjlARqomkRV4TIc34NxA>

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to ansible-project+unsubscr...@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/CAB0PhQieQq8YssB4HM8pX7z4bFsb8iSjD7vSg5-C0jCabExD%3Dg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to