Commit Graph

45 Commits

Author SHA1 Message Date
Christoph Kappel af206e7543 Clean clients from chef-vault on recreate_client enabled (#16357)
Fixes #15921

When terraform re-creates an existing node/client with chef provisioner,
the already existing client (which has old keys) must be removed from
the vault items. Afterwards, the chef-vault will be updated with the
newly created client (which has the new keys). Therefore, the recreated
client will be able to decrypt the vault items properly.
2017-10-20 17:46:29 +02:00
Sander van Harmelen b01f68f343 provisioner/chef: fix panic
Fixes #15431
Fixes #15500
2017-07-22 09:58:58 +02:00
Sander van Harmelen 7e180aec92 Refactor the provisioner validation function (#15273)
It turns out that `d.GetOk` also returns `false` when the user _did_ actually supply a value for it in the config, but the value itself needs to be evaluated before it can be used.

So instead of passing a `ResourceData` we now pass a `ResourceConfig`
which makes much more sense for doing the validation anyway.
2017-06-15 19:57:04 +02:00
Sander van Harmelen 21a646f6fe Use the InstanceState to query any connection details (#15271)
Fixes #15205 #15270
2017-06-14 21:40:31 +02:00
Sander van Harmelen 0e422737ba Fix and refactor the Chef provisioner
The tests did pass, but that was because they only tested part of the changes. By using the `schema.TestResourceDataRaw` function the schema and config are better tested and so they pointed out a problem with the schema of the Chef provisioner.

The `Elem` fields did not have a `*schema.Schema` but a `schema.Schema` and in an `Elem` schema only the `Type` field may (and must) be set. Any other fields like `Optional` are not allowed here.

Next to fixing that problem I also did a little refactoring and cleaning up. Mainly making the `ProvisionerS` private (`provisioner`) and removing the deprecated fields.
2017-05-19 21:05:21 +02:00
Vladislav Rassokhin f5449a62e0 Various built-in provisioners improvements:
1. Migrate `chef` provisioner to `schema.Provisioner`:

 * `chef.Provisioner` structure was renamed to `ProvisionerS`and  now it's decoded from `schema.ResourceData` instead of `terraform.ResourceConfig` using simple copy-paste-based solution;
 * Added simple schema without any validation yet.

 2. Support `ValidateFunc` validate function : implemented in `file` and `chef` provisioners.
2017-05-19 20:43:51 +02:00
Sander van Harmelen 7304fe5c14 Make sure we add new Chef-Vault clients as clients (#13525)
This is possible using the newly released Chef-Vault 3.0 gem. Before we could only add new clients as admins.

Fixes #9137
2017-04-11 10:36:05 +02:00
Mitchell Hashimoto 61881d2795 Merge pull request #10934 from hashicorp/f-provisioner-stop
core: stoppable provisioners, helper/schema for provisioners
2017-01-30 12:53:15 -08:00
Mitchell Hashimoto 5fc516f99d
provisioners/chef: check IsComputed for JSON attributes
Fixes #10788

This checks `IsComputed` prior to attempting to use the JSON
configurations. Due to a change in 0.8, the prior check for simply map
existence would always succeed even with a computed value (as designed),
but we forgot to update provisioners to not do that.

There are other provisioners that also do this but to no ill effect
currently. I've only changed Chef since we know that is an issue.

This issue doesn't affect 0.9 due to helper/schema doing this
automatically for provisioners.
2017-01-29 12:30:44 -08:00
Mitchell Hashimoto f29845e54e
update privisioner bins to use new functions 2017-01-26 15:09:15 -08:00
Kyle Persohn b300cac97b provisioner/chef: Support named run-lists for Policyfiles (#11215)
* provisioner/chef: Support named run-lists for Policyfiles

Add an optional argument for overriding the Chef Client's initial
run with a named run-list specified by the Policyfile. This is useful
for bootstrapping a node with a one-time setup recipe that deviates
from a policy's normal run-list.

* Update chef client cmd building per review feedback.
2017-01-19 09:03:45 +01:00
Sam Dunne 628743b24c Add ability to skip chef registration
This change allows a user to skip the bootstrap stage for a machine.
2016-10-01 00:49:39 +02:00
Sander van Harmelen c307dc9557 Accept both slices and strings in vault_json (#9114)
Fixes #9105 by allowing the `vault_json` to contain either slices or strings.

And fixes #8932 by changing to way we cleanup the user key.
2016-10-01 00:35:27 +02:00
Sander van Harmelen 968472a63e Support recreating clients and configuring Chef Vaults (#8577)
Fixes #3605 and adds the functionality suggested in PR #7440.

This PR is using a different appraoch that (IMHO) feels cleaner and (even more important) adds support for Windows at the same time.
2016-09-15 14:20:18 +02:00
Sander van Harmelen 4004790247 Make using `ssl_verify_mode` more robust (#7769)
And prettify the template output by removing additions empty lines.
2016-07-22 16:01:48 +02:00
Ben a97f1a557f Provide correct command to fetchChefCertificatesFunc
fetchChefCertificatesFunc expects the knife command path, not the chef command path.  Update the code to pass the correct command's path to the method.
2016-02-25 12:10:50 -07:00
Sander van Harmelen ac0cbd400e Add `attributes_json` param for consistency
Add `attributes_json` param for both consistency and easier management
of deprecating the old `attributes` param.
2016-02-09 11:11:46 +01:00
Sander van Harmelen 79e2642dab Fix issue #4881
This fixes issue #4881 by adding an option to fetch the Chef SSL
certificates.
2016-02-04 15:31:24 +01:00
Sander van Harmelen da927fcd08 Make the Chef `attributes` param also accept a raw JSON string
See the updated docs for more details and examples, but in short this
enables the `attributes` param from the Chef provisioner to accept a
raw JSON string.

Fixes #3074
Fixes #3572
2016-01-29 18:41:14 +01:00
Jason Riddle 5cb4b70e7e Add ENV['no_proxy'] to chef provisioner 2016-01-13 09:51:08 -05:00
Sander van Harmelen 71ffb6caa0 Add the option to add arbitrary `client.rb` options
Fixes #3630
2016-01-09 00:42:02 +01:00
Petr Artamonov 76913703a9 modified to have less code and not to verify incoming string 2016-01-08 20:00:11 +01:00
Petr Artamonov 64f19c0dc3 enable reporting flag 2016-01-07 18:13:30 +01:00
Sander van Harmelen b007d4f77a Revert changing `path.Join()` to `filepath.Join()` (PR #3896)
PR #3896 added support for passing keys by content, but in this same PR
all references to `path.Join()` where changed to `filepath.join()`.
There is however a significant difference between these two calls and
using the latter one now causes issues when running the Chef
provisioner on Windows (see issue #4039).
2015-11-24 14:40:46 +01:00
Paul Hinze 73ce6d184a chef: read key contents instead of paths
Builds on the work of #3846, shifting the Chef provisioner's
configuration options from `secret_key_path` and `validation_key_path`
over to `secret_key` and `validation_key`.
2015-11-12 16:11:44 -06:00
Joel Moss b1d731bd6f [chef provisioning] When use_policyfile is given, the run list is not used, so don't require it 2015-10-14 19:05:38 +01:00
Radek Simko f9efede852 gofmt files from recently merged PRs 2015-10-07 13:35:06 -07:00
Joel Moss 20362e7506 Added Policyfile support to the Chef provisioner
This Adds three new arguments `use_policyfile`, `policy_group` and `policy_name` to the Chef
provisioner. If `use_policyfile` == true, then the other arguments are required.
2015-09-26 00:56:24 +01:00
Sander van Harmelen 162568e682 Fixes issue #2872
Still not a 100% fix, but that would require some more hacking in core
TF. If time permits I’ll have a look at that later on… But for now this
is a good fix to be able to close #2872
2015-08-21 17:26:32 +02:00
Sander van Harmelen 4a8ef78d33 Fixes #2676 by prefixing all Windows commands
By prefixing them with `cmd /c` it will work with both `winner` and
`ssh` connection types.

This PR also reverts some bad stringer changes made in PR #2673
2015-07-10 12:56:27 +02:00
Sander van Harmelen 97fd4f5b7d Tweaking the tests 2015-07-09 21:29:27 +02:00
Joshua Seidel cda814d8b3 No need to do this as they both are in their own scope 2015-07-09 09:32:13 -04:00
Joshua Seidel 4070805fcd ran gofmt removed required, added IF 2015-07-09 09:05:12 -04:00
Joshua Seidel 61f47d440d correct space, fix reading of file 2015-07-08 20:06:37 -04:00
Joshua Seidel cd58da773c remove unused if 2015-07-08 15:25:00 -04:00
Joshua Seidel 7f4a5ac413 fix if statement and condition 2015-07-08 15:09:17 -04:00
Joshua Seidel 6e21ca50a0 add chef secret key 2015-07-08 14:52:23 -04:00
Sander van Harmelen 61517f68b1 Add an `ohai_hints` option to upload hint files
This option takes a list of hints that will be uploaded to the new node
before starting the initial Chef run.
2015-06-25 16:32:36 +02:00
Sander van Harmelen 2690d87d39 Add an option to specifically specify the target OS
Before this option (`os_type`) the provisioner would use the connection
type to determine the targeted OS. When not supplying a value for
`os_type`, it will fall back to the old behaviour, so this is full BC.
2015-06-25 14:29:48 +02:00
Sander van Harmelen 4f6e610ff9 Improve the decoding logic to prevent parameter not found errors
We need to decode both the Raw config and the parsed Config to make
sure all set keys are visible. Otherwise keys that will need to be
interpolated later, will be missing causing the validation to fail.
2015-06-03 14:45:30 +02:00
Sander van Harmelen be56a3a02e Fix interpolation in the Chef provisioner
Turns out to be a pretty obvious bug with a simple fix…
2015-06-01 15:29:43 +02:00
Sander van Harmelen 11314a3d71 Tweaking a few minor things according to the feedback on GH 2015-05-12 10:37:38 +02:00
Sander van Harmelen a8dacede24 Improved some logging...
I added a debug log line in the last commit, only to find out it’s now
logging the same info twice. So removed the double entry and tweaked
the existing once.
2015-05-11 15:18:32 +02:00
Sander van Harmelen 2a5fffc24d Small textual update... 2015-05-08 23:27:12 +02:00
Sander van Harmelen c19d92fb67 Refactored quite a few things after review...
Also renamed the provisioner to just `chef` as it’s out intention to
end up with one provisioner for all types of `chef` clients.
2015-05-08 23:25:24 +02:00