Category Archives: 未分類

[memo] CoreOSのインストール

Pocket

CoreOSを自分でインストールする。
目的は、VirtualBoxや、VMWarePlayer, vSphere(ESXi)等で動かす自前のCoreOSイメージを作成するため。

CoreOSの初期設定

CoreOSはユーザアカウント等の初期設定をインストール時に一括で行う。
「一括で」とわざわざ書いたのには理由がある。
通常、LinuxやFreeBSDなどのインストールでは、インストール時に対話インタフェースが実行され、質問に答える形で各種設定を行う。
しかしCoreOSでは、あらかじめ準備した設定ファイルを、インストール時に指定する方法を採る。
つまり設定ファイルさえ書いておけば、コマンド一発でインストールができるということ。

その設定ファイルがCloud-Config。

Cloud-Configの書き方

ここに記載がある。
https://coreos.com/os/docs/latest/cloud-config.html

いきなりここにあるすべての設定を書き込むのは、後述の手順を見てもかなり大変。
よって、必要最低限のものしか書かない。
具体的には、CoreOSにターミナルログインするユーザ設定のみ。
そこから先は、OSインストール後に実施する。

ISOイメージでブート

https://coreos.com/os/docs/latest/booting-with-iso.html
上記からダウンロード。
VirtualBoxでもなんでも、すきな仮想ソフトウェアに読み込ませて起動する。
なお、仮想マシン作成時、OSを選ぶ際には64bit Linuxを選んでおけばよい。

Cloud-Configを書く前に

必要なのは、作業用アカウントの設定だけ。
したがって、ID、パスワード、作業用アカウントの権限くらいでよい。
当然のことながらパスワードを平文で保存するわけにはいかないから、mkpasswdを使ってハッシュ化したものを書き込むこと。

パスワードハッシュの生成

作業用アカウントのパスワードハッシュを生成する。
もちろん、SSHの公開鍵でもいいのだが、パスワードハッシュの方が楽。

mkpasswdの使い方はmkpasswd -hで得られる。

 $ mkpasswd -h
Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]
Crypts the PASSWORD using crypt(3).

      -m, --method=TYPE     select method TYPE
      -5                    like --method=md5
      -S, --salt=SALT       use the specified SALT
      -R, --rounds=NUMBER   use the specified NUMBER of rounds
      -P, --password-fd=NUM read the password from file descriptor NUM
                            instead of /dev/tty
      -s, --stdin           like --password-fd=0
      -h, --help            display this help and exit
      -V, --version         output version information and exit

If PASSWORD is missing then it is asked interactively.
If no SALT is specified, a random one is generated.
If TYPE is 'help', available methods are printed.

ハッシュ生成方法についてはmkpasswd -m helpで得られる。

$ mkpasswd -m help
Available methods:
des     standard 56 bit DES-based crypt(3)
md5     MD5
sha-256 SHA-256
sha-512 SHA-512

SHA-512までいけますね。
では、ハッシュ生成。
いったんテストして問題ないようなら、テキストファイルに書き込む。

$ mkpasswd -m sha-512 avedakedavra
$6$hIKFY6fnAE$gfpPpQu3rAcJMCeO3t93/3jUxVKBe7W/hC1.n5kwge3nnqsQngVnnoM8.jyWv/jYKbsJZoBm/6SSO7Ge4Zx/B0
$ mkpasswd -m sha-512 avedakedavra > cloud-config
$

以上でカレントディレクトリのcloud-configが生成された。
あとはこのcloud-configに必要な設定を書き加えるだけ。

Cloud-configの作成

設定ファイルの書式はYAML
YAMLは人間の眼には易しいが、フォーマットが合っているか不安になる。
その場合はatom等で書いておいてもよい。ハイライトしてくれるパッケージもある

そこで先述の通り必要最低限の記載だけする。
hostnameでホスト名、追加したいユーザと、そのユーザがsudoとdockerを使えるよう、groupに追加する。
以下のように。

#cloud-config

  hostname: "coreos"
  users:
    - name: "nobwak"
      passwd: $6$hIKFY6fnAE$gfpPpQu3rAcJMC....
      groups:
        - "sudo"
        - "docker"

 

CoreOSのインストール

作成したcloud-configを指定してインストールすればよい。
-dでインストール先デバイスを、-Cでチャネルを、-cで先ほど作成したcloud-configを指定する。

sudo coreos-install -d /dev/sda -C stable -c cloud-config

起動したら、作成したユーザでログインすることを確認する。
 

No tags for this post.

[メモ] wxPythonがOS Xにインストールできない(解決)

Pocket

wxPythonはWindows, OS X, LinuxなどOSを問わずGUIアプリケーションを作ることのできる超絶ありがたいツールである。
あるのだが、OS Xにインストールしようとすると、イメージが「壊れているからインストールできません」と来る。
スクリーンショット 2014-09-19 13.40.54
実はこれ、壊れているのではなく、単にサインされていないだけである。
解決法を示す。

システム環境設定の「セキュリティとプライバシー」から「一般」に進み、「ダウンロードしたアプリケーションの実行許可」で「すべてのアプリケーション」を選べばよい。
スクリーンショット 2014-09-19 13.40.09
インストールし終わったら元に戻しておこうな。

http://stackoverflow.com/questions/21223717/install-wxpython-on-mac-os-mavericks

[メモ] Pythonで標準エラー出力に表示するには

Pocket

sys.stderrを使う。

例1)

import sys
sys.stderr.write('Error occurred!')

例2)

import sys
print >> sys.stderr, 'Error occurred!'

 

http://docs.python.jp/2/library/sys.html#sys.stderr
http://stackoverflow.com/questions/5574702/how-to-print-to-stderr-in-python
https://sites.google.com/site/diveintopythonjp/home/10-sukuriputo-to-sutorimu/10-2-hyoujun-nyuuryoku—hyoujun-shutsuryoku—soshite—era

[FreeBSD] 無人でのユーザ追加

Pocket

 

仮想化全盛のこの世の中、OSインストール直後の各種設定はなるだけ無人化したい。
そこでFreeBSDでのユーザ設定の無人化について。

pw(8)

pwを使う。
man pwすると画面いっぱいに広がるSYNOPSISにまずのけぞる。
そのくらい、たくさんのことができるpwコマンドであるが、使うのは二つだけ。

pw groupadd
pw useradd

グループ追加とユーザ追加ですな。

 

pwでのグループ追加

書式は以下の通り

pw groupadd -q -n <グループ名> -g <GID>

 

-qはエラーメッセージの抑制。
じゃ実際にエラーが発生したらどうすんだ、って話になるが、そこはステータスコードを使う。

グループ:testgをgroup ID:10010で追加するなら、以下の通り。

pw groupadd -q -n testg -g 10010

 

pwでのユーザ追加

グループ追加に比べ、こちらはちょっと複雑。
書式は以下の通り。

pw useradd -n <ユーザ名> -u <UID> -s <シェル> \
-m -d <ホームディレクトリ> -G <グループ名> \
-c <コメント>

特に-mを除いて説明の必要はないと思う。
-mはホームディレクトリを新規に作る、という意味。

しかしこれだけだとパスワードを訊かれてしまう。

 

パスワード設定も無人でしたい。

パスワード設定も自動化するには、以下のようにする。

echo -n '<パスワード>' |\
pw useradd -n <ユーザ名> -u <UID> -s <シェル> \
-m -d <ホームディレクトリ> -G <グループ名> \
-c <コメント> \
-h 0

-h 0をオプションとして与えると、pw はパスワード設定を標準入力から受け付けてくれる。
つまり、パスワードをechoし、その標準入力を-h 0オプションを与えたpw useraddにパイプすればよい。

パスワードにtest, uidに10010, シェルに/bin/sh, ホームディレクトリは/home/test, グループ:testに所属するユーザtestを作成するには、以下のように。

echo -n 'test' |\
pw useradd -n test -u 10010 -s /bin/sh \
-m -d /home/test -G test -c 'test user' \
-h 0

 

いや、でもさあ、パスワード丸見えじゃないか。
そう思ったあなたは正しい。
上記のスクリプトは使うべきでない。

 

暗号化済みのパスワードを無人で設定するには。

前章で追加した-hオプションを-Hにすれば、pwは暗号化済みのパスワードを受け付けてくれる。
こうしておけば、仮にスクリプトを覗かれたって、パスワードを平文で書いてあるよりははるかに危険度は少ない。

パスワードにtest, uidに10010, シェルに/bin/sh, ホームディレクトリは/home/test, グループ:testに所属するユーザtestを作成するケースを考える。

この記事で触れた方法でパスワードを暗号化する。この例ではsaltは”SALTsalt”。

$ perl -e 'print crypt("test", "\$6\$SALTsalt");'
$6$SALTsalt$gH47I0mRGadJVVlIpeTxVlYw.SjkPOZ7lJoGkqOyhyeUJ7PV5QWuYpIG6D5ggew6RXLpl1eA72TpgX5pGDpr/.

 

得た文字列をechoしてpwに渡す。※文字列長いので省略してます。

echo -n '<暗号化済みパスワード>' |\
pw useradd -n test -u 10010 -s /bin/sh \
-m -d /home/test -G test -c 'test user' \
-H 0

 

自分のシステムがどの方法でパスワードを暗号化しているか、確認するのを忘れないこと。
MD5ならまずどのシステムでも大丈夫だが、MD5は今じゃちょっと危ないからね。

以上

 

No tags for this post.

wireshark portableの設定のしかた

Pocket

http://www.wireshark.org/download/automated/win32/

上記からwiresharkportable-x.x.x-SVN-xxxxxx.paf.exeなどをダウンロードする。

「paf」がポータブルパッケージ。

ダブルクリックするとインストーラのようなものが立ち上がるが、これは単に展開先を選んでいるだけ。

レジストリを汚される心配なない。

あとはwiresharkportable.exeを実行すればOK.なのだが。

起動のたびにWinPcapのインストールを訪ねてくる。

わざわざポータブルにしたのに、WinPcapをインストールされては困る。

もちろん、そのマシンでパケットキャプチャをする場合にはWinPcapは必要だが、ポータブルにしたのはログを見るだけのためなので。

WiresharkPortable.exeと同じディレクトリにwiresharkportable.iniを作成すると起動時の振る舞いを制御することができる。

下記のようにしておけばよい。

[WiresharkPortable]
WiresharkDirectory=App/Wireshark
WiresharkExecutable=wireshark.exe
AdditionalParameters=
DisableWinPcapInstall=true
WinPcapInstaller=

詳細はこちら。

http://wiki.wireshark.org/WiresharkPortable

No tags for this post.

[FreeBSD] DHCP設定したネットワークデバイスが立ち上がらないときには

Pocket

rc.confでネットワークデバイスに設定する値にSYNCDHCPというのがあるそうな。

ネットワークデバイスの立ち上げは通常、デバイス自身がリンクアップのイベントをdevdに送り、devdはそれを受けてdhclientを実行する。

しかし一部のデバイスはリンク変更のイベントを通知しないので、いつまで経ってもネットワークに繋がらない。

そういうデバイスに対しては、”DHCP”ではなく”SYNCDHCP”としてあげると、イベントを待たずにdhclientしてくれる。

ifconfig_fxp0="SYNCDHCP"

このほか、リンク変更イベントを通知するのはするけど、通知が遅くて他のネットワークサービスの起動に影響してしまう場合にも有効、とのこと。

いつか必要になるかもしれないのでメモ。

No tags for this post.

おかあさま

Pocket

叶姉妹は実は男なんだと母親が主張する件について。

No tags for this post.

死亡遊戯

Pocket

3つのプロジェクトが重なって動いててどうにも身動きが取れない。

No tags for this post.

[misc.] かわらない日常

Pocket

休みの人が多い5/1,5/2に敢えて出社し、モリモリ仕事を片付けて、「すごくヤバイ状況」が「かなりヤバイ状況」にまで改善されたのだが、連休明けたら「めちゃめちゃヤバイ状況」にいよいよ悪化している件について。

No tags for this post.