From f8fe6404b6793201311ad77bed7b159024908e18 Mon Sep 17 00:00:00 2001 From: Chris Rasmussen Date: Fri, 28 Jun 2024 14:49:25 +1000 Subject: [PATCH 1/2] Update batch_ops_actions.py Remove some old debug bits. --- python/v4api_sdk/batch_ops_actions.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/python/v4api_sdk/batch_ops_actions.py b/python/v4api_sdk/batch_ops_actions.py index 0c8262c..18712f7 100644 --- a/python/v4api_sdk/batch_ops_actions.py +++ b/python/v4api_sdk/batch_ops_actions.py @@ -178,10 +178,6 @@ def main(): batch_instance = ntnx_prism_py_client.api.BatchesApi(api_client=prism_client) vmm_instance = ntnx_vmm_py_client.api.VmApi(api_client=vmm_client) - # vm_extid = "0628ac56-ba0b-4de6-61aa-4ae4e287acdc" - # existing_vm = vmm_instance.get_vm_by_id(vm_extid) - # etag = vmm_client.get_etag(existing_vm) - input( "\nThis demo uses the Nutanix v4 API `prism` namespace's \ batch APIs to assign matching virtual machines to a specific \ From f6e7c80583484e10722d6ca62fed03ec1f3d89ee Mon Sep 17 00:00:00 2001 From: Chris Rasmussen Date: Mon, 2 Sep 2024 15:08:42 +1000 Subject: [PATCH 2/2] Update LCM dark site web server blueprint --- blueprints/create_lcm_darksite_web_server.json | 2 +- readme.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/blueprints/create_lcm_darksite_web_server.json b/blueprints/create_lcm_darksite_web_server.json index eb42a14..234a7e8 100644 --- a/blueprints/create_lcm_darksite_web_server.json +++ b/blueprints/create_lcm_darksite_web_server.json @@ -1 +1 @@ -{"status":{},"contains_secrets":false,"product_version":"3.6.2","spec":{"description":"Deploy dark site web server & reconfigure LCM for local web server updates","resources":{"client_attrs":{"None":{"Profile":{"Default":{"Action":{},"dsl_name":"Default"}},"Package":{"CentosImage":{"Action":{},"dsl_name":"CentosImage"},"BasicLinuxPackage":{"Action":{},"dsl_name":"BasicLinuxPackage"}},"Substrate":{"BasicLinuxVm":{"Action":{},"AhvVm":{"vm-@@{calm_array_index}@@-@@{calm_time}@@":{"dsl_name":"vmcalm_array_indexcalm_time"}},"dsl_name":"BasicLinuxVm"}},"Service":{"BasicLinux":{"Action":{},"dsl_name":"BasicLinux"}},"Deployment":{"basiclinuxvm_deployment":{"Action":{},"dsl_name":"basiclinuxvm_deployment"}}},"basiclinuxvm_deployment":{"y":-580,"x":-239}},"service_definition_list":[{"singleton":false,"action_list":[{"description":"System action for creating an application","type":"system","critical":true,"runbook":{"task_definition_list":[{"target_any_local_reference":{"kind":"app_service","name":"BasicLinux"},"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[{"kind":"app_task","name":"Configure Base VM"},{"kind":"app_task","name":"Configure Storage"}],"name":"DAG_Task_for_Service_BasicLinux_action_create","attrs":{"edges":[{"from_task_reference":{"kind":"app_task","name":"Configure Base VM"},"edge_type":"user_defined","type":"","to_task_reference":{"kind":"app_task","name":"Configure Storage"}}],"type":""},"timeout_secs":"0","type":"DAG","variable_list":[]},{"target_any_local_reference":{"kind":"app_service","name":"BasicLinux"},"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[],"name":"Configure Base VM","attrs":{"exit_status":[],"script":"#!\/bin\/sh\n\n# update centos packages\nsudo yum -y update\n\n# install some useful packages\nsudo yum -y install git bash-completion vim net-tools bind-utils wget firewalld unzip\n\n# set the hostname\nsudo hostnamectl set-hostname @@{HOSTNAME}@@","script_type":"sh","type":"","command_line_args":"","login_credential_local_reference":{"kind":"app_credential","name":"admin"}},"timeout_secs":"0","type":"EXEC","variable_list":[]},{"target_any_local_reference":{"kind":"app_service","name":"BasicLinux"},"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[],"name":"Configure Storage","attrs":{"exit_status":[],"script":"#!\/bin\/sh\n\n# create single partition on sdb\n(\necho o # Create a new empty DOS partition table\necho n # Add a new partition\necho p # Primary partition\necho 1 # Partition number\necho # First sector (Accept default: 1)\necho # Last sector (Accept default: varies)\necho w # Write changes\n) | sudo fdisk \/dev\/sdb\nsudo mkfs.ext4 \/dev\/sdb1\nsudo mkdir -p \/mnt\/lcm\nsudo mount -t ext4 \/dev\/sdb1 \/mnt\/lcm","script_type":"sh","type":"","command_line_args":"","login_credential_local_reference":{"kind":"app_credential","name":"admin"}},"timeout_secs":"0","type":"EXEC","variable_list":[]}],"description":"","name":"Runbook_for_Service_BasicLinux_action_create","main_task_local_reference":{"kind":"app_task","name":"DAG_Task_for_Service_BasicLinux_action_create"},"variable_list":[]},"name":"action_create"},{"description":"System action for deleting an application. Deletes created VMs as well","type":"system","critical":true,"runbook":{"task_definition_list":[{"target_any_local_reference":{"kind":"app_service","name":"BasicLinux"},"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[{"kind":"app_task","name":"Get LCM eTag"},{"kind":"app_task","name":"Revert LCM to Nutanix Portal"}],"name":"DAG_Task_for_Service_BasicLinux_action_delete","attrs":{"edges":[{"from_task_reference":{"kind":"app_task","name":"Get LCM eTag"},"edge_type":"user_defined","type":"","to_task_reference":{"kind":"app_task","name":"Revert LCM to Nutanix Portal"}}],"type":""},"timeout_secs":"0","type":"DAG","variable_list":[]},{"target_any_local_reference":{"kind":"app_service","name":"BasicLinux"},"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[],"name":"Get LCM eTag","attrs":{"expected_response_params":[{"status":"SUCCESS","code":200,"type":""}],"request_body":"","headers":[],"url":"https:\/\/localhost:9440\/api\/lcm\/v4.0.a1\/resources\/config","response_paths":{"current_etag":"$.metadata.ETag"},"retry_interval":1,"method":"GET","retry_count":1,"authentication":{"type":"basic_with_cred","credential_local_reference":{"kind":"app_credential","name":"Prism Central Admin"}},"tls_verify":false,"content_type":"application\/json","connection_timeout":120,"type":"","proxy_type":""},"timeout_secs":"0","type":"HTTP","variable_list":[]},{"target_any_local_reference":{"kind":"app_service","name":"BasicLinux"},"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[],"name":"Revert LCM to Nutanix Portal","attrs":{"expected_response_params":[{"status":"SUCCESS","code":200,"type":""}],"request_body":"{\n \"isDarksite\": false,\n \"enableHttps\": true\n}","headers":[{"regex":{},"val_type":"STRING","is_mandatory":false,"description":"","data_type":"BASE","type":"LOCAL","name":"If-Match","value":"@@{current_etag}@@","label":"","state":"NOT_VALIDATED","attrs":{"type":""},"editables":{},"is_hidden":false,"message_list":[],"options":{}}],"url":"https:\/\/localhost:9440\/api\/lcm\/v4.0.a1\/resources\/config","response_paths":{},"retry_interval":1,"method":"PUT","retry_count":1,"authentication":{"type":"basic_with_cred","credential_local_reference":{"kind":"app_credential","name":"Prism Central Admin"}},"tls_verify":false,"content_type":"application\/json","connection_timeout":120,"type":"","proxy_type":""},"timeout_secs":"0","type":"HTTP","variable_list":[]}],"description":"","name":"Runbook_for_Service_BasicLinux_action_delete","main_task_local_reference":{"kind":"app_task","name":"DAG_Task_for_Service_BasicLinux_action_delete"},"variable_list":[]},"name":"action_delete"},{"description":"System action for starting an application","type":"system","critical":true,"runbook":{"task_definition_list":[{"target_any_local_reference":{"kind":"app_service","name":"BasicLinux"},"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[],"name":"DAG_Task_for_Service_BasicLinux_action_start","attrs":{"edges":[],"type":""},"timeout_secs":"0","type":"DAG","variable_list":[]}],"description":"","name":"Runbook_for_Service_BasicLinux_action_start","main_task_local_reference":{"kind":"app_task","name":"DAG_Task_for_Service_BasicLinux_action_start"},"variable_list":[]},"name":"action_start"},{"description":"System action for stopping an application","type":"system","critical":true,"runbook":{"task_definition_list":[{"target_any_local_reference":{"kind":"app_service","name":"BasicLinux"},"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[],"name":"DAG_Task_for_Service_BasicLinux_action_stop","attrs":{"edges":[],"type":""},"timeout_secs":"0","type":"DAG","variable_list":[]}],"description":"","name":"Runbook_for_Service_BasicLinux_action_stop","main_task_local_reference":{"kind":"app_task","name":"DAG_Task_for_Service_BasicLinux_action_stop"},"variable_list":[]},"name":"action_stop"},{"description":"System action for restarting an application","type":"system","critical":true,"runbook":{"task_definition_list":[{"target_any_local_reference":{"kind":"app_service","name":"BasicLinux"},"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[],"name":"DAG_Task_for_Service_BasicLinux_action_restart","attrs":{"edges":[],"type":""},"timeout_secs":"0","type":"DAG","variable_list":[]}],"description":"","name":"Runbook_for_Service_BasicLinux_action_restart","main_task_local_reference":{"kind":"app_task","name":"DAG_Task_for_Service_BasicLinux_action_restart"},"variable_list":[]},"name":"action_restart"},{"description":"System action for deleting an application. Does not delete created VMs","type":"system","critical":true,"runbook":{"task_definition_list":[{"target_any_local_reference":{"kind":"app_service","name":"BasicLinux"},"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[],"name":"DAG_Task_for_Service_BasicLinux_action_soft_delete","attrs":{"edges":[],"type":""},"timeout_secs":"0","type":"DAG","variable_list":[]}],"description":"","name":"Runbook_for_Service_BasicLinux_action_soft_delete","main_task_local_reference":{"kind":"app_task","name":"DAG_Task_for_Service_BasicLinux_action_soft_delete"},"variable_list":[]},"name":"action_soft_delete"}],"depends_on_list":[],"name":"BasicLinux","port_list":[],"tier":"","variable_list":[],"description":""}],"substrate_definition_list":[{"description":"","action_list":[{"description":"","type":"fragment","critical":false,"runbook":{"task_definition_list":[{"target_any_local_reference":{"kind":"app_substrate","name":"BasicLinuxVm"},"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[],"name":"d0ea3d51_dag","attrs":{"edges":[],"type":""},"timeout_secs":"0","type":"DAG","variable_list":[]}],"description":"","name":"0b0c2f05_runbook","main_task_local_reference":{"kind":"app_task","name":"d0ea3d51_dag"},"variable_list":[]},"name":"pre_action_create"},{"description":"","type":"fragment","critical":false,"runbook":{"task_definition_list":[{"target_any_local_reference":{"kind":"app_substrate","name":"BasicLinuxVm"},"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[],"name":"cb3a0f31_dag","attrs":{"edges":[],"type":""},"timeout_secs":"0","type":"DAG","variable_list":[]}],"description":"","name":"73f62882_runbook","main_task_local_reference":{"kind":"app_task","name":"cb3a0f31_dag"},"variable_list":[]},"name":"post_action_delete"}],"type":"AHV_VM","name":"BasicLinuxVm","readiness_probe":{"connection_type":"SSH","retries":"5","connection_protocol":"","connection_port":22,"address":"@@{platform.status.resources.nic_list[0].ip_endpoint_list[0].ip}@@","delay_secs":"120","disable_readiness_probe":false,"login_credential_local_reference":{"kind":"app_credential","name":"admin"}},"editables":{"create_spec":{"resources":{"nic_list":{},"serial_port_list":{}}}},"os_type":"Linux","create_spec":{"name":"lcm-web-@@{calm_array_index}@@-@@{calm_time}@@","resources":{"nic_list":[{"nic_type":"NORMAL_NIC","vpc_reference":null,"ip_endpoint_list":[],"network_function_chain_reference":null,"network_function_nic_type":"INGRESS","mac_address":"","subnet_reference":{"kind":"subnet","type":"","name":"Primary","uuid":"c0bc09e7-6c04-4c59-9213-c14806927a6e"},"type":""}],"serial_port_list":[],"guest_tools":null,"num_vcpus_per_socket":1,"num_sockets":2,"gpu_list":[],"memory_size_mib":8192,"parent_reference":null,"hardware_clock_timezone":"","guest_customization":{"cloud_init":{"meta_data":"","type":"","user_data":"#cloud-config\nusers:\n - name: @@{admin.username}@@\n ssh-authorized-keys:\n - @@{admin.public_key}@@\n sudo:\n - ALL=(ALL) NOPASSWD:ALL\nruncmd:\n - update-crypto-policies --set DEFAULT:SHA1\n - systemctl restart --no-block sshd.service"},"type":"","sysprep":null},"power_state":"ON","type":"","account_uuid":"8b578a48-8225-4e72-b4e8-0c9a527b2401","boot_config":{"boot_device":{"type":"","disk_address":{"type":"","device_index":0,"adapter_type":"SCSI"}},"type":"","boot_type":"LEGACY","mac_address":""},"disk_list":[{"data_source_reference":{"kind":"app_package","type":"","name":"CentosImage_2211","uuid":"fa221c43-b9a5-4237-a193-f79790543a35"},"type":"","disk_size_mib":0,"volume_group_reference":null,"device_properties":{"type":"","disk_address":{"type":"","device_index":0,"adapter_type":"SCSI"},"device_type":"DISK"}},{"data_source_reference":null,"type":"","disk_size_mib":102400,"volume_group_reference":null,"device_properties":{"type":"","disk_address":{"type":"","device_index":1,"adapter_type":"SCSI"},"device_type":"DISK"}}]},"availability_zone_reference":null,"backup_policy":null,"type":"","cluster_reference":{"kind":"cluster","type":"","name":"Dev","uuid":"0005f2f7-eee7-1995-6145-ac1f6b35fe5e"},"categories":{}},"variable_list":[]}],"credential_definition_list":[{"username":"admin","description":"","type":"KEY","secret":{"attrs":{"is_secret_modified":false,"secret_reference":{}}},"name":"admin","cred_class":"static"},{"username":"admin","description":"","type":"PASSWORD","secret":{"attrs":{"is_secret_modified":false,"secret_reference":{}}},"name":"Prism Central Admin","cred_class":"static"}],"package_definition_list":[{"description":"","action_list":[],"type":"CUSTOM","service_local_reference_list":[{"kind":"app_service","name":"BasicLinux"}],"name":"BasicLinuxPackage","version":"","options":{"install_runbook":{"task_definition_list":[{"target_any_local_reference":{"kind":"app_service","name":"BasicLinux"},"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[],"name":"BasicLinuxPackage___install___dag","attrs":{"edges":[],"type":""},"timeout_secs":"0","type":"DAG","variable_list":[]}],"description":"","name":"BasicLinuxPackage___install___runbook","main_task_local_reference":{"kind":"app_task","name":"BasicLinuxPackage___install___dag"},"variable_list":[]},"type":"","uninstall_runbook":{"task_definition_list":[{"target_any_local_reference":{"kind":"app_service","name":"BasicLinux"},"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[],"name":"DAG_Task_for_Package_BasicLinuxPackage_action_uninstall","attrs":{"edges":[],"type":""},"timeout_secs":"0","type":"DAG","variable_list":[]}],"description":"","name":"Runbook_for_Package_BasicLinuxPackage_action_uninstall","main_task_local_reference":{"kind":"app_task","name":"DAG_Task_for_Package_BasicLinuxPackage_action_uninstall"},"variable_list":[]},"upgrade_runbook":{}},"variable_list":[]},{"description":"https:\/\/cloud.centos.org\/centos\/7\/images\/","action_list":[],"type":"SUBSTRATE_IMAGE","service_local_reference_list":[],"name":"CentosImage_2211","version":"","options":{"type":"","name":"CentOS-7.8-2211","resources":{"image_type":"DISK_IMAGE","checksum":{"checksum_algorithm":"","type":"","checksum_value":""},"source_uri":"https:\/\/cloud.centos.org\/centos\/7\/images\/CentOS-7-x86_64-GenericCloud-2211.qcow2","version":{"product_version":"7.8","type":"","product_name":"CentOS"},"architecture":"X86_64","type":""},"description":""},"variable_list":[]}],"app_profile_list":[{"deployment_create_list":[{"type":"GREENFIELD","action_list":[],"name":"basiclinuxvm_deployment","min_replicas":"1","default_replicas":"1","depends_on_list":[],"published_service_local_reference_list":[],"max_replicas":"1","package_local_reference_list":[{"kind":"app_package","name":"BasicLinuxPackage"}],"substrate_local_reference":{"kind":"app_substrate","name":"BasicLinuxVm"},"options":{"type":""},"variable_list":[],"description":""}],"environment_reference_list":[],"application_url":"","description":"","action_list":[{"description":"","type":"user","critical":false,"runbook":{"task_definition_list":[{"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[{"kind":"app_task","name":"Install NGINX"},{"kind":"app_task","name":"Configure NGINX"},{"kind":"app_task","name":"Configure Firewall"},{"kind":"app_task","name":"Configure LCM Web Server"},{"kind":"app_task","name":"Download LCM Updates"},{"kind":"app_task","name":"Get LCM eTag"},{"kind":"app_task","name":"Reconfigure LCM for Dark Site Web Server"}],"name":"66ae7ab8_dag","attrs":{"edges":[{"from_task_reference":{"kind":"app_task","name":"Install NGINX"},"edge_type":"user_defined","type":"","to_task_reference":{"kind":"app_task","name":"Configure NGINX"}},{"from_task_reference":{"kind":"app_task","name":"Configure LCM Web Server"},"edge_type":"user_defined","type":"","to_task_reference":{"kind":"app_task","name":"Download LCM Updates"}},{"from_task_reference":{"kind":"app_task","name":"Download LCM Updates"},"edge_type":"user_defined","type":"","to_task_reference":{"kind":"app_task","name":"Get LCM eTag"}},{"from_task_reference":{"kind":"app_task","name":"Get LCM eTag"},"edge_type":"user_defined","type":"","to_task_reference":{"kind":"app_task","name":"Reconfigure LCM for Dark Site Web Server"}},{"from_task_reference":{"kind":"app_task","name":"Configure NGINX"},"edge_type":"user_defined","type":"","to_task_reference":{"kind":"app_task","name":"Configure Firewall"}},{"from_task_reference":{"kind":"app_task","name":"Configure Firewall"},"edge_type":"user_defined","type":"","to_task_reference":{"kind":"app_task","name":"Configure LCM Web Server"}}],"type":""},"timeout_secs":"0","type":"DAG","variable_list":[]},{"target_any_local_reference":{"kind":"app_service","name":"BasicLinux"},"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[],"name":"Install NGINX","attrs":{"exit_status":[],"script":"#!\/bin\/sh\n\n# install, start and enable nginx\nsudo yum -y install epel-release\nsudo yum -y install nginx\nsudo systemctl start nginx\nsudo systemctl enable nginx","script_type":"sh","type":"","command_line_args":"","login_credential_local_reference":{"kind":"app_credential","name":"admin"}},"timeout_secs":"0","type":"EXEC","variable_list":[]},{"target_any_local_reference":{"kind":"app_service","name":"BasicLinux"},"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[],"name":"Configure NGINX","attrs":{"exit_status":[],"script":"# configure some best-practice nginx settings\n\n#################################################\n# #\n# THESE ARE GENERAL SETTINGS ONLY AND WILL NEED #\n# NEED TO BE CAREFULLY CHECKED BEFORE USE IN A #\n# PRODUCTION ENVIRONMENT! #\n# #\n# SERIOUSLY, CHECK THEM! :) #\n# #\n#################################################\n\n# set the number of nginx worker processes to be the same as the number of cores in this system\nPROCS=`sudo grep processor \/proc\/cpuinfo | wc -l`\nsudo sed -i -- \"s\/worker_processes.*\/worker_processes $PROCS;\/\" \/etc\/nginx\/nginx.conf\n\n# set the number of worker connections to the max allowed by nginx\n# this allows the server to operate at max potential, if required\nsudo sed -i -- 's\/worker_connections.*\/worker_connections 1024;\/' \/etc\/nginx\/nginx.conf\n\n# enable gzip compression\necho \"gzip on;\ngzip_proxied any;\ngzip_types text\/plain text\/xml text\/css application\/x-javascript;\ngzip_vary on;\ngzip_disable \\\"MSIE [1-6]\\.(?!.*SV1)\\\";\" | sudo tee \/etc\/nginx\/conf.d\/gzip.conf\n\n# setup cache expiry for static files\necho \"location ~* \\.(jpg|jpeg|png|gif|ico|css|js)\\$ {\n expires @@{STATIC_EXPIRATION_DAYS}@@d;\n}\" | sudo tee \/etc\/nginx\/default.d\/expires.conf\n\n# set the client buffers\n# this is critical on busy systems\necho \"client_body_buffer_size 1K;\nclient_header_buffer_size 1k;\nclient_max_body_size 1k;\nlarge_client_header_buffers 2 1k;\" | sudo tee \/etc\/nginx\/conf.d\/buffer.conf\n\n# set the client timeouts - performance improvement under certain circumstances\necho \"client_body_timeout 12;\nclient_header_timeout 12;\nsend_timeout 10;\" | sudo tee \/etc\/nginx\/conf.d\/timeout.conf\n\n# set the keepalive timeout separately\n# done this way because the above settings are not in nginx.conf by default, but keepalive_timeout is\n# this means we can modify it, rather than setting a new value\nsudo sed -i -- 's\/keepalive_timeout.*\/keepalive_timeout 15;\/' \/etc\/nginx\/nginx.conf\n\n# configure site root\nsudo mkdir -p \/mnt\/lcm\/web\nsudo sed -i -- 's\/\\\/usr\\\/share\\\/nginx\\\/html\/\\\/mnt\\\/lcm\\\/web\/g' \/etc\/nginx\/nginx.conf\n\n# customise NGINX: log all NGINX access requests\nsudo sed -i -- 's\/access_log.*off;\/access_log \\\/var\\\/log\\\/nginx\\\/access.log;\/g' \/etc\/nginx\/nginx.conf\n# customise NGINX: enable directory listing (LCM requirement)\nsudo sed -i -- '\/root.*;\/a \\\\tautoindex on;' \/etc\/nginx\/nginx.conf\n\n\n# configure selinux to allow Nginx in Permissive mode\nsudo semanage permissive -a httpd_t","script_type":"sh","type":"","command_line_args":"","login_credential_local_reference":{"kind":"app_credential","name":"admin"}},"timeout_secs":"0","type":"EXEC","variable_list":[]},{"target_any_local_reference":{"kind":"app_service","name":"BasicLinux"},"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[],"name":"Configure Firewall","attrs":{"exit_status":[],"script":"#!\/bin\/sh\n\n# configure the firewall to allow HTTP requests (port 80, by default)\nsudo systemctl start firewalld\nsudo systemctl enable firewalld\nsudo firewall-cmd --permanent --add-service=http\nsudo firewall-cmd --reload","script_type":"sh","type":"","command_line_args":"","login_credential_local_reference":{"kind":"app_credential","name":"admin"}},"timeout_secs":"0","type":"EXEC","variable_list":[]},{"target_any_local_reference":{"kind":"app_service","name":"BasicLinux"},"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[],"name":"Configure LCM Web Server","attrs":{"exit_status":[],"script":"#!\/bin\/sh\n\n# create LCM release directory\nsudo mkdir -p -m 755 \/mnt\/lcm\/web\/release\n\n# create temporary LCM download location\nsudo mkdir -p -m 755 \/mnt\/lcm\/download\n\n# restart NGINX to make sure all previous changes are loaded\nsudo systemctl restart nginx","script_type":"sh","type":"","command_line_args":"","login_credential_local_reference":{"kind":"app_credential","name":"admin"}},"timeout_secs":"0","type":"EXEC","variable_list":[]},{"target_any_local_reference":{"kind":"app_service","name":"BasicLinux"},"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[],"name":"Download LCM Updates","attrs":{"exit_status":[],"script":"#!\/bin\/sh\n\n# download LCM support files as per short-term download links\ncd \/mnt\/lcm\/download\n\n# download LCM framework\/dark site bundle\nsudo curl -L -O \"@@{FRAMEWORK_BUNDLE}@@\"\n\n# pre-seed the LCM update files\n# this is for demo only!\n\nfor i in \"@@{MSP}@@\" \"@@{OBJECTS}@@\" \"@@{NKE}@@\" \"@@{FOUNDATION}@@\" \"@@{FLOW_PE}@@\" \"@@{FLOW_PC}@@\" \"@@{FILES_ANALYTICS}@@\" \"@@{FILES}@@\" \"@@{CMU}@@\" \"@@{SELF_SERVICE_EPSILON}@@\" \"@@{SELF_SERVICE_NUCALM}@@\" \"@@{AHV}@@\" \"@@{AOS}@@\" \"@@{FIRMWARE}@@\" \"@@{NCC}@@\"\ndo\nsudo curl -L -O $i\ndone\n\n# extract LCM dark site bundles into place\nfor i in .\/*.tar.gz\ndo\nsudo tar xzvf $i --directory \/mnt\/lcm\/web\/release\ndone\n\n# extract Self Service dark site bundles into place\nfor i in .\/*.zip\ndo\nsudo unzip $i -d \/mnt\/lcm\/web\/release\ndone\n\n# comment the next 2 lines to NOT remove downloaded LCM files\nsudo rm *.tar.gz\nsudo rm *.zip","script_type":"sh","type":"","command_line_args":"","login_credential_local_reference":{"kind":"app_credential","name":"admin"}},"timeout_secs":"0","type":"EXEC","variable_list":[]},{"target_any_local_reference":{"kind":"app_service","name":"BasicLinux"},"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[],"name":"Get LCM eTag","attrs":{"expected_response_params":[{"status":"SUCCESS","code":200,"type":""}],"request_body":"","headers":[],"url":"https:\/\/localhost:9440\/api\/lcm\/v4.0.a1\/resources\/config","response_paths":{"current_etag":"$.metadata.ETag"},"retry_interval":1,"method":"GET","retry_count":1,"authentication":{"type":"basic_with_cred","credential_local_reference":{"kind":"app_credential","name":"Prism Central Admin"}},"tls_verify":false,"content_type":"application\/json","connection_timeout":120,"type":"","proxy_type":""},"timeout_secs":"0","type":"HTTP","variable_list":[]},{"target_any_local_reference":{"kind":"app_service","name":"BasicLinux"},"retries":"0","description":"","inherit_target":false,"child_tasks_local_reference_list":[],"name":"Reconfigure LCM for Dark Site Web Server","attrs":{"expected_response_params":[{"status":"SUCCESS","code":200,"type":""}],"request_body":"{\n \"isDarksite\": true,\n \"enableHttps\": false,\n \"url\": \"http:\/\/@@{address}@@\/release\"\n}","headers":[{"regex":{},"val_type":"STRING","is_mandatory":false,"description":"","data_type":"BASE","type":"LOCAL","name":"If-Match","value":"@@{current_etag}@@","label":"","state":"NOT_VALIDATED","attrs":{"type":""},"editables":{},"is_hidden":false,"message_list":[],"options":{}}],"url":"https:\/\/localhost:9440\/api\/lcm\/v4.0.a1\/resources\/config","response_paths":{},"retry_interval":1,"method":"PUT","retry_count":1,"authentication":{"type":"basic_with_cred","credential_local_reference":{"kind":"app_credential","name":"Prism Central Admin"}},"tls_verify":false,"content_type":"application\/json","connection_timeout":120,"type":"","proxy_type":""},"timeout_secs":"0","type":"HTTP","variable_list":[]}],"description":"","name":"89b202ec_runbook","main_task_local_reference":{"kind":"app_task","name":"66ae7ab8_dag"},"variable_list":[]},"name":"Reconfigure LCM"}],"name":"Default","restore_config_list":[],"snapshot_config_list":[],"patch_list":[],"variable_list":[{"val_type":"STRING","is_mandatory":false,"description":"","data_type":"BASE","type":"LOCAL","name":"STATIC_EXPIRATION_DAYS","value":"365","label":"","attrs":{"type":""},"editables":{"value":true},"is_hidden":false,"options":{"type":"PREDEFINED","choices":[]}},{"val_type":"STRING","is_mandatory":false,"description":"","data_type":"BASE","type":"LOCAL","name":"HOSTNAME","value":"lcm-web-server","label":"","attrs":{"type":""},"editables":{"value":true},"is_hidden":false,"options":{"type":"PREDEFINED","choices":[]}},{"val_type":"STRING","is_mandatory":false,"description":"","data_type":"BASE","type":"LOCAL","name":"AOS","value":"http:\/\/10.42.250.116\/lcm\/lcm_nos_6.6.2.5.tar.gz","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"is_hidden":false,"options":{"type":"PREDEFINED","choices":[]}},{"val_type":"STRING","is_mandatory":false,"description":"","data_type":"BASE","type":"LOCAL","name":"AHV","value":"http:\/\/10.42.250.116\/lcm\/lcm_ahv_el7.nutanix.20220304.10057.tar.gz","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"is_hidden":false,"options":{"type":"PREDEFINED","choices":[]}},{"val_type":"STRING","is_mandatory":false,"description":"","data_type":"BASE","type":"LOCAL","name":"SELF_SERVICE_NUCALM","value":"http:\/\/10.42.250.116\/lcm\/NuCalm-3.6.2.zip","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"is_hidden":false,"options":{"type":"PREDEFINED","choices":[]}},{"val_type":"STRING","is_mandatory":false,"description":"","data_type":"BASE","type":"LOCAL","name":"SELF_SERVICE_EPSILON","value":"http:\/\/10.42.250.116\/lcm\/Epsilon-3.6.2.zip","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"is_hidden":false,"options":{"type":"PREDEFINED","choices":[]}},{"val_type":"STRING","is_mandatory":false,"description":"","data_type":"BASE","type":"LOCAL","name":"CMU","value":"http:\/\/10.42.250.116\/lcm\/lcm_cmu_2.0.3.tar.gz","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"is_hidden":false,"options":{"type":"PREDEFINED","choices":[]}},{"val_type":"STRING","is_mandatory":false,"description":"","data_type":"BASE","type":"LOCAL","name":"FILES","value":"http:\/\/10.42.250.116\/lcm\/lcm_file_server_4.3.0.tar.gz","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"is_hidden":false,"options":{"type":"PREDEFINED","choices":[]}},{"val_type":"STRING","is_mandatory":false,"description":"","data_type":"BASE","type":"LOCAL","name":"FILES_ANALYTICS","value":"http:\/\/10.42.250.116\/lcm\/lcm_file_analytics_3.2.1.tar.gz","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"is_hidden":false,"options":{"type":"PREDEFINED","choices":[]}},{"val_type":"STRING","is_mandatory":false,"description":"","data_type":"BASE","type":"LOCAL","name":"FLOW_PC","value":"http:\/\/10.42.250.116\/lcm\/lcm_flow_pc_3.0.0.tar.gz","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"is_hidden":false,"options":{"type":"PREDEFINED","choices":[]}},{"val_type":"STRING","is_mandatory":false,"description":"","data_type":"BASE","type":"LOCAL","name":"FLOW_PE","value":"http:\/\/10.42.250.116\/lcm\/lcm_flow_cvm_3.0.0.tar.gz","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"is_hidden":false,"options":{"type":"PREDEFINED","choices":[]}},{"val_type":"STRING","is_mandatory":false,"description":"","data_type":"BASE","type":"LOCAL","name":"FOUNDATION","value":"http:\/\/10.42.250.116\/lcm\/lcm_foundation_5.4.tar.gz","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"is_hidden":false,"options":{"type":"PREDEFINED","choices":[]}},{"val_type":"STRING","is_mandatory":false,"description":"","data_type":"BASE","type":"LOCAL","name":"NKE","value":"http:\/\/10.42.250.116\/lcm\/lcm_NKE_2.8.0.tar.gz","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"is_hidden":false,"options":{"type":"PREDEFINED","choices":[]}},{"val_type":"STRING","is_mandatory":false,"description":"","data_type":"BASE","type":"LOCAL","name":"MSP","value":"http:\/\/10.42.250.116\/lcm\/lcm_darksite_msp-2.4.3.2.tar.gz","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"is_hidden":false,"options":{"type":"PREDEFINED","choices":[]}},{"val_type":"STRING","is_mandatory":false,"description":"","data_type":"BASE","type":"LOCAL","name":"OBJECTS","value":"http:\/\/10.42.250.116\/lcm\/objects-4.0.tar.gz","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"is_hidden":false,"options":{"type":"PREDEFINED","choices":[]}},{"val_type":"STRING","is_mandatory":false,"description":"","data_type":"BASE","type":"LOCAL","name":"FRAMEWORK_BUNDLE","value":"http:\/\/10.42.250.116\/lcm\/lcm_dark_site_bundle_2.6.0.2.36541.tar.gz","label":"","attrs":{"type":""},"editables":{"value":true},"is_hidden":false,"options":{"type":"PREDEFINED","choices":[]}},{"val_type":"STRING","is_mandatory":false,"description":"","data_type":"BASE","type":"LOCAL","name":"FIRMWARE","value":"http:\/\/10.42.250.116\/lcm\/lcm_nx_2.21.0.tar.gz","label":"","attrs":{"type":""},"editables":{"value":true},"is_hidden":false,"options":{"type":"PREDEFINED","choices":[]}},{"val_type":"STRING","is_mandatory":false,"description":"","data_type":"BASE","type":"LOCAL","name":"NCC","value":"http:\/\/10.42.250.116\/lcm\/lcm_ncc_4.6.3.1.tar.gz","label":"","attrs":{"type":""},"is_hidden":false,"options":{"type":"PREDEFINED","choices":[]}}]}],"published_service_definition_list":[],"default_credential_local_reference":{"kind":"app_credential","name":"admin"},"type":"USER"},"name":"Create LCM Dark Site Web Server"},"api_version":"3.0","metadata":{"last_update_time":"1684285082031575","kind":"blueprint","spec_version":93,"creation_time":"1678252101369964","name":"Create LCM Dark Site Web Server"}} \ No newline at end of file +{"status":{},"spec":{"name":"Create LCM Dark Site Web Server","description":"Deploy dark site web server & reconfigure LCM for local web server updates","resources":{"service_definition_list":[{"name":"LCMDarkSiteService","description":"","variable_list":[],"action_list":[{"type":"system","name":"action_create","description":"System action for creating an application","runbook":{"name":"Runbook_for_Service_BasicLinux_action_create","description":"","task_definition_list":[{"type":"DAG","name":"DAG_Task_for_Service_BasicLinux_action_create","description":"","attrs":{"type":"","edges":[{"type":"","from_task_reference":{"name":"Configure Base VM","kind":"app_task"},"to_task_reference":{"name":"Configure Storage","kind":"app_task"},"edge_type":"user_defined"}]},"child_tasks_local_reference_list":[{"name":"Configure Base VM","kind":"app_task"},{"name":"Configure Storage","kind":"app_task"}],"variable_list":[],"target_any_local_reference":{"name":"LCMDarkSiteService","kind":"app_service"},"timeout_secs":"0","retries":"0","inherit_target":false},{"type":"EXEC","name":"Configure Base VM","description":"","attrs":{"type":"","script":"#!\/bin\/sh\n\n# update Rocky Linux packages\nsudo dnf -y update\nsudo dnf -y upgrade\n\n# install some useful packages\nsudo dnf -y install git bash-completion vim net-tools bind-utils wget firewalld unzip\n\n# set the hostname\nsudo hostnamectl set-hostname @@{HOSTNAME}@@","script_type":"sh","command_line_args":"","exit_status":[],"login_credential_local_reference":{"name":"admin","kind":"app_credential"}},"child_tasks_local_reference_list":[],"variable_list":[],"target_any_local_reference":{"name":"LCMDarkSiteService","kind":"app_service"},"timeout_secs":"0","retries":"0","inherit_target":false},{"type":"EXEC","name":"Configure Storage","description":"","attrs":{"type":"","script":"#!\/bin\/sh\n\n# create single partition on sdb\n(\necho o # Create a new empty DOS partition table\necho n # Add a new partition\necho p # Primary partition\necho 1 # Partition number\necho # First sector (Accept default: 1)\necho # Last sector (Accept default: varies)\necho w # Write changes\n) | sudo fdisk \/dev\/sdb\nsudo mkfs.ext4 \/dev\/sdb1\nsudo mkdir -p \/mnt\/lcm\nsudo mount -t ext4 \/dev\/sdb1 \/mnt\/lcm","script_type":"sh","command_line_args":"","exit_status":[],"login_credential_local_reference":{"name":"admin","kind":"app_credential"}},"child_tasks_local_reference_list":[],"variable_list":[],"target_any_local_reference":{"name":"LCMDarkSiteService","kind":"app_service"},"timeout_secs":"0","retries":"0","inherit_target":false}],"main_task_local_reference":{"name":"DAG_Task_for_Service_BasicLinux_action_create","kind":"app_task"},"variable_list":[]},"critical":true},{"type":"system","name":"action_delete","description":"System action for deleting an application. Deletes created VMs as well","runbook":{"name":"Runbook_for_Service_BasicLinux_action_delete","description":"","task_definition_list":[{"type":"DAG","name":"DAG_Task_for_Service_BasicLinux_action_delete","description":"","attrs":{"type":"","edges":[]},"child_tasks_local_reference_list":[],"variable_list":[],"target_any_local_reference":{"name":"LCMDarkSiteService","kind":"app_service"},"timeout_secs":"0","retries":"0","inherit_target":false}],"main_task_local_reference":{"name":"DAG_Task_for_Service_BasicLinux_action_delete","kind":"app_task"},"variable_list":[]},"critical":true},{"type":"system","name":"action_start","description":"System action for starting an application","runbook":{"name":"Runbook_for_Service_BasicLinux_action_start","description":"","task_definition_list":[{"type":"DAG","name":"DAG_Task_for_Service_BasicLinux_action_start","description":"","attrs":{"type":"","edges":[]},"child_tasks_local_reference_list":[],"variable_list":[],"target_any_local_reference":{"name":"LCMDarkSiteService","kind":"app_service"},"timeout_secs":"0","retries":"0","inherit_target":false}],"main_task_local_reference":{"name":"DAG_Task_for_Service_BasicLinux_action_start","kind":"app_task"},"variable_list":[]},"critical":true},{"type":"system","name":"action_stop","description":"System action for stopping an application","runbook":{"name":"Runbook_for_Service_BasicLinux_action_stop","description":"","task_definition_list":[{"type":"DAG","name":"DAG_Task_for_Service_BasicLinux_action_stop","description":"","attrs":{"type":"","edges":[]},"child_tasks_local_reference_list":[],"variable_list":[],"target_any_local_reference":{"name":"LCMDarkSiteService","kind":"app_service"},"timeout_secs":"0","retries":"0","inherit_target":false}],"main_task_local_reference":{"name":"DAG_Task_for_Service_BasicLinux_action_stop","kind":"app_task"},"variable_list":[]},"critical":true},{"type":"system","name":"action_restart","description":"System action for restarting an application","runbook":{"name":"Runbook_for_Service_BasicLinux_action_restart","description":"","task_definition_list":[{"type":"DAG","name":"DAG_Task_for_Service_BasicLinux_action_restart","description":"","attrs":{"type":"","edges":[]},"child_tasks_local_reference_list":[],"variable_list":[],"target_any_local_reference":{"name":"LCMDarkSiteService","kind":"app_service"},"timeout_secs":"0","retries":"0","inherit_target":false}],"main_task_local_reference":{"name":"DAG_Task_for_Service_BasicLinux_action_restart","kind":"app_task"},"variable_list":[]},"critical":true},{"type":"system","name":"action_soft_delete","description":"System action for deleting an application. Does not delete created VMs","runbook":{"name":"Runbook_for_Service_BasicLinux_action_soft_delete","description":"","task_definition_list":[{"type":"DAG","name":"DAG_Task_for_Service_BasicLinux_action_soft_delete","description":"","attrs":{"type":"","edges":[]},"child_tasks_local_reference_list":[],"variable_list":[],"target_any_local_reference":{"name":"LCMDarkSiteService","kind":"app_service"},"timeout_secs":"0","retries":"0","inherit_target":false}],"main_task_local_reference":{"name":"DAG_Task_for_Service_BasicLinux_action_soft_delete","kind":"app_task"},"variable_list":[]},"critical":true}],"depends_on_list":[],"port_list":[],"singleton":false,"tier":""}],"published_service_definition_list":[],"substrate_definition_list":[{"type":"AHV_VM","name":"DarkSiteWebServer","description":"","variable_list":[],"action_list":[{"type":"fragment","name":"pre_action_create","description":"","runbook":{"name":"0b0c2f05_runbook","description":"","task_definition_list":[{"type":"DAG","name":"d0ea3d51_dag","description":"","attrs":{"type":"","edges":[]},"child_tasks_local_reference_list":[],"variable_list":[],"target_any_local_reference":{"name":"DarkSiteWebServer","kind":"app_substrate"},"timeout_secs":"0","retries":"0","inherit_target":false}],"main_task_local_reference":{"name":"d0ea3d51_dag","kind":"app_task"},"variable_list":[]},"critical":false},{"type":"fragment","name":"post_action_delete","description":"","runbook":{"name":"73f62882_runbook","description":"","task_definition_list":[{"type":"DAG","name":"cb3a0f31_dag","description":"","attrs":{"type":"","edges":[]},"child_tasks_local_reference_list":[],"variable_list":[],"target_any_local_reference":{"name":"DarkSiteWebServer","kind":"app_substrate"},"timeout_secs":"0","retries":"0","inherit_target":false}],"main_task_local_reference":{"name":"cb3a0f31_dag","kind":"app_task"},"variable_list":[]},"critical":false}],"editables":{"create_spec":{"resources":{"nic_list":{},"serial_port_list":{}}}},"create_spec":{"type":"","name":"lcm-web-@@{calm_array_index}@@-@@{calm_time}@@","availability_zone_reference":null,"backup_policy":null,"cluster_reference":{"type":"","kind":"cluster","name":"Dev","uuid":"0005f2f7-eee7-1995-6145-ac1f6b35fe5e"},"resources":{"type":"","nic_list":[{"type":"","nic_type":"NORMAL_NIC","subnet_reference":{"type":"","kind":"subnet","name":"Primary","uuid":"5057b84b-1a1a-45c3-a900-35f3a93f16ac"},"network_function_nic_type":"INGRESS","mac_address":"","ip_endpoint_list":[],"network_function_chain_reference":null,"vpc_reference":null}],"power_state":"ON","guest_tools":null,"num_vcpus_per_socket":1,"num_sockets":2,"memory_size_mib":8192,"gpu_list":[],"parent_reference":null,"hardware_clock_timezone":"","account_uuid":"d3e14fcc-4837-40af-b7bc-25b6ac7ccd7a","guest_customization":{"type":"","cloud_init":{"type":"","meta_data":"","user_data":"#cloud-config\nusers:\n - name: @@{admin.username}@@\n ssh-authorized-keys:\n - @@{admin.public_key}@@\n sudo:\n - ALL=(ALL) NOPASSWD:ALL\nruncmd:\n - update-crypto-policies --set DEFAULT:SHA1\n - systemctl restart --no-block sshd.service"},"sysprep":null},"boot_config":{"type":"","boot_device":{"type":"","disk_address":{"type":"","device_index":0,"adapter_type":"SCSI"}},"mac_address":"","boot_type":"LEGACY"},"disk_list":[{"type":"","data_source_reference":{"type":"","kind":"image","name":"rocky9cloud","uuid":"2cdb8407-0f14-46ff-964f-0cc9ab9a3186"},"volume_group_reference":null,"device_properties":{"type":"","disk_address":{"type":"","device_index":0,"adapter_type":"SCSI"},"device_type":"DISK"},"disk_size_mib":10240},{"type":"","data_source_reference":null,"volume_group_reference":null,"device_properties":{"type":"","disk_address":{"type":"","device_index":1,"adapter_type":"SCSI"},"device_type":"DISK"},"disk_size_mib":102400}],"serial_port_list":[]},"categories":{}},"os_type":"Linux","readiness_probe":{"login_credential_local_reference":{"name":"admin","kind":"app_credential"},"connection_type":"SSH","connection_port":22,"delay_secs":"60","retries":"5","address":"@@{platform.status.resources.nic_list[0].ip_endpoint_list[0].ip}@@","disable_readiness_probe":false,"connection_protocol":""}}],"package_definition_list":[{"type":"CUSTOM","name":"BasicLinuxPackage","description":"","variable_list":[],"action_list":[],"service_local_reference_list":[{"name":"LCMDarkSiteService","kind":"app_service"}],"version":"","options":{"type":"","install_runbook":{"name":"BasicLinuxPackage___install___runbook","description":"","task_definition_list":[{"type":"DAG","name":"BasicLinuxPackage___install___dag","description":"","attrs":{"type":"","edges":[]},"child_tasks_local_reference_list":[],"variable_list":[],"target_any_local_reference":{"name":"LCMDarkSiteService","kind":"app_service"},"timeout_secs":"0","retries":"0","inherit_target":false}],"main_task_local_reference":{"name":"BasicLinuxPackage___install___dag","kind":"app_task"},"variable_list":[]},"uninstall_runbook":{"name":"Runbook_for_Package_BasicLinuxPackage_action_uninstall","description":"","task_definition_list":[{"type":"DAG","name":"DAG_Task_for_Package_BasicLinuxPackage_action_uninstall","description":"","attrs":{"type":"","edges":[]},"child_tasks_local_reference_list":[],"variable_list":[],"target_any_local_reference":{"name":"LCMDarkSiteService","kind":"app_service"},"timeout_secs":"0","retries":"0","inherit_target":false}],"main_task_local_reference":{"name":"DAG_Task_for_Package_BasicLinuxPackage_action_uninstall","kind":"app_task"},"variable_list":[]},"upgrade_runbook":{}}}],"app_profile_list":[{"name":"Default","description":"","variable_list":[{"type":"LOCAL","name":"STATIC_EXPIRATION_DAYS","description":"","options":{"type":"PREDEFINED","choices":[]},"is_hidden":false,"is_mandatory":false,"data_type":"BASE","val_type":"STRING","label":"","attrs":{"type":""},"editables":{"value":true},"value":"365"},{"type":"LOCAL","name":"SELF_SERVICE_NUCALM","description":"","options":{"type":"PREDEFINED","choices":[]},"is_hidden":false,"is_mandatory":false,"data_type":"BASE","val_type":"STRING","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"value":"http:\/\/10.42.250.103\/lcm\/NuCalm-3.8.0.zip"},{"type":"LOCAL","name":"SELF_SERVICE_EPSILON","description":"","options":{"type":"PREDEFINED","choices":[]},"is_hidden":false,"is_mandatory":false,"data_type":"BASE","val_type":"STRING","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"value":"http:\/\/10.42.250.103\/lcm\/Epsilon-3.8.0.zip"},{"type":"LOCAL","name":"PC_IP","description":"","options":{"type":"PREDEFINED","choices":[]},"is_hidden":false,"is_mandatory":false,"data_type":"BASE","val_type":"STRING","label":"","attrs":{"type":""},"editables":{"value":true},"value":"10.42.250.71"},{"type":"LOCAL","name":"OBJECTS","description":"","options":{"type":"PREDEFINED","choices":[]},"is_hidden":false,"is_mandatory":false,"data_type":"BASE","val_type":"STRING","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"value":"http:\/\/10.42.250.103\/lcm\/objects-5.0.tar.gz"},{"type":"LOCAL","name":"NKE","description":"","options":{"type":"PREDEFINED","choices":[]},"is_hidden":false,"is_mandatory":false,"data_type":"BASE","val_type":"STRING","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"value":"http:\/\/10.42.250.103\/lcm\/lcm_karbon_2.10.1.tar.gz"},{"type":"LOCAL","name":"NCC","description":"","options":{"type":"PREDEFINED","choices":[]},"is_hidden":false,"is_mandatory":false,"data_type":"BASE","val_type":"STRING","label":"","attrs":{"type":""},"editables":{"value":true},"value":"http:\/\/10.42.250.103\/lcm\/lcm_ncc_5.0.1.tar.gz"},{"type":"LOCAL","name":"MSP","description":"","options":{"type":"PREDEFINED","choices":[]},"is_hidden":false,"is_mandatory":false,"data_type":"BASE","val_type":"STRING","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"value":"http:\/\/10.42.250.103\/lcm\/lcm_msp_2.4.5.2.tar.gz"},{"type":"LOCAL","name":"HOSTNAME","description":"","options":{"type":"PREDEFINED","choices":[]},"is_hidden":false,"is_mandatory":false,"data_type":"BASE","val_type":"STRING","label":"","attrs":{"type":""},"editables":{"value":true},"value":"lcm-web-server"},{"type":"LOCAL","name":"FRAMEWORK_BUNDLE","description":"","options":{"type":"PREDEFINED","choices":[]},"is_hidden":false,"is_mandatory":false,"data_type":"BASE","val_type":"STRING","label":"","attrs":{"type":""},"editables":{"value":true},"value":"http:\/\/10.42.250.103\/lcm\/lcm_dark_site_bundle_3.0.1.51640.tar.gz"},{"type":"LOCAL","name":"FOUNDATION","description":"","options":{"type":"PREDEFINED","choices":[]},"is_hidden":false,"is_mandatory":false,"data_type":"BASE","val_type":"STRING","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"value":"http:\/\/10.42.250.103\/lcm\/lcm_foundation_5.6.1.tar.gz"},{"type":"LOCAL","name":"FLOW_VIRTUAL_NETWORKING","description":"","options":{"type":"PREDEFINED","choices":[]},"is_hidden":false,"is_mandatory":false,"data_type":"BASE","val_type":"STRING","label":"","attrs":{"type":""},"editables":{"value":true},"value":"http:\/\/10.42.250.103\/lcm\/flow_virtual_networking_3.0.2.tar.gz"},{"type":"LOCAL","name":"FLOW_PE","description":"","options":{"type":"PREDEFINED","choices":[]},"is_hidden":false,"is_mandatory":false,"data_type":"BASE","val_type":"STRING","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"value":"http:\/\/10.42.250.103\/lcm\/lcm_flow_cvm_5.0.0.tar.gz"},{"type":"LOCAL","name":"FLOW_PC","description":"","options":{"type":"PREDEFINED","choices":[]},"is_hidden":false,"is_mandatory":false,"data_type":"BASE","val_type":"STRING","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"value":"http:\/\/10.42.250.103\/lcm\/lcm_flow_pc_5.0.0.tar.gz"},{"type":"LOCAL","name":"FIRMWARE","description":"","options":{"type":"PREDEFINED","choices":[]},"is_hidden":false,"is_mandatory":false,"data_type":"BASE","val_type":"STRING","label":"","attrs":{"type":""},"editables":{"value":true},"value":"http:\/\/10.42.250.103\/lcm\/lcm_nx_3.8.0.tar.gz"},{"type":"LOCAL","name":"FILES_ANALYTICS","description":"","options":{"type":"PREDEFINED","choices":[]},"is_hidden":false,"is_mandatory":false,"data_type":"BASE","val_type":"STRING","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"value":"http:\/\/10.42.250.103\/lcm\/lcm_file_analytics_3.4.0.1.tar.gz"},{"type":"LOCAL","name":"FILES","description":"","options":{"type":"PREDEFINED","choices":[]},"is_hidden":false,"is_mandatory":false,"data_type":"BASE","val_type":"STRING","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"value":"http:\/\/10.42.250.103\/lcm\/lcm_file_server_5.0.0.2.tar.gz"},{"type":"LOCAL","name":"COMPATIBILITY_BUNDLE","description":"","options":{"type":"PREDEFINED","choices":[]},"is_hidden":false,"is_mandatory":false,"data_type":"BASE","val_type":"STRING","label":"","attrs":{"type":""},"editables":{"value":true},"value":"http:\/\/10.42.250.103\/lcm\/nutanix_compatibility_bundle.tar.gz"},{"type":"LOCAL","name":"CMU","description":"","options":{"type":"PREDEFINED","choices":[]},"is_hidden":false,"is_mandatory":false,"data_type":"BASE","val_type":"STRING","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"value":"http:\/\/10.42.250.103\/lcm\/lcm_cmu_2.0.3.tar.gz"},{"type":"LOCAL","name":"AOS","description":"","options":{"type":"PREDEFINED","choices":[]},"is_hidden":false,"is_mandatory":false,"data_type":"BASE","val_type":"STRING","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"value":"http:\/\/10.42.250.103\/lcm\/lcm_nos_6.8.1.tar.gz"},{"type":"LOCAL","name":"AHV","description":"","options":{"type":"PREDEFINED","choices":[]},"is_hidden":false,"is_mandatory":false,"data_type":"BASE","val_type":"STRING","label":"","attrs":{"type":"LOCAL"},"editables":{"value":true},"value":"http:\/\/10.42.250.103\/lcm\/lcm_ahv_el7.nutanix.20220304.511.tar.gz"}],"action_list":[{"type":"user","name":"Reconfigure LCM","description":"","runbook":{"name":"89b202ec_runbook","description":"","task_definition_list":[{"type":"DAG","name":"66ae7ab8_dag","description":"","attrs":{"type":"","edges":[{"type":"","from_task_reference":{"name":"Install NGINX","kind":"app_task"},"to_task_reference":{"name":"Configure NGINX","kind":"app_task"},"edge_type":"user_defined"},{"type":"","from_task_reference":{"name":"Configure LCM Web Server","kind":"app_task"},"to_task_reference":{"name":"Download LCM Updates","kind":"app_task"},"edge_type":"user_defined"},{"type":"","from_task_reference":{"name":"Configure NGINX","kind":"app_task"},"to_task_reference":{"name":"Configure Firewall","kind":"app_task"},"edge_type":"user_defined"},{"type":"","from_task_reference":{"name":"Configure Firewall","kind":"app_task"},"to_task_reference":{"name":"Configure LCM Web Server","kind":"app_task"},"edge_type":"user_defined"},{"type":"","from_task_reference":{"name":"Download LCM Updates","kind":"app_task"},"to_task_reference":{"name":"Extract LCM Updates","kind":"app_task"},"edge_type":"user_defined"},{"type":"","from_task_reference":{"name":"Extract LCM Updates","kind":"app_task"},"to_task_reference":{"name":"Reconfigure LCM for Dark Site Web Server","kind":"app_task"},"edge_type":"user_defined"}]},"child_tasks_local_reference_list":[{"name":"Install NGINX","kind":"app_task"},{"name":"Configure NGINX","kind":"app_task"},{"name":"Configure Firewall","kind":"app_task"},{"name":"Configure LCM Web Server","kind":"app_task"},{"name":"Download LCM Updates","kind":"app_task"},{"name":"Extract LCM Updates","kind":"app_task"},{"name":"Reconfigure LCM for Dark Site Web Server","kind":"app_task"}],"variable_list":[],"timeout_secs":"0","retries":"0","inherit_target":false},{"type":"EXEC","name":"Install NGINX","description":"","attrs":{"type":"","script":"#!\/bin\/sh\n\n# install, start and enable nginx\nsudo dnf -y install nginx\nsudo systemctl enable nginx --now","script_type":"sh","command_line_args":"","exit_status":[],"login_credential_local_reference":{"name":"admin","kind":"app_credential"}},"child_tasks_local_reference_list":[],"variable_list":[],"target_any_local_reference":{"name":"LCMDarkSiteService","kind":"app_service"},"timeout_secs":"0","retries":"0","inherit_target":false},{"type":"EXEC","name":"Configure NGINX","description":"","attrs":{"type":"","script":"# configure some best-practice nginx settings\n\n#################################################\n# #\n# THESE ARE GENERAL SETTINGS ONLY AND WILL NEED #\n# NEED TO BE CAREFULLY CHECKED BEFORE USE IN A #\n# PRODUCTION ENVIRONMENT! #\n# #\n# SERIOUSLY, CHECK THEM! :) #\n# #\n#################################################\n\n# set the number of nginx worker processes to be the same as the number of cores in this system\nPROCS=`sudo grep processor \/proc\/cpuinfo | wc -l`\nsudo sed -i -- \"s\/worker_processes.*\/worker_processes $PROCS;\/\" \/etc\/nginx\/nginx.conf\n\n# set the number of worker connections to the max allowed by nginx\n# this allows the server to operate at max potential, if required\nsudo sed -i -- 's\/worker_connections.*\/worker_connections 1024;\/' \/etc\/nginx\/nginx.conf\n\n# enable gzip compression\nset +H\necho \"gzip on;\ngzip_proxied any;\ngzip_types text\/plain text\/xml text\/css application\/x-javascript;\ngzip_vary on;\ngzip_disable \\\"MSIE [1-6]\\.(?!.*SV1)\\\";\" | sudo tee \/etc\/nginx\/conf.d\/gzip.conf\n\n# setup cache expiry for static files\necho \"location ~* \\.(jpg|jpeg|png|gif|ico|css|js)\\$ {\n expires @@{STATIC_EXPIRATION_DAYS}@@d;\n}\" | sudo tee \/etc\/nginx\/default.d\/expires.conf\n\n# set the client buffers\n# this is critical on busy systems\necho \"client_body_buffer_size 1K;\nclient_header_buffer_size 1k;\nclient_max_body_size 1k;\nlarge_client_header_buffers 2 1k;\" | sudo tee \/etc\/nginx\/conf.d\/buffer.conf\n\n# set the client timeouts - performance improvement under certain circumstances\necho \"client_body_timeout 12;\nclient_header_timeout 12;\nsend_timeout 10;\" | sudo tee \/etc\/nginx\/conf.d\/timeout.conf\n\n# set the keepalive timeout separately\n# done this way because the above settings are not in nginx.conf by default, but keepalive_timeout is\n# this means we can modify it, rather than setting a new value\nsudo sed -i -- 's\/keepalive_timeout.*\/keepalive_timeout 15;\/' \/etc\/nginx\/nginx.conf\n\n# configure site root\nsudo mkdir -p \/mnt\/lcm\/web\nsudo sed -i -- 's\/\\\/usr\\\/share\\\/nginx\\\/html\/\\\/mnt\\\/lcm\\\/web\/g' \/etc\/nginx\/nginx.conf\n\n# customise NGINX: log all NGINX access requests\nsudo sed -i -- 's\/access_log.*off;\/access_log \\\/var\\\/log\\\/nginx\\\/access.log;\/g' \/etc\/nginx\/nginx.conf\n# customise NGINX: enable directory listing (LCM requirement)\nsudo sed -i -- '\/root.*;\/a \\\\tautoindex on;' \/etc\/nginx\/nginx.conf\n\n\n# configure selinux to allow Nginx in Permissive mode\nsudo semanage permissive -a httpd_t","script_type":"sh","command_line_args":"","exit_status":[],"login_credential_local_reference":{"name":"admin","kind":"app_credential"}},"child_tasks_local_reference_list":[],"variable_list":[],"target_any_local_reference":{"name":"LCMDarkSiteService","kind":"app_service"},"timeout_secs":"0","retries":"0","inherit_target":false},{"type":"EXEC","name":"Configure Firewall","description":"","attrs":{"type":"","script":"#!\/bin\/sh\n\n# configure the firewall to allow HTTP requests (port 80, by default)\nsudo systemctl enable firewalld --now\nsudo firewall-cmd --permanent --add-service=http\nsudo firewall-cmd --reload","script_type":"sh","command_line_args":"","exit_status":[],"login_credential_local_reference":{"name":"admin","kind":"app_credential"}},"child_tasks_local_reference_list":[],"variable_list":[],"target_any_local_reference":{"name":"LCMDarkSiteService","kind":"app_service"},"timeout_secs":"0","retries":"0","inherit_target":false},{"type":"EXEC","name":"Configure LCM Web Server","description":"","attrs":{"type":"","script":"#!\/bin\/sh\n\n# create LCM release directory\nsudo mkdir -p -m 755 \/mnt\/lcm\/web\/release\n\n# create temporary LCM download location\nsudo mkdir -p -m 755 \/mnt\/lcm\/download\n\n# restart NGINX to make sure all previous changes are loaded\nsudo systemctl restart nginx","script_type":"sh","command_line_args":"","exit_status":[],"login_credential_local_reference":{"name":"admin","kind":"app_credential"}},"child_tasks_local_reference_list":[],"variable_list":[],"target_any_local_reference":{"name":"LCMDarkSiteService","kind":"app_service"},"timeout_secs":"0","retries":"0","inherit_target":false},{"type":"EXEC","name":"Download LCM Updates","description":"","attrs":{"type":"","script":"#!\/bin\/sh\n\n# download LCM support files as per short-term download links\ncd \/mnt\/lcm\/download\n\n# download LCM framework\/dark site bundle\nsudo curl -L -O \"@@{FRAMEWORK_BUNDLE}@@\"\n\n# pre-seed the LCM update files\n# this is for demo only!\nfor i in \"@@{FLOW_VIRTUAL_NETWORKING}@@\" \"@@{COMPATIBILITY_BUNDLE}@@\" \"@@{MSP}@@\" \"@@{OBJECTS}@@\" \"@@{NKE}@@\" \"@@{FOUNDATION}@@\" \"@@{FLOW_PE}@@\" \"@@{FLOW_PC}@@\" \"@@{FILES_ANALYTICS}@@\" \"@@{FILES}@@\" \"@@{CMU}@@\" \"@@{SELF_SERVICE_EPSILON}@@\" \"@@{SELF_SERVICE_NUCALM}@@\" \"@@{AHV}@@\" \"@@{AOS}@@\" \"@@{FIRMWARE}@@\" \"@@{NCC}@@\"\ndo\necho \"Downloading $i ...\"\nsudo curl -L -O $i\ndone","script_type":"sh","command_line_args":"","exit_status":[],"login_credential_local_reference":{"name":"admin","kind":"app_credential"}},"child_tasks_local_reference_list":[],"variable_list":[],"target_any_local_reference":{"name":"LCMDarkSiteService","kind":"app_service"},"timeout_secs":"0","retries":"0","inherit_target":false},{"type":"EXEC","name":"Extract LCM Updates","description":"","attrs":{"type":"","script":"#!\/bin\/sh\n\n# download LCM support files as per short-term download links\ncd \/mnt\/lcm\/download\n\n# extract LCM dark site bundles into place\nfor i in .\/*.tar.gz\ndo\necho \"Extracting $i ...\"\nsudo tar xzf $i --directory \/mnt\/lcm\/web\/release\ndone\n\n# extract Self Service dark site bundles into place\nfor i in .\/*.zip\ndo\necho \"Extracting $i ...\"\nsudo unzip $i -d \/mnt\/lcm\/web\/release\ndone\n\n# comment the next 3 lines to NOT remove downloaded LCM files\necho \"Removing temporary downloads ...\"\nsudo rm *.tar.gz\nsudo rm *.zip","script_type":"sh","command_line_args":"","exit_status":[],"login_credential_local_reference":{"name":"admin","kind":"app_credential"}},"child_tasks_local_reference_list":[],"variable_list":[],"target_any_local_reference":{"name":"LCMDarkSiteService","kind":"app_service"},"timeout_secs":"0","retries":"0","inherit_target":false},{"type":"EXEC","name":"Reconfigure LCM for Dark Site Web Server","description":"","attrs":{"type":"","script":"# import necessary modules\nimport urllib3\nimport ntnx_lifecycle_py_client\nfrom ntnx_lifecycle_py_client import Configuration as LCMConfiguration\nfrom ntnx_lifecycle_py_client import ApiClient as LCMClient\n\n# disable SSL certification warnings\n# not recommended in production environments\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n# setup the configuration\nlcm_config = LCMConfiguration()\nlcm_config.host = \"@@{PC_IP}@@\"\nlcm_config.port = \"9440\"\nlcm_config.username = \"@@{pc_admin.username}@@\"\nlcm_config.password = \"@@{pc_admin.secret}@@\"\nlcm_config.verify_ssl = False\n\n# create the client instance\nlcm_client = LCMClient(configuration=lcm_config)\n\n# create the API instance\n# this is used for all upcoming LCM API requests via SDK\nlcm_instance = ntnx_lifecycle_py_client.api.ConfigApi(api_client=lcm_client)\n\n# get the current LCM configuration\nlcm_settings = lcm_instance.get_config(async_req=False)\n\n# get the current LCM configuration Etag\nlcm_etag = lcm_client.get_etag(lcm_settings)\n\n# create our new LCM configuration object\nlcm_payload = ntnx_lifecycle_py_client.Config()\n\n# configure the payload for this environment\nlcm_payload.url = \"http:\/\/@@{address}@@\/release\"\nlcm_payload.connectivity_type = \"DARKSITE_WEB_SERVER\"\nlcm_payload.is_https_enabled = False\n\n# add the If-Match header to the request\n# omitting this step will result in an HTTP 428 PRECONDITION REQUIRED response\nlcm_client.add_default_header(header_name=\"If-Match\", header_value=lcm_etag)\n\n# update LCM with the new configuration\nupdate_config = lcm_instance.update_config(async_req=False, body=lcm_payload)\n\nprint(\"LCM reconfigured for dark site web server at http:\/\/@@{address}@@\/release\")","script_type":"python_remote","command_line_args":"","exit_status":[],"login_credential_local_reference":{"name":"rocky","kind":"app_credential"}},"child_tasks_local_reference_list":[],"variable_list":[],"target_any_local_reference":{"name":"LCMDarkSiteService","kind":"app_service"},"exec_target_reference":{"name":"python-host","kind":"app_endpoint"},"timeout_secs":"0","retries":"0","inherit_target":false}],"main_task_local_reference":{"name":"66ae7ab8_dag","kind":"app_task"},"variable_list":[]},"critical":false},{"type":"user","name":"Reset LCM to Portal","description":"","runbook":{"name":"e6a2b9fa_runbook","description":"","task_definition_list":[{"type":"DAG","name":"5e70e7e2_dag","description":"","attrs":{"type":"","edges":[]},"child_tasks_local_reference_list":[{"name":"Reset LCM to Nutanix Portal","kind":"app_task"}],"variable_list":[],"timeout_secs":"0","retries":"0","inherit_target":false},{"type":"EXEC","name":"Reset LCM to Nutanix Portal","description":"","attrs":{"type":"","script":"# import necessary modules\nimport urllib3\nimport ntnx_lifecycle_py_client\nfrom ntnx_lifecycle_py_client import Configuration as LCMConfiguration\nfrom ntnx_lifecycle_py_client import ApiClient as LCMClient\n\n# disable SSL certification warnings\n# not recommended in production environments\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\n# setup the configuration\nlcm_config = LCMConfiguration()\nlcm_config.host = \"@@{PC_IP}@@\"\nlcm_config.port = \"9440\"\nlcm_config.username = \"@@{pc_admin.username}@@\"\nlcm_config.password = \"@@{pc_admin.secret}@@\"\nlcm_config.verify_ssl = False\n\n# create the client instance\nlcm_client = LCMClient(configuration=lcm_config)\n\n# create the API instance\n# this is used for all upcoming LCM API requests via SDK\nlcm_instance = ntnx_lifecycle_py_client.api.ConfigApi(api_client=lcm_client)\n\n# get the current LCM configuration\nlcm_settings = lcm_instance.get_config(async_req=False)\n\n# get the current LCM configuration Etag\nlcm_etag = lcm_client.get_etag(lcm_settings)\n\n# create our new LCM configuration object\nlcm_payload = ntnx_lifecycle_py_client.Config()\n\n# configure the payload for this environment\nlcm_payload.connectivity_type = \"CONNECTED_SITE\"\nlcm_payload.is_https_enabled = True\n\n# add the If-Match header to the request\n# omitting this step will result in an HTTP 428 PRECONDITION REQUIRED response\nlcm_client.add_default_header(header_name=\"If-Match\", header_value=lcm_etag)\n\n# update LCM with the new configuration\nupdate_config = lcm_instance.update_config(async_req=False, body=lcm_payload)\n\nprint(\"LCM reconfigured for Nutanix Portal via HTTPS.\")","script_type":"python_remote","command_line_args":"","exit_status":[],"login_credential_local_reference":{"name":"rocky","kind":"app_credential"}},"child_tasks_local_reference_list":[],"variable_list":[],"target_any_local_reference":{"name":"LCMDarkSiteService","kind":"app_service"},"exec_target_reference":{"name":"python-host","kind":"app_endpoint"},"timeout_secs":"0","retries":"0","inherit_target":false}],"main_task_local_reference":{"name":"5e70e7e2_dag","kind":"app_task"},"variable_list":[]},"critical":false}],"deployment_create_list":[{"type":"GREENFIELD","name":"basiclinuxvm_deployment","description":"","variable_list":[],"action_list":[],"depends_on_list":[],"min_replicas":"1","max_replicas":"1","default_replicas":"1","package_local_reference_list":[{"name":"BasicLinuxPackage","kind":"app_package"}],"substrate_local_reference":{"name":"DarkSiteWebServer","kind":"app_substrate"},"options":{"type":""},"published_service_local_reference_list":[]}],"snapshot_config_list":[],"restore_config_list":[],"environment_reference_list":[],"application_url":"","patch_list":[]}],"credential_definition_list":[{"type":"KEY","name":"admin","description":"","username":"admin","secret":{"attrs":{"secret_reference":{},"is_secret_modified":false}},"cred_class":"static"},{"type":"PASSWORD","name":"pc_admin","description":"","username":"admin","secret":{"attrs":{"secret_reference":{},"is_secret_modified":false}},"cred_class":"static"},{"type":"KEY","name":"rocky","description":"","username":"rocky","secret":{"attrs":{"secret_reference":{},"is_secret_modified":false}},"cred_class":"static"}],"default_credential_local_reference":{"name":"admin","kind":"app_credential"},"type":"USER","client_attrs":{"null":{"Profile":{"Default":{"Action":{},"dsl_name":"Default"}},"Package":{"CentosImage":{"Action":{},"dsl_name":"CentosImage"},"BasicLinuxPackage":{"Action":{},"dsl_name":"BasicLinuxPackage"}},"Substrate":{"BasicLinuxVm":{"Action":{},"AhvVm":{"vm-@@{calm_array_index}@@-@@{calm_time}@@":{"dsl_name":"vmcalm_array_indexcalm_time"}},"dsl_name":"BasicLinuxVm"}},"Service":{"BasicLinux":{"Action":{},"dsl_name":"BasicLinux"}},"Deployment":{"basiclinuxvm_deployment":{"Action":{},"dsl_name":"basiclinuxvm_deployment"}}},"4e956f06-a4f1-2ac0-08ba-5cb81cdafa2f":{"x":-483.9719543457031,"y":-2096.3712158203125},"e64165c7-fb01-4946-d48f-7746546a38e8":{"x":-461.8039855957031,"y":-1154.3711547851562},"basiclinuxvm_deployment":{"y":-2437.454492269899,"x":-207.5539762918811}}}},"api_version":"3.0","product_version":"3.8.0","metadata":{"last_update_time":"1725253538938659","creation_time":"1723072788211984","spec_version":87,"name":"Create LCM Dark Site Web Server","kind":"blueprint"},"contains_secrets":false} \ No newline at end of file diff --git a/readme.md b/readme.md index 6f0b159..605f614 100755 --- a/readme.md +++ b/readme.md @@ -20,7 +20,7 @@ Each script language covered in this repository has an accompanying readme file - **csharp**: Single-file/script Microsoft C# applications, typically run in the console - **go** - Golang examples - **postman** - JSON payloads designed for use with the [Postman](https://getpostman.com) API development application -- **blueprints** - Nutanix Calm demo blueprints +- **blueprints** - NCM Self-Service blueprints ## License & Usage