Use the knife upload subcommand to upload data to the Chef Infra Server from the current working directory in the chef-repo. The following types of data may be uploaded with this subcommand:
(Roles and environments stored as Ruby data will not be uploaded.) 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.
This subcommand has the following syntax:
knife upload [PATTERN...] (options)
Note
This subcommand has the following options:
--chef-repo-path PATHThe 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.
--concurrencyThe number of allowed concurrent connections. Default: 10.
--[no-]diffUpload only new and modified files. Set to false to upload all files. Default: true.
--[no-]forceUse --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-]freezeRequire changes to a cookbook be included as a new version. Only the --force option can override this setting. Default: false.
-n, --dry-run
Take no action and only print out results. Default: false.
--[no-]purgeUse --purge to delete roles, cookbooks, etc. from the Chef Infra 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-]recurseUse --no-recurse to disable uploading a directory recursively. Default: --recurse.
--repo-mode MODEThe 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.
Note
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 /
to upload all cookbooks and data bags, plus all roles and environments that are stored as JSON data. (Roles and environments stored as Ruby data will not be uploaded.)
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
to upload all environments that are stored as JSON data. (Environments stored as Ruby data will not be uploaded.)
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
to upload all roles that are stored as JSON data. (Roles stored as Ruby data will not be uploaded.)
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`
© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/knife_upload/