AnsibleでGentoo Linuxをインストールする

Gentoo Linux のインストールは、GUI インストーラが用意された他の多くの Linux ディストリビュージョンと違い、次のようなプリミティブな方法であることが知られています。

Gentoo で普通の CVE-2015-7547 対策

追記

私が何か勘違いしてたようですが glibc-2.21-r2 (~amd64 マスクされてない)で patch が取り込まれてますね。。

# emerge -fOq glibc
>>> Fetching (1 of 1) sys-libs/glibc-2.21-r2::gentoo
# tar tf /usr/portage/distfiles/glibc-2.21-patches-7.tar.bz2 | grep 'CVE-2015-7547'
patches/00_all_0028-CVE-2015-7547-getaddrinfo-stack-based-buffer-overflo.patch

本文

皆さまにおかれましては CVE-2015-7547 の対応お疲れ様です。

#Gentoo Tips: いつなんどきでも #GentooInstallBattle で最新のstage3を入手する

前提

2015年も残す所あと数日ですね。今年はあと何回#gentooinstallbattleにエントリーできるでしょうか。Gentoo Linuxをインストールためには2つのアーカイブファイルをダウンロードします。

ssmjp で Gentoo の話をしてきました

先週の話ですがssmjp 2015/09 の回におじゃましてきました。

「一緒にプロダクション環境での Gentoo 勉強会」やりましょう!という話を現実にしてくださった@usaturnさん、そして初参加&&初登壇&&Gentoo ネタという暴挙(?)を広い懐で受け入れてくださった #ssmjp の皆様、本当にありがとうございました!

普通のScalaアプリケーションをebuildでdeployする

会社ではほとんどのアプリケーションをScalaで開発しさくらのクラウドやハウジング環境で運用しているのですが、どんな言語で開発するにせよどのような環境で運用するにせよ、当然ながらアプリケーションはdeployする必要があります。

さくらのクラウドで普通のゲートウェイサーバーを構築する

会社では相変わらずさくらのクラウド上で色々やっていますが、以前のGentooの記事が好評だったので今回も同じくGentooでいこうと思います!

今回は図のような構成でごく普通のGatewayサーバーを構築し、矢印で示したサーバーがインターネットに出られるようにします。

さくらのクラウドで普通のLDAP認証ができるサーバーを量産する

会社でSSHの公開鍵やSUDOの権限をLDAPで一元管理していっているのですが、忘れないうちにLDAPクライアント側の構築方法を書いてみます。
なお、サーバーはさくらのクラウド上で構築し、LDAPサーバーはldap1.example.comというFQDNでアクセスできるものとします。

How to install innobackupex on Gentoo Linux

Install xtrabackup-bin

# emerge -pvq xtrabackup-bin
[ebuild   R   ] dev-db/xtrabackup-bin-2.2.5

/usr/bininnobackupex, xbcrypt, xbstream, xtrabackup がインストールされる。

Download and extract qpress

quicklz.com から qpress をダウンロードして展開する。

# tar xvf qpress-11-linux-x64.tar -C /usr/local/bin/

Using innobackupex

Backup

# innobackupex --defaults-file=/etc/mysql/my.cnf --user=$USER \
  --password=$PASS --ibbackup=xtrabackup --slave-info \
  --safe-slave-backup --compress $TARGET_DIR

Restore

# innobackupex --user=$USER --password=$PASS --decompress $BACKUP_DIR
# innobackupex --user=$USER --password=$PASS --apply-log $BACKUP_DIR
# innobackupex --copy-back $BACKUP_DIR
# chown -R mysql:mysql /var/lib/mysql

How to increase ulimit on Gentoo

Linuxサーバーを運用していて「Too many open files」に悩まされることがある。

デーモンプロセスに対して ulimit を設定したい場合、Gentoo では /etc/conf.d/ の設定ファイルに rc_ulimit を追加するだけで簡単に設定できる。

#さくらの夕べ とマサカリと #Gentoo LXCと #Fluentd

2月19日に新宿で開催された第14回さくらの夕べに参加して、LTをしてきた。

発表スライド: “VariablePrivateServicesOn #SakuraVPS AndLXCWith #Fluentd” by Hidenori Matsuki

Fluentd プラグイン

懇親会で Fluentd の話題で盛り上がった。参加者の皆さんはすでに本番環境で Sakura Internet のサービスと合わせて Fluentd を活用していた。以下のプラグインが話題に上がった:

さくらVPSにEthernet BridgingなOpenVPNをインストールしてみました

出先から自宅のPCへ接続したいという動機からさくらVPS上のGentoo LinuxをOpenVPNサーバーとして構築しました。Ethernet Bridgeモードを使用して、BonjourやAvahiで名前解決できるようにしています。

GentooとOSXでiSCSI♪

iscsitargetとglobalSAN iSCSIでベンチマーク取ってみました。

iMac5,1 / Mac OS 10.4.11 / 4096MB RAM / Xbench 1.3 で計測。

ターゲットのHDDはUDMA5で、100MbpsのHUBを経由しているのでそこがボトルネックになっています。

LVM設定 -LV作成-

全部ReiserFSで。 オンラインで拡張できるから2GBでいいや。

# for p in Home Var Portage Tmp Opt; do lvcreate -n$p -L2G VG0; done
# for p in /dev/VG0/*; do mkreiserfs $p; done

結果はこんな感じ

# lvdisplay
--- Logical volume ---
LV Name                /dev/VG0/Home
VG Name                VG0
LV UUID                PSpzkE-AmSp-EweF-f8lt-haH4-nZyK-L6mj9c
LV Write Access        read/write
LV Status              available
# open                 0
LV Size                2.00 GB
Current LE             512
Segments               1
Allocation             inherit
Read ahead sectors     0
Block device           253:0

--- Logical volume ---
LV Name                /dev/VG0/Var
VG Name                VG0
LV UUID                YqA1cx-B72h-K71V-Cor4-h6AX-qBO6-Q3I20K
LV Write Access        read/write
LV Status              available
# open                 0
LV Size                2.00 GB
Current LE             512
Segments               1
Allocation             inherit
Read ahead sectors     0
Block device           253:1

--- Logical volume ---
LV Name                /dev/VG0/Portage
VG Name                VG0
LV UUID                CICmO3-3Hnm-1K9e-gAfQ-aGRT-6F1f-XRw0aB
LV Write Access        read/write
LV Status              available
# open                 0
LV Size                2.00 GB
Current LE             512
Segments               1
Allocation             inherit
Read ahead sectors     0
Block device           253:2

--- Logical volume ---
LV Name                /dev/VG0/Tmp
VG Name                VG0
LV UUID                nH0nGd-523t-Hr3u-eOod-3swt-KXeD-ALH4lH
LV Write Access        read/write
LV Status              available
# open                 0
LV Size                2.00 GB
Current LE             512
Segments               1
Allocation             inherit
Read ahead sectors     0
Block device           253:3

--- Logical volume ---
LV Name                /dev/VG0/Opt
VG Name                VG0
LV UUID                msJKKf-2ISi-AkQ6-y4Ix-oZkb-4vG6-TnZ5UW
LV Write Access        read/write
LV Status              available
# open                 0
LV Size                2.00 GB
Current LE             512
Segments               1
Allocation             inherit
Read ahead sectors     0
Block device           253:4

LVM設定 -LVの最大サイズ-

初期セットアップ

# pvcreate /dev/md0
# vgcreate VG0 /dev/md0

vgdisplayの結果:

  • VG Size: 298.09 GB
  • PE Size: 4.00 MB
  • Total PE: 76311

最初の試行

デフォルトのPEサイズで298GBの論理ボリュームを作成:

# lvcreate -nLV0 -L298G VG0

76288 PEが割り当てられて作成できました。

ソフトウェアRAID構築

RAID1を構築しました。

# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb

同期の進捗状況(01:09:02):

Personalities : [raid1]
md0 : active raid1 sdb[1] sda[0]
      312571136 blocks [2/2] [UU]
      [=>...................]  resync =  6.8% (21260160/312571136) finish=60.1min speed=80701K/sec

完了(02:44:38):

Personalities : [raid1]
md0 : active raid1 sdb[1] sda[0]
      312571136 blocks [2/2] [UU]

できた♪

LVMでMirrorして片方外してみる

LVMミラーの片方のディスクを外したらどうなるか実験してみました。

ReiserFSでフォーマットしてマウント:

# mkreiserfs /dev/vg/lvol0
# mkdir /mnt/disk1
# mount /dev/vg/lvol0 /mnt/disk1/
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             115G  2.7G  107G   3% /
udev                   10M  216K  9.8M   3% /dev
none                  251M     0  251M   0% /dev/shm
/dev/mapper/vg-lvol0   10G   33M   10G   1% /mnt/disk1

テストデータとチェックサムを作成:

LVMでMirror

ソフトウェアRAIDもメンドイな。と思ったので、LVMのMirrorに挑戦。

# lvcreate -m1 -L10G vg はできない。

Not enough PVs with free space available for parallel allocation.
Consider --alloc anywhere if desperate.

とかいわれる。

でも、# lvcreate -m1 -L10G --alloc anywhere vg とやったらやったで、