diff --git a/b9.cabal b/b9.cabal
--- a/b9.cabal
+++ b/b9.cabal
@@ -1,5 +1,5 @@
 name:                b9
-version:             0.5.47
+version:             0.5.48
 
 synopsis:            A tool and library for building virtual machine images.
 
diff --git a/src/lib/B9/Content/Generator.hs b/src/lib/B9/Content/Generator.hs
--- a/src/lib/B9/Content/Generator.hs
+++ b/src/lib/B9/Content/Generator.hs
@@ -20,6 +20,7 @@
 import           B9.Content.StringTemplate
 import           B9.Content.YamlObject
 import qualified Data.ByteString.Char8 as B
+import qualified Data.ByteString as BStrict
 
 import           Test.QuickCheck
 import           B9.QCUtil
@@ -32,8 +33,13 @@
     | FromString String
     | FromTextFile SourceFile
     | FromURL String
+    | FromStrictBinary BStrict.ByteString
     deriving (Read,Show,Typeable,Eq,Data,Generic)
 
+-- | Pack bytes into a 'Content' such that a binary file will generated.
+packBinaryContent :: [Word8] -> Content
+packBinaryContent = FromStrictBinary . BStrict.pack
+
 instance Hashable Content
 instance Binary Content
 instance NFData Content
@@ -50,6 +56,7 @@
   render (RenderYaml ast) = encodeSyntax <$> fromAST ast
   render (FromTextFile s) = readTemplateFile s
   render (FromString str) = return (B.pack str)
+  render (FromStrictBinary b) = return b
   render (FromURL url) = lift $ do
      dbgL $ "Downloading: " ++ url
      (exitcode,out,err) <- liftIO $ readProcessWithExitCode "curl" [url] ""
