This may also be useful if you're looking for a parallel command execution tool:
https://github.com/kt97679/one-ssh On Wed, Jan 10, 2018 at 4:11 PM, Vincent S. Cojot <[email protected]> wrote: > Speaking of mass execution on thousands of hosts, I've used Perl 'netrun' > to a great extent in the recent past. Note that ansible core does great > things in this fashion as well but may be a little slower than pdsh or > netrun. > My 2c, > Vincent > > Sent from TypeApp <http://www.typeapp.com/r?b=11719> > On Jan 10, 2018, at 19:03, Stephen Dowdy <[email protected]> wrote: >> >> On 01/10/2018 03:27 PM, Patrick Boutilier wrote: >> >>> What I would do is download the BIOS update file once and then create a >>> script to rsync it to the 1500 hosts and run the update. I presume you >>> would have a script to run dsu on the 1500 hosts anyway? >>> >> >> First: i gave up on using Dell's enterprise management tools due to >> constant heartache/headache/frustration. It definitely makes me sad that >> these tools continually change, but never actually get much better. (okay, >> it looks like they are finally attacking the BASHisms in some of their >> scripts that borked Debian/Ubuntu systems badly, but the continual lack of >> correctness/current-cy, etc just pains me). >> >> Second: >> >> FYI, LLNL's 'pdsh' works great for this. requires ssh public key trust for >> 'root' in my following examples to do the following (running DUPs requires >> 'root'): >> ** note that your public key should be offline until loaded in your >> ssh-agent (oof, Meltdown/Spectre, sigh) >> WARNING: as any tool that allows mass-execution, if you screw up, you've now >> multiplied that screwup to a large number of systems, so always be careful. >> >> If you have a file of hostnames already: >> >> pdsh -lroot -g {file} 'command-to-run-on-all-remote-systems' >> (file is usually dshgroup module selected so ~/.dsh/group/{file} or >> /etc/dsh/group/{file}) >> >> If you wanna hit everything in /etc/hosts, instead: >> >> awk '$0!~/^(#.*| *)$/{print$2}' /etc/hosts | WCOLL=- pdsh -Rexec scp >> FOO-2.7.0.BIN root@%h:/dev/shm/ >> explained: all non-comment/blank lines, print hostname (field 2), setup >> pdsh's WCOLL envvar as the file containing hostnames to stdin (-), use the >> exec module to scp your DUP.BIN file, substituting %h for each hostname >> successively. >> awk '$0!~/^(#.*| *)$/{print$2}' /etc/hosts | WCOLL=- pdsh -lroot >> '/dev/shm/FOO-2.7.0.BIN -q' >> now, issue 'ssh' session to all hosts to run the DUP.BIN with '-q'. ('-q' >> doesn't display changelog or prompt to run, also won't reboot after >> completion automatically) >> >> Note that 'pdsh' fans-out commands, running "N" jobs simultaneously (default >> 32). I limit mine to 8 so i can use some special gateway-hop syntax with >> custom ./ssh/config rules to bounce past the admin nodes on clusters into >> the backend compute nodes. This avoids the default 'sshd' connection >> throttling limits (usually 10 simultaneous connections) (e.g. >> cluster1-admin!!node3) using the ssh-config rule: >> >> Host *!!* >> GatewayPorts no >> ProxyCommand $(h="%h";p="%p" ; echo ssh -W ${h##*\!\!}:%p -l root >> ${h%%\!\!*}) >> >> It's much easier to use libgenders or dshgroup style files for this kind of >> thing (than /etc/hosts and awk, etc), so you can use attribute selectors >> (genders) like: >> >> gpsh -lroot -g 'model=poweredge_r730' 'do-something' >> (it's up to you to create a genders file with the right attributes filled in) >> >> records in my genders file, as created from a scripted MySQL asset database >> extraction look like: >> >> host99 >> name=host99,manu=dell,model=precision_t3400,hwtype=desktop,sn=XXXXXXX,os=debian_linux,status=in_use,user=godot,responsible=godot,purpose=user_room_linux,sa1=sdowdy,project=unknown,location=fl2-2094 >> >> Unfortunately, 'genders' doesn't support REGEX :-( but you can use regex >> selection on hostnames in pdsh (just not attributes), like: >> >> pdsh -lroot -g 'hwtype=desktop' -w '/engr-.*/' ... >> >> to only hit the systems that are desktops and filter-down to only names with >> "engr-" in them. >> >> --stephen >> >> > _______________________________________________ > Linux-PowerEdge mailing list > [email protected] > https://lists.us.dell.com/mailman/listinfo/linux-poweredge > >
_______________________________________________ Linux-PowerEdge mailing list [email protected] https://lists.us.dell.com/mailman/listinfo/linux-poweredge
