4.2 KiB
bolt
Creating the VM using Bolt
Update the parameters provided to the below plan run command as needed. Note that you should always run plans and tasks out of the bolt
directory.
cd bolt
bolt plan run ubuntu::create_vm \
target_host=vortex \
vm_name=moeny-bank01 \
hostname=moeny-bank01 \
ip_with_cidr=100.40.223.189/24 -v
Alpine VMs
There are now separate plans for generating a VM using Alpine and Ubuntu. alpine::create_vm should be run for Alpine and ubuntu::create_vm should be run for Ubuntu. These plans each run tasks tailored for the appropriate distribution.
Below is a sample command to run the Alpine bolt plan.
bolt plan run alpine::create_vm \
vm_name=moeny-service \
hostname=moeny-service \
ip_with_cidr=100.40.223.189/24 \
add_a_record_bool=true \
dns_hostname=service -v
Note that add_a_record_bool
must be set to true
if you would like an A record for the VM to be added to the DNS server zone file, as it is false
by default. If using this functionality, dns_hostname
should also be provided and optionally dns_ttl
if you do not want the default of 3600
. The ability to interact with the DNS server depends on having set up a TSIG key on your DNS server for dynamic updates and storing a copy of your tsig.key
file in a directory called keys
at the root of the bolt project, alongside bolt-project.yaml
. If either of these conditions have not been met, do not attempt to use this functionality. For more information on setting up dynamic DNS with a TSIG key, see our bind9 repo.
Similarly, install_docker_bool
can be set to false
if you do not want docker to be installed on the VM. It is true by default.
For more detailed logging on the bolt plan run
add the -v
flag at the end of the command.
If you want to delete an A record that you have added, you can use the delete_dns_a_record
task. You'll just need to provide it with the dns_hostname you set. Here's a sample command.
bolt task run common::delete_dns_a_record dns_hostname=service --targets localhost
Lastly, even though it is designed to be run with the create_alpine
plan, you can also run the add_dns_a_record
task on its own. You'll just need to provide it a few parameters. Here's a sample command.
bolt task run common::add_dns_a_record add_a_record_bool=true ip_with_cidr=100.40.223.189/24 dns_hostname=service dns_ttl=3600 --targets localhost
Alternatively, to update DNS with the nsupdate
command directly from the terminal, run something like the following with the path to your tsig.key
:
nsupdate -k ./keys/tsig.key << EOF
server ns1.moeny.ai
debug yes
zone moeny.ai
update add service.moeny.ai 3600 A 6.5.2.5
send
EOF
ssh moeny@ns1.moeny.ai "sudo rndc sync moeny.ai"
VMs on an Internal Network
In order to spin up VMs on an internal network, you will need to generate an Alpine iso compatible with the internal IPs you are using and specify its path. You will also want to declare the staging IP and gateway IP parameters accordingly. Here is a sample command to run the Alpine bolt plan.
bolt plan run alpine::create_vm \
vm_name=moeny-service-alpine \
hostname=moeny-service-alpine \
network=internal-moeny \
ip_with_cidr=10.44.0.20/24 \
gateway_ip=10.44.0.1 \
iso_path=/mnt/nfs/kvm-isos/iso-build/alpine-autoinstall-internal_moeny.iso \
staging_ip=10.44.0.250 -v
Similarly, a new Ubuntu iso will need to be generated that is compatible with the internal IPs. This can be done by simply updating the user-data
file from Step 6 to have the proper network configuration, as in user-data-internal
. Here is a sample command to run the Ubuntu bolt plan.
bolt plan run ubuntu::create_vm \
vm_name=moeny-service-ubuntu \
hostname=moeny-service-ubuntu \
network=internal-moeny \
ip_with_cidr=10.44.0.20/24 \
gateway_ip=10.44.0.1 \
iso_path=/mnt/nfs/kvm-isos/iso-build/ubuntu-22.04-autoinstall-internal_moeny.iso \
staging_ip=internal -v