Benefit is claimed under 35 U.S.C. 119(a)-(d) to Foreign Application Serial No. 202141032713 filed in India entitled “DECLARATIVE DEPLOYMENT OF A VIRTUAL INFRASTRUCTURE MANAGEMENT SERVER”, on Jul. 20, 2021, by VMware. Inc., which is herein incorporated in its entirety by reference for all purposes.
Unless otherwise indicated, the subject matter described in this section is not prior art to the claims of the present application and is not admitted as being prior art by inclusion in this section.
A virtual infrastructure is a collection of software-defined components (e.g. virtual compute resources, virtual storage resources, virtual networking resources, etc.) that make up an organization's information technology (IT) environment. A virtual infrastructure management (VIM) server is a software platform that is used to centrally manage and configure a virtual infrastructure. Examples of existing VIM server products include SolarWinds VMAN. Veeam ONE, Nutanix AOS, and VMware vCenter Server.
Currently, the process of deploying a VIM server is often complex, time-consuming, and involves a significant amount of manual intervention on the part of infrastructure administrators. Accordingly, it would be desirable to have techniques for facilitating this process.
in the following description, for purposes of explanation, numerous examples and details are set forth in order to provide an understanding of various embodiments. It will be evident, however, to one skilled in the art that certain embodiments can be practiced without some of these details or can be practiced with modifications or equivalents thereof.
The present disclosure is directed to techniques for deploying a VIM server in a declarative manner (or in other words, via a desired state definition that indicates the desired state of the VIM server and the virtual infrastructure components it is configured to manage). The desired state definition can be provided by an administrator or other user/agent at the time of initiating the deployment and can specify the topology of the VIM server's virtual infrastructure (e.g., the number and hierarchy of datacenter, cluster, and host components), the features/properties of the VIM server and each virtual infrastructure component, and other related information.
With this declarative approach, the complexities and manual steps required by conventional approaches for deploying a VIM server can be largely mitigated or avoided, resulting in a more streamlined, intuitive, and user-friendly deployment process.
Generally speaking, the purpose of VIM installer 108 is to deploy an instance of a VIM server 112 within computing environment 100 in order to manage the physical resources of environment 100, including host systems 102(1)-(N), as a virtual infrastructure. With current approaches, this deployment process typically involves installing VIM server 112 on a particular host system of computing environment 100 (e.g., host system 102(1), shown via step (1)/reference numeral 114) and prompting an infrastructure administrator 116 to manually configure VIM server 112 after its installation in order to setup the various features/properties of VIM server 112 and its inventory of virtual infrastructure components (shown via step (2)/reference numeral 118).
As noted in the Background section, the conventional deployment process illustrated in
To address the foregoing and other similar issues,
With the high-level deployment approach shown in
The remainder of this disclosure provides additional details for implementing the deployment workflow shown in
Starting with block. 302 of
The desired state definition can also specify other types of information, such as the desired properties and features of VIM server 102 (e.g., name, security permissions, standalone hosts, target datastore for installation, whether HA is enabled, etc.) and the desired properties and features of each datacenter/cluster/host system in the virtual infrastructure topology (e.g., name, security permissions, whether host lifecycle management is enabled, whether HCI storage is enabled, whether HA is enabled, whether container management support (e.g., Kubernetes) is enabled, etc.). HCI storage refers to a storage paradigm in which the local storage resources of a cluster's host systems are aggregated into a virtual storage pool and made available for use by the cluster's storage clients (e.g., virtual machines (VMs) or containers). One example implementation of HCI storage is VMware vSAN.
Listing 1 below is a sample representation of the desired state definition that can be received by VIM installer 200 at block 302, formatted using JSON (JavaScript Object Notation):
At block 304, VIM installer 200 can run a series of hardware compatibility pre-checks to verify whether the physical hardware in computing environment 100 (e.g., the hardware of host systems 102(1)-(N)) is compatible with the version of VIM server 112 to be deployed. These hardware compatibility pre-checks can include. e.g., checking whether the firmware of host systems 102(1)-(N) is compatible with VIM server 112, whether each host system 102(1)-(N) meets a minimum system specification (in terms of, e.g., CPU resources, memory resources, etc.), and more.
In addition, at block 306, VIM installer 200 can run a series of state verification pre-checks to verify whether the desired state definition received at block 302 can be successfully deployed in computing environment 100. These state verification pre-checks can include verifying that the syntax and parameter values included in the desired state definition are valid. The state verification pre-checks can also include verifying whether the hardware of computing environment 100 meets certain minimum requirements for the features specified/enabled in the desired state definition.
For example, if the desired state definition indicates that that host lifecycle management should be enabled for a cluster comprising host systems 102(1), 102(2), and 102(3), VIM installer 200 can check whether host systems 102(1)-(3) have an appropriate version of hypervisor 104 installed to support this feature. As another example, if the desired state definition indicates that HCI storage should be enabled for a cluster comprising host systems 102(3), 102(4), and 102(5), VIM installer 200 can check whether host systems 102(3)-(5) have appropriate local storage devices installed (e.g., one or more solid-state disks (SSDs) for a cache tier of the HCI storage and one or more capacity disks for a capacity tier of the HCI storage).
If any of the pre-checks at blocks 304 and 306 fail (block 310), VIM installer 200 can terminate the deployment process and flowchart 300 can end. However, if all of the pre-checks are successful, VIM installer 200 can further check whether the desired state definition indicates that an HCI datastore (i.e., a datastore that resides on the HCI storage layer of a cluster) is needed for installing VIM server 112 (block 310). If the answer is yes, VIM installer 200 can invoke a management function for creating a single-node I-ICI cluster in computing environment 100 and an HCI datastore on that cluster (block 312).
Upon completing the check at block 310, VIM installer 200 can deploy an image file for VIM server 112 onto a target datastore (e.g., the HCI datastore created at block 312) and initiate installation of VIM server 112 on a target host system (e.g., host system 102(1)) using the deployed image file (block 314). As part of this process, VIM installer 200 can provide the desired state definition to the target host system, either directly or via the target datastore. In a particular embodiment, the image file for VIM server 112 can be an OVA (Open Virtual Appliance) file and VIM server 112 can be installed as a VM-based virtual appliance on the target host system.
Turning now to
Further, at blocks 324 and 326, state manager 202 can enter a loop for each cluster C of datacenter D specified in the desired state definition and create a cluster component in the virtual infrastructure inventory of VIM server 112 (under datacenter ID) in accordance with cluster C's specification. As part of block 326, state manager 202 can interact with other services of VIM server 112 as needed in order to ensure that cluster C's desired state is applied/created properly. For example, if the desired state for cluster C indicates that host lifecycle management should be enabled for the cluster, state manager 202 can interact with a lifecycle management service of VIM server 112 to ensure that the characteristics of the host systems in C are consistent per lifecycle management policies. As another example, if the desired state for cluster C indicates that a container management control plane (e.g., Kubernetes) should be enabled for the cluster, state manager 202 can interact with a container manager service of VIM server 112 to ensure that such a control plane is created for the cluster. As yet another example, if the desired state for cluster C indicates that HA should be enabled, state manager 202 can interact with an HA service of VIM server 112 to ensure that appropriate HA components are created in the cluster.
Yet further, at blocks 328 and 330, state manager 202 can enter a loop for each host system H of cluster C specified in the desired state definition and create a host component in the virtual infrastructure inventory of VIM server 112 (under cluster C) in accordance with host system H's specification. This host component is an entry in the inventory that identifies existing host system H and its properties (e.g., network address, etc.).
Upon completing, the creation of the datacenter, cluster, and host components (blocks 332, 334, and 336), state manager 202 can check for and apply any server-level features of VIM server 112 specified in the desired state definition (block 33S). For example, if HA is enabled for VIM server 112, state manager 202 can deploy another instance of VIM server 112 on a different host system 102 of computing environment 100 and configure that new server instance as a backup VIM server for HA purposes.
Finally, at block 340, state manager can return a message to VIM installer 200 indicating that VIM server 112 has been successfully deployed in accordance with the desired state definition and flowchart 300 can end. Although not shown here, VIM installer 200 can subsequently provide a deployment confirmation to the entity that initiated the deployment process (e.g., infrastructure administrator 116). Further, if any errors or failures occur during the installation of VIM server 112 or the creation/application of its desired state per blocks 314-338, a deployment failure message can be generated for review by that entity.
Yet further, in some scenarios VIM installer 200 may be configured to perform a batch deployment of multiple instances of VIM server 112. In these scenarios, VIM installer 200 and state manager 202 can repeat workflow 300 for each server instance to be deployed, either in a serial or parallel fashion.
Certain embodiments described herein can employ various computer-implemented operations involving data stored in computer systems. For example, these operations can require physical manipulation of physical quantities-usually, though not necessarily, these quantities take the form of electrical or magnetic signals, where they (or representations of them) are capable of being stored, transferred, combined, compared, or otherwise manipulated. Such manipulations are often referred to in terms such as producing, identifying, determining, comparing, etc. Any operations described herein that form part of one or more embodiments can be useful machine operations.
Yet further, one or more embodiments can relate to a device or an apparatus for performing the foregoing operations. The apparatus can be specially constructed for specific required purposes, or it can be a general-purpose computer system selectively activated or configured by program code stored in the computer system. In particular, various general-purpose machines may be used with computer programs written in accordance with the teachings herein, or it may be more convenient to construct a more specialized apparatus to perform the required operations. The various embodiments described herein can be practiced with other computer system configurations including handheld devices, microprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like.
Yet further, one or more embodiments can be implemented as one or more computer programs or as one or more computer program modules embodied in one or more non-transitory computer readable storage media. The term non-transitory computer readable storage medium refers to any data storage device that can store data which can thereafter be input to a computer system. The non-transitory computer readable media may be based on any existing or subsequently developed technology for embodying computer programs in a manner that enables them to be read by a computer system. Examples of non-transitory computer readable media include a hard drive, network attached storage (NAS), read-only memory, random-access memory, flash-based nonvolatile memory (e.g., a flash memory card or a solid-state disk), a CD (Compact Disc) (e.g., CD-ROM, CD-R, CD-RW, etc.), a DVD (Digital Versatile Disc), a magnetic tape, and other optical and non-optical data storage devices. The non-transitory computer readable media can also be distributed over a network coupled computer system so that the computer readable code is stored and executed in a distributed fashion.
In addition, while certain virtualization methods referenced herein have generally assumed that virtual machines present interfaces consistent with a particular hardware system, persons of ordinary skill in the art will recognize that the methods referenced can be used in conjunction with virtualizations that do not correspond directly to any particular hardware system. Virtualization systems in accordance with the various embodiments, implemented as hosted embodiments, non-hosted embodiments or as embodiments that tend to blur distinctions between the two, are all envisioned. Furthermore, certain virtualization operations can be wholly or partially implemented in hardware.
Many variations, modifications, additions, and improvements are possible, regardless the degree of virtualization. The virtualization software can therefore include components of a host, console, or guest operating system that performs virtualization functions. Plural instances can be provided for components, operations, or structures described herein as a single instance. Finally, boundaries between various components, operations, and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the invention(s). In general, structures and functionality presented as separate components in exemplary configurations can be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component can be implemented as separate components.
As used in the description herein and throughout the claims that follow, “a,” “an,” and “the” includes plural references unless the context clearly dictates otherwise. Also, as used in the description herein and throughout the claims that follow, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise.
The above description illustrates various embodiments along with examples of how aspects of particular embodiments may be implemented. These examples and embodiments should not be deemed to be the only embodiments and are presented to illustrate the flexibility and advantages of particular embodiments as defined by the following claims. Other arrangements, embodiments, implementations, and equivalents can be employed without departing from the scope hereof as defined by the claims.
Number | Date | Country | Kind |
---|---|---|---|
202141032713 | Jul 2021 | IN | national |