nutanix / nutanix.ansible

Official Nutanix Ansible collections
GNU General Public License v3.0
64 stars 36 forks source link

General Questions - #390

Open luckyinva opened 1 year ago

luckyinva commented 1 year ago

Hello - Thank you for publishing this module. I have recently been tasked with having to automate large lists of VMs within a pipeline and I have ansible and ansible AWX. I followed the module guides and installed it from Galaxy as described in the readme. Initially, I was only interested in the VM portion of the module so I pulled the examples and used them to form a playbook to build the vm's. Upon execution of the playbook, it will run and create the VMs however if the same playbook is executed again it will build the VMs again and appears to have no idempotency.

I'd like to try again and leverage the module as described and documented here only modifying or supplying what is expected to accomplish a vm build. Can someone from the project give a more detailed description of the files that need to be modified to just get the basic VM deployment accomplished? I realize the module has far more to offer than just creating a VM, however, in most cases, this is where we often start and build upon that basic feature to more advanced deployments. I have yet to accomplish following the examples.

I have leveraged Ansible for a long time however in this use case I find I may need a bit more guidance to effectively leverage the module. Would one of the team be willing to have a working session or point me in a direction that may improve my success rate with utilizing the module?

Prism Central Version pc.2023.1.0.2 NCC 4.6.4 LCM 2.6.1

Glenn B

bhati-pradeep commented 1 year ago

hi @luckyinva , for update or delete of VMs please check this comment and the corresponding ticket: https://github.com/nutanix/nutanix.ansible/issues/284#issuecomment-1260820336

bhati-pradeep commented 11 months ago

Currently, we have to provide UUID for update or delete ops. So post create we need to add uuid field for further management of vm.

bhati-pradeep commented 11 months ago

I wrote a sample script long time back to use vms_info and vms to avoid this manual intervention of adding uuid post creation.

Note: This will only work when there are vms with unique name

​
​
---
- name: VM playbook
  hosts: localhost
  gather_facts: false
  collections:
    - nutanix.ncp
  module_defaults:
    group/nutanix.ncp.ntnx:
      nutanix_host: <pc-ip>
      nutanix_username: admin
      nutanix_password: <password>
      validate_certs: false
  tasks:
  - name: Setting Variables
    set_fact:
        cluster_name: "auto_cluster_prod_4f1ddb664f78"
        script_path: ""
        subnet_name: "vlan.800"
        image_name: "alpine"
        vm_name: "vm-from-ansible"
        uuid: ""
​
  - name: fetch vms with given name
    ntnx_vms_info:
      filter:
        vm_name: "{{vm_name}}"
    register: vm
​
  - name: set uuid if vm with given name exists
    set_fact:
      uuid: "{{vm.response.entities[0].metadata.uuid}}"
    when: vm.response.entities | length > 0
​
  - name: create vm when uuid is not set (vm doesn't exist with given name), else update
    # check_mode: yes
    ntnx_vms:
      state: present
      vm_uuid: "{{uuid}}"
      name: "{{vm_name}}"
      cluster:
        name: "{{cluster_name}}"
      networks:
        - is_connected: True
          subnet:
            name: "{{ subnet_name }}"
            cluster:
              name: "{{cluster_name}}"
      disks:
        - type: "DISK"
          size_gb: 100
          bus: "SATA"
          clone_image:
            name: "{{ image_name }}"
      vcpus: 1
      cores_per_vcpu: 1
      memory_gb: 1
      force_power_off: True
    register: output
​
  - name: output of vm status
    debug:
      msg: '{{ output }}'