Passing a variable into 'hosts' in the same playbooks

23 views
Skip to first unread message

Tony Xynidakis

unread,
Apr 23, 2017, 8:12:28 PM4/23/17
to Ansible Project
Hi

Sorry I'm coding and learning at the same time

I'm writing a playbook to generate an AMI in ansible

basic steps of the playbook
1. launch an EC2 instance in AWS
1.a wait for ssh port to come up
2. refresh cached output from ec2.py
3. build the instance with a role
4. generate the AMI
4.a terminate running instance


I've got this working with 3 playbooks

1. Launch instance
2. Build instance
3. create AMI (includes termination)


I would like to combine all the above in 1 playbook

the issue I have is passing in the hosts as a variable after I refreshed the ec2.py cache

the area on the code I'm focusing on is

 ...
- set_fact:
target_host: "tag_Name_RHEL-base-{{ instance_date }}-01"
- debug: var=target_host


- name: Build RHEL Base AMI image
hosts: "{{ target_host }}"
#hosts: tag_Name_RHEL-base*
connection: local
gather_facts: False
tasks:
- debug: msg="Hostname is {{ target_host }}"


The error is
TASK [set_fact] ****************************************************************
ok: [localhost]

TASK [debug] *******************************************************************
ok: [localhost] => {
    "target_host": "tag_Name_RHEL-base-20170421-01"
}
ERROR! the field 'hosts' has an invalid value, which appears to include a variable that is undefined. The error was: 'target_host' is undefined

The error appears to have been in '/home/opentext/playbooks/launch_base_RHELAWSinstance.yml': line 71, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:


- name: Build RHEL Base AMI image
  ^ here

Any suggestions to solving the issue?

Kind Regards
Tony

Kai Stian Olstad

unread,
Apr 24, 2017, 10:30:43 AM4/24/17
to ansible...@googlegroups.com
On 21. april 2017 07:35, Tony Xynidakis wrote:
> ...
> - set_fact:
> target_host: "tag_Name_RHEL-base-{{ instance_date }}-01"
> - debug: var=target_host
>
>
> - name: Build RHEL Base AMI image
> hosts: "{{ target_host }}"
> #hosts: tag_Name_RHEL-base*
> connection: local
> gather_facts: False
> tasks:
> - debug: msg="Hostname is {{ target_host }}"
>
>
> The error is
> TASK [set_fact]
> ****************************************************************
> ok: [localhost]
>
> TASK [debug]
> *******************************************************************
> ok: [localhost] => {
> "target_host": "tag_Name_RHEL-base-20170421-01"
> }

You need to specify from which you are fetching the variable from.

{{ hostvars.localhost.target_host }}

--
Kai Stian Olstad
Reply all
Reply to author
Forward
0 new messages