mirror of
https://github.com/Security-Onion-Solutions/securityonion.git
synced 2025-12-06 17:22:49 +01:00
move add virt install and pool creation to images/init. start moving to /nsm/libvirt/
This commit is contained in:
@@ -370,18 +370,7 @@ def setup_environment(vm_name: str = 'sool9', disk_size: str = '220G', minion_id
|
|||||||
log.info("MAIN: No changes detected, using existing VM %s", vm_name)
|
log.info("MAIN: No changes detected, using existing VM %s", vm_name)
|
||||||
vm_result = {
|
vm_result = {
|
||||||
'success': True,
|
'success': True,
|
||||||
'vm_dir': f'/opt/so/saltstack/local/salt/libvirt/images/{vm_name}',
|
'vm_dir': f'/opt/so/saltstack/local/salt/libvirt/images/{vm_name}'
|
||||||
'commands': [
|
|
||||||
f"virsh pool-create-as --name {vm_name} --type dir --target /opt/so/saltstack/local/salt/libvirt/images/{vm_name}",
|
|
||||||
f"""virt-install --name {vm_name} \\
|
|
||||||
--memory 4096 --vcpus 4 --cpu host \\
|
|
||||||
--disk /opt/so/saltstack/local/salt/libvirt/images/{vm_name}/{vm_name}.qcow2,format=qcow2,bus=virtio \\
|
|
||||||
--disk /opt/so/saltstack/local/salt/libvirt/images/{vm_name}/{vm_name}-cidata.iso,device=cdrom \\
|
|
||||||
--network bridge=br0,model=virtio \\
|
|
||||||
--os-variant=ol9.5 \\
|
|
||||||
--import \\
|
|
||||||
--noautoconsole"""
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
success = vm_result.get('success', False)
|
success = vm_result.get('success', False)
|
||||||
@@ -614,23 +603,9 @@ runcmd:
|
|||||||
user_data_path, meta_data_path],
|
user_data_path, meta_data_path],
|
||||||
check=True, capture_output=True)
|
check=True, capture_output=True)
|
||||||
|
|
||||||
# Generate commands for hypervisor
|
|
||||||
commands = [
|
|
||||||
f"virsh pool-create-as --name {vm_name} --type dir --target {vm_dir}",
|
|
||||||
f"""virt-install --name {vm_name} \\
|
|
||||||
--memory 4096 --vcpus 4 --cpu host \\
|
|
||||||
--disk {vm_image},format=qcow2,bus=virtio \\
|
|
||||||
--disk {cidata_iso},device=cdrom \\
|
|
||||||
--network bridge=br0,model=virtio \\
|
|
||||||
--os-variant=ol9.5 \\
|
|
||||||
--import \\
|
|
||||||
--noautoconsole"""
|
|
||||||
]
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'success': True,
|
'success': True,
|
||||||
'vm_dir': vm_dir,
|
'vm_dir': vm_dir
|
||||||
'commands': commands
|
|
||||||
}
|
}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
@@ -1,6 +1,79 @@
|
|||||||
# the source location will be /opt/so/saltstack/local/salt/libvirt/images/sool9
|
# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
|
||||||
# this will need to change to save the images to /nsm
|
# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at
|
||||||
baseimagefiles:
|
# https://securityonion.net/license; you may not use this file except in compliance with the
|
||||||
|
# Elastic License 2.0.
|
||||||
|
#
|
||||||
|
# Note: Per the Elastic License 2.0, the second limitation states:
|
||||||
|
#
|
||||||
|
# "You may not move, change, disable, or circumvent the license key functionality
|
||||||
|
# in the software, and you may not remove or obscure any functionality in the
|
||||||
|
# software that is protected by the license key."
|
||||||
|
|
||||||
|
{% from 'allowed_states.map.jinja' import allowed_states %}
|
||||||
|
{% if sls.split('.')[0] in allowed_states or sls in allowed_states %}
|
||||||
|
{% if 'hvn' in salt['pillar.get']('features', []) %}
|
||||||
|
|
||||||
|
include:
|
||||||
|
- libvirt.packages
|
||||||
|
|
||||||
|
# Copy base image files
|
||||||
|
baseimagefiles_sool9:
|
||||||
file.recurse:
|
file.recurse:
|
||||||
- name: /var/lib/libvirt/images/sool9/
|
- name: /nsm/libvirt/images/sool9/
|
||||||
- source: salt://libvirt/images/sool9/
|
- source: salt://libvirt/images/sool9/
|
||||||
|
- makedirs: True
|
||||||
|
|
||||||
|
# Define the storage pool
|
||||||
|
define_storage_pool_sool9:
|
||||||
|
virt.pool_defined:
|
||||||
|
- name: sool9
|
||||||
|
- ptype: dir
|
||||||
|
- target: /nsm/libvirt/images/sool9
|
||||||
|
- require:
|
||||||
|
- file: baseimagefiles_sool9
|
||||||
|
- cmd: libvirt_python_module
|
||||||
|
|
||||||
|
# Start the storage pool
|
||||||
|
start_storage_pool_sool9:
|
||||||
|
virt.pool_running:
|
||||||
|
- name: sool9
|
||||||
|
- ptype: dir
|
||||||
|
- target: /nsm/libvirt/images/sool9
|
||||||
|
- require:
|
||||||
|
- virt: define_storage_pool_sool9
|
||||||
|
- cmd: libvirt_python_module
|
||||||
|
|
||||||
|
# Create and start the VM using virt-install
|
||||||
|
create_vm_sool9:
|
||||||
|
cmd.run:
|
||||||
|
- name: |
|
||||||
|
virt-install --name sool9 \
|
||||||
|
--memory 4096 --vcpus 4 --cpu host \
|
||||||
|
--disk /nsm/libvirt/images/sool9/sool9.qcow2,format=qcow2,bus=virtio \
|
||||||
|
--disk /nsm/libvirt/images/sool9/sool9-cidata.iso,device=cdrom \
|
||||||
|
--network bridge=br0,model=virtio \
|
||||||
|
--os-variant=ol9.5 \
|
||||||
|
--import \
|
||||||
|
--noautoconsole
|
||||||
|
- unless: virsh list --all | grep -q sool9
|
||||||
|
- require:
|
||||||
|
- virt: start_storage_pool_sool9
|
||||||
|
- pkg: install_virt-install
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
{{sls}}_no_license_detected:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: {{sls}}_no_license_detected
|
||||||
|
- comment:
|
||||||
|
- "Hypervisor nodes are a feature supported only for customers with a valid license.
|
||||||
|
Contact Security Onion Solutions, LLC via our website at https://securityonionsolutions.com
|
||||||
|
for more information about purchasing a license to enable this feature."
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
{{sls}}_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: {{sls}}_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|||||||
@@ -74,24 +74,21 @@ create_host_bridge:
|
|||||||
- forward: bridge
|
- forward: bridge
|
||||||
- autostart: True
|
- autostart: True
|
||||||
|
|
||||||
# set the default storage pool to point to the location we want
|
# Disable the default storage pool to avoid conflicts
|
||||||
set_default_pool:
|
disable_default_pool:
|
||||||
virt.pool_running:
|
cmd.run:
|
||||||
- name: default
|
- name: virsh pool-destroy default && virsh pool-autostart default --disable
|
||||||
- ptype: dir
|
- onlyif: virsh pool-list | grep default
|
||||||
- target: /var/lib/libvirt/images/sool9
|
- require:
|
||||||
- permissions:
|
- pkg: install_libvirt-client
|
||||||
- mode: 0711
|
- service: libvirt_service
|
||||||
- owner: qemu
|
|
||||||
- group: qemu
|
|
||||||
- label: "system_u:object_r:virt_image_t:s0" # this doesnt seem to set the selinux context
|
|
||||||
- autostart: True
|
|
||||||
|
|
||||||
disable_default_bridge:
|
disable_default_bridge:
|
||||||
cmd.run:
|
cmd.run:
|
||||||
- name: virsh net-destroy default && virsh net-autostart default --disable
|
- name: virsh net-destroy default && virsh net-autostart default --disable
|
||||||
- require:
|
- require:
|
||||||
- pkg: install_libvirt-client
|
- pkg: install_libvirt-client
|
||||||
|
- service: libvirt_service
|
||||||
- onlyif:
|
- onlyif:
|
||||||
- virsh net-list | grep default
|
- virsh net-list | grep default
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user