CENTOS_KEY = read_local_file("keys/centos") CENTOS_PUBLIC_KEY = read_local_file("keys/centos_pub") PROJECT_NAME = read_local_file("project_name") Centos = basic_cred("centos", CENTOS_KEY, name="Centos", type="KEY", default=True) Era_Disk = vm_disk_package( name="era_disk", config={ # By default image type is set to DISK_IMAGE "image": { "source": "http://download.nutanix.com/era/1.1.1/ERA-Server-build-1.1.1-340d9db1118eac81219bec98507d4982045d8799.qcow2" } }, ) class AhvVmService(Service): """Sample mysql service""" ENV = CalmVariable.Simple("DEV") class AhvVmPackage(Package): """Example package with variables, install tasks and link to service"""
from calm.dsl.builtins import vm_disk_package, AhvVmDisk, AhvVmNic from calm.dsl.builtins import AhvVmGC, AhvVmResources, AhvVm # SSH Credentials CENTOS_USER = "******" CENTOS_KEY = read_local_file(os.path.join("keys", "centos")) CENTOS_PUBLIC_KEY = read_local_file(os.path.join("keys", "centos_pub")) CentosCred = basic_cred( CENTOS_USER, CENTOS_KEY, name="Centos", type="KEY", default=True, ) # OS Image details for VM CENTOS_IMAGE_SOURCE = "http://download.nutanix.com/calm/CentOS-7-x86_64-1810.qcow2" CentosPackage = vm_disk_package( name="centos_disk", config={"image": {"source": CENTOS_IMAGE_SOURCE}}, ) class HelloService(Service): """Sample Service""" # Service Variables ENV = Variable.WithOptions.Predefined.string( ["DEV", "PROD"], default="DEV", is_mandatory=True, runtime=True ) # Service Actions @action def __create__(): # Step 1
from calm.dsl.builtins import Service, Package, Substrate from calm.dsl.builtins import Deployment, Profile, Blueprint from calm.dsl.builtins import CalmVariable, CalmTask, action from calm.dsl.builtins import read_local_file CENTOS_PASSWORD = read_local_file("password") CENTOS_KEY = read_local_file("private_key") DefaultCred = basic_cred("centos", CENTOS_PASSWORD, name="CENTOS") CentosKeyCred = basic_cred( "centos", CENTOS_KEY, name="CENTOS_KEY", type="KEY", default=True ) Era_Disk = vm_disk_package( name="era_disk", config=read_spec("image_configs/era_disk.yaml") ) Virtio_CdRom = vm_disk_package( name="virtio_cdrom", config_file="image_configs/virtio_cdrom.yaml" ) class MySQLService(Service): """Sample mysql service""" ENV = CalmVariable.Simple("DEV") class MySQLPackage(Package): """Example package with variables, install tasks and link to service"""
"""GCP Redis MasterPackage""" services = [ref(RedisMaster)] @action def __install__(): CalmTask.Exec.ssh( name="PackageInstallTask", filename="scripts/Master_Package.sh", cred=ref(DefaultCred), ) # Downloadable images for AHV and VMware AHV_CENTOS_76 = vm_disk_package( name="AHV_CENTOS_76", config_file="specs/image_config/ahv_centos.yaml" ) ESX_CENTOS_76 = vm_disk_package( name="ESX_CENTOS_76", config_file="specs/image_config/vmware_centos.yaml" ) class AHVRedisMasterSubstrate(Substrate): provider_spec = read_ahv_spec( "specs/substrate/ahv_spec_centos.yaml", disk_packages={1: AHV_CENTOS_76} ) provider_spec.spec["name"] = "Redis_Master-@@{calm_array_index}@@-@@{calm_random}@@" os_type = "Linux" readiness_probe = { "disabled": False, "delay_secs": "60",
from calm.dsl.builtins import CalmVariable, CalmTask, action CENTOS_KEY = read_local_file("keys/centos") CENTOS_PUBLIC_KEY = read_local_file("keys/centos_pub") Centos = basic_cred("centos", CENTOS_KEY, name="Centos", type="KEY", default=True) Era_Disk = vm_disk_package( name="era_disk", config={ # By default image type is set to DISK_IMAGE "image": { "source": "http://download.nutanix.com/era/1.1.1/ERA-Server-build-1.1.1-340d9db1118eac81219bec98507d4982045d8799.qcow2" } }, ) Virtio_CdRom = vm_disk_package( name="virtio_cdrom", config={ "image": { "type": "ISO_IMAGE", "source": "http://10.40.64.33/GoldImages/NuCalm/ISO/Nutanix-VirtIO-1.1.4.iso", } }, )
AhvVm = ahv_vm_resources() CENTOS_USERNAME = read_local_file(".tests/centos_username") CENTOS_PASSWORD = read_local_file(".tests/centos_password") CENTOS_SSH_USERNAME = read_local_file(".tests/centos_ssh_username") CENTOS_SSH_KEY = read_local_file(".tests/centos_ssh_key") DefaultCred = basic_cred(CENTOS_USERNAME, CENTOS_PASSWORD, name="CENTOS", default=True) DefaultKeyCred = basic_cred(CENTOS_SSH_USERNAME, CENTOS_SSH_KEY, name="CENTOS_KEY", type="key") Era = vm_disk_package(name="era", config_file="specs/era_image_config.yaml") class MyAhvVm(AhvVm): memory = 2 vCPUs = 2 cores_per_vCPU = 1 disks = [ AhvVmDisk(image_name="Centos7", bootable=True), AhvVmDisk.CdRom(image_name="SQLServer2014SP2"), AhvVmDisk.CdRom.Sata(image_name="SQLServer2014SP2"), AhvVmDisk.Disk.Scsi.cloneFromImageService(image_name="AHV_CENTOS_76"), AhvVmDisk.Disk.Pci.allocateOnStorageContainer(size=12), AhvVmDisk.CdRom.Sata.emptyCdRom(), AhvVmDisk.CdRom.Ide.emptyCdRom(),
ENV = CalmVariable.Simple("DEV") class MySQLPackage(Package): """Example package with variables, install tasks and link to service""" foo = CalmVariable.Simple("bar") services = [ref(MySQLService)] @action def __install__(): CalmTask.Exec.ssh(name="Task1", script="echo @@{foo}@@") Virtio = vm_disk_package(name="era", config_file="specs/virtio_image_config.yaml") class AHVVMforMySQL(Substrate): """AHV VM config given by reading a spec file""" provider_spec = read_ahv_spec( "specs/ahv_provider_spec.yaml", disk_packages={1: Virtio} ) class MySQLDeployment(Deployment): """Sample deployment pulling in service and substrate references""" packages = [ref(MySQLPackage)] substrate = ref(AHVVMforMySQL)
main() #Define VM Resource Object from calm.dsl.builtins import SimpleDeployment, SimpleBlueprint from calm.dsl.builtins import read_local_file, basic_cred from calm.dsl.builtins import vm_disk_package, AhvVmResources, AhvVmDisk, AhvVmNic, AhvVmGC, AhvVm CENTOS_PASSWD = read_local_file('centos') CENTOS_CRED = basic_cred('centos', CENTOS_PASSWD, name='CENTOS_CRED', default=True) CENTOS_IMAGE_SOURCE = 'https://cloud.centos.org/centos/8/x86_64/images/CentOS-8-ec2-8.1.1911-20200113.3.x86_64.qcow2' CentosPackage = vm_disk_package( name='centos_disk', config={'image': { 'source': CENTOS_IMAGE_SOURCE }}) class CentosVmResources(AhvVmResources): memory = 4 vCPUs = 2 cores_per_vCPU = 1 disks = [ AhvVmDisk.Disk.Scsi.cloneFromVMDiskPackage(CentosPackage, bootable=True) ] nics = [AhvVmNic.DirectNic.ingress("dnd-demo")] guest_customization = AhvVmGC.CloudInit( config={ 'password': CENTOS_PASSWD,
from calm.dsl.builtins import vm_disk_package from calm.dsl.builtins import read_env import sys sys.path.append('') from variablestemplate import * # Import .env variables ENV = read_env() AHV_CENTOS_76 = vm_disk_package( name="AHV_CENTOS_76", config={ # By default image type is set to DISK_IMAGE "image": { "source": ENV.get("CENTOS_IMAGE_SOURCE") } }, ) # Credentials definition CREDENTIALS = read_env('.local/credentials') OS_USERNAME = os.getenv("OS_USERNAME") or CREDENTIALS.get("OS_USERNAME") OS_PASSWORD = os.getenv("OS_PASSWORD") or CREDENTIALS.get("OS_PASSWORD") Cred_OS = basic_cred(username=OS_USERNAME, password=OS_PASSWORD, name="Cred_OS", default=True,
def __install__(): """Package installation tasks for the MySQL database server""" CalmTask.Exec.ssh(name="PackageInstallTask", filename="scripts/mysql-install.sh") CENTOS_7_CLOUD = vm_disk_package( name="CENTOS_7_CLOUD", description="", config={ "image": { "name": "CentOS-7-x86_64-1810.qcow2", "type": "DISK_IMAGE", "source": "http://download.nutanix.com/calm/CentOS-7-x86_64-1810.qcow2", "architecture": "X86_64", }, "product": { "name": "CentOS", "version": "7" }, "checksum": {}, }, ) class MySQLSubstrate(Substrate): """ The Calm Substrate outlines the "wrapper" for our VM, e.g. the VM's operating system, the VM spec from specs/mysql-spec.yaml, the disks the VM will have attached etc.
from calm.dsl.builtins import Service, Package, Substrate from calm.dsl.builtins import Deployment, Profile, Blueprint from calm.dsl.builtins import CalmVariable, CalmTask, action from calm.dsl.builtins import parallel, read_provider_spec from calm.dsl.builtins import read_local_file, provider_spec NutanixPublicKey = read_local_file("nutanix_public_key") NutanixKey = read_local_file("nutanix_key") NutanixCred = basic_cred("nutanix", name="Nutanix", type="KEY", password=NutanixKey, default=True) Centos74_Image = vm_disk_package( name="centos7_generic", config_file="image_configs/centos74_disk.yaml") class IaaS(Service): """IaaS service""" @action def NginxInstall(): CalmTask.Exec.ssh(name="Intall Nginx", filename="scripts/nginx_install.sh", cred=NutanixCred) class IaaSPackage(Package): """IaaS Package""" services = [ref(IaaS)]