knife xargs
Use the knife xargs subcommand to take patterns from standard input, download as JSON, run a command against the downloaded JSON, and then upload any changes.
Syntax
This subcommand has the following syntax:
knife xargs [PATTERN...] (options)
Options
Note
This subcommand has the following options:
-0Default:
false.--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_pathin client.rb.--concurrencyThe number of allowed concurrent connections. Default:
10.--[no-]diffShow a diff when a file changes. Default:
--diff.--dry-runPrevent changes from being uploaded to the Chef Infra Server. Default:
false.--[no-]forceForce the upload of files even if they haven’t been changed. Default:
--no-force.-
-I REPLACE_STRING,--replace REPLACE_STRING Define a string that is to be used to replace all occurrences of a file name. Default:
nil.-
-J REPLACE_STRING,--replace-first REPLACE_STRING Define a string that is to be used to replace the first occurrence of a file name. Default:
nil.--localBuild or execute a command line against a local file. Set to
falseto build or execute against a remote file. Default:false.-
-n MAX_ARGS,--max-args MAX_ARGS The maximum number of arguments per command line. Default:
nil.-
-p [PATTERN...],--pattern [PATTERN...] One (or more) patterns for a command line. If this option is not specified, a list of patterns may be expected on standard input. Default:
nil.--repo-mode MODEThe layout of the local chef-repo. Possible values:
static,everything, orhosted_everything. Usestaticfor just roles, environments, cookbooks, and data bags. By default,everythingandhosted_everythingare dynamically selected depending on the server type. Default value:default.-
-s LENGTH,--max-chars LENGTH The maximum size (in characters) for a command line. Default:
nil.-tRun the print command on the command line. Default:
nil.
Note
Examples
The following examples show how to use this knife subcommand:
Find, and then replace data
The following example will go through all nodes on the server, and then replace the word foobar with baz:
knife xargs --pattern /nodes/* "perl -i -pe 's/foobar/baz'"
Use output of knife list and Perl
The following examples show various ways of listing all nodes on the server, and then using Perl to replace grantmc with gmc:
knife list 'nodes/*' | knife xargs "perl -i -pe 's/grantmc/gmc'"
or without quotes and the backslash escaped:
knife list /nodes/\* | knife xargs "perl -i -pe 's/grantmc/gmc'"
or by using the --pattern option:
knife xargs --pattern '/nodes.*' "perl -i -pe 's/grantmc/gmc'"
View security groups data
The following example shows how to display the content of all groups on the server:
knife xargs --pattern '/groups/*' cat
and will return something like:
{
"name": "4bd14db60aasdfb10f525400cdde21",
"users": [
"grantmc"
]
}{
"name": "62c4e268e15fasdasc525400cd944b",
"users": [
"robertf"
]
}{
"name": "admins",
"users": [
"grantmc",
"robertf"
]
}{
"name": "billing-admins",
"users": [
"dtek"
]
}{
"name": "clients",
"clients": [
"12345",
"67890",
]
}{
"name": "users",
"users": [
"grantmc"
"robertf"
"dtek"
],
"groups": [
"4bd14db60aasdfb10f525400cdde21",
"62c4e268e15fasdasc525400cd944b"
]
}
© 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_xargs/