Below is an example of how to create a multipart configuration compatible with cloud-init using Java:
import java.util.Properties; import javax.mail.Session; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; public class CloudInitMultipart { public static void main(String[] args) throws Exception { String config = "#cloud-config\n" + "mounts:\n" + " - [ sdf, /mnt/data, \"auto\", \"defaults,nobootwait\", \"0\", \"0\" ]\n\n" + "packages:\n" + " - emacs23-nox\n\n"; MimeMultipart mime = new MimeMultipart(); MimeBodyPart part1 = new MimeBodyPart(); part1.setText(config, "us-ascii", "cloud-config"); part1.setFileName("cloud-config.txt"); MimeBodyPart part2 = new MimeBodyPart(); String script = "#!/bin/bash\n\n" + "NOW=`date +%s`\n" + "touch /mnt/$NOW"; part2.setText(script, "us-ascii", "x-shellscript"); part2.setFileName("runme.sh"); mime.addBodyPart(part1); mime.addBodyPart(part2); MimeMessage msg = new MimeMessage(Session.getDefaultInstance(new Properties())); msg.setContent(mime); msg.writeTo(System.out); } }
This will create a multipart configuration combining a cloud-config element which installs emacs and creates an fstab entry, and also runs a bash script that creates a file. The output can then be used as user-data for launching an EC2 instance with this configuration.
No comments:
Post a Comment