I would like to go to the location
/var/log/src/ap-kernelmodule-10.001-100
But looks like my code has to deal with ap-kernelmodule-10.002-100, ap-kernelmo
You can't be in multiple cwd
s simultaneously. To run the command for each directory that matches the pattern, you can use Dir#glob
:
Dir.glob('/var/cache/acpchef/src/ap-kernelmodule-10*').each do |cwd|
Mixlib::ShellOut.new("command run here", cwd: cwd).run_command
end
I am not quite get on what you really want to achieve. Question is rather ambiguous.
You know you would like to go to /var/log/src/ap-kernelmodule-10.001-100
and run a command, the most obvious way is you could just use:
execute "command run here" do
cwd "/var/log/src/ap-kernelmodule-10.001-100"
end
But if you would like to run a command for each directory like you said in ap-kernelmodule-10.002-100
, ap-kernelmodule-10.003-101
etc. with /var/log/src/ap-kernelmodule-10.*/
sequentially.
Then you could do with:
Dir.glob("/var/log/src/ap-kernelmodule-10.*").each do |folder|
execute "command run here" do
cwd folder
end
end
Additionally, parallel resources execution is not possible natively in chef (AFAIK).
So, the possible workaround is to use bash
or ruby_block
resource to construct commands to be executed in xargs
, parallel
or similar tools.
Hope this helps.