diff --git a/b9.cabal b/b9.cabal
--- a/b9.cabal
+++ b/b9.cabal
@@ -1,5 +1,5 @@
 name:                b9
-version:             0.5.48
+version:             0.5.49
 
 synopsis:            A tool and library for building virtual machine images.
 
@@ -106,6 +106,7 @@
                    , aeson >= 1.0
                    , async >= 2.1
                    , base >= 4.8 && < 5
+                   , base64-bytestring
                    , binary >= 0.8.3
                    , bytestring >= 0.10.8
                    , conduit >= 1.2
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
@@ -19,8 +19,9 @@
 import           B9.Content.ErlangPropList
 import           B9.Content.StringTemplate
 import           B9.Content.YamlObject
+import qualified Data.ByteString.Base64 as B64
 import qualified Data.ByteString.Char8 as B
-import qualified Data.ByteString as BStrict
+import qualified Data.ByteString as BS
 
 import           Test.QuickCheck
 import           B9.QCUtil
@@ -32,31 +33,38 @@
     | RenderYaml (AST Content YamlObject)
     | FromString String
     | FromTextFile SourceFile
+    -- | The data in the given file will be base64 encoded.
+    | RenderBase64BinaryFile FilePath
+    -- | This data will be base64 encoded.
+    | RenderBase64Binary B.ByteString
     | 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
 
 instance Arbitrary Content where
   arbitrary = oneof [FromTextFile <$> smaller arbitrary
+                    ,RenderBase64BinaryFile <$> smaller arbitrary
                     ,RenderErlang <$> smaller arbitrary
                     ,RenderYaml <$> smaller arbitrary
                     ,FromString <$> smaller arbitrary
+                    ,RenderBase64Binary . BS.pack <$> smaller arbitrary
                     ,FromURL <$> smaller arbitrary]
 
 instance CanRender Content where
   render (RenderErlang ast) = encodeSyntax <$> fromAST ast
   render (RenderYaml ast) = encodeSyntax <$> fromAST ast
   render (FromTextFile s) = readTemplateFile s
+  render (RenderBase64BinaryFile s) = readBinaryFileAsBase64 s
+    where
+      -- | Read a binary file and encode it as base64
+      readBinaryFileAsBase64 :: MonadIO m => FilePath -> m B.ByteString
+      readBinaryFileAsBase64 f = B64.encode <$> liftIO (B.readFile f)
+
+  render (RenderBase64Binary b) = return (B64.encode b)
   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] ""
