Yum Update all my nodes at a time


#1

Hi,

I’m Prash, from india . I’m still new to Chef. So, let say that I have 5 nodes and I want to yum update all the nodes from the workstation, Can I do it, Is there any cookbooks to perform this process?

Thank you


#2

Yes, there is a YUM cookbook available (a few infact). I would run the following command from the Chef-DK

knife supermarket search yum

Which will output the following data:

yum:
cookbook:             https://supermarket.chef.io/api/v1/cookbooks/yum
cookbook_description: Configures various yum components on Red Hat-like systems
cookbook_maintainer:  chef
cookbook_name:        yum
yum-centos:
cookbook:             https://supermarket.chef.io/api/v1/cookbooks/yum-centos
cookbook_description: Installs and configures the Centos Yum repositories
cookbook_maintainer:  chef
cookbook_name:        yum-centos
yum-cron:
cookbook:             https://supermarket.chef.io/api/v1/cookbooks/yum-cron
cookbook_description: Installs/Configures yum-cron
cookbook_maintainer:  osuosl
cookbook_name:        yum-cron
yum-epel:
cookbook:             https://supermarket.chef.io/api/v1/cookbooks/yum-epel
cookbook_description: Installs and configures the EPEL Yum repository
cookbook_maintainer:  chef
cookbook_name:        yum-epel
yum-fedora:
cookbook:             https://supermarket.chef.io/api/v1/cookbooks/yum-fedora
cookbook_description: Installs and configures the Fedora Yum repositories
cookbook_maintainer:  chef
cookbook_name:        yum-fedora

You can then install the cookbook using the following:

knife supermarket install <cookbook name>

…and have a play around to see if it suits your needs. If it does not, writing a custom cookbook with the following could be the simple answer you are looking for.

execute 'yum_update_upgrade' do
command 'sudo yum update && sudo yum upgrade'
end

#3

execute(“yum_update_upgrade”) do
10.0.109.167 action [:run]
10.0.109.167 retries 0
10.0.109.167 retry_delay 2
10.0.109.167 default_guard_interpreter :execute
10.0.109.167 command "sudo yum update && sudo yum upgrade"
10.0.109.167 backup 5
10.0.109.167 returns 0
10.0.109.167 declared_type :execute
10.0.109.167 cookbook_name "yum-upate"
10.0.109.167 recipe_name "default"
10.0.109.167 end
10.0.109.167
10.0.109.167 Platform:
10.0.109.167 ---------
10.0.109.167 x86_64-linux
10.0.109.167
10.0.109.167
10.0.109.167 Running handlers:
10.0.109.167 [2017-01-13T09:33:24-05:00] ERROR: Running exception handlers
10.0.109.167 Running handlers complete
10.0.109.167 [2017-01-13T09:33:24-05:00] ERROR: Exception handlers complete
10.0.109.167 Chef Client failed. 0 resources updated in 03 seconds
10.0.109.167 [2017-01-13T09:33:24-05:00] FATAL: Stacktrace dumped to /var/chef/c ache/chef-stacktrace.out
10.0.109.167 [2017-01-13T09:33:24-05:00] FATAL: Please provide the contents of t he stacktrace.out file if you file a bug report
10.0.109.167 [2017-01-13T09:33:24-05:00] ERROR: execute[yum_update_upgrade] (yum -upate::default line 10) had an error: Mixlib::ShellOut::ShellCommandFailed: Exp ected process to exit with [0], but received '1’
10.0.109.167 ---- Begin output of sudo yum update && sudo yum upgrade ----
10.0.109.167 STDOUT:
10.0.109.167 STDERR: sudo: sorry, you must have a tty to run sudo
10.0.109.167 ---- End output of sudo yum update && sudo yum upgrade ----
10.0.109.167 Ran sudo yum update && sudo yum upgrade returned 1
10.0.109.167 [2017-01-13T09:33:24-05:00] FATAL: Chef::Exceptions::ChildConvergeE rror: Chef run process exited unsuccessfully (exit code 1)

i am getting this error when i tried to execute this command on my recipie


#4

10.0.109.167 Dependencies Resolved
10.0.109.167
10.0.109.167 ================================================================================
10.0.109.167 Package
10.0.109.167 Arch Version Repository Size
10.0.109.167 ================================================================================
10.0.109.167 Updating:
10.0.109.167 java-1.6.0-openjdk
10.0.109.167 x86_64 1:1.6.0.41-1.13.13.1.el6_8 rhui-REGION-rhel-server-releases 42 M
10.0.109.167 java-1.6.0-openjdk-devel
10.0.109.167 x86_64 1:1.6.0.41-1.13.13.1.el6_8 rhui-REGION-rhel-server-releases 15 M
10.0.109.167
10.0.109.167 Transaction Summary
10.0.109.167 ================================================================================
10.0.109.167 Upgrade 2 Package(s)
10.0.109.167
10.0.109.167 Total download size: 56 M
10.0.109.167 Is this ok [y/N]: Exiting on user Command
10.0.109.167 Your transaction was saved, rerun it with:
10.0.109.167 yum load-transaction /tmp/yum_save_tx-2017-01-13-09-5182OM1N.yumtx
10.0.109.167 STDERR:
10.0.109.167 ---- End output of yum update && yum upgrade ----
10.0.109.167 Ran yum update && yum upgrade returned 1
10.0.109.167 [2017-01-13T09:51:50-05:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

i TRIED BY REMOVING SUDO IN THE COMMAND SO IT THIS ERROR CAN YOU PLEASE HELP ME IN SLOVING THIS…


#5

Just add a -y so yum won’t try to be interactive and will assume yes to all questions. And if chef is run as root, there’s indeed no need for sudo.


#6

Prash,

you could just use knife to accomplish this task as well:

with password and all specific platform i.e linux or whatever accepts ssh
connections:
knife ssh -x -p ‘platform:<platform_type>’ ‘sudo yum
update -y’ -C 5`

if no password is known
knife ssh -x --i ‘platform:<platform_type>’
‘sudo yum update -y’ -C 5`


#7

can you please explain me the above commands with an example / may i know -C 5 is for?


#8

-C is for count, how many nodes at a time you want to run this command on
simultaneously


#9

with out bootstrapping a node with cookbook how can this be done by knife utility?