Commit Graph

221 Commits

Author SHA1 Message Date
Megan Marsh af01860fa9 remove old docker-toolbox limitation. 2019-03-27 15:29:22 -07:00
Megan Marsh 3b87f2a519 stop container before committing if windows 2019-03-27 15:25:51 -07:00
Megan Marsh 8f3313d81e Create new docker communicator for windows containers 2019-03-27 15:25:32 -07:00
Adrien Delorme 9f82b75e57 Use the hashicorp/go-getter to download files
* removed packer.Cache and references since packer.Cache is never used except in the download step. The download step now uses the new func packer.CachePath(targetPath) for this, the behavior is the same.
* removed download code from packer that was reimplemented into the go-getter library: progress bar, http download restart, checksuming from file, skip already downloaded files, symlinking, make a download cancellable by context.
* on windows if packer is running without symlinking rights and we are getting a local file, the file will be copied instead to avoid errors.
* added unit tests for step_download that are now CI tested on windows, mac & linux.
* files are now downloaded under cache dir `sha1(filename + "?checksum=" + checksum) + file_extension`
* since the output dir is based on the source url and the checksum, when the checksum fails, the file is auto deleted.
* a download file is protected and locked by a file lock,
* updated docs
* updated go modules and vendors
2019-03-13 12:11:58 +01:00
Megan Marsh 3b6ff0fe3e
Merge pull request #7106 from hashicorp/revert_docker_changes
docker: user /bin/sh by default
2019-02-28 15:31:53 -08:00
Adrien Delorme f57953d4ff Docker needs a temporary dir that is inside the $HOME dir 2019-01-18 16:42:04 +01:00
Adrien Delorme 9f7b4ffc17
Merge branch 'master' into pr/6950 2019-01-09 10:11:18 +01:00
Ladar Levison 6ac5971288 Fixed cmd order for docker driver. Added config to post proc. 2018-12-17 22:59:41 -06:00
Ladar Levison 10095678c8 Adding driver changes. 2018-12-17 22:37:32 -06:00
Ladar Levison 21fdbadf04 Adding changes to import prototype. 2018-12-17 22:35:59 -06:00
Ladar Levison 050f809a1c Add changes var to docker driver import func. 2018-12-17 22:04:43 -06:00
Adrien Delorme 2718a5ed62 Revert "revert changes to docker entrypoint; since this is a backwards-breaking change it needs to wait for a minor release"
This reverts commit 2a79d64ae0.
2018-12-13 10:23:46 +01:00
Megan Marsh 2a79d64ae0 revert changes to docker entrypoint; since this is a backwards-breaking change it needs to wait for a minor release 2018-12-12 15:30:24 -08:00
Adrien Delorme b7222d1f56 Add tmp package that offers Dir & File funcs
this regroups the calls of tmp func calls into one package.
the tmp pkg allows to store tmp files under a common directory for easier managment

Squashed commit of the following:
commit 74b674c01560c6b547e9cab5e8afb486f0fe7d6c
Merge: fc94b5714 66001525d
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Fri Nov 2 02:02:38 2018 -0400

    Merge branch 'remove_TMPDIR_docs' of github.com:tb3088/packer into remove_TMPDIR_docs

commit fc94b571428447aaf2e5171967c95cdf9e5c73ff
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Fri Nov 2 01:42:38 2018 -0400

    update tests to honor configured temporary directory

commit 5a562359f4937af506607dd96ed1c46426093f52
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Thu Nov 1 18:52:38 2018 -0400

    sync straggler to refactor. implement tests at packer/configfile instead of buried in docker.

commit 9d5a4a0935bfd049e2f8f50ad73e4455b42c9410
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Thu Nov 1 15:39:46 2018 -0400

    insert URL to GoLang API for os.TempDir()

commit fbae4c2e051898aecd8705e9d8a20353430ede23
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Thu Nov 1 07:41:29 2018 -0400

    revise documentation to match code

commit 3590fae8bd0afa92a161a49ed794ee32e357d583
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Thu Nov 1 07:21:59 2018 -0400

    refacter config_file. replace all hard-coded os.TempDir with wrapper

commit d5c5306a97b648ded06a8eb76ce728f07c9924f0
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Wed Oct 31 20:11:36 2018 -0400

    close massive file overwrite hole with TempDir

commit 0a72297da86089fbd07e4f7d9472a92fa4d1c733
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Wed Oct 31 01:06:00 2018 -0400

    adjust var declaration scope

commit 20f68228b6c372d984ea5b055cfc8bda9b110ac5
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Wed Oct 31 00:54:35 2018 -0400

    use mktemp() equivalent to create temporary directory

commit c73ebe3d8321664a2685a0baa8e441dd895b0db4
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Tue Oct 30 20:40:58 2018 -0400

    remove extraneous variable declaration, fix FOR loop

commit 63549b8bd745a0090b15ed0b0ebf644162db27db
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Tue Oct 30 19:30:44 2018 -0400

    match styistic convension with rest of docs

commit 976101074942db36f10d3a686d6d29ddb7c01926
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Tue Oct 30 19:08:39 2018 -0400

    revert dangling config file change

commit 95159afbc05eac96ed11c3183af5fb0abe2f2d5c
Author: Matthew Patton <matthew.patton@itgfirm.com>
Date:   Fri Dec 29 23:53:43 2017 -0500

    replace invalid TMPDIR variable wth PACKER_TMP_DIR.
    update ConfigTmpDir() to try common temporary paths first and
    only write to configDir() as a last resort.

commit 66001525d72de56a4cf9339b900c46f59bc6e91a
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Fri Nov 2 01:42:38 2018 -0400

    update tests to honor configured temporary directory

commit e9b6adefeae8c65eb8aa47fef38cbf0aa424338c
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Thu Nov 1 18:52:38 2018 -0400

    sync straggler to refactor. implement tests at packer/configfile instead of buried in docker.

commit 852113ed076e2d14e5dca6815ea680da1e2896bb
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Thu Nov 1 15:39:46 2018 -0400

    insert URL to GoLang API for os.TempDir()

commit 54add38d1d1c6e283cd444b367ed8bd49a5f3699
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Thu Nov 1 07:41:29 2018 -0400

    revise documentation to match code

commit 6b5b8f6d4edad0e187ca13d64ac4118f34eee643
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Thu Nov 1 07:21:59 2018 -0400

    refacter config_file. replace all hard-coded os.TempDir with wrapper

commit c22092c601c33484327674f322c7379fa41506d7
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Wed Oct 31 20:11:36 2018 -0400

    close massive file overwrite hole with TempDir

commit 7a730450916bf8e5dbc2a741ec233a49466ab7cc
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Wed Oct 31 01:06:00 2018 -0400

    adjust var declaration scope

commit 0f2933adb6f6922dfeab78a95371a444ec8918ab
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Wed Oct 31 00:54:35 2018 -0400

    use mktemp() equivalent to create temporary directory

commit d74839ede05dacf712b55a7bb48aec19fe6b007f
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Tue Oct 30 20:40:58 2018 -0400

    remove extraneous variable declaration, fix FOR loop

commit eb65416619437e4a3dec90277770803dd5b2281c
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Tue Oct 30 19:30:44 2018 -0400

    match styistic convension with rest of docs

commit acaa2b31ed463219c4ef099f351eec72406e2989
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Tue Oct 30 19:08:39 2018 -0400

    revert dangling config file change

commit e573fde668dcb418561e61535c1d68b2888f5b0f
Author: Matthew Patton <matthew.patton@itgfirm.com>
Date:   Fri Dec 29 23:53:43 2017 -0500

    replace invalid TMPDIR variable wth PACKER_TMP_DIR.
    update ConfigTmpDir() to try common temporary paths first and
    only write to configDir() as a last resort.

commit 39a9874afc9dea71b36753375fb7feb61ffecf69
Merge: 8a413cfe8 3315812c2
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Tue Oct 30 18:19:26 2018 -0400

    Merge branch 'master' of https://github.com/hashicorp/packer into prestine

commit 8a413cfe83b0a70dbd99c32d936334ca5788ca9b
Merge: e07491de5 4e14710a6
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Mon Oct 1 20:18:10 2018 -0400

    Merge remote-tracking branch 'upstream/master' into prestine

commit e07491de59cead0b337a7f57f4a6c625e1f560ab
Merge: 42610a35d a1fa35dff
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Tue Aug 21 13:26:19 2018 -0400

    Merge remote-tracking branch 'upstream/master' into prestine

commit 42610a35d5ef65af8844a58ad70e2ec75262da6a
Merge: 5298142da 0d63cf7bc
Author: Matthew Patton <matthew.patton@itgfirm.com>
Date:   Tue Jun 19 22:45:05 2018 -0400

    Merge remote-tracking branch 'upstream/master' into prestine

commit 5298142da6da95354844f201deeeef3c599e48b2
Merge: 7bb110bc7 9d9736552
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Mon Jun 11 15:10:09 2018 -0400

    Merge remote-tracking branch 'upstream/master' into prestine

commit 7bb110bc744c9797fcaec25a265d9b85a22d6d6b
Merge: a61c869ca 6189d66e7
Author: Matthew Patton <matthew.patton@itgfirm.com>
Date:   Wed May 9 23:41:22 2018 -0400

    Merge remote-tracking branch 'upstream/master' into prestine

commit a61c869ca7268acf0e3b1e1fa7a8ee7feea65984
Merge: 098101dd9 4be5f072c
Author: Matthew Patton <matthew.patton@itgfirm.com>
Date:   Fri May 4 10:13:04 2018 -0400

    Merge remote-tracking branch 'upstream/master' into prestine

commit 098101dd99f08b0ca110d33eff6904537c6d21de
Merge: fefaf0fa6 554b2b4a5
Author: Matthew Patton <matthew.patton@itgfirm.com>
Date:   Tue May 1 20:52:30 2018 -0400

    Merge branch 'EOL-handling' into prestine

Co-Authored-By: Matthew Patton <pattonme@yahoo.com>
2018-12-12 16:35:57 +01:00
Ali Rizvi-Santiago a6af04417e Moved the entrypoint argument for the docker builder in front of the image so it's passed correctly as an argument. 2018-12-10 15:09:56 -06:00
Ali Rizvi-Santiago 2e977019e4 Modified the docker builder's default run_command to specify the shell via the entrypoint command line argument as suggested by @vrubiolo in #6920. 2018-12-04 23:52:17 -06:00
Ali Rizvi-Santiago 310ea6c006 Updated docker's default config to use regular bourne shell instead of bourne again. Closes #6920. 2018-12-04 18:28:48 -06:00
Megan Marsh 38cc525ec7 new option allowing user to clean up the ephemeral ssh key from the authorized_keys file 2018-09-14 11:06:38 -07:00
Adrien Delorme 61480f41dc fix some go vet issues in tests ( composite literal uses unkeyed fields ) 2018-08-31 11:54:12 +02:00
Adrien Delorme 41f6e0334d refactor all copy pasted sshConfig with into communicator.Config.SSHConfigFunc
* still need to append the auth methods into an array for gracefullness
2018-08-22 17:02:23 +02:00
Megan Marsh ee1ff3132d remove attempt to discover whether destination is a directory from upload function in various communicators 2018-04-10 08:13:06 -07:00
Matthew Hooker ff64ccda55
Merge pull request #5426 from hashicorp/fix_4915
Fix 4915
2018-02-05 14:54:27 -08:00
Matthew Hooker 8cd403425e
test fixes WIP 2018-01-24 17:09:17 -08:00
Matthew Hooker 7a189a83a1
fix imports
`find . -type f -name '*.go' -not -path "./vendor/*" -exec goimports -w {} \;`
2018-01-24 17:09:17 -08:00
Matthew Hooker a831d522be
change run signatures
Run now takes a context as well as a statebag. We'll assign the context
to the blank identifier to prevent namespace collisions. We'll let the
step authors opt-in to using the context.

`find . -iname "step_*.go" -exec gsed -i'' 's/func \(.*\)Run(/func \1Run(_ context.Context, /' {} \;`
2018-01-24 17:09:17 -08:00
Matthew Hooker 366dc3da0a
move multistep imports to helper.
gomvpkg -from "github.com/mitchellh/multistep" -to "github.com/hashicorp/packer/helper/multistep"
2018-01-24 17:09:15 -08:00
Matthew Hooker ebe995c0ff
run goimports 2018-01-22 17:21:10 -08:00
Krzysztof Wilczynski 567b566c23
docker: Remove AWS credentials and Session Token from being shown in the log.
Signed-off-by: Krzysztof Wilczynski <kw@linux.com>
2017-12-10 20:55:03 +01:00
Matthew Hooker b07a0cd6f0
fix tests
always sort telemetry options
2017-11-14 16:39:03 -08:00
Matthew Hooker 1901c0385f
remove login_email from docker
adds fixer
removes documentation
removes from docker builder and docker-push pp
2017-10-25 10:53:06 -07:00
Aaron Browne ffc63a8724 Use amazon common AccessConfig for ecr_login
Signed-off-by: Aaron Browne <aaron0browne@gmail.com>
2017-10-17 15:00:19 -04:00
Aaron Browne 8df643c343 Add aws_profile option to docker-push ecr_login
An aws_profile option is added to the AWS ECR login credentials
configuration to allow using shared AWS credentials stored in
a non-default profile.

Signed-off-by: Aaron Browne <aaron0browne@gmail.com>
2017-10-16 16:55:34 -04:00
localghost 5866d4ea24 Move container user inspect to StepConnectDocker. 2017-10-10 22:45:47 +02:00
Megan Marsh 8452ca898c implemented for docker communicator 2017-10-03 17:06:33 -07:00
localghost ba72021274 Fix owner of files uploaded to docker container run as non-root. 2017-10-03 21:49:26 +02:00
Matthew Hooker b3661c1f63
builder/docker: set user during exec.
Add `exec_user` option to control what user `docker exec` is run as.
2017-09-28 16:39:23 -07:00
Matthew Hooker 392af507e0
builder/docker: respect rsync semantics when uploading directories. 2017-09-12 14:45:25 -07:00
Matthew Hooker 4edbd5322c
docker: stream uploads over stdin
Only write to a tempfile if we don't have a stat struct
2017-08-24 13:29:38 -07:00
Michael Juliano c8db128dc5
Modified func Upload to use docker cp 2017-08-24 13:29:37 -07:00
Megan Marsh ef858857e4 fix bug introduced by 5221 2017-08-14 14:07:21 -07:00
Sergei A Mamonov 07f7183b64 Add docker container dir to template 2017-08-14 09:26:05 -07:00
Megan Marsh 199b9062b0 fix file copy script to prevent error when encountering empty directory 2017-08-09 15:19:17 -07:00
Megan Marsh a2f7a65e35 fix communicator tests 2017-07-14 13:58:28 -07:00
Megan Marsh a281e60e15 de-mangle windows filepath to something docker can handle 2017-06-22 10:21:30 -07:00
Matthew Hooker 6581e0b7d6
add hostkeycallback everywhere else 2017-06-21 12:00:34 -07:00
Matthew Hooker 81522dced0
move packer to hashicorp 2017-04-04 13:39:01 -07:00
Matthew Hooker 79287d7e47
simplify some code 2017-03-28 20:36:20 -07:00
Matthew Hooker 230079f73a
spell fixes 2017-03-28 20:36:19 -07:00
guessi 66615e3f56 reuse the func DockerDriver.Version() 2017-02-16 08:26:44 +08:00
guessi 5eae809b0c improve description 2017-02-16 01:14:21 +08:00
guessi c5e01da3c6 Conditional ignore `force` flag for `docker-tag`
`docker tag -f` will now become an error, since it was removed after
upgrading docker daemon to 1.12.0 (or later)

this PR is to bypass `force` flag if docker >= 1.12.0 was detected

reference:
- https://docs.docker.com/engine/deprecated/#/f-flag-on-docker-tag

Signed-off-by: guessi <guessi@gmail.com>
2017-02-16 00:50:46 +08:00
Matthew Hooker c41e32dbc1
print stderr on docker import failure 2017-02-09 20:41:29 -08:00
Matthew Hooker a51f492558
communicator/docker: preserve file mode. 2017-01-23 13:47:22 -08:00
Matthew Hooker 9e2d69fb97
builder/docker: create export dir if needed 2017-01-21 23:51:08 -08:00
Rickard von Essen 112f5abdae
docker: Fix crash when performing log in to ECR with an invalid URL.
Closes #4383
2017-01-11 20:23:24 +01:00
Florian Rey 73c5eac4f0 Handle commit author & message the same way 2016-11-24 13:33:42 +01:00
Florian Rey 06bebb63d0 Add log 2016-11-24 13:07:01 +01:00
Florian Rey c925acf502 Introduce docker commit changes 2016-11-24 11:42:34 +01:00
Matthew Hooker 48bdae93d1 aws-sdk: use session.NewSession 2016-11-01 15:53:04 -07:00
Rickard von Essen 13c9db5dd5 Merge pull request #3885 from orivej/on-error
Add -on-error command line argument to allow preserving artifacts on builder errors
2016-09-20 12:28:14 +02:00
Rickard von Essen 476d981211 Merge pull request #3800 from benwtr/issue-3142-match-dotfiles-docker-communicator
Fix file provisioner dotfile matching w/ docker builder
2016-09-20 12:25:37 +02:00
Orivej Desh 6762965696 Add -on-error command line argument to allow preserving artifacts on builder errors
Resolves #409
2016-09-16 12:15:00 +00:00
Rickard von Essen 10cba9795f Merge pull request #3476 from bhcleek/ansible-with-docker
fix docker builder with ansible provisioner
2016-09-12 13:56:28 +02:00
Rickard von Essen b2d9782a9e
Improved support for Amazon EC2 Container Registry - ECR
This adds support for authenticating towards ECR in the docker builder
and docker-push post-processor using them same mechanisms as in the
amazon builders. I.g. access key/secret key, credentials on file,
environment variables, sts tokens or IAM instance roles.
2016-09-04 14:33:47 +02:00
Ben P 8ecbbe9037 backticks instead of $() for csh compatibility 2016-08-11 11:27:56 -07:00
Ben P 0d7937fce1 [docker] ls -A instead of * glob for copying paths 2016-08-11 18:03:48 +00:00
Hao 5139b853fa privilege enabled docker container (#3475)
Issue #2724
2016-04-29 19:12:20 -07:00
Billie H. Cleek 165ec694ab fix docker builder with ansible provisioner
Refactor the docker builder so that it does not expect output from the
container to be strictly line oriented or even text, because SFTP, used by
Ansible, is a binary protocol. Since `docker exec` was introduced in 2014,
remove support for older versions of docker that required using `docker
attach`. The old notes in the docker builder referring to specific issues have
all been resolved or else closed because they could not be reproduced.
2016-04-27 13:54:40 -07:00
Vasiliy Tolstov feee19e4ed file provisioner improvements
* allow specify source/destination as dir
* allow specify many files as source

Signed-off-by: Vasiliy Tolstov <v.tolstov@selfip.ru>
2016-02-12 11:48:28 -08:00
Mark Peek bc0f438db0 Use alternate temp directories for docker
The temporary directories will be created under the packer config
directory. Setting PACKER_TMP_DIR will override this path.
2015-10-20 11:34:14 -07:00
Seth Vargo e863dbe100 Revert "Merge pull request #2807 from markpeek/markpeek-docker-tmpdir"
This reverts commit 31d3678814, reversing
changes made to a3a7c974d0.
2015-10-15 14:31:13 -04:00
Chris Bednarski 5eddaa77bf Corrected sprintf formatting in error messages 2015-10-08 17:43:54 -07:00
Chris Bednarski cc153aa71f Added a test to verify byte size for larger files downloaded from docker 2015-10-08 17:15:27 -07:00
Chris Bednarski 8ff5c07d0c Add a new packer template for testing large file downloads 2015-10-08 16:37:14 -07:00
Mark Peek 77bfd1de2e Workaround docker-machine shared folder mapping issue
When using docker-machine on a Mac only the /Users folder is shared with
the VM. Uploads fail since the normal tmpdir is not shared. This change
uses the local packer directory (usually when run in the users home
folders) allowing it to work without setting TMPDIR explicitly. A better
fix would be to use the docker API directly but that would force users
to use docker API version 20+.
- fixes #901, fixes #1752, fixes #2436, fixes #2675, fixes #2697.
2015-10-07 13:29:53 -07:00
Chris Bednarski 1830c81eab Correct and expand docker config tests for commit, discard, export_path 2015-08-20 14:15:52 -07:00
Chris Bednarski 5503b7f496 Don't export errors 2015-08-19 13:12:16 -07:00
Chris Bednarski 746b9a8391 Formatting tweaks 2015-08-18 16:55:29 -07:00
Chris Bednarski 1b1bd19c20 Reformat code so we can grep for this more easily 2015-08-18 16:47:12 -07:00
Chris Bednarski 750a9c61de Added discard option for docker builder, also reorganized some error messages 2015-08-18 14:38:32 -07:00
Chris Bednarski 32978a5109 Add an explicit error message when there is no output file specified 2015-08-18 13:48:18 -07:00
Chris Bednarski 5ad4b0e97e Added tests and handle the tar format from docker cp - 2015-08-12 12:16:26 -07:00
Chris Bednarski 8cdd078952 Changed fixtures so we can do a directory test too 2015-08-12 11:48:47 -07:00
Chris Bednarski 62c5e8358d Added a test for docker upload and download 2015-08-12 11:36:56 -07:00
Chris Bednarski de9ecd2d62 Add a test fixture file 2015-08-12 11:36:33 -07:00
Chris Bednarski 3523ffdce1 Farewell extra line. You were pretty but out of place. 2015-08-12 11:36:10 -07:00
Chris Bednarski 047382eec9 Style tweak 2015-08-11 22:30:19 -07:00
Chris Bednarski dc3c55cf8e Implemented downloader for the docker communicator so we can pull files out of a container 2015-08-11 22:22:52 -07:00
Chris Bednarski 715662f60b Reformat 2015-07-27 16:42:06 -07:00
Chris Bednarski f3f3d1fe73 Formatting 2015-07-16 19:34:36 -07:00
georgevicbell bf0c326cd5 Update step_connect_docker.go 2015-07-16 22:07:39 -04:00
georgevicbell b2811a8252 Update communicator.go 2015-07-16 21:51:13 -04:00
georgevicbell d00271aab3 Fix Capitilzation 2015-07-16 21:50:24 -04:00
georgevicbell 4da4150abe Update communicator.go 2015-07-16 21:37:08 -04:00
georgevicbell 3a681d0c0c Add Pty Bool 2015-07-16 21:22:11 -04:00
georgevicbell fb39fa2cc6 Update step_connect_docker.go 2015-07-16 21:13:04 -04:00
georgevicbell e3ab74e09f Add Config struct for docker PTY 2015-07-16 21:06:03 -04:00
Mitchell Hashimoto 84189f7a28 builder/*: properly save interpolation context 2015-06-22 09:22:42 -07:00
Mitchell Hashimoto cab2665119 builder/docker: support custom communicators 2015-06-14 22:09:38 -07:00
Mark Peek 16320372d6 Make some builder config usage more consistent with other builders 2015-06-12 14:02:09 -07:00