Ok now all work fine, I make some mistakes!!!
Downgrade to stable Ansible version just like suggested Jean solved
different issues like "wait_for_ip_address: true" in ansible 2.4 work but
in 2.5 not.
Now I don't use in-memory inventory, I solve it setting ansible_ssh_host,
because the server exist in the inventory and I don't need duplicate it.
#!/usr/bin/ansible-playbook
---
- hosts: centos-vms
gather_facts: false
connection: local
user: root
roles:
- vmware
- hosts: centos-vms
user: root
connection: ssh
roles:
- common
---
- name: Create VM from Template
vmware_guest:
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_user }}"
password: "{{ vcenter_pass }}"
datacenter: "xxxxx"
cluster: VMwareAPP
validate_certs: no
resource_pool: "SSOO"
name: "{{ inventory_hostname }}"
state: poweredon
template: "CentOS_7.4_x64_1708-GPT-20GB_HDD"
wait_for_ip_address: true
guest_id: "{{osid}}"
disk:
- size_gb: "{{disk_size}}"
type: "{{disk_type}}"
datastore: "{{ds_name}}"
hardware:
memory_mb: "{{memory_size}}"
num_cpus: "{{cpucount}}"
networks:
- name: "{{network_name}}"
delegate_to: localhost
register: deploy
- name: Set Facts
set_fact:
uuid: "{{deploy.instance.hw_product_uuid}}"
ansible_ssh_host: "{{deploy.instance.ipv4}}"
ansible_user: root
ansible_password: xxxxx
ansible_ssh_private_key_file: /root/.ssh/ansible.pem
Thanks all,
Best Regards,
Mariano
El martes, 17 de octubre de 2017, 15:22:17 (UTC+2), Mariano Obarrio Miles
escribió:
>
> Hi Sebastien,
> You have a role to create VMs and other to add_host to inventory? I
> try it and send you a feedback soon.
>
> Thxs!
>
> M.
>
>
>
> El martes, 17 de octubre de 2017, 14:57:28 (UTC+2), Sebastien Desbois
> escribió:
>>
>> Hello,
>>
>> For my part, I'm using the way described by JYL.
>>
>> - include_role:
>> name: myrolewhoaddsininventory
>> with_items: "{{ mylist }}"
>>
>> the add_host task is included amonfg other things in the role.
>> And at the end, I get the in-memory inventory properly filed.
>>
>>
>>
>> Le mardi 17 octobre 2017 13:25:53 UTC+2, Mariano Obarrio Miles a écrit :
>>>
>>> Hi Sebastien,
>>> I try with a loop but the result it's the same. Only add one of both.
>>> Learn05 (.232.141)
>>>
>>> The loop:
>>>
>>> - name: DEBUG Show inventory_hostname
>>> debug: msg="inventory_hostname {{inventory_hostname}}"
>>>
>>>
>>> - name: Add_host with Loop
>>> add_host:
>>> name: "{{item.value.ipv4}}"
>>> groups: in-memory-vms
>>> ansible_ssh_host: "{{item.value.ipv4}}"
>>> ansible_distribution: "CentOS"
>>> ansible_system: "Linux"
>>> ansible_ssh_private_key_file: /root/.ssh/ansible.pem
>>> with_dict: "{{ instance_facts }}"
>>> when: item.key in ['instance']
>>> changed_when: false
>>>
>>>
>>> When execute the new playbook, only added learn05, but the debug in
>>> "TASK [vmware : DEBUG Show inventory_hostname]" show two hosts.
>>>
>>> In the common role I added a debug line "TASK [common : debug]" to show
>>> all groups outside of vmware role. If you can see the in-memory-vms group
>>> have only one IP learn05 (.232.141)
>>>
>>>
>>> *[root@learn01 ansible]# ./createvm.yml*
>>>
>>> PLAY [centos-vms]
>>> ***********************************************************************************************************************************************************************************************************************
>>>
>>>
>>> TASK [vmware : include_tasks]
>>> ***********************************************************************************************************************************************************************************************************
>>> included: /var/adm/ssoo/opt/ansible/roles/vmware/tasks/
>>> create_vms_from_template.yml for learn05, learn06
>>>
>>>
>>> TASK [vmware : Create VM from Template]
>>> *************************************************************************************************************************************************************************************************
>>> changed: [learn06 -> localhost]
>>> changed: [learn05 -> localhost]
>>>
>>>
>>> TASK [vmware : Espera asignacion de IP via DHCP]
>>> ****************************************************************************************************************************************************************************************
>>> Pausing for 60 seconds
>>> (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort)
>>> ok: [learn05]
>>>
>>>
>>> TASK [vmware : Gather instance facts]
>>> ***************************************************************************************************************************************************************************************************
>>> ok: [learn06]
>>> ok: [learn05]
>>>
>>>
>>> TASK [vmware : DEBUG Show inventory_hostname]
>>> *******************************************************************************************************************************************************************************************
>>> ok: [learn05] => {
>>> "msg": "inventory_hostname learn05"
>>> }
>>> ok: [learn06] => {
>>> "msg": "inventory_hostname learn06"
>>> }
>>>
>>>
>>> TASK [vmware : Add_host with Loop]
>>> ******************************************************************************************************************************************************************************************************
>>> ok: [learn05] => (item={'key': u'instance', 'value': {u'hw_name': u
>>> 'learn05', u'hw_power_status': u'poweredOn', u'hw_processor_count': 1, u
>>> 'hw_memtotal_mb': 256, u'module_hw': True, u'snapshots': [], u
>>> 'customvalues': {}, u'hw_guest_full_name': u'CentOS 4/5/6/7 (64-bit)', u
>>> 'hw_interfaces': [u'eth0'], u'hw_guest_id': u'centos64Guest', u
>>> 'current_snapshot': None, u'ipv6': None, u'guest_tools_version': u
>>> '10249', u'hw_eth0': {u'macaddress': u'00:50:56:81:16:fe', u
>>> 'addresstype': u'assigned', u'macaddress_dash': u'00-50-56-81-16-fe', u
>>> 'label': u'Network adapter 1', u'ipaddresses': [u'50.0.232.141'], u
>>> 'summary': u'DVSwitch: 79 24 01 50 c4 9c af f0-ce 89 4a 9a 00 1a d2 e8'
>>> }, u'hw_product_uuid': u'4201f0a4-fa12-f243-a715-227d401193bf', u
>>> 'annotation': u'', u'guest_tools_status': u'guestToolsRunning', u'ipv4':
>>> u'50.0.232.141'}})
>>> skipping: [learn05] => (item={'key': 'attempts', 'value': 1})
>>> skipping: [learn05] => (item={'key': 'changed', 'value': False})
>>> skipping: [learn05] => (item={'key': u'failed', 'value': False})
>>>
>>>
>>> PLAY [in-memory-vms]
>>> ********************************************************************************************************************************************************************************************************************
>>>
>>>
>>> TASK [common : debug]
>>> *******************************************************************************************************************************************************************************************************************
>>> ok: [50.0.232.141] => {
>>> "groups": {
>>> "all": [
>>> "learn05",
>>> "learn06",
>>> "taurus",
>>> "learn01",
>>> "learn02",
>>> "learn03",
>>> "learn04",
>>> "50.0.232.141"
>>> ],
>>> "centos-vms": [
>>> "learn05",
>>> "learn06"
>>> ],
>>> "in-memory-vms": [
>>> "50.0.232.141"
>>> ],
>>> "solaris": [
>>> "taurus"
>>> ],
>>> "ungrouped": []
>>> }
>>> }
>>>
>>> ...
>>> ...
>>> ...
>>>
>>> PLAY RECAP
>>> ******************************************************************************************************************************************************************************************************************************
>>> 50.0.232.141 : ok=14 changed=0 unreachable=0
>>> failed=0
>>> learn05 : ok=6 changed=1 unreachable=0
>>> failed=0
>>> learn06 : ok=4 changed=1 unreachable=0
>>> failed=0
>>>
>>>
>>>
>>>
>>> El lunes, 16 de octubre de 2017, 10:33:56 (UTC+2), Mariano Obarrio Miles
>>> escribió:
>>>>
>>>> Hi all,
>>>> I don't know what I do wrong... I try create VMs (vmware) and
>>>> provisioning after that. But when try add this new vms to inventory with
>>>> add_host only add one.
>>>>
>>>> The task "Gather VM facts (vmware_guest_facts)" recover 2 IPs but
>>>> then "Add Host to inventory" only add one IP to in-memory inventory.
>>>>
>>>> I try multiples scenarios (with_dict/set_fact....) to add_host to
>>>> inventory but nothing work!
>>>>
>>>> Any idias what I do wrong, any suggestions?
>>>>
>>>>
>>>> Thxs,
>>>>
>>>> Mariano
>>>>
>>>> ansible 2.5.0
>>>> config file = /var/adm/ssoo/opt/ansible/ansible.cfg
>>>> configured module search path = [u'/root/.ansible/plugins/modules', u
>>>> '/usr/share/ansible/plugins/modules']
>>>> ansible python module location = /usr/lib/python2.7/site-packages/
>>>> ansible-2.5.0-py2.7.egg/ansible
>>>> executable location = /usr/bin/ansible
>>>> python version = 2.7.5 (default, Aug 4 2017, 00:39:18) [GCC 4.8.5
>>>> 20150623 (Red Hat 4.8.5-16)]
>>>>
>>>>
>>>>
>>>> *# cat /etc/ansible/hosts*
>>>> [centos-vms]
>>>> learn[05:06] disk='10' datastore='LUN24_VNX5600_MIRROR' network=
>>>> 'dvPortGroupCentral' memory='256' cpucount='1' osid='centos64Guest'
>>>> ansible_ssh_private_key_file=/root/.ssh/learning.pem ansible_user=root
>>>> ansible_password=xxxxxxx learn[05:06].node.consul=learn[05:06]
>>>>
>>>>
>>>>
>>>> *#!/usr/bin/ansible-playbook*
>>>> ---
>>>> - hosts: centos-vms
>>>> gather_facts: false
>>>> connection: local
>>>> user: root
>>>>
>>>> roles:
>>>> - vmware
>>>>
>>>>
>>>> - hosts: in-memory-vms
>>>> gather_facts: false
>>>> connection: local
>>>> user: root
>>>>
>>>>
>>>> roles:
>>>> - common
>>>>
>>>>
>>>> *# cat roles/vmware/tasks/main.yml*
>>>> ---
>>>>
>>>> - include_tasks: create_vms_from_template.yml
>>>> tags:
>>>> - CreateVM from Template
>>>>
>>>>
>>>>
>>>> *# cat roles/vmware/tasks/create_vms_from_template.yml*
>>>> ---
>>>> - name: Create VM from Template
>>>> vsphere_guest:
>>>> vcenter_hostname: "{{ vcenter_hostname }}"
>>>> username: "{{ vcenter_user }}"
>>>> password: "{{ vcenter_pass }}"
>>>> validate_certs: no
>>>> guest: "{{ inventory_hostname }}"
>>>> from_template: yes
>>>> template_src: "CentOS_7.3_x64_1511-GPT-20GB_HDD"
>>>> cluster: VMwareAPP
>>>> resource_pool: "/Resources/SSOO"
>>>> vm_extra_config:
>>>> notes: "{{ notes }}"
>>>>
>>>> - name: Espera asignacion de IP via DHCP
>>>> pause: seconds=60
>>>>
>>>> - name: Gather VM facts
>>>> vsphere_guest:
>>>> vcenter_hostname: "{{ vcenter_hostname }}"
>>>> username: "{{ vcenter_user }}"
>>>> password: "{{ vcenter_pass }}"
>>>> vmware_guest_facts: yes
>>>> validate_certs: no
>>>> guest: "{{ inventory_hostname }}"
>>>> register: vm_facts
>>>>
>>>> - name: IP address info
>>>> debug: msg="{{ vm_facts.ansible_facts.hw_eth0.ipaddresses[0] }} {{
>>>> inventory_hostname }}"
>>>>
>>>> - name: Add Host to inventory
>>>> add_host:
>>>> hostname: "{{ vm_facts.ansible_facts.hw_eth0.ipaddresses[0] }}"
>>>> groups: in-memory-vms
>>>> ansible_ssh_host: "{{
>>>> vm_facts.ansible_facts.hw_eth0.ipaddresses[0] }}"
>>>> ansible_user: root
>>>> ansible_password: xxxxxxxxx
>>>> ansible_distribution: "CentOS"
>>>> ansible_system: "Linux"
>>>>
>>>>
>>>> - name: 'Inventory'
>>>> debug: var=groups
>>>>
>>>>
>>>> - name: 'Stop execution'
>>>> fail: msg="Playbook stoped."
>>>>
>>>>
>>>>
>>>>
>>>> *[root@learn01 ansible]# ./createvm.yml *
>>>>
>>>> PLAY [centos-vms]
>>>> ***********************************************************************************************************************************************************************************************************
>>>>
>>>>
>>>> TASK [vmware : include_tasks]
>>>> ***********************************************************************************************************************************************************************************************
>>>> included: /var/adm/ssoo/opt/ansible/roles/vmware/tasks/
>>>> create_vms_from_template.yml for learn06, learn05
>>>>
>>>>
>>>> TASK [vmware : Create VM from Template]
>>>> *************************************************************************************************************************************************************************************
>>>> ok: [learn06]
>>>> ok: [learn05]
>>>>
>>>>
>>>> TASK [vmware : Espera asignacion de IP via DHCP]
>>>> ****************************************************************************************************************************************************************************
>>>> Pausing for 60 seconds
>>>> (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort)
>>>> Press 'C' to continue the play or 'A' to abort
>>>> ok: [learn05]
>>>>
>>>>
>>>> TASK [vmware : *Gather VM facts*]
>>>> *********************************************************************************************************************************************************************************************
>>>> ok: [learn05]
>>>> ok: [learn06]
>>>>
>>>>
>>>> TASK [vmware : IP address info]
>>>> *********************************************************************************************************************************************************************************************
>>>> ok: [learn05] => {
>>>> "msg": "50.0.232.157 learn05"
>>>> }
>>>> ok: [learn06] => {
>>>> "msg": "50.0.232.158 learn06"
>>>> }
>>>>
>>>>
>>>> TASK [vmware : Add Host to inventory]
>>>> ***************************************************************************************************************************************************************************************
>>>> changed: [learn05]
>>>>
>>>>
>>>> TASK [vmware : Inventory]
>>>> ***************************************************************************************************************************************************************************************************
>>>> ok: [learn05] => {
>>>> "groups": {
>>>> "all": [
>>>> "learn05",
>>>> "learn06",
>>>> "taurus",
>>>> "learn01",
>>>> "learn02",
>>>> "learn03",
>>>> "learn04",
>>>> "50.0.232.157"
>>>> ],
>>>> "centos-vms": [
>>>> "learn05",
>>>> "learn06"
>>>> ],
>>>> "in-memory-vms": [
>>>>
>>>> "50.0.232.157" *<---- ONLY ONE*
>>>> ],
>>>> "solaris": [
>>>> "taurus"
>>>> ],
>>>> "ungrouped": []
>>>> }
>>>> }
>>>> ok: [learn06] => {
>>>> "groups": {
>>>> "all": [
>>>> "learn05",
>>>> "learn06",
>>>> "taurus",
>>>> "learn01",
>>>> "learn02",
>>>> "learn03",
>>>> "learn04",
>>>> "50.0.232.157"
>>>> ],
>>>> "centos-vms": [
>>>> "learn05",
>>>> "learn06"
>>>> ],
>>>> "in-memory-vms": [
>>>>
>>>> "50.0.232.157" *<---- ONLY ONE*
>>>> ],
>>>> "solaris": [
>>>> "taurus"
>>>> ],
>>>> "ungrouped": []
>>>> }
>>>> }
>>>>
>>>>
>>>> TASK [vmware : Stop execution]
>>>> **********************************************************************************************************************************************************************************************
>>>> fatal: [learn05]: FAILED! => {"changed": false, "failed": true, "msg":
>>>> "Playbook
>>>> stoped."}
>>>> fatal: [learn06]: FAILED! => {"changed": false, "failed": true, "msg":
>>>> "Playbook
>>>> stoped."}
>>>> to retry, use: --limit @/var/adm/ssoo/opt/ansible/createvm.
>>>> retry
>>>>
>>>>
>>>> PLAY RECAP
>>>> ******************************************************************************************************************************************************************************************************************
>>>> learn05 : ok=7 changed=1 unreachable=0
>>>> failed=1
>>>> learn06 : ok=5 changed=0 unreachable=0
>>>> failed=1
>>>>
>>>>
>>>>
>>>>
--
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/d1a9058b-d8f5-40bc-a2ad-675bc5f2e2da%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.