何がやりたいのか
そう、結論からいうと大量のサーバに対してプロビジョニングをかけたい。
で、サーバの名前の付け方が以下の感じだったとする
> webfront-01
> webfront-02
> webfront-03
...
> webfront-99
こいつらに対して、ssh uname -aを実行したい場合はどうするべきか、
というのでチョコっとしたシェルコマンド(ワンライナ)を残す。
xargsを組み合わせれば良い。
利用するコマンドのバージョン
GNU xargsとBSD xargsでオプション違ってて困った。
とりあえずGNU xargsを基準とする。
xargsは4.4.2
bashはは4.3.11である。
xargsについて
> xargs -P4 -d " " -I {} ssh webfront-{} uname -a
- 並列度 4
- デリミタ空白
- 引数に取った値を {} に代入
という意味だ。なんてことはないが...
echo "01 02 03 04..." をつかう
> echo "01 02 03 04 ... 99" | xargs -P4 -d " " -I {} ssh webfront-{} uname -a
欠点 "01 02 03" とか 書くのめんどくさい
seqを使う
seqというコマンドがあるので、それがいいのかなと思って試してみた。
> seq -f "%02g" -s " " 1 99 | xargs -P4 -I{} -d " " ssh webfront-{} uname -a
欠点 seqに渡すオプションが複雑、長い。だるい。
echo {0..n}を使う
> echo {0..9}{0..9} | xargs -P4 -I{} -d " " ssh webfront-{} uname -a
echo {0..9}{0..9}で、00から99までの値を吐き出してくれる。便利だ。
> echo {0..9}{0..9}
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
echo {0..2}{0..9}とすれば、00から29までの値を吐き出してくれる
> echo {0..2}{0..9}
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
で、
最終的にこれらをjenkinsに入れて、日々のインフラがやってる作業を
見える化していく...