Chef

knife upload

The knife upload subcommand is used to upload roles, cookbooks, environments, and data bags to the Chef server from the current working directory in the chef-repo. This subcommand is often used in conjunction with knife diff, which can be used to see exactly what changes will be uploaded, and then knife download, which does the opposite of knife upload.

Syntax

This subcommand has the following syntax:

$ knife upload [PATTERN...] (options)

Options

Note

Review the list of common options available to this (and all) Knife subcommands and plugins.

This subcommand has the following options:

--chef-repo-path PATH
The path to the chef-repo. This setting will override the default path to the chef-repo. Default: same value as specified by chef_repo_path in client.rb.
--concurrency
The number of allowed concurrent connections. Default: 10.
--[no-]diff
Indicates that only new and modified files will be uploaded. Set to false to upload all files. Default: true.
--[no-]force
Use --force to upload roles, cookbooks, etc. even if the file in the directory is identical (by default, no POST or PUT is performed unless an actual change would be made). Default: --no-force.
--[no-]freeze
Indicates that a cookbook cannot be modified; any changes to this cookbook must be included as a new version. Only the --force option can override this setting. Default: false.
-n, --dry-run
Indicates that no action is taken and that results are only printed out. Default: false.
--[no-]purge
Use --purge to delete roles, cookbooks, etc. from the Chef server if their corresponding files do not exist in the chef-repo. By default, such objects are left alone and NOT purged. Default: --no-purge.
--[no-]recurse
Use --no-recurse to disable uploading a directory recursively. Default: --recurse.
--repo-mode MODE
The layout of the local chef-repo. Possible values: static, everything, or hosted_everything. Use static for just roles, environments, cookbooks, and data bags. By default, everything and hosted_everything are dynamically selected depending on the server type. Default: everything / hosted_everything.

Examples

The following examples show how to use this Knife subcommand:

Upload the entire chef-repo

Browse to the top level of the chef-repo and enter:

$ knife upload

or from anywhere in the chef-repo, enter:

$ knife upload /

Upload the /cookbooks directory

Browse to the top level of the chef-repo and enter:

$ knife upload cookbooks

or from anywhere in the chef-repo, enter:

$ knife upload /cookbooks

Upload the /environments directory

Browse to the top level of the chef-repo and enter:

$ knife upload environments

or from anywhere in the chef-repo, enter:

$ knife upload /environments

Upload a single environment

Browse to the top level of the chef-repo and enter:

$ knife upload environments/production.json

or from the environments/ directory, enter:

$ knife upload production.json

Upload the /roles directory

Browse to the top level of the chef-repo and enter:

$ knife upload roles

or from anywhere in the chef-repo, enter:

$ knife upload /roles

Upload cookbooks and roles

Browse to the top level of the chef-repo and enter:

$ knife upload cookbooks/apache\* roles/webserver.json

Use output of knife deps to pass command to knife upload

$ knife upload `knife deps nodes/*.json`