閉鎖環境でも 超簡単に Bash を一括アップデートする。 #shellshock #ansiblejp thanks ansible
弊社は観測範囲では外部ユーザーがコマンド実行できる様なサービスではないので(一体何をしているのかはかなり謎ですが)、どうやらCGIとかを使ってない様なので問題はなかったようです。
が、一応念のためシナリオは作って準備しておいたので、このまま眠らせておくのはかわいそうなので公開しようと思います。
閉鎖環境でない&RedHat系なら、こちらの記事が参考になるかと思います。
Ansibleを知らない人の為に
Ansible は、最近話題のDeploymentツールです。
teraterm マクロの発展形みたいなもので、構成情報(操作するホスト)、とシナリオ(playbook、操作する内容)を書くだけの、シンプルな設定だけで使える様になるので、非常にお勧めです。
大きいところだと、Evernote さんなんかが使っている事例が公開されています。
Ansible is Simple IT Automation
今回のBashアップデートツール を使う前提条件
■OS
Ansible実行ホスト:Linux
Ansibleターゲットホスト:Linux(Redhat系、Debian系)
■python(ターゲットホスト)
python2.5以上が入っている事が前提条件となっており、
python2.4の入っているOS(RHEL、CentOS5系)では、ついでにsimple-jsonパッケージが必要です。(なので、python2.4しか入っていない場合は、手でやったほうがいいでしょう。ついでに次回以降のために、simple-jsonを入れておくといいかも。)
ちなみに今回のBashのアップデートは完璧ではないので、また次回も必ず利用します。
(追記)
適当に持ってきたdebianは、pythonすら入ってなかったので失敗しました。
別途、sudo apt-get install python 等を実行すると、Ansibleが動作する様になりました。
failed: [debian] => {"failed": true, "parsed": false}
invalid output was: SUDO-SUCCESS-xwpgdtgjefwmpfzeksmjbkehwpvwlzgh
/bin/sh: /usr/bin/python: not found
Ansibleを使ったBashアップデートツールの概要
以下が概要図となっています。
実行ホスト側に、ansibleとそれぞれ便利なツール類のインストールが必要です。
監視サーバなどが該当するかと思われます。
(力尽きたので、インストールの説明までならず。。。)
で、bash_update.shを実行すると、各サーバのBashをアップデートしてくれます。
ツールの動作は以下のようになっています。
- 事前作業:まずはディストリビューションの確認
- 事前作業:/var/tmp/bash_update という作業用ディレクトリの作成
- 事前作業:ターゲットサーバにファイルの転送
- 作業 :Bashのアップデート
- 事後作業:エビデンス収集、rpm -q bash の実行
とりあえず心配な人たちのために、公開時の状態ではパッケージのアップデートは行わないようにしてあります。
必要なファイルを、files_to_debian/files_to_redhatというディレクトリを作成して、中にファイルを入れる&ymlファイルのpkg_filenameを正しく入力するとアップデートが行われる様になっています。
必要なパッケージファイルは以下からダウンロードしましょう。
Ubuntu – Package Search Results -- bash
実行イメージ
以下の様な感じで実行されます。
いきなりsudo を聞かれますが、Bashのアップデートに使われます。
ターゲット側のsudo使えるアカウントが必要になりますので、アカウントが同じ場合のみ使えます。
--stepオプションをデフォルトで付けてくれるようにしてあります。
ついでに、stepオプションの説明も出るにしてみました。
デフォルトでは、適当なファイル名が指定されているので、途中で警告メッセージが出るようにしてあります。
実行されると、ターゲット側のサーバの /var/tmp/bash_update というディレクトリにログが残るようになっています。
また、実行ホスト側の./logs/[ホスト名]/bash_update.tar.gz というファイルが収集されているので、正しく実行されたかご確認ください。
(ちゃんとバージョン比較までやってやれればよかったのですが、日々バージョン変わるので・・・)
ファイル
今回使ったファイルは以下に用意しておきました。
最後に
Ansible非常に便利ですが、閉鎖環境内で暮らすことを余儀なくされている方は追加でパッケージインストールなどはもってのほかだ、と曰われSAN値を削られている物と思われますが、
日々負けず、めげず、努力しつつ、啓蒙していけば数年もすればやって当たり前のような世界が切り開けます。
その時のために、(見捨てて他社に転職)継続して、成果を発表しつづけましょう。
最近は昔よりこういうツール類を使ってあたりまえだよね、という空気が出てきた(と言うか、洗脳が完了した)ので、
ぜひ皆様方の会社でもコレを気に交渉してAnsibleを提案してみましょう。
Thanks Ansible!
あ、インストール/踏み台のことを書き忘れた。。。。
また次回
(追記)インストール方法を追加しました。
他にも試して欲しいディストリビューションとかあったら、ご連絡ください。