// TODO use userData to do this, and make initbuilder an example for // something else. @BeforeTest void makeScript() { mkEbsBoot = new InitBuilder( "mkebsboot", // name of the script "/tmp", // working directory "/tmp/logs", // location of stdout.log and stderr.log ImmutableMap.of( "imageDir", "/mnt/tmp", "ebsDevice", "/dev/sdh", "ebsMountPoint", "/mnt/ebs"), ImmutableList.<Statement>of( Statements.interpret( "echo creating a filesystem and mounting the ebs volume", "{md} {varl}IMAGE_DIR{varr} {varl}EBS_MOUNT_POINT{varr}", "rm -rf {varl}IMAGE_DIR{varr}/*", "yes| mkfs -t ext3 {varl}EBS_DEVICE{varr} 2>&-", "mount {varl}EBS_DEVICE{varr} {varl}EBS_MOUNT_POINT{varr}", "echo making a local working copy of the boot disk", "rsync -ax --exclude /ubuntu/.bash_history --exclude /home/*/.bash_history --exclude /etc/ssh/ssh_host_* --exclude /etc/ssh/moduli --exclude /etc/udev/rules.d/*persistent-net.rules --exclude /var/lib/* --exclude=/mnt/* --exclude=/proc/* --exclude=/tmp/* --exclude=/dev/log / {varl}IMAGE_DIR{varr}", "echo preparing the local working copy", "touch {varl}IMAGE_DIR{varr}/etc/init.d/ec2-init-user-data", "echo copying the local working copy to the ebs mount", "{cd} {varl}IMAGE_DIR{varr}", "tar -cSf - * | tar xf - -C {varl}EBS_MOUNT_POINT{varr}", "echo size of ebs", "du -sk {varl}EBS_MOUNT_POINT{varr}", "echo size of source", "du -sk {varl}IMAGE_DIR{varr}", "rm -rf {varl}IMAGE_DIR{varr}/*", "umount {varl}EBS_MOUNT_POINT{varr}", "echo " + SCRIPT_END))) .render(OsFamily.UNIX); }
@Test public void testBuildEBS() throws MalformedURLException, IOException { assertEquals( new InitBuilder( "mkebsboot", // name of the script "/tmp", // working directory "/tmp/logs", // location of stdout.log and stderr.log ImmutableMap.of( "IMAGE_DIR", "/mnt/tmp", "EBS_DEVICE", "/dev/sdh", "EBS_MOUNT_POINT", "/mnt/ebs"), // variables // used // inside // of // the // script ImmutableList.<Statement>of( Statements.interpret( "echo creating a filesystem and mounting the ebs volume", // what // to // execute "{md} {varl}IMAGE_DIR{varr} {varl}EBS_MOUNT_POINT{varr}", "rm -rf {varl}IMAGE_DIR{varr}/*", "yes| mkfs -t ext3 {varl}EBS_DEVICE{varr} 2>&-", "mount {varl}EBS_DEVICE{varr} {varl}EBS_MOUNT_POINT{varr}", "echo making a local working copy of the boot disk", "rsync -ax --exclude /ubuntu/.bash_history --exclude /home/*/.bash_history --exclude /etc/ssh/ssh_host_* --exclude /etc/ssh/moduli --exclude /etc/udev/rules.d/*persistent-net.rules --exclude /var/lib/ec2/* --exclude=/mnt/* --exclude=/proc/* --exclude=/tmp/* --exclude=/dev/log / {varl}IMAGE_DIR{varr}", "echo preparing the local working copy", "touch {varl}IMAGE_DIR{varr}/etc/init.d/ec2-init-user-data", "echo copying the local working copy to the ebs mount", "{cd} {varl}IMAGE_DIR{varr}", "tar -cSf - * | tar xf - -C {varl}EBS_MOUNT_POINT{varr}", "echo size of ebs", "du -sk {varl}EBS_MOUNT_POINT{varr}", "echo size of source", "du -sk {varl}IMAGE_DIR{varr}", "rm -rf {varl}IMAGE_DIR{varr}/*", "umount {varl}EBS_MOUNT_POINT{varr}", "echo ----COMPLETE----"))) .render(OsFamily.UNIX), Resources.toString( Resources.getResource("test_ebs." + ShellToken.SH.to(OsFamily.UNIX)), Charsets.UTF_8)); }