Objective
Due to the company's business needs, we need to create virtual machines in bulk to perform tasks that need to be destroyed after the task is run to conserve resources.
The way we create virtual in bulk is through the bash interface provided by Oracle Cloud, so our first step is to create a bash environment
One. Configure command line Interface on the Linux machine. 1. Python version number is greater than or equal to 2.7
[email protected] ~]$ python--version
2. Install the user with sudo permission
[Email protected] ~]# Visudo
Meet the criteria
2. Download and install the CLI
[Email protected] ~]$ curl-l "https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh" | Bash
View
3. Auto-Generate config CLI configuration file
This configuration file is used for authentication
Get user ocid:
Get tenant Ocid
4. Update the user key
To view the location of the key placement:
View Key Contents
Add encryption Key
4. Test whether the configuration is successful
Two. Batch deployment of node-machine scripts
#!/bin/bash# description:batch Create Oracle Cloud Virtual instance.# date:2017/11/22# Author:lirou<[email pro tected]># version:1.0.1##### set some variables. Error_create=2error_no_instance=3ierror_parameter=4#node Host Global variablesoci_path=/root/y/ocicompartment_id= Ocid1.tenancy.oc1tenancy_id=ocid1.tenancy.oc1subnet_id=ocid1.subnet.oc1.phximage_id=ocid1.image.oc1.phxshape= " Vm. Standard1.1 "#record node host create and delete variables.file_of_alived_node=/var/lib/oracle/alived.nodesfile_of_ip _number=/var/lib/oracle/ip.txtfile_of_create_node_log=/var/log/oracle/create.logfile_of_delete_node_log=/var/ log/oracle/delete.log### Make sure file is existence. [!-D $ (dirname $file _of_alived_node)] && mkdir $ (dirname $file _of_alived_node) >>/dev/null[!-D $ (Dirnam e $file _of_ip_number)] && mkdir $ (dirname $file _of_ip_number) >>/dev/nulltouch $file _of_ip_number[!-D $ ( DirName $file _of_create_node_log)] && mkdir $ (dirname $file _of_create_nOde_log) >>/dev/null[!-D $ (dirname $file _of_delete_node_log)] && mkdir $ (dirname $file _of_delete_node_ LOG) >>/dev/null#### create node host### usage:create_node instance_display_name instance_private_ip volume_ Display_name volume_size_in_mbs attachment_display_namefunction Create_node {#Create instance instance_id=$ ($ Oci_path Compute Instance Launch--availability-domain $avail _domain-c $compartment _id--image-id $image _id--shape $sha PE--display-name $--subnet-id $subnet _id--private-ip $ | grep "\" id\ "" | Cut-d "\" "-f 4) if [[-Z $instance _id]];then echo" [$ (date + '%F%T ')] [instance] [$1:$2] [Create failure] [ex It ...] " >> $file _of_create_node_log exit $ERROR _create Else echo "[$ (date + '%F%T ')] [instance] [$: $instan CE_ID:$2] [Create success] ">> $file _of_create_node_log fi # Create Volume volume_id=$ ($oci _path BV Volume Create--availability-domain $avail _domain-c $compartment _id--display-name $--size-in-mbs $4 | grep "\" id\ "" | Cut-d "\" "-f 4) if [[-Z $volume _id]];then echo" [$ (date + '%F%T ')] [volume] [$] [Create failure] [exit ...] ">> $file _of_create_node_log exit $ERROR _create Else echo" [$ (date + '%F%T ')] [volume] [$: $volume _ID:$4] [Create success] ">> $file _of_create_node_log fi # Attach Volume to Instance while True;do I nstance_state=$ ($OCI _path Compute instance get--instance-id $instance _id | grep "lifecycle-state" |cut-d "\" "-F 4) volume_state=$ ($oci _path bv volume get--volume-id $volume _id | grep "lifecycle-state" |cut-d "\" "-f 4) if [[ $instance _state = = "RUNNING"] && [[$volume _state = = "AVAILABLE"]];then volume_attached_id=$ ($oci _pa Th compute volume-attachment Attach--display-name $--instance-id $instance _id--type iSCSI--volume-id $volume _id | grep "\" id\ "" | Cut-d "\" "-f 4) If [-Z $volume _attached_id]];then echo" [$ (date + '%F%T ')] [volume_attached] [$] [Create failure] [exit ...] ">> $file _of_create_node_log exit $ERROR _create Else echo "[$ (date + '%F%T ')] [volume_attached] [$: $volume _attached_id] [Create Success] ">> $file _of_create_node_log fi break fi sleep 5 done echo" \ "$ (d Ate + '%F%T ') \ "\" $instance _id\ "\" $volume _id\ "\" $volume _attached_id\ "" >> $file _of_alived_node}if [$#-le 3];the N echo "Error:usage $ (basename $) {create|delete} number" Exit $Error _parameterficase "in Create) STA Rt_ip_number=5 # File_of_ip_number Restore has been create maximal IP. $file _of_ip_number create_instance_number=0 # Loop Create node host while [[$create _instance_number -LT] && [[$start _ip_number-le]];d o instance_display_name=igb$ (printf "%03d" $start _ip_num ber) instance_private_ip=10.40.1. $start _ip_numbEr echo $instance _private_ip volume_display_name=vgb$ (printf "%03d" $start _ip_number) vol. ume_size_mbs=51200 Attachment_display_name=${instance_display_name}_attached_${volume_display_name} Create_node $instance _display_name $instance _private_ip $volume _display_name $volume _size_mbs $attachment _display_ Name # alter create maximal IP start_ip_number=$ ((start_ip_number+1)) echo "Start_ip_numb er= $start _ip_number "> $file _of_ip_number create_instance_number=$ ((create_instance_number+1)) done echo "Create $create _instance_number instance." ;; Delete). $file _of_ip_number #end_delete_ip_number =$ ((start_create_ip_number-1)) delete_instance_number=0 while [$delete _instance_number-lt];d o instance_id=$ (tail-1 $file _of_alived_node | cut-d "\" "-F 4) If [-Z $instance _id]];then echo "No has more INSTance "echo" Delete $delete _instance_number instance. " Exit $Error _no_instance fi volume_id=$ (tail-1 $file _of_alived_node | cut-d "\" "-F 6) $OCI _path Compute instance terminate--force--instance-id $instance _id while True;do Instan ce_state=$ ($OCI _path Compute instance get--instance-id $instance _id |grep "lifecycle-state" |cut-d "\" "-F 4) if [[$instance _state = = "TERMINATED"] | | [[-Z $instance _state]];then break fi sleep 5 done $oci _path BV Volume delete--force--volume-id $volume _id delete_instance_number=$ ((delete_instance_number+1)) echo "\" $instance _id\ "\" $volume _id\ "" >> $file _of_delete_node_log # alter ALIVED hosts Sed-i "/$instance _id/d" $file _of_alived_node echo "start_ip_number=$ ((start_ip_number-1))" > $file _of _ip_number Done echo "Delete $delete _instance_number instance." ;; *) echo "Usage: $ (basename $) {create|delete} number" Esac
Attention:
- Script uses
- Create a node machine:./nodes_ocvh.sh Create 3
- Delete node:./nodes_ocvh.sh Delete 2
Oracle Cloud remote batch creation of virtual machines