Commit Graph

48 Commits

Author SHA1 Message Date
Frédéric Péters f12fa88f04 add support for defining custom keywords mappings in configuration file
This can be used for shortcuts or alternative names, ex:

 [keywords]
 monitoring = munin,scrutiny,prometheus

or to prevent common errors or misconceptions:

 [keywords]
 saas/test = saas/test,-hds,-re,-docbow
2021-04-13 12:25:47 +02:00
Frédéric Péters 1ddfe568f9 factor reading of configuration file 2021-04-13 12:25:34 +02:00
Frédéric Péters e445ebc24e add support for declaring additional servers in configuration file 2021-02-06 14:12:57 +01:00
Frédéric Péters 868b870979 add --list-commands argument 2021-01-30 20:59:09 +01:00
Frédéric Péters f257f25a2e move documentation from head comment to README 2021-01-30 20:55:55 +01:00
Frédéric Péters 6adea28798 trivial: apply black 2021-01-30 20:47:28 +01:00
Frédéric Péters ef933e5fad add possibility to define command shortcuts in config file 2021-01-30 20:44:13 +01:00
Frédéric Péters 5b7c51b127 add 1st fqdn part without trailing digits as keyword 2021-01-30 20:44:13 +01:00
Christophe Siraut 7f6760788f use servers.yaml instead of deprecated servergroups.yaml 2021-01-30 20:44:13 +01:00
Frédéric Péters b7b2641838 allow specifying multiple suffixes to be stripped 2021-01-30 20:44:13 +01:00
Frédéric Péters 7357bef79c add stripsuffix configuration option 2021-01-30 20:44:13 +01:00
Frédéric Péters 941d36394b include welco in restart.all/collectstatic commands 2021-01-30 20:44:13 +01:00
Frédéric Péters 14b0553b52 add -x to exclude hosts based on regex match 2021-01-30 20:44:13 +01:00
Frédéric Péters 33a6284084 add passerelle/wcs restart command shortcuts 2021-01-30 20:44:13 +01:00
Frédéric Péters c8d6958ebd reread supervisor config before restarting hobo-agent 2021-01-30 20:44:13 +01:00
Frédéric Péters f7cde263f1 add puppet.update shortcut 2021-01-30 20:44:13 +01:00
Frédéric Péters 1be44c026b use safe loading of yaml inventory 2021-01-30 20:44:13 +01:00
Frédéric Péters a5d68535cf add memcached.restart 2021-01-30 20:44:13 +01:00
Frédéric Péters 298064e76c add shortcut to restart all services
(useful after a new hobo version, for example)
2021-01-30 20:44:13 +01:00
Frédéric Péters 5307c5d52d do not start if already running in tmux 2021-01-30 20:44:13 +01:00
Frédéric Péters b0d13c9439 remove all digits to get cluster name 2021-01-30 20:44:13 +01:00
Frédéric Péters 8ce27b32d5 do not try disabling ssh connection sharing
Whatever the command line options connection sharing configured in
~/.ssh/config stays somehow active, and cause errors.

Ansible has custom code to detect the situation and automatically
restart a SSH connection (see AnsibleControlPersistBrokenPipeError usage
in lib/ansible/plugins/connection/ssh.py, also relevant is bug#16731).

The only reliable fix is thus to change ~/.ssh/config to limit
connection sharing to apply to some hosts only.
2021-01-30 20:44:13 +01:00
Frédéric Péters adc884a972 add support for a --noinput flag 2021-01-30 20:44:13 +01:00
Frédéric Péters 46c83e0484 disable connection sharing as it proved unreliable 2021-01-30 20:44:13 +01:00
Frédéric Péters 5985587b4a offer choices when a command fails 2021-01-30 20:44:13 +01:00
Frédéric Péters 34883be7d5 execute actual ssh command in a fork, to get return code 2021-01-30 20:44:13 +01:00
Frédéric Péters 7cef54cb70 split status-window and session-name parameters 2021-01-30 20:44:13 +01:00
Frédéric Péters f0ab4feea3 add support for passing command args 2021-01-30 20:44:13 +01:00
Frédéric Péters c2bf345bcb force ssh pty allocation 2021-01-30 20:44:13 +01:00
Frédéric Péters c28881c972 use full-upgrade 2021-01-30 20:44:13 +01:00
Frédéric Péters a228a501c9 bump parallel jobs to 10
test results, eoptasks -k test /bin/true (52 servers)

 * 5 jobs: 48 seconds
 * 10 jobs: 29 seconds
 * 20 jobs: 28 seconds
2021-01-30 20:44:13 +01:00
Frédéric Péters 493ad8f5e7 add hobo-agent.restart command 2021-01-30 20:44:13 +01:00
Frédéric Péters a88d3e042f fix moonlight progress order 2021-01-30 20:44:13 +01:00
Frédéric Péters 5e75af334f add combo.reload special command 2021-01-30 20:44:13 +01:00
Frédéric Péters 1962287758 add examples 2021-01-30 20:44:13 +01:00
Frédéric Péters 61570f5008 add unmodified group name to keywords 2021-01-30 20:44:13 +01:00
Frédéric Péters c536958fe7 add ignorelist
(so it's not necessary to keep local commits in the puppet repository to
disable servers such as villejuif-test)
2021-01-30 20:44:13 +01:00
Frédéric Péters 1342001811 add curses/emoji status screen 2021-01-30 20:44:13 +01:00
Frédéric Péters 47db1cc1c8 use an independent process for status window 2021-01-30 20:44:13 +01:00
Frédéric Péters 2eca6b4e1e refactor into multiple functions 2021-01-30 20:44:13 +01:00
Frédéric Péters ca1a9ec137 add moonlight progress indicator
(this keeps a window always open, so hacks to handle final serial
processes are removed)
2021-01-30 20:44:13 +01:00
Frédéric Péters 048ee86c08 add servername parts as keywords
This make it possible to have filters such as node1.dev or entrouvert.org
2021-01-30 20:44:13 +01:00
Frédéric Péters b1ca82e646 add option to exclude keywords
eoptasks -k node1,node2,-database will give all node1/node2 servers
except database.node1 and database.node2.
2021-01-30 20:44:13 +01:00
Frédéric Péters 18549759d4 add flag to list selected servers 2021-01-30 20:44:13 +01:00
Frédéric Péters f6f5b309be add configuration file/do not hardcode my path 2021-01-30 20:44:13 +01:00
Frédéric Péters f1e6ae9b49 randomize servers 2021-01-30 20:44:13 +01:00
Frédéric Péters 9df1dcc4ac add collectstatic command 2021-01-30 20:44:13 +01:00
Frédéric Péters 818d28fbfe add new script to run commands on servers
This script provides parallel remote execution of commands, while having
some special knownledge of servers that should *not* be handled in parallel.

It defers terminal-handling to tmux(1).

It has some targeting capacities using keywords. Commas for 'OR' and slashes
for 'AND', ex: ext/test,saas/test/passerelle will select all external test
servers + all passerelle servers on the SaaS.

It takes any shell command and has some builtin shortcuts such as apt.update
and apt.upgrade. (that's the whole lot, actually).

Regarding actual performance benefits, apt upgrade with no packages to
upgrade:

 $ time eoptasks -k ext/test apt.upgrade
real    0m24,249s
user    0m0,140s
sys     0m0,025s

 $ time eotasks -g ext_test apt.upgrade
real    6m9,956s
user    3m32,096s
sys     0m2,322s
2021-01-30 20:44:04 +01:00