esxi-vm/README.md

4.3 KiB

Introduction

This utility is a simple to use comand line tool to create VMs on an ESXi host from from a system running python and ssh. vCenter is not required. You need to enable ssh access on your ESXi server. It's HIGHLY RECOMMENDED to use password-less authentication by copying your ssh public keys to the ESXi host.

Command Line Args

        ./esxi-vm-create -h
        usage: esxi-vm-create [-h] [-d] [-v] [-H HOST] [-U USER] [-P PASSWORD]
                      [-n NAME] [-c CPU] [-m MEM] [-s SIZE] [-i ISO] [-N NET]
                      [-S STORE] [-g GUESTOS] [-u]

        ESXi Create VM utility.

        optional arguments:
          -h, --help            show this help message and exit
          -d, --dry             Enable Dry Run mode (False)
          -v, --verbose         Enable Verbose mode (False)
          -H HOST, --Host HOST  ESXi Host (esxi)
          -U USER, --User USER  ESXi Host username (root)
          -P PASSWORD, --Password PASSWORD
                                ESXi Host password (*****)
          -n NAME, --name NAME  VM name
          -c CPU, --cpu CPU     Number of vCPUS (2)
          -m MEM, --mem MEM     Memory in GB (4)
          -s SIZE, --size SIZE  Size of virt disk (20)
          -i ISO, --iso ISO     CDROM ISO Path | None (None)
          -N NET, --net NET     Network Interface | None (None)
          -S STORE, --store STORE
                                vmfs Store | LeastUsed (DS_3TB_m)
          -g GUESTOS, --guestos GUESTOS
                                Guest OS. (centos-64)
          -u, --updateDefaults  Update Default VM settings stored in ~/.esxi-vm.yml
        

Examples

Create a new VM named testvm01 using all defaults from ~/.esxi-vm.yml.

        ./esxi-vm-create -n testvm01

        Create VM Success
        ESXi Host: esxi
        VM NAME: testvm01
        vCPU: 2
        Memory: 4GB
        VM Disk: 20GB
        DS Store: DS_4TB
        Network: None

Change default number of vCPUs to 4, Memory to 8GB and vDisk size to 40GB.

        ./esxi-vm-create -c 4 -m 8 -s 40 -u
        Saving new Defaults to ~/.esxi-vm.yml

Create a new VM named testvm02 using new defaults from ~/.esxi-vm.yml and specifying a Network interface.

        ./esxi-vm-create -n testvm02 -N 192.168.1

       Create VM Success
       ESXi Host: esxi
       VM NAME: testvm02
       vCPU: 4
       Memory: 8GB
       VM Disk: 40GB
       DS Store: DS_4TB
       Network: 192.168.1

Available Network Interfaces and Available Disk Storage volumes will be listed if an invalid entry is made.

        ./esxi-vm-create -n testvm03 -N BadNet -S BadDS
        ERROR: Disk Storage BadDS doesn't exist.
            Available Disk Stores: ['DS_SSD500s', 'DS_SSD500c', 'DS_SSD250', 'DS_4TB', 'DS_3TB_m']
            LeastUsed Disk Store : DS_4TB
        ERROR: Virtual NIC BadNet doesn't exist.
            Available VM NICs: ['192.168.1', '192.168.0', 'VM Network test'] or 'None'

Create a new VM named testvm03 using a valid Network Interface, valid Disk Storage volume, enabled verbose and saving the settings as default.

        ./esxi-vm-create -n testvm03 -N 192.168.1 -S DS_3TB_m -v -u
        Saving new Defaults to ~/.esxi-vm.yml
        Create testvm03.vmx file
        Create testvm03.vmdk file
        Register VM
        Power ON VM

        Create VM Success
        ESXi Host: esxi
        VM NAME: testvm03
        vCPU: 4
        Memory: 8GB
        VM Disk: 40GB
        Format: thin
        DS Store: DS_3TB_m
        Network: 192.168.1
        Guest OS: centos-64

License

Copyright (C) 2017 Jonathan Senkerik

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Support

Website : http://www.jintegrate.co

github : http://github.com/josenk/