Skip to main content

How to Automate Snapshot on Virtual Machine

I always treat virtual machine snapshots like a big risk. It caused several outages in our infrastructure. Please check out Best practices for virtual machine snapshots in the VMware to understand how it impacts production.

虚拟机快照对我来说绝对是个大威胁,已经在我的生产环境里发生过好几次由此引发的故障了。如果你要了解快照对生产环境的影响可以看看:Best practices for virtual machine snapshots in the VMware

It's better delete snapshots as early as possible. But what if you have a large infrastructure? Application teams request to create snapshots before changing, delete after validation. You may get dozens snapshot requests every month. People talk about snapshot automation in community, there are several ways to get it done. Here are scripts I wrote to automate creating/deleting snapshots.

You can run its by scheduling a job on Windows Secheduled Tasks. The scripts have friendly logging system, you could easy figure out why script stops running. Its also write error code and detail to Windows Event Log, you may need it for ticketing system (Some monitor systems, such as SCOM, can capture specified Windows Event ID and create tickets  in ticketing system). You can also create a troubleshooting guide on your website and put the URL on variable $TroubleshootingGuide. It presents on detail of the Windows Event log.

Particular for Snapshot Creation Script. I know vCenter Server Scheduled Task can do same, but my script always keeps two snapshots and delete oldest one when 3rd snapshot is created. The script was wrote long time back, it's not very strong. It's just for special requirement.

---Chinese Version---



Snapshot Creation Script比较特殊。我知道vCenter Server Scheduled Task也可以实现创建快照的功能,但这个脚本可以保持始终有两个快照,当第三个快照生成时会删除最老的快照。这个脚本是我很早前写的,不是很严谨,只是为了特殊需求写的。

Snapshot Creation Script

Snapshot Deletion Script

Popular posts from this blog

Connect-NsxtServer shows "Unable to connect to the remote server"

When you run Connect-NsxtServer in the PowerCLI, it may show "Unable to connect to the remote server".  Because the error message is a little bit confusing with other login issues. It's not easy to troubleshoot. The actual reason is the NSX-T uses a self-signed certificate, and the PowerCLI cannot accept the certificate automatically. The fix is super easy. You need to set the PowerCLI to ignore the invalid certificate with the following command: Set-PowerCLIConfiguration -Scope User -InvalidCertificateAction:Ignore -Confirm:$false

Setup Terraform and Ansible for Windows provisionon CentOS

Provisioning Windows machines with Terraform is easy. Configuring Windows machines with Ansible is also not complex. However, it's a little bit challenging to combine them. The following steps are some ideas about handling a Windows machine from provisioning to post configuration without modifying the winrm configuration on the guest operating system. Install required repos for yum. yum -y install yum -y install yum -y install yum -y install epel-release yum -y install yum-utils yum-config-manager --add-repo Install  Terraform . sudo yum -y install terraform Install  Ansible . sudo yum -y install ansible Install  Kerberos . yum -y install gcc python-devel krb5-devel krb5-libs krb5-workstation

How to List All Users in Terraform Cloud

Terraform has a rich API. However, the API documentation does not mention how to list all users. We can leverage the organization membership API and the PowerShell command  Invoke-RestMethod  to get a user list. 1. Create an organization token in Terraform Cloud. 2. Create the token variable ( $Token ) in PowerShell. $Token = "abcde" 3. Create the API parameters variable in PowerShell. $params = @{ Uri = "" Authentication = "Bearer" Token = $Token ContentType = "application/vnd.api+json" } Note: You need to replace ZHENGWU with your own organization name. And I used 100 at the end of the URI to retrieve the first 100 users. It can be any number.  4. Retrieve the API return and list the user's email address. $Test = Invoke-RestMethod @params $