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.