What i am trying to achieve:

I have a playbook that provisions some virtual machines by running a role:

---
- hosts: localhost
  gather_facts: false
  connection: local
  vars_files:
    - vm_data.yml
  roles:
    - { role: common }
...

the common role logs into phpIPAM and gets some subnet information and then 
runs - using an include - the vm creation part as many times as there are 
specified VMs in the vm_data variable:

---
- name: Login to phpIPAM
  uri:
    url: "{{ phpipam_url }}/user/"
    method: POST
    body_format: json
    force_basic_auth: yes
    user: "{{ user }}"
    password: "{{ password }}"
  register: ipam_login

- name: Get subnet information (DNS, gateway, netmask etc.)
  uri:
    url: "{{ phpipam_url }}/subnets/7/"
    method: GET
    headers:
      token: "{{ ipam_login.json.data.token }}"
    status_code: 200
  register: subnet_info

- include: roles/common/files/provision.yml
  with_items: "{{ vm_data }}"
...

inside the provision.yml file - which i include so i can loop - i do the 
following

1. get an IP from phpIPAM
2. create a VM and configure it with the IP from step 1
3. update the IP gotten in step 1 with the MAC address of the newly created 
VM

Now comes my actual challenge and i realise i might be going beyond the 
scope of Ansible and into IaaS territory.

As a 4th step in the list above i would like to call out to a Windows based 
system using Ansible to run a powershell command that registers the created 
VM object in Windows DNS.

I can successfully create a playbook as a standalone that does exactly that 
however i dont know how i would invoke this 4th step only against a 
specific host (defined in my hosts file).
If the DNS server i am using had a REST api i would just use the uri module 
but given this limitation:

how (if possible) can i run a task using eg. win_shell against a specific 
host that takes a variable from the overall playbook it is being 
initialised from?

I have tried an 

- include: dns_changes.yml
  hosts: windows_server
  vars:
    ip: "{{ my_ip }}"

as a playbook include but that wont work as i think im breaking the 
variable scope ? I get an undefined fatal.

i have also played around with something like:

- include: dns_changes.yml hosts=windows_server

as a task include but that does not seem to work.

Thanks in advance.

-- 
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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/cd4f5f79-0f0c-4090-a051-735d57d91b60%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to