Hello,

With the help of user data you can push you set of instructions to the VM while 
deploying VM. So let’s say you want to install any specific packages in the 
newly deployed VM, So instead of logging to the VM and download it manually you 
can pass the user-data to the VM while deploying the VM and it will get it done.

There are few prerequisites for user data which can be found in the  ACS 
document, 

http://docs.cloudstack.apache.org/projects/cloudstack-administration/en/4.8/virtual_machines/user-data.html#:~:text=CloudStack%20provides%20API%20access%20to,encoding%20to%20a%20deployed%20VM.&text=Deployed%20VMs%20also%20have%20access,user%2Ddata%20formated%20in%20base64.
 
<http://docs.cloudstack.apache.org/projects/cloudstack-administration/en/4.8/virtual_machines/user-data.html#:~:text=CloudStack%20provides%20API%20access%20to,encoding%20to%20a%20deployed%20VM.&text=Deployed%20VMs%20also%20have%20access,user%2Ddata%20formated%20in%20base64.>


So basically once you have installed Cloud-init and other packages mentioned 
above In link. Then you need to covert you script/data into base64 format and 
then send via API command.

Let’s a say a script contains -

#! /bin/bash

echo “Hello CloudStack” >> /tmp/userdata.txt 

Now convert above text into the base64 format. - You can use you Linux editor 
or you can use online tool for.  

https://linuxhint.com/bash_base64_encode_decode/ 
<https://linuxhint.com/bash_base64_encode_decode/>

Or 

https://www.base64encode.org/ <https://www.base64encode.org/>

Now I have tried to convert and it gave me - 
‘IyEgL2Jpbi9iYXNoCgplY2hvIOKAnEhlbGxvIENsb3VkU3RhY2vigJ0gPj4gL3RtcC91c2VyZGF0YS50eHQK’,
 Now just pass the string while deploying you virtual machine.

i.e 

Cloudmonkey deploy virtualmachine name=x, ….., 
userdata=IyEgL2Jpbi9iYXNoCgplY2hvIOKAnEhlbGxvIENsb3VkU3RhY2vigJ0gPj4gL3RtcC91c2VyZGF0YS50eHQK

I hope this will clarify your concern.


 
Vivek Kumar
Manager - Cloud & DevOps 
IndiQus Technologies
24*7  O +91 11 4055 1411  |   M +91 7503460090 
www.indiqus.com <http://indiqus.com/>

This message is intended only for the use of the individual or entity to which 
it is addressed and may contain information that is confidential and/or 
privileged. If you are not the intended recipient please delete the original 
message and any copy of it from your computer system. You are hereby notified 
that any dissemination, distribution or copying of this communication is 
strictly prohibited unless proper authorization has been obtained for such 
action. If you have received this communication in error, please notify the 
sender immediately. Although IndiQus attempts to sweep e-mail and attachments 
for viruses, it does not guarantee that both are virus-free and accepts no 
liability for any damage sustained as a result of viruses.

> On 02-Sep-2020, at 3:21 PM, Poulpatine <poulpat...@gmail.com> wrote:
> 
> Hi,
> 
> I'm trying to pass userdata in cmk command line during virtual machine
> deployment but I can't figure how to do that.
> 
> Among other tests, I've tried something like that in a very basic shell
> script:
> 
> #!/bin/bash
> 
> cli=cmk
> template=7bf01470-e3a5-4f37-b035-023c663c1b48
> service=80b47022-a341-446f-a14a-128b85a099d0
> zone=530cb1c3-1c90-4055-816e-3b58fbf9de91
> keypair=mykey
> userdata="$(sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g' user-data)"
> 
> $ cli deploy virtualmachine templateid="$template"
> serviceofferingid="$service" zoneid="$zone" keypair="$keypair"
> user-data="$userdata"
> 
> But I still can't figure how to make it.
> 
> Do you have any suggestions?
> 
> Many thanks.
> 
> -- 
> \o/ Poulpatine \o/

Reply via email to