Commit Graph

913 Commits

Author SHA1 Message Date
DanHam 485d565e32
Ensure comments are easily readable in a standard terminal 2018-06-15 00:49:15 +01:00
DanHam e0bcba4913
Make the upload of env vars retryable in case of restarts 2018-06-15 00:09:50 +01:00
localghost e1a1bb522d Merge remote-tracking branch 'origin/master' into ansible_local_playbook_files_update 2018-05-26 22:00:50 +02:00
localghost 263a3c6910 Include some of the refactoring reverted by previous revert commit. 2018-05-26 21:59:43 +02:00
localghost 46a1c5d945 Revert "Unify handling PlaybookFile and PlaybookFiles."
This reverts commit 81db142c8a.
2018-05-26 21:58:08 +02:00
M. Marsh 62e1323577
Merge pull request #5956 from hashicorp/dedupe_shell_local
Deduplicate the code for the shell-local post-processor and shell-local provisioner
2018-05-23 15:54:27 -07:00
localghost 6c7aa724eb Fix tests after merging with master. 2018-05-16 22:43:30 +02:00
localghost c33ca8ce64 Merge remote-tracking branch 'origin/master' into ansible_local_playbook_files_update 2018-05-16 22:14:12 +02:00
localghost 11f2b1ec24 Merge remote-tracking branch 'origin/master' into ansible_local_playbook_files_update 2018-05-16 21:54:39 +02:00
localghost 81db142c8a Unify handling PlaybookFile and PlaybookFiles. 2018-05-16 21:54:19 +02:00
M. Marsh abb70bfa80
Merge pull request #6215 from tb3088/delay-extraArgs-4462_clean
Delay evaluation of ExtraArguments and standardize puppet-server and puppet-masterless
2018-05-08 15:03:55 -07:00
Matthew Patton d22fb6d60b reformat via gofmt 2018-05-08 12:44:15 -04:00
Matthew Patton 5c7d5fac75 expose OS-specific ModulePathJoiner 2018-05-08 12:21:04 -04:00
Matthew Patton 399edbe5e7 revert false economy WRT .ExtraArguments 2018-05-08 10:12:22 -04:00
Matthew Patton b505cecd98 sync docs to code 2018-05-08 09:53:18 -04:00
Megan Marsh 51bcc7aa13 add new feature for telling shell-local whether to use linux pathing on windows; update docs with some examples. 2018-05-07 15:10:10 -07:00
Megan Marsh e983a94a88 fix default windows bash call for shell-local provisioner and move chmod command from the execute_command array into the portion of code where we actually generate inline scripts, sparing users the need to think about this modification which Packer should really handle on its own
make bash call work on windows
2018-05-07 15:10:10 -07:00
Megan Marsh 6dc4b1cbdc move all of the run commands for shell-local provisioner and postprocessor into common library too 2018-05-07 15:10:09 -07:00
Megan Marsh 926327beba deduplicate all validation and interpolation of the shell-local config, sharing options between shell-local provisioner and post-processor. Maintain backwards compatibility with shell-local provisioner. 2018-05-07 15:10:09 -07:00
Megan Marsh 616b41e58f deduplicate the nearly identical communicators for the shell-local provisioner and post-processor, moving single communicator into a new common/shell-local module 2018-05-07 15:10:09 -07:00
M. Marsh 23e51d21c2
Merge pull request #4300 from don-code/master
Allow skipping Chef Client staging directory cleanup.
2018-05-07 14:25:57 -07:00
Megan Marsh fbbcbd772b remove file stat 2018-05-03 11:08:41 -07:00
Matthew Patton 735f5273a0 tab/space fixup via gofmt 2018-05-01 17:16:47 -04:00
Matthew Patton b2d78339b0 add missing removeDir() to allow StagingDir clean-up post-run 2018-05-01 17:04:40 -04:00
Matthew Patton 514a597825 alphabetize datastructures 2018-05-01 16:38:01 -04:00
DanHam 69ac7b56f6
Remove tmp files created by provisioner/windows-shell tests 2018-04-30 20:38:03 +01:00
DanHam b738f41efa
Remove tmp files created by provisioner/powershell tests 2018-04-30 20:38:03 +01:00
DanHam 70ccb8adff
Remove tmp files created by provisioner/puppet-server tests 2018-04-30 20:38:03 +01:00
DanHam fd07cfd2b1
Remove tmp files created by provisioner/puppet-masterless tests 2018-04-30 20:38:03 +01:00
Matthew Patton b4bec692ed remove accidental duplicate, initialize WorkingDir for puppet-server 2018-04-28 01:13:23 -04:00
Matthew Patton 47d46b0c64 use filpath() to make tests portable across Windows and non-Windows 2018-04-28 00:17:27 -04:00
Matthew Patton 8bb7798ea7 standardize across both puppet-{masterless,server}
move comments outside of datastructure

remove duplicated section

fix line-endings

Golang doesn't use C-style comments

run gofmt for alignment and whitespace management

remove danling "options" and fix class reference

syncronize tests to new command structure
2018-04-27 23:47:05 -04:00
Don Luchini edb845b3f4 Allow skipping Chef Client staging directory cleanup (fixes #3151). 2018-04-27 19:35:01 -04:00
Matthew Patton 5eb497a2c5 reorder terms and define an intermediate variable
(cherry picked from commit d0251f9741cf4d7659ecb4496d103f99a0e4184a)
(cherry picked from commit dab1b903ad88af0e3e40168634c1eb227078b4eb)
2018-04-27 18:04:36 -04:00
DanHam 7cf31060eb
Remove script containing Win-Shell inline commands from local tmp when done 2018-04-26 00:32:52 +01:00
DanHam b9ab2c8048
Remove script containing PowerShell inline commands from local tmp when done 2018-04-26 00:32:52 +01:00
DanHam ccf687dac6
Fix tests 2018-04-24 11:10:35 +01:00
DanHam 5419375413
Change to CMD % style path is no longer required 2018-04-24 11:10:35 +01:00
DanHam 5b652316d9
Dollar's in env vars used in paths may cause problems for ssh
* Dollars are interpreted by *nix shells so paths using env vars such as
  ${env:SYSTEMROOT} will cause issues
2018-04-24 11:10:35 +01:00
DanHam 4e7feea184 Allow users to specify the location that the env vars file is uploaded to
Previously the location the file was uploaded to was set internally and
used ${env:SYSTEMROOT}/Temp as the destination folder.
By default, in order to inject the required environment variables, the file
is 'dot sourced' by the 'execute_command' using the {{ .Vars }} variable.
Unfortunately the inclusion of the dollar in the path caused issues for
users connecting over ssh as the (typically bash) shell running the execute
command would try and interpret the dollar sign.
The change allows users to specify the location the file is uploaded to,
thereby allowing the user to specify a custom 'execute_command' that
escapes any dollar signs that could be present in the path.
If not set the upload path now defaults to using C:/Windows/Temp as the
upload folder.
2018-04-24 11:09:55 +01:00
Megan Marsh 3afb243f11 use build name to ensure that winrm password and other shared state is not overwritten if two builders need the password in the same packer run. 2018-04-16 13:41:17 -07:00
M. Marsh 56dd8cdb63
Merge pull request #3891 from nouney/f-generated-files
Add "generated" file tag to allow users to upload files created on the fly.
2018-04-05 16:08:38 -07:00
Omer Katz c0719a3590
Allow using a custom inventory file. 2018-04-05 12:56:07 +03:00
Joshua C. Randall 406bf9c4aa override ansible executor inventory to use InventoryDirectory instead of InventoryFile when set 2018-03-26 17:24:58 +01:00
DanHam ef4817d644 Fix vertical spacing 2018-03-23 14:01:30 +00:00
DanHam 34db6c4ab1
Remove temp debugging output 2018-03-23 12:45:49 +00:00
Megan Marsh 072cd6b745
Merge pull request #5998 from hashicorp/do_5895
allow users of AWS to use the dynamically-generated admin password wh…
2018-03-22 16:01:22 -07:00
Megan Marsh 4e321b2dfa don't need to use a receiver with this function 2018-03-22 15:55:24 -07:00
Matthew Hooker 732a532d0e
pass file info during shell file upload 2018-03-20 16:32:55 -07:00
Megan Marsh ce1ab1f021 fix winrm password 2018-03-15 09:44:22 -07:00
Megan Marsh 559719020c use {{.WinRMPassword}} instead of some other weirdness 2018-03-14 17:19:17 -07:00
Megan Marsh d689e6b4d3 allow users of AWS to use the dynamically-generated admin password which we use as the winRM password as an elevated password in the Powershell provisioner, as well as an environment variable in same provisoner. 2018-03-14 15:58:12 -07:00
Megan Marsh 414dd80e61
Merge pull request #6013 from jsoref/spelling
Spelling
2018-03-14 09:50:27 -07:00
Megan Marsh b33d6ce82e fix salt provisioner on linux 2018-03-13 16:13:23 -07:00
Megan Marsh e2f55a50b5
Merge pull request #5702 from brokenbot/salt-masterless-windows
Windows Support for salt-masterless provisioner #5432
2018-03-13 14:26:40 -07:00
Josh Soref 24b4c36fc9 spelling: function 2018-03-13 07:52:02 +00:00
Josh Soref b545c6f87e spelling: flattened 2018-03-13 07:50:25 +00:00
Josh Soref 04d6bfc696 spelling: environment 2018-03-13 07:41:21 +00:00
Josh Soref 684a3f5d8a spelling: custom 2018-03-13 07:26:33 +00:00
Megan Marsh f3a538db46 fix tests 2018-03-09 13:36:47 -08:00
Megan Marsh 3faf73b5f3 change backslashes to forward slashes in powershell provisioner; was breaking with cygwin 2018-03-09 09:29:29 -08:00
SwampDragons 7d9a86becb
Revert "Fix #5335" 2018-02-12 11:03:19 -08:00
DanHam 2d830d5d43
Auto escape chars special to PowerShell in user supplied data 2018-02-08 12:03:19 +00:00
DanHam aaf7102b9a
Tests for escape of chars special to PowerShell in user supplied data 2018-02-08 12:03:18 +00:00
DanHam a7b118ed94
Fix tests post changes. Add test for upload func. 2018-02-08 12:03:18 +00:00
DanHam 478589abec
Extend upload and subsequent 'dot sourcing' of env vars to std PS command
* Wrap funcs to flatten and upload env vars with new func prepareEnvVars.
  While the wrapped funcs could be combined, keeping them separate
  simplifies testing.
* Configure/refactor std and elevated PS to use new funcs to prepare,
  upload and dot source env vars.
* Dot sourcing the env vars in this way avoids the need to embed them
  directly in the command string. This avoids the need to escape the env
  vars to ensure the command string is correctly parsed.
* Characters within the env vars that are special to PS (such as $'s
  and backticks) will still need to be escaped to allow them to be
  correctly interpreted by PS.
* The std and elevated PS commands now inject env vars into the remote
  env via the same mechanism. This ensures consistent behaviour across the
  two command types.

Fixes #5471
2018-02-08 12:03:18 +00:00
Marc Mercer d3c7d43f20
Small typo correction 2018-02-07 19:47:01 -08:00
Marc Mercer 5d67f77f43
Fixing 5852 2018-02-07 19:41:01 -08:00
Megan Marsh 974d9974fe add workaround for azure bug. 2018-02-07 11:34:18 -08:00
Megan Marsh addedbb680 Revert "Merge pull request #5515 from DanHam/dot-source-env-vars"
revert so we can use a branch that's had more recent work done
This reverts commit e56849c605, reversing
changes made to 6d14eb6ea4.
2018-02-02 09:58:39 -08:00
Megan Marsh 79fe900378 Revert "Merge pull request #5376 from DanHam/ps-escapes"
Revert so that we can merge a different branch that's had more recent work instead
This reverts commit ba518637d4, reversing
changes made to e56849c605.
2018-02-02 09:57:36 -08:00
DanHam 7443adf2fd Simpler escape of chars special to PowerShell in user supplied data 2018-02-01 13:19:07 -08:00
DanHam 68e13c90b1 Revert "Escape chars special to PowerShell in user supplied data"
This reverts commit 53aefe744bcd74ee6ac866f764eafe9e7f507d80.
2018-02-01 13:19:07 -08:00
DanHam b67c64fd66 Tests for escape of chars special to PowerShell in user supplied data 2018-02-01 13:19:07 -08:00
DanHam f3c326bb3c Escape chars special to PowerShell in user supplied data 2018-02-01 13:11:05 -08:00
SwampDragons e56849c605
Merge pull request #5515 from DanHam/dot-source-env-vars
Extend upload and subsequent dot sourcing of env vars to non-elevated Powershell cmd
2018-02-01 13:06:01 -08:00
Matthew Hooker 9f87213ba4
tests and docs for #5831 2018-01-31 13:08:25 -08:00
Matthew Hooker 3127bfbcfb
Merge pull request #5831 from uShip/chef-client-policyfiles
Added Policyfile support to chef-client provisioner
2018-01-31 12:54:27 -08:00
Matthew Hooker aa76c47019
Merge pull request #5703 from frankdannhauer/5335
Fix #5335
2018-01-31 12:53:49 -08:00
Evan Machnic 5cedfc4557 Fixed go format errors 2018-01-31 11:06:31 -06:00
Evan Machnic 7354247933 Added policyGroup and policyName to Packer Communicator 2018-01-31 11:01:08 -06:00
Evan Machnic fe90f79704 Changed new code to use tabs instead of spaces 2018-01-31 10:54:40 -06:00
Evan Machnic 1f92aa2c0a Added Policyfile support to chef-client provisioner 2018-01-31 10:49:04 -06:00
Matthew Hooker 4bccbbba1f
Merge pull request #5790 from GennadySpb/trusted_certs_dir
Support 'trusted_certs_dir' chef-client configuration option
2018-01-23 13:11:27 -08:00
Matthew Hooker ebe995c0ff
run goimports 2018-01-22 17:21:10 -08:00
Gennady Lipenkov 53aaf84100 Support 'trusted_certs_dir' chef-client configuration option 2018-01-13 01:53:49 +03:00
Aidan Feldman b894c925d1
make user retrieval for Ansible provisioner more robust
Previously, the Ansible provisioner would look for the username from the
`USER` environment variable. Unfortunately, this is not always set -
particularly in Docker containers. It's very confusing to understand why
the error is happening.

Switched to using Go's built-in `os/user` package for retrieving the
current username. @rickard-von-essen had done this in 7369841, but
moved away from it in d59844f because, at the time, it wasn't possible
to use that library with cross-compilation. This was fixed in Go in

795e712b72
2018-01-03 02:52:41 -05:00
Hunter Morgan 6410fd615c
typo 2017-12-18 20:21:26 +00:00
frankdannhauer 893d0334f1
Fix #5335
https://github.com/hashicorp/packer/issues/5335
2017-12-14 14:00:52 +01:00
Dave Sanderson fc566a3cb4 Added test for new commands and guest os type 2017-12-13 11:16:21 -07:00
Dave Sanderson bf7a4b3363 remove erroraction on win removedir 2017-12-13 10:49:38 -07:00
Dave Sanderson 284b069003 Fixed stating of files on windows
added directory existence check to salt provisioner before directory clean up
2017-12-13 10:20:27 -07:00
Dave Sanderson 57770de36f revert file stat 2017-12-12 16:01:00 -07:00
Dave Sanderson a1ba4e5362 Silently continue on removeDir for Windows
Fixed parameter type exclusion in movePath command
2017-12-12 15:32:40 -07:00
Dave Sanderson 887b7dc476 Fix mixed case for mv 2017-12-12 15:24:34 -07:00
Dave Sanderson aee67d3933 Add ability to move files on remote system
Fix salt-masterless to use generic MovePath
2017-12-12 15:22:10 -07:00
Dave Sanderson 857e5d04d3 Fix command error for salt install 2017-12-12 15:11:29 -07:00
Dave Sanderson 666796e8eb Add ability to stat a remote path 2017-12-12 14:39:13 -07:00
Dave Sanderson 630b7466d6 updated test to remove old DefaultTmpDir reference
Fixed sudo logic
Fixed error message format issue for OSType check
2017-12-12 11:49:10 -07:00
Dave Sanderson 0efda50354 Initial Windows support 2017-12-12 11:36:38 -07:00
Megan Marsh 19c997cb0e revert to using UI becuase the remote command syntax breaks things on linux with vmware fusion. 2017-12-07 09:08:12 -08:00
SwampDragons 753d3cf216
Merge pull request #5618 from kwilczynski/ansible-local-clean-staging-directory
ansible-local: Add ability to clean staging directory.
2017-11-30 14:27:59 -08:00
Casey Robertson 8f02150178 Changes Linux install URL to omnitruck. Changes powershell install to use omnitruck rather than hard-coded 32-bit url 2017-11-28 14:23:12 -08:00
Krzysztof Wilczynski 10370adbab
ansible-local: Add ability to clean staging directory.
Signed-off-by: Krzysztof Wilczynski <kw@linux.com>
2017-11-21 21:09:01 +01:00
SwampDragons ce1f2457fd
Merge pull request #5563 from hashicorp/fix_5483
make restart command work correctly even if user has their own check …
2017-11-09 16:16:47 -08:00
Megan Marsh c3cb7fe9f9 read from stderr so it doesnt lock up 2017-11-09 15:52:49 -08:00
Megan Marsh 9b1ae530c3 have separate stdout and stderr buffers 2017-11-09 15:35:28 -08:00
Matthew Hooker e073d63f30
remove racy reuse of single buffer for remotecmd stderr/out. 2017-11-09 15:22:47 -08:00
Megan Marsh 6019e41544 dont read stderr 2017-11-09 15:18:43 -08:00
Megan Marsh 73b6247fd2 remove unnecessary boolean operator 2017-11-09 15:04:25 -08:00
Megan Marsh e56a6dc9a0 add some comments 2017-11-09 14:55:12 -08:00
Megan Marsh a739623d9b don't pipe restarted stuff through the ui 2017-11-09 14:44:26 -08:00
Megan Marsh d71bc34dfc don't need this in a loop 2017-11-09 11:49:12 -08:00
Megan Marsh d81871171c make restart command work correctly even if user has their own check command 2017-11-07 15:01:02 -08:00
DanHam 4b89fc1c00
Fix tests post changes. Add test for upload func. 2017-10-30 21:08:14 +00:00
DanHam 5949bc91c4
Extend upload and subsequent 'dot sourcing' of env vars to std PS command
* Wrap funcs to flatten and upload env vars with new func prepareEnvVars.
  While the wrapped funcs could be combined, keeping them separate
  simplifies testing.
* Configure/refactor std and elevated PS to use new funcs to prepare,
  upload and dot source env vars.
* Dot sourcing the env vars in this way avoids the need to embed them
  directly in the command string. This avoids the need to escape the env
  vars to ensure the command string is correctly parsed.
* Characters within the env vars that are special to PS (such as $'s
  and backticks) will still need to be escaped to allow them to be
  correctly interpreted by PS.
* The std and elevated PS commands now inject env vars into the remote
  env via the same mechanism. This ensures consistent behaviour across the
  two command types.

Fixes #5471
2017-10-30 21:08:13 +00:00
Matthew Hooker ecad3348b3
rephrase log message. 2017-10-26 10:41:49 -07:00
Ohad Basan 33b85b0130 Add suggestion for "expected_disconnect" option if disconnection occurs 2017-10-26 19:53:48 +03:00
Matthew Hooker 75111e49e9
remove convoluted pointer logic 2017-10-11 23:35:24 -07:00
Matthew Hooker bafcf7dfb1
test, document, cleanup puppet guest codde 2017-10-03 11:39:33 -07:00
Matthew Hooker 7523cc76de Merge pull request #5340 from c22/issue_5339
Fix regression bug reported in #5339
2017-10-03 10:44:41 -07:00
Matthew Hooker d26e28a028 Merge pull request #5341 from c22/issue_5338
Fix facterVar separator bug reported in #5338
2017-09-29 09:49:22 -07:00
DanHam fa5fd602aa Fix tests post changes 2017-09-26 11:07:26 +01:00
DanHam 8214a12a2a Move append of portion of command used to send elevated PS output to file 2017-09-26 11:07:26 +01:00
DanHam 2a060adbf8 Don't use -EncodedCommand with PS as progress stream always leaks to stderr
* Setting $ProgressPreference to SilentlyContinue makes no difference
  when -EncodedCommand is used - any output to the progress stream
  still appears on stderr.
* Delete file containing encode/decode functions since we no longer
  need them.
* Fixes leak of output on progress streams for both normal and elevated
  commands.
* Since we no longer base64 encode, ensure any characters special to XML
  are correctly escaped in the elevated command. This ensures correct
  parsing once the command is wrapped within the elevatedTemplates XML
  based Task Scheduler definition.

Fixes #4322
2017-09-26 11:07:11 +01:00
Matthew Hooker 2297cfaee2 Merge pull request #5357 from lochnesh/fix-windows-chef-solo-version
use flag -version instead of -v to install chef-solo on Windows
2017-09-25 18:18:16 -05:00
DanHam 5374c6e367
Use system context env var to set path for elevated PS env vars file 2017-09-21 12:08:29 +01:00
Skyler Nesheim 52d3137b08 use flag -version instead of -v to install chef-solo on Windows 2017-09-18 09:43:02 -05:00
Matthew Hooker 70e493a2c2
fix directory permissions when using sudo 2017-09-15 10:48:50 -07:00
Matthew Hooker af1187d5e1
simplify a bit 2017-09-15 10:06:54 -07:00
Megan Marsh b05c673a14 Update powershell provisioner test with new default 2017-09-15 08:17:17 -07:00
Megan Marsh cbe1d7d854 simplify file upload for elevated powershell wrapper 2017-09-14 17:01:48 -07:00
Megan Marsh 92e70757bb Move env vars into a file that we dot-source instead of trying to write them all to the command line 2017-09-14 17:00:57 -07:00
Megan Marsh d458628529 exclude elevated_executed_command from config interpolation so it can be used correctly later 2017-09-14 10:50:32 -07:00
c22 948f955758 Fix regression bug reported in #5339 2017-09-14 11:44:14 +10:00
c22 cb12cd6668 Fix facterVar separator bug reported in #5338 2017-09-14 11:35:54 +10:00
Megan Marsh c6889ad009 clarify logging by changing 'shell' to 'powershell' inside of the powershell provisioner 2017-09-06 11:59:25 -07:00
Megan Marsh 959db1ac16 add echo test to winrm connection. 2017-09-01 15:26:41 -07:00
Matthew Hooker 54920422ea Merge pull request #5252 from c22/packer_4391_rework
#4391 rework (see #4426)
2017-08-31 13:46:48 -07:00
Megan Marsh f15304aa59 Merge pull request #5272 from hashicorp/fix_5064
Fix post-restart powershell failure
2017-08-28 11:41:37 -07:00
Megan Marsh 401c718a59 set default for ExpectDisconnect to false 2017-08-24 14:46:52 -07:00
Megan Marsh b1001264ed fix windows-restart tests 2017-08-24 14:30:15 -07:00
Megan Marsh b2923b4da6 check stdout to make sure echo command actually goes through before counting computer as fully restarted 2017-08-24 12:10:27 -07:00
Megan Marsh 89b058604d update tests for pull 5272 2017-08-22 14:20:40 -07:00
Megan Marsh 5214851463 make every script name unique 2017-08-22 14:03:28 -07:00
c22 42f1aa7a95 Refactor puppet-masterless based on puppet-server 2017-08-22 14:10:37 +10:00
c22 bc2e3de06d Resolve merge conflicts and update documentation. 2017-08-22 14:10:37 +10:00
c22 80ba99c04f Update documentation + small fixes
Updated the puppet-masterless documentation
Removed extraneous ConfigTemplate code
2017-08-22 14:10:37 +10:00
c22 fbac46af91 Linting + formatting 2017-08-22 14:10:37 +10:00
Sam Kerr bcd30ad2f2 Update puppet-masterless commands to be OS specific
Previous implementation hardcoded "mkdir -p" which is fine for Unix, but
fails on Windows. This change draws on the example in the chef-solo
provisioner on how to detect the OS in use and use an appropriate mkdir
command.

In addition to updating the mkdir command, the actual executeCommand
needs to be OS specific, since Windows doesn't have sudo and Unix
doesn't require 'SET' when trying to change the value of a variable.

Modify the actual Windows command used to run Puppet.

Since the Facter vars on Windows are set with 'SET <varname>=<value>', a
'&&' is needed between the SET commands and the actual Puppet
invocation.
2017-08-22 14:10:37 +10:00
c22 1c592f291e Better Windows support in puppet-server
Reworking the puppet-server provisioner based on chef-client.
2017-08-22 14:10:37 +10:00
Brett Russ 7192c46e46 sudo prefix the command which cleans up `/srv/{salt,pillar}` as these are created with sudo in the packer driven salt bootstrapper 2017-08-11 21:26:16 -04:00
Luke Farnell d9a5b69403 clean up ineffectual assignments 2017-08-07 13:20:01 -04:00
localghost daca0c2efe Remove accidental dependency to moby's ioutils package. 2017-07-10 22:05:42 +02:00
localghost 079cbc263f Add tests for playbook_files with playbook_dir. 2017-07-10 21:58:46 +02:00
Zbigniew Kostrzewa 33ae9cb2bb Add test for playbook_files using docker builder. 2017-07-10 08:19:29 +02:00
localghost 9ea6313b68 Fix playbook_files test on Windows. 2017-07-06 21:28:27 +02:00
localghost f682045345 Test for ansible-local playbook_files with mocked Communicator. 2017-07-06 06:44:03 +02:00
Zbigniew Kostrzewa 41d0adfbdd Add playbook_files to execute multiple ansible playbooks. 2017-07-01 23:21:07 +02:00
Matthew Hooker b1f06bbebb
fix wording 2017-06-26 12:56:55 -07:00
Matthew Hooker 56979a1974
Revert "Universally provide POSIX semantics for the `shell` provisioner."
This reverts commit 1ba7f9cc20.
2017-06-21 16:11:47 -07:00
Matthew Hooker 67e29e1eff
disambiguates windows-restart messages. 2017-06-21 10:51:23 -07:00
Matthew Hooker 11379dea70 Merge pull request #5009 from sjlamerton/salt_bin_dir
Add support for salt_bin_dir
2017-06-13 10:21:53 -07:00
Matthew Hooker 8f685b3bcd
ansible: add skip_version_check flag 2017-06-07 13:31:56 -07:00
Matthew Hooker 70b3d05fb3 Merge pull request #4760 from fajpunk/ansible-inventory-dir
inventory_directory option for ansible provisioner
2017-06-07 11:22:23 -07:00
Steven Lamerton e953898890 Add support for salt_bin_dir
Allows specifying the path to salt-call, useful if it isn't on the
path.
2017-06-07 08:16:23 +01:00
Matthew Hooker bc16c13b50 Merge pull request #4961 from magicalbob/grains
Grains
2017-06-06 12:37:18 -07:00
Matthew Hooker 74bf0b636b Merge pull request #4791 from optix2000/master
Add version selection for chef-solo provisioner
2017-06-05 15:30:48 -07:00
Ian Ellis 31f66b6fe9 Cloned GrainsFile test from MinionConfig test 2017-06-04 13:03:50 +01:00
Ian Ellis 912fc9c2af Added grains_file config item to copy file to /etc/salt/grains 2017-06-04 08:31:30 +01:00
Sean Chittenden 1ba7f9cc20
Universally provide POSIX semantics for the `shell` provisioner.
All platforms everywhere have `env(1)` available, leverage it
accordingly.

Improves on: #2343
2017-05-20 09:28:02 -07:00
Matthew Hooker 7999f886b1 Merge pull request #4792 from mkuzmin/slash
provisioner/ansible-local: Convert Windows paths with backslashes to …
2017-04-26 15:20:49 -07:00
Dan Fuchs 8401057ed5 Merge branch 'master' into ansible-inventory-dir 2017-04-26 13:20:00 -05:00
Rickard von Essen 999f2da499
ansible-local/ansible: Add extra-vars packer_*
Added:
- `packer_build_name`
- `packer_builder_type`
- `packer_http_addr` - `ansible-local` only

Closes: #4820
2017-04-23 12:55:01 +02:00
Dan Fuchs 97c819dc15 Merge branch 'master' of https://github.com/mitchellh/packer into ansible-inventory-dir 2017-04-20 10:34:03 -05:00
Weilu Jia b1c5ccd3e2 Add version selection for chef-solo provisioner in Windows too 2017-04-17 18:16:34 -07:00
Michael Kuzmin 795921988e provisioner/ansible-local: Convert Windows paths with backslashes to Unix style 2017-04-13 12:15:00 +03:00
Weilu Jia c418307162 Add version selection for chef-solo provisioner
Prevents issues such as #1751 when chef changes major versions
2017-04-12 16:18:00 -07:00
Dan Fuchs f45f4568db make validateInventoryDirectoryConfig function 2017-04-06 14:50:02 -05:00
Dan Fuchs 39a9eac44f Remove `req` param from validateDirectoryConfig 2017-04-05 09:14:30 -05:00
Dan Fuchs 3fc809c05b Ansible provisioner: check if inventory directory exists during prepare 2017-04-04 22:49:24 -05:00
Dan Fuchs 492bff474b Ansible provisioner: Specify full path to generated inventory file 2017-04-04 22:04:26 -05:00
Dan Fuchs 609e70face inventory_directory option for ansible provisioner
Add an `inventory_directory` setting to the Ansible provisioner that
allows a user to specify a directory in which the Packer Ansible
provisioner would write the generated inventory file.  If a value is
specified for this setting, then have the Packer Ansible provisioner
pass this directory as the -i arg when it calls ansible.

This would allow an Ansible playbook used by the Packer Ansible
provisioner to use variables specified in `host_vars` and `group_vars`
in this inventory directory.
2017-04-04 16:43:46 -05:00
Matthew Hooker 81522dced0
move packer to hashicorp 2017-04-04 13:39:01 -07:00
Matthew Hooker 6f27f67346
more fixes from errcheck 2017-03-29 13:38:31 -07:00
Matthew Hooker de296ac06b
simplify 2017-03-28 20:45:25 -07:00
Matthew Hooker 35578d9ed1
remove unnecessary type conversions 2017-03-28 20:36:21 -07:00
Matthew Hooker 79287d7e47
simplify some code 2017-03-28 20:36:20 -07:00
Matthew Hooker 0149f679de
Print instead of Printf with no dynamic first variable. 2017-03-28 20:36:20 -07:00
Matthew Hooker d1b20b3d9c
remove a bunch of dead code.
https://github.com/dominikh/go-tools/tree/master/cmd/unused
2017-03-28 20:36:20 -07:00
Matthew Hooker 230079f73a
spell fixes 2017-03-28 20:36:19 -07:00
Andrey Chernih 7548024720 More verbose error message when ansible-playbook fails
I've spent 1 hour today debugging why packer does not want to work with
ansible. It turns out `ansible-playbook` command was returning non-zero
exit status because of the file system permission problem.

Output before change:

    % packer build rabbitmq.json
    amazon-ebs output will be in this color.

    1 error(s) occurred:

    * exit status 1

Output after change:

    amazon-ebs output will be in this color.

    1 error(s) occurred:

    * Error running "ansible-playbook --version": exit status 1
2017-03-21 20:26:41 -07:00
Matthew Hooker 6894f93085 Merge pull request #4534 from mitchellh/chefclean
provisioner/chef-client: only upload knife config if we're cleaning
2017-02-26 18:46:15 -08:00
Marc Carmier 78ab21b42f Test error messages for restart_command and restart_timeout seems to be erroneous 2017-02-12 18:17:31 +01:00
Matthew Hooker 825f69c64d
provisioner/chef-client: only upload knife config if we're cleaning 2017-02-09 23:37:35 -08:00
Matthew Hooker a836268490
fix test on windows 2017-02-06 11:29:39 -08:00
Matthew Hooker 0f445dff07
fix tests 2017-02-03 15:03:19 -08:00
Matthew Hooker 45030e1919
provisioner/anisble: use randomized staging dir 2017-01-27 16:14:35 -08:00
DanHam 370b67497e
provisioner/powershell: Don't over complicate removal of tmp output file 2017-01-26 11:21:45 +00:00
DanHam 21be983855 provisioner/powershell: Use system context env var to set output file path
Fixes #4271
2017-01-26 00:17:46 +00:00
DanHam e350739ecb
post-processor/shell-local: expand tests to align with shell provisioner 2017-01-23 22:25:39 +00:00
DanHam 28051a9218 provisioner/windows-shell: fix and compact env var test 2017-01-23 12:10:46 +00:00
DanHam e8db6b9b9a provisioner/windows-shell: Remove env var check - again checked in prepare 2017-01-23 12:10:46 +00:00
DanHam c88fafdf38 provisioner/powershell: align, fix and compact env var test 2017-01-23 12:10:46 +00:00
DanHam 4122f3a897 provisioner/powershell: Remove env var check - we already check in Prepare 2017-01-23 12:10:46 +00:00
DanHam 4514b1b10f provisioner/shell: expand tests to align with powershell/win-shell 2017-01-23 12:10:46 +00:00
DanHam 0cbb4ff30c provisioner/shell: Align gen of flattened env vars with powershell/win-shell
* Move code to generate quoted flattened env vars to separate function
* Fix: generate flattened env vars once per provisioner not once per script
2017-01-23 12:10:46 +00:00
DanHam 80ebcea5e1
Mirror cleaner test code back from windows-shell to powershell 2017-01-19 13:33:59 +00:00
DanHam 2bd9fa6c70
Use counter for index. Sort stray comments. 2017-01-19 12:12:00 +00:00
Matthew Hooker c33cef9c12
tests for equals in windows-shell 2017-01-18 12:51:14 -08:00
DanHam 49bc2e353f
Fix to allow equals in value of environment variable. Mirrors #4328 2017-01-18 12:42:25 -08:00
Matthew Hooker 4e6a44f5f1
append will resize 2017-01-17 17:21:14 -08:00
Matthew Hooker 480398c3d2
only set PACKER_HTTP_ADDR if a server is listening 2017-01-17 17:17:36 -08:00
Matthew Hooker 6563eb213c
Document. add to windows-shell and powershell 2017-01-17 17:07:36 -08:00
Matthew Hooker d2e59e4e92
set PACKER_HTTP_ADDR env var when available.
If using a builder that has an http server set up for file transfer,
expose the connection info to the shell provisioner through the environment
variable PACKER_HTTP_ADDR.

Closes #2869
2017-01-16 23:19:52 -08:00
Matthew Hooker 5fc6a2ee70 Merge pull request #4326 from asteris-llc/feature/converge-provisioner
New Provisioner: Converge
2017-01-04 10:46:18 -08:00
Matthew Hooker 6d6c7864b4 Merge pull request #4328 from DanHam/gh-3108
Allow equals sign in value of environment variable for Powershell provisioner
2017-01-03 12:38:17 -08:00
Sean Malloy a617884a16 Add more tests for puppet-masterless provisioner
* Add tests for staging_directory config option
* Add tests for working_directory config option
2016-12-28 21:14:17 -06:00
Brian Hicks feab6f096e
provisioner(converge): add prevent_bootstrap_sudo 2016-12-28 12:53:22 -06:00
Brian Hicks fb6a5c5bbc
provisioner(converge): change skip_bootstrap back to bootstrap 2016-12-28 12:49:40 -06:00
Brian Hicks 64ebd3af8d
provisioner(converge): remove version validation 2016-12-28 08:49:08 -06:00
Brian Hicks 18425c45d0
provisioner(converge): change bootstrap to skip_bootstrap 2016-12-28 08:48:02 -06:00
Brian Hicks 5d935767f0
provisioner(converge): add bootstrap_command 2016-12-28 08:45:19 -06:00
Brian Hicks 843731d98d
provisioner(converge): add prevent_sudo 2016-12-28 08:19:03 -06:00
Sean Malloy c226b19d08 Add additional unit tests for puppet-server provisioner
* Add puppet-server test for staging_dir config option
* Add puppet-server test for execute_command config option
2016-12-27 22:35:13 -06:00
DanHam 0423f91037
Fix to allow equals sign in value of environment variable 2016-12-28 00:33:16 +00:00
DanHam be0196492f
Tests for env variables values starting with or containing an equals sign 2016-12-28 00:31:17 +00:00
Brian Hicks 3311d3a48d
provisioner(converge): interpolate execute_command 2016-12-27 16:48:11 -06:00
Brian Hicks fe4b972d32
provisioner(converge): flatten execution fields 2016-12-27 16:32:19 -06:00
Brian Hicks 3658a0b6b5
provisioner(converge): remove log line 2016-12-27 16:31:12 -06:00
Brian Hicks de918ac7a7
provisioner(converge): rename directory to working_directory 2016-12-27 16:07:16 -06:00
Brian Hicks e6ba4c1929
provisioner(converge): remove version check 2016-12-27 16:03:35 -06:00
Brian Hicks 549ff50a3c
provisioner(converge): handle http error 2016-12-27 14:58:41 -06:00
Brian Hicks b46a402a18
provisioner(converge): add tests for Prepare 2016-12-27 14:47:13 -06:00
Brian Hicks 73252b9a9b
provisioner(converge): reverse the meaning of bootstrap 2016-12-27 12:24:06 -06:00
Brian Hicks b8849a9c2d
provisioner(converge): add version specification for bootstrapping 2016-12-27 12:22:17 -06:00
Brian Hicks eca8690018
provisioner(converge): add actual provisioning step 2016-12-27 12:13:51 -06:00
Brian Hicks 73d5593242
provisioner(converge): add validate for source and destination 2016-12-27 11:41:52 -06:00
Brian Hicks 4f0034e574
provisioner(converge): transfer module directories 2016-12-27 11:29:36 -06:00
Brian Hicks e2daefab71
provisioner(converge): improve error messages when Converge isn't found 2016-12-27 11:20:20 -06:00
Brian Hicks 03a8e309ba
provisioner(converge): add bootstrapping 2016-12-27 10:50:33 -06:00
Sean Malloy ce43ade973 Add additional unit tests for puppet provisioners
* Add puppet-masterless test for packer_build_name default fact
* Add puppet-masterless test for packer_builder_type default fact
* Add puppet-server test for puppet bin directory
2016-12-26 23:11:27 -06:00
Sean Malloy 7feb8b993c Add default facts for puppet-server provisioner 2016-12-22 15:53:59 -06:00
Taliesin Sisson 335615408a Run go fmt on files 2016-12-12 22:45:19 +00:00
Taliesin Sisson c88a2ef872 Remove trailing tabs 2016-12-12 22:45:10 +00:00
Taliesin Sisson 55353fae89 Fix spelling mistake
Fix code type for formatting
Remove empty space
2016-12-12 22:45:09 +00:00
Taliesin Sisson f38d787b0e Powershell uses UTF16Le for encodedCommand 2016-12-12 22:44:56 +00:00
Taliesin Sisson e36051d394 Pattern for infrastructure changed to quote filename and execute file with ampersand as everything is run in powershell now
Handle powershell commands by specifying any extra infrastructure around running scripts inside of ExecuteCommand and ElevatedExecuteCommand
2016-12-12 22:44:55 +00:00
Taliesin Sisson d61513bf77 Encode powershell using utf8
Fix a bug in the size of string that was returned when decoding a base64 string
Added tests around encoding and decoding powershell scripts. Used [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('powershell commands')) | clip to generate what base 64 strings should look like
2016-12-12 22:44:54 +00:00
Taliesin Sisson 17597b48e1 Base64 encode powershell to avoid any necessary escaping 2016-12-12 22:44:54 +00:00
Taliesin Sisson 5d5809b27e Make hiding of progress backward compatible with old versions of powershell 2016-12-12 22:44:48 +00:00
Taliesin Sisson e8c2b49be8 Use correct quotation of variables 2016-12-12 22:44:34 +00:00
Taliesin Sisson 4b394c8563 Write output will put ouput from function, so we don't want to be getting line from output of function
Fix unit tests for not showing progress stream when using powershell
Ensure that progress stream does not get leaked into stdout
Using Write-Output instead of Write-Host since PS v5 now leaks the host stream to stderr
2016-12-12 22:44:33 +00:00
Taliesin Sisson c42cb88ddd Using Write-Output instead of Write-Host since PS v5 now leaks the host stream to stderr 2016-12-12 22:44:32 +00:00
Taliesin Sisson cd6213eb55 Seems like we do need to escape the double quote 2016-12-12 22:44:25 +00:00
Taliesin Sisson 15137310a7 Must escape string formatting for string fmt 2016-12-12 22:44:20 +00:00
Taliesin Sisson 5285a819dd Quoting of powershell commands and associated tests 2016-12-12 22:44:19 +00:00
Taliesin Sisson 3051ea6633 Quote powershell so that it does not try to interpret command to be run
Get VName out of state. This allows template replacement to be run on vmname
2016-12-12 22:44:10 +00:00
Taliesin Sisson 6c3030c73a Add a little safety around variables that are passed into provisioner. 2016-12-12 22:44:10 +00:00
Matthew Hooker b49be38d74 Merge pull request #4210 from yoctocloud/fixes
various fixes
2016-12-12 12:33:19 -08:00
Matthew Hooker c510988cbf Merge pull request #4209 from bhcleek/ansible-winrm
provisioner/ansible: assume scp target is file (resolves winrm incompatibility)
2016-12-08 22:37:41 -08:00
Patrick Decat 5dd7fb11f4 Saltstack bootstrapping: fallback on wget if curl failed for any reason (such as not being installed) 2016-12-02 20:02:22 +01:00
Vasiliy Tolstov 00ebe9e1d3 various fixes
Signed-off-by: Vasiliy Tolstov <v.tolstov@selfip.ru>
2016-11-29 14:55:44 +03:00
Billie Cleek f5ca0de225 provisioner/ansible: assume scp target is file
Assume the scp target is a file instead of a directory. Assuming the scp
target is a file instead of a directory allows uploading files to a node
being provisioned with the ssh communciator using sftp and with the
winrm communicator. It is fully compatible with ansible; ansible
communicators only allow for files (never directories) to be uploaded
(when the copy module is used to upload a directory, ansible walks the
directory and uploads files one at a time).

Update documentation to explain how to provision a Windows image.

Extend tests that use ssh to communicate with the node to include single
files, recursive copies, and content-only recursive copies.

Add test to verify support for the winrm communicator.

Remove the err argument from adapter.scpExec, because it was unused.

Fixes #3911
2016-11-26 14:40:39 -08:00
Matthew Hooker 12176b6afc
provisioner/shell: treat disconnects as retryable. 2016-11-22 15:59:40 -08:00
Jasper Siepkes 200aa74e78 Added support for passing arguments to salt-call. 2016-11-11 15:15:16 +01:00
Rickard von Essen a616c3da3c
provisioner/ansible: Move info messages to log
Make the ansible provisioner less noisy by moving most messages to the
log instead of ui print outs.

Closes #4117
2016-11-05 14:25:45 +01:00
Matthew Hooker d920b3fbf4 run gofmt 2016-11-01 14:08:04 -07:00
Rickard von Essen f17bd30070 Revert "Removed escaped quotes in non-elevated powershell invocation"
This reverts commit 1b186f1613.
2016-10-26 21:12:11 +02:00
Rickard von Essen 3b42d28cce Merge pull request #4014 from mexisme/feature/puppet-bin-dir
privisioner/puppet: Add `puppet_bin_dir` option.
2016-10-22 14:48:45 +02:00
Rickard von Essen 3361da82d4
Added trailing slash after puppet_bin_dir. 2016-10-22 14:34:34 +02:00
Matthew Hooker 892d5e82c9 expect_disconnect option
provisioner/shell: Adds option to fail if the remote server disconnects
us.
2016-10-21 11:39:03 -07:00
Matthew Hooker a1ef6398c3 Merge pull request #3371 from simonguest/powershell-envvars-fix
Removed escaped quotes in non-elevated powershell invocation
2016-10-19 18:50:39 -07:00
mexisme 314a4f4bbf Add Puppet Bin Dir to puppet-server provisioner 2016-10-16 02:50:37 +13:00
mexisme 6f9294095f Add Puppet Bin Dir to puppet-masterless provisioner 2016-10-15 22:39:50 +13:00
Matthew Hooker d8439b0034 Merge pull request #3971 from mitchellh/fix3486
change chef-solo provisioner staging directory
2016-10-14 15:51:26 -07:00
Rickard von Essen 3c8dabba9e Fixed formatting 2016-10-11 23:43:50 +02:00
Matthew Hooker 83131db4b8 Merge pull request #3776 from curiositycasualty/master
Add custom_state config to salt provisioner
2016-10-07 17:59:52 -07:00
Matthew Hooker 2ae1b83b15 change chef-solo provisioner staging directory
Have the staging directory be called `packer-chef-solo`, which is what
is given in docs. Closes #3486
2016-10-07 17:24:30 -07:00
Rickard von Essen 51a9a51699 Update winrm and winrmcp dependencies
Updated winrm and winrmcp dependencies. Relevant unit and acceptance tests passed successfully.

shell.Execute didn't return a Command object.

See f1bcf36a69/winrmcp/cp.go (L167) and 54ea5d0147/winrm/shell.go (L10-L22) respectively.

Closes #3763

Original patch by: Philipp Kosel <philipp.kosel@gmail.com>
2016-10-03 13:48:29 -07:00
Matthew Hooker a8e57d83d2 gofmt project.
noticed many unrelated changes being added to patches because of gofmt.

ran `find . -not -path "./vendor/*" -name "*.go" -exec gofmt -w {} \;`
2016-09-29 14:13:06 -07:00
Matthew Hooker efa594bebe Merge pull request #3899 from pengkh/f-file-provisioner
continue add support for file-provisioner to allow directory downloa…
2016-09-22 18:32:57 -07:00
开恒 96a637684b fix #3897
bug fix for file-provisioner download file, including unit-test code.
2016-09-19 10:36:18 +08:00
nouney 59dac451a5 provisioner/file: add "generated" key to allow files created on-the-fly. 2016-09-15 22:15:56 +02:00
Billie H. Cleek f760ab2fd8 Make SCP the default for provisioner/ansible
Add a new option, `use_sftp` to the ansible provisioner. It's default
value is false; ansible provisioner will use SCP by default.

Refactor to consistently set all configure options for ansible
provisioner in the Prepare step.

Remove incorrect information about `ANSIBLE_HOST_KEY_CHECKING=False`
being set when `ansible_env_vars` is not set in the packer template.

Update BATS tests for the ansible provisioner to actually check that the
fetched directory contains the contents expected. This revealed a
problem with the all_options template that required adding a host to the
hosts list in the test playbook.
2016-09-11 23:58:31 -07:00
Billie H. Cleek e6a0e523e2 refactor sftp subsystem request handling
Refactor the sftp subsystem request handling to make it more similar to
an exec request. This simplifies and improves the readability of the
code.
2016-09-11 23:58:31 -07:00
Billie H. Cleek da223b9539 add scp support to ansible provisioner
Handle running `scp -t` and `scp -f` exec requests in the
ansible-provisioner's SSH
server to allow Ansible to use SCP so that SFTP doesn't have to be
installed on the node.

Update the BATS tests to test the ansible provisioner.
2016-09-11 23:58:31 -07:00
Spencer Owen 9963bfcd42 removes unneeded white space 2016-09-01 13:39:44 -06:00
Spencer Owen 7fdd303641 Installs 64bit chef on windows if available
Resolves #3847

- Changes linux install url to new omnitruck.chef.io url. 
- Changes powershell install to use omnitruck url instead of hard coded to 32bit msi install.
2016-09-01 13:23:08 -06:00
Rickard von Essen d1e38052f7 Merge pull request #3350 from JoakimLofgren/add-support-for-ansible-galaxy
Add support for ansible-galaxy
2016-09-01 20:51:17 +02:00
Billie Cleek 023f2edde8 add better logging and error handling to ansible provisioner (#3477) 2016-08-24 19:53:39 +02:00
Isa bb2dd6e2b2 add custom_state config to salt provisioner 2016-08-03 12:56:51 -07:00
Chris Bednarski 32cbb515b5 Merge pull request #3692 from mohae/3474-file-mkdir-all
3474 file mkdir all
2016-07-07 16:44:15 -07:00
Joel Scoble 94d158b0b7 remove debug fmt.Print from test 2016-07-07 18:12:54 -05:00
Ricard Clau 049fb2d9c1 actually check for errors in functional tests 2016-07-07 20:01:23 +01:00
Ricard Clau 0c81e49f83 Adding a functional test with an Ansible message very long 2016-07-07 01:12:57 +01:00
Chris Bednarski 664e640257 Merge pull request #3392 from msteinhoff/fix-ansible-provisioner-long-lines
Fix Scanner buffer too long error in ansible-remote provisioner
2016-07-06 15:27:57 -07:00
Joel Scoble 999b8b2ed0 file provisioner: download should create all dirs in the destination path 2016-07-06 15:42:26 -05:00
Jamie Snell 7b3224f3c7 rename KnifeChefTemplate to KnifeTemplate 2016-06-14 13:42:53 -05:00
Jamie Snell 4847e891b0 Fix knife clean-up run on windows 2016-06-14 13:34:25 -05:00