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 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/cd4f5f79-0f0c-4090-a051-735d57d91b60%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to