I can see some options:
Use Vagrant to create your VMs; it separates the process of creating the VM (including the base OS) and the actual provisioning. It also has some options to run certain provisioning steps at certain circumstances only.
Use Ansible, Puppet or something like that to switch to a provisioning mode where you do not do the same stuff ...
You could use vagrant to deploy VMs on the local laptop.
You could also check whether it is possible to split the script in smaller parts so it will not take four hours to test it.
If testing locally isn't an option, then the most straight forward approach would be to use disk volume snapshots/backups to your advantage. These will still cost $$$, but will save you time in the long run. You should then separate your bash script into different working segments/scripts that can be tested individually. Once your server is provisioned, run ...
Container virtualization with Linux is a combination of kernel features, namespaces and cgroups, used to run an application in a sandbox. Each application has it's own filesystem, network stack, pid namespace, etc, but runs on the same OS kernel as the host. From the host you can see the processes running, but from inside the sandbox, all you can see is your ...
"best suited" is the question. How do you measure this? what are the metrics and why do you choose them? I think you are looking for some kind of "tools combination", earlier tested on production by someone else's if preferred. What you want to do is try some opensource/free private cloud on-premises and run IaC on this private environment. You can test ...
If the artifacts in question are docker images then the recommended artifact management solution is the Container Registry, well integrated with other GCP products producing and/or using such images.
AFAIK they don't have a real artifact manager for other kinds of artifacts, they suggest the rather general purpose Cloud Storage for that. You can find an ...
Vagrant is a tool to create and customize virtual environments (containers and VMs) in a reproducible fashion (across platforms) using code and a virtualization provider of your choice. VirtualBox is only one of the virtualization providers it supports. Vagrant can also create VMs using Hyper-V, VMware and AWS.
While VirtualBox's VBoxManage does let you ...
I disagree with your definition, kubernetes, openshift and other are scheduler and as such should go in the SDDC part. IaC things are Vagrant/Terraform/Cloudformation/Vmware Cloud management. They are about writing code to define the infrastructure.
With this in mind k8s may fit both, a deployment.yml is IaC to drive the k8s SDDC.
Let take exemple for a ...
Containers isolate an application on a shared OS, VM's isolate an OS on shared hardware. With those different levels of abstraction, you have different exploits and protections.
A successful kernel level exploit on a container will affect the shared kernel, and therefore breakout of the container isolation. Think meltdown and spectre.
A successful VM ...
I'd say you have touched another, far more fundamental question - what makes a utility a "DevOps" one? That is, how do you measure the "DevOpsness" of a tool and formalize facts in this context?
Possibly, my wish list for DevOpsness of a tool, virtualization tools or other, if they fulfill further criteria down on this list:
Open and interoperable API, ...
There is a comprehensive document about k8s' DNS. According to this document one could validate whether the DNS is working by running:
- image: busybox
Multiple apps on the same server
But what if I have a Node.js server application? I could run multiple of those on the same machine without any kind of virtualization.
Yes, you can run multiple apps or multiple instances of the same app on a server. The problem is that these apps will interfere.
Some examples of resources, that might interfere:
They would ...
I will give it a try and explain all required steps with examples.
Please add comments with questions and improvement suggestions if anything is not well enough explained.
The OP (original poster) refers to awscli; while I provide corresponding examples, I also discuss limitations of this approach and give examples of doing same with Python.
If you're into RHEL you could look into running oVirt ( https://ovirt.org/ ). This will enable you to manage host machines, VMs and virtually anything in between through Ansible.
What you need is oVirt on top of CentOS or similar, on a baremetal machine. This/these machine(s) will host your new VMs and your so-called Hosted Engine (i.e. the oVirt ...
I can confirm that running Docker on Mac works just fine, but according to this ServerFault question, it's not possible to just run MacOS in Docker.
(You might be able to run MacOS in a VM in a Docker container, but that's probably not what you want.)
You could purchase a MacMini, use it as a Jenkins slave and run automated tests on it as part of your ...
As often, the vocabulary is overloaded, and the limits between technologies are somewhat fuzzy.
As a complement to the BMitch's answer, in my understanding, emulation is a way to run an application designed for another instruction set architecture. For example, it allows to run an ARM software on an x86 host. QEMU virtual machines are designed for ISA ...
Here's what I've tried:
Terraform + libvirt
There's unofficial libvirt provider for terraform. It works, but there are a few gotchas:
Doesn't support block devices:
Existing state not being removed:
Hi and welcome to DevOps SE!
To enable Role-Based Access Control (RBAC) for Docker Engine, you need the UCP (Universal Control Pane) available through Docker EE.
A free alternative could be also the Kubernetes module rbac.authorization.k8s.io.
Side note: To control docker commands available to a ...
The Docker website doesn't know about your operating system and has no docker installation for you.
Try the one packaged by raspbian:
sudo apt install docker.io
The name is different in some distributions, you can use:
apt-cache search docker
To see if you can find one. If you can't find any, then switch to an older (or newer?) version of Raspbian.
I've been wondering if there is any other similar software/tool that just does a one time provision, sets up a static IP/MAC address, and allows for easy start/resume/shutdown when testing/deploying/maintaining.
Sure... a virtualbox VM is simply a XML file. You can copy/modify it as such easily. Use vboxmanage to clone the hdd images as necessary.
So, I ...
We use AWS's EC2 Plugin to spin up spot instances in AWS for our Jenkins master based on a single AMI, exactly as you describe, so Jenkins does support this behavior.
From a quick bit of searching Google Cloud seems to offer a similar solution;
Spotinst’s Jenkins Plugin helps you to do more with your Jenkins setup by allowing you to automatically ...
Have a look at this page which documents EnvironmentBrowser for clues of which setting to edit.
Possibly something has a relative path that is now modified, or a resource that's fully used up or no longer available (or no longer valid, but that makes little sense if it's the same VM host).
After long searching and experiments, the best option for me became qemu monitor. See https://nico.schottelius.org/blog/control-and-shutdown-qemu-kvm-vm-via-unix-socket/ for more details regarding flexible management guest by using qemu monitor.
Try to start with a clean sheet by removing the .vagrant.d folder or start to remove the corrupted zip. When the file or folder has been removed, one could run vagrant up again and check whether it works.