firmament-bash
Version:
Firmament module for interpreting commands in JSON files using bash
148 lines (147 loc) • 6.64 kB
JSON
{
"description" : "Pull Ubuntu16 cloud image and build seed CDROM iso",
"prerequisiteGraphUri" : "prep-ubuntu16-cloud-init-01.json",
"options" : {
"displayExecutionGraphDescription": true
},
"asynchronousCommands" : [
{
"description" : "Write stub 'seed' file",
"suppressOutput" : false,
"suppressDiagnostics": true,
"showPreAndPostSpawnMessages": true,
"outputColor" : "",
"useSudo" : false,
"command" : "bash",
"suppressFinalError" : true,
"args" : [
"-c",
"[[ ! -f \"$HOME/ubuntu-cloud-init/seed\" ]] && echo \"#cloud-config\npassword: password\nchpasswd: { expire: False }\nssh_pwauth: True\" > \"$HOME/ubuntu-cloud-init/seed\""
]
},
{
"description" : "Create '_build_seed_img.sh' to build cdrom boot image",
"suppressOutput" : false,
"suppressDiagnostics": true,
"showPreAndPostSpawnMessages": true,
"outputColor" : "",
"useSudo" : false,
"command" : "bash",
"suppressFinalError" : true,
"args" : [
"-c",
"[[ ! -f \"$HOME/ubuntu-cloud-init/_build_seed_img.sh\" ]] && echo \"#!/usr/bin/env bash\ncloud-localds seed.img seed\" > \"$HOME/ubuntu-cloud-init/_build_seed_img.sh\""
]
},
{
"description" : "Create '_scp_config_to_qemu_machine.sh' to get the config script in the VM",
"suppressOutput" : false,
"suppressDiagnostics": true,
"showPreAndPostSpawnMessages": true,
"outputColor" : "",
"useSudo" : false,
"command" : "bash",
"suppressFinalError" : true,
"args" : [
"-c",
"[[ ! -f \"$HOME/ubuntu-cloud-init/_scp_config_to_qemu_machine.sh\" ]] && echo \"#!/usr/bin/env bash\nsudo scp -P 5555 _mount_qnap.sh _config.sh ubuntu@localhost:/tmp\" > \"$HOME/ubuntu-cloud-init/_scp_config_to_qemu_machine.sh\""
]
},
{
"description" : "Get _mount_qnap.sh so it can be copied to VM",
"suppressOutput" : false,
"suppressDiagnostics": true,
"showPreAndPostSpawnMessages": true,
"outputColor" : "",
"useSudo" : false,
"command" : "bash",
"args" : [
"-c",
"wget -O $HOME/ubuntu-cloud-init/_mount_qnap.sh https://raw.githubusercontent.com/jreeme/firmament-bash/master/command-json/cloud-init-config/_mount_qnap.sh"
]
},
{
"description" : "Get _config.sh so it can be copied to VM",
"suppressOutput" : false,
"suppressDiagnostics": true,
"showPreAndPostSpawnMessages": true,
"outputColor" : "",
"useSudo" : false,
"command" : "bash",
"args" : [
"-c",
"wget -O $HOME/ubuntu-cloud-init/_config.sh https://raw.githubusercontent.com/jreeme/firmament-bash/master/command-json/cloud-init-config/_config.sh"
]
},
{
"description" : "Create '_run_seed_img.sh' to build cdrom boot image",
"suppressOutput" : false,
"suppressDiagnostics": true,
"showPreAndPostSpawnMessages": true,
"outputColor" : "",
"useSudo" : false,
"command" : "bash",
"suppressFinalError" : true,
"args" : [
"-c",
"[[ ! -f \"$HOME/ubuntu-cloud-init/_run_seed_img.sh\" ]] && echo \"#!/usr/bin/env bash\nkvm -m 8192 -smp 4 -cdrom seed.img -device e1000,netdev=user.0 -netdev user,id=user.0,hostfwd=tcp::5555-:22 -drive file=xenial-server-cloudimg-amd64-disk1.img,if=virtio,cache=writeback,index=0\" > \"$HOME/ubuntu-cloud-init/_run_seed_img.sh\""
]
},
{
"description" : "Create '_ssh.sh' to ssh into running kvm image",
"suppressOutput" : false,
"suppressDiagnostics": true,
"showPreAndPostSpawnMessages": true,
"outputColor" : "",
"useSudo" : false,
"command" : "bash",
"suppressFinalError" : true,
"args" : [
"-c",
"[[ ! -f \"$HOME/ubuntu-cloud-init/_ssh.sh\" ]] && echo \"#!/usr/bin/env bash\nssh -p 5555 ubuntu@localhost\" > \"$HOME/ubuntu-cloud-init/_ssh.sh\""
]
},
{
"description" : "Download the QCOW2 Ubuntu16 Cloud Image (with cloud-init)",
"suppressOutput" : false,
"suppressDiagnostics": true,
"showPreAndPostSpawnMessages": true,
"outputColor" : "",
"useSudo" : false,
"command" : "bash",
"suppressFinalError" : true,
"args" : [
"-c",
"[[ ! -f \"$HOME/ubuntu-cloud-init/xenial-server-cloudimg-amd64-disk1.img\" ]] && wget http://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img -O \"$HOME/ubuntu-cloud-init/xenial-server-cloudimg-amd64-disk1.img\""
]
},
{
"description" : "apt-get install [...]",
"suppressOutput" : false,
"suppressDiagnostics": true,
"showPreAndPostSpawnMessages": true,
"useSudo" : true,
"command" : "apt-get",
"args" : [
"install",
"-y",
"qemu-kvm"
]
}
],
"serialSynchronizedCommands": [
{
"description" : "[sudo] chmod 755 _build_seed_img.sh",
"suppressOutput" : false,
"suppressDiagnostics": true,
"showPreAndPostSpawnMessages": true,
"outputColor" : "",
"useSudo" : true,
"command" : "bash",
"args" : [
"-c",
"chmod 755 \"$HOME/ubuntu-cloud-init/_build_seed_img.sh\" \"$HOME/ubuntu-cloud-init/_run_seed_img.sh\" \"$HOME/ubuntu-cloud-init/_config.sh\" \"$HOME/ubuntu-cloud-init/_scp_config_to_qemu_machine.sh\" \"$HOME/ubuntu-cloud-init/_ssh.sh\" \"$HOME/ubuntu-cloud-init/_mount_qnap.sh\""
]
}
]
}