VMstore T7000 Series Icon

VMstore T7000 Series

On-prem VMstore platform.

Tintri Cloud Platform

Managed infrastructure powered by Tintri.

Tintri Cloud Engine

Container-driven VMstore platform.

All Die Hard Tintri News & Events Perspectives Products & Solutions Technical

Automating Workflows in Your CI/CD Pipeline

Intelligent Infrastructure Blog - Intelligent Infrastructure
  • KEY TAKEAWAYS
  • Tintri Intelligent Infrastructure works at VM and container granularity, simplifying CI/CD automation.
  • A library of tools including comprehensive REST APIs, a PowerShell Toolkit, and Python SDK facilitate integration in CI/CD environments.
  • Automating common workflows such as self-service recovery, copying a VM for debugging a test failure, and keeping dev/test environments up to date become simple and repeatable with Tintri VMstore.

Tintri VMstore and Automation

Tintri VMstore provides REST APIs for all functions and services, making it possible to incorporate Tintri Intelligent Infrastructure with existing CI/CD tools such as Jenkins. Specific integrations on top of our APIs make it easy to automate Tintri VMstore using scripts or as part of your code:

Tintri can also advise you on the best ways to use our tools to solve your CI/CD problems. But you may find you don’t need much help. Because Tintri Intelligent Infrastructure operates at VM granularity, the automation process is far simpler than it would be with storage that only understands LUNs or volumes.

CI/CD Automation Use Cases

Here are a few automation examples that can accelerate common CI/CD bottlenecks. The code fragments below illustrate PowerShell cmdlets, but you can accomplish the same things using REST APIs or our Python SDK.

Self-Service Recovery

Even developers make mistakes. Who hasn’t accidentally misplaced, deleted, or destroyed a file after hours of work? Maybe someone just wants to go back in time an hour or two? But, assuming you even run backups that frequently, it takes too long to get the restore request satisfied by the help desk.

Tintri VMstore solves this problem. First, space-efficient snapshots make it possible to create recovery points every hour or at even shorter intervals if desired. Second, VM and container-granular operations make it simple to script the process and make it accessible to users via ChatOps or a self-service portal. The example below restores a snapshot of the user’s VDI vDisk as a second drive. The user can then use copy and paste to recover necessary files.

The core of this operation requires just four lines of code:

Connect-TintriServer –Server vms01.vmlevel.com

$src = Get-TintriVM –name ‘user01-vm

$snap = Get-TintriVMSnapshot –VM $src –GetLatestSnapshot

Sync-TintriVM -VM $src –Snapshot $snap –AttachDisks

By working at VM and container granularity, Tintri VMstore makes it possible to automate common CI/CD workflows with just a few lines of code.

Complete code would include comments and error handling, but fundamentally this requires just four VM-level operations: connect to storage, get the user VM, find the snapshot, and attach the snapshot. The vDisk is automatically detached after 48 hours.

Debugging Test Failures in CI Test Suite

If a test failure occurs during execution of a CI test suite, the affected VM may need to be quarantined until it’s triaged. That could mean that it’s potentially unavailable for days, gumming up the works.

Tintri VMstore makes it easy to solve this problem using automation. When a test failure occurs, CI suite automation can take a snapshot of the VM that was running the failed test. This allows the developer to use his or her favorite tools for root cause analysis, while ensuring that test resources are never quarantined.

In a previous blog, Tomer Hagay talked about the advantages of Tintri Intelligent Infrastructure for accelerating continuous integration and continuous delivery (CI/CD). Those advantages include:

  • All operations performed at VM and container granularity, simplifying CI/CD automation.
  • Fast and space-efficient snapshots, clones, and replication save time and storage capacity. Auto-QoS ensures that storage I/O is never a bottleneck.
  • Tintri SyncVM accelerates the process of updating dev/test environments.

In this blog, I’ll dig a little deeper on how Tintri VMstore enables automation of some important CI/CD processes.

The code below shows the process for syncing a development database.

Connect-TintriServer –Server vms01.vmlevel.com

$src = Get-TintriVM –name ‘prod-sql’

$snap = Get-TintriVMSnapshot –VM $src -UseLatestSnapshot

$dst = Get-TintriVM –name ‘dev-sql’

Sync-TintriVDisk -VM $dst –SourceSnapshot $snap -AllButFirstVdisk

These five lines take less than 60 seconds to execute.

The Tintri VMstore Difference

I should emphasize that with any other storage vendor, scripting the functionality shown in the preceding automation examples might take hundreds of lines of code that take many minutes or even hours to execute—and add significant risk. Because LUN-based storage can’t snapshot individual VMs and vDisks directly, you’re forced to do complex manipulations on the LUN to accomplish operations on individual VMs.

Tintri VMstore makes automating storage-related CI/CD workflows fast and simple so they are easier to understand and maintain.

The code is again quite trivial because it calls VM-level APIs and makes use of game-changing SyncVM copy data management specific to Tintri VMstore.

Keeping Development Database Copies Up to Date

Keeping development and test environments up to date in a fast-moving CI/CD pipeline can be a challenge. This is especially true when the application includes a database. To ensure code quality, your team needs to work with and test against up to date copies of the database. Given the size of modern databases, it simply takes too much time and too much storage to make physical copies. Tintri solves this problem by giving every development environment a space-efficient clone, allowing you to have as many full database instances as you need and to create new environments almost instantaneously. Tintri VMstore SyncVM makes the whole process simple, efficient, and repeatable so development environments stay up to date.

The core of this operation requires just six lines of code:

Connect-TintriServer –Server vms01.vmlevel.com

$src = Get-TintriVM –name ‘test-vm01’

$snap = Get-TintriVMSnapshot –VM $src -GetLatestSnapshot

$disks = Get-TintriVDisk –Snapshot $snap 

$dst = Get-TintriVM –name ‘dev-vm01’

Sync-TintriVDisk -VM $dst -SourceSnapshot $snap –VDiskMap

This site is registered on wpml.org as a development site. Switch to a production site key to remove this banner.