Ubuntu Archive

APR
17

今回は、pipでsphinxをインストールするが、システムワイドではインストールせず、venvでプロジェクトローカルにインストールするものとする。

 

まずはvenvのアップデート。Ubuntu14.04のインストール直後のpython3.4-venvはバグがあるので、アップデートが必要。

sudo apt-get install python3.4-venv

pyvenv-3.4コマンドでvenvを作成

pyvenv-3.4 venv

venvに入る

source venv/bin/activate

sphinxのインストール

(venv)   $ pip install sphinx sphinx_rtd_theme

sphinxの初期設定

(venv)   $ sphinx-quickstart # ダイアログにそって良しなに

(venv)   $ sed -ie "s/html_theme = 'default'/html_theme = 'sphinx_rtd_theme'/g" conf.py # テーマの変更

HTMLのビルド

(venv)   $ make html

出来上がり。

image

仮想化が大流行りな今日この頃、ホストのセットアップもテンプレートからで済むケースが身の回りでも増えていますが、そうはいっても、いや仮想化が流行っているからこそ、KVM用に何台もの物理サーバーにLinuxのインストール繰り返す、そんな刺身タンポポな作業も出てきます。最近はよくUbuntu Server 12.04 LTSを触っているので、いい加減これはインストール作業を自動化する方法を覚えねば、とPreseedingによるUbuntu Serverの自動インストールに取り組んでみました。PreseedingはUbuntu Serverのインストーラのダイアログへの応答を事前に定義しておくことで、完全自動インストールを実現する仕組みです。

今回作成した設定ファイルの中身は以下の通り。なお、設定は、Ubuntu Serverのインストーラに対してtftpで食わせたりもできるのですが、今回は完全にCDのISOイメージの中に入れ込む形で作りました。詳しくは日本HPによるUbuntu Serverの自動インストールCD作成手順Appendix B. Automating the installation using preseeding – Ubuntu Official Documentationを参照されるとよいのではないかと思います。

isolinux.cfg
default install
label install
  menu label ^Install Ubuntu Server
  kernel /install/vmlinuz
  append auto=true locale=en_US.UTF-8 console-setup/charmap=UTF-8 console-setup/layoutcode=us console-setup/ask_detect=false pkgsel/language-pack-patterns=pkgsel/install-language-support=false vga=normal file=/cdrom/isolinux/preseeding.cfg initrd=/install/initrd.gz quiet --
label hd
  menu label ^Boot from first hard disk
  localboot 0x80
timeout 3
preseeding.cfg.erb
d-i debian-installer/language string en
d-i debian-installer/country string US
d-i debian-installer/locale string en_US.UTF-8
d-i localechooser/supported-locales en_US.UTF-8d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string us
d-i console-setup/charmap select UTF-8
d-i keyboard-configuration/layoutcode string us
d-i netcfg/choose_interface select autod-i netcfg/disable_autoconfig boolean trued-i netcfg/dhcp_failed note
d-i netcfg/dhcp_options select Configure network manuallyd-i netcfg/get_ipaddress string <%= conf['ip_addr'] %>
d-i netcfg/get_netmask string <%= conf['netmask'] %>
d-i netcfg/get_gateway string <%= conf['gateway'] %>
d-i netcfg/get_nameservers string <%= conf['nameserver'] %>
d-i netcfg/confirm_static boolean trued-i netcfg/get_hostname string <%= conf['hostname'] %>
d-i netcfg/get_domain string <%= conf['domainname'] %>
d-i mirror/country string manual
d-i mirror/http/hostname string ftp.jaist.ac.jp
d-i mirror/http/directory string /pub/Linux/ubuntu
d-i mirror/http/proxy stringd-i clock-setup/utc boolean trued-i time/zone string Asia/Tokyod-i clock-setup/ntp boolean trued-i partman-auto/init_automatically_partition select biggest_freed-i partman-auto/method string lvmd-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean trued-i partman-auto-lvm/guided_size string maxd-i partman-auto/choose_recipe select atomicd-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
d-i partman-md/confirm boolean true
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
d-i passwd/user-fullname string <%= conf['username'] %>
d-i passwd/username string <%= conf['username'] %>
d-i passwd/user-password-crypted password <%=conf['password'] %>
d-i user-setup/encrypt-home boolean false
tasksel tasksel/first multiselect noned-i pkgsel/include string openssh-server build-essential
d-i pkgsel/update-policy select unattended-upgrades
d-i pkgsel/install-language-support boolean trued-i grub-installer/only_debian boolean trued-i grub-installer/with_other_os boolean trued-i finish-install/reboot_in_progress notexserver-xorg xserver-xorg/autodetect_monitor boolean true
xserver-xorg xserver-xorg/config/monitor/selection-method \
       select medium
xserver-xorg xserver-xorg/config/monitor/mode-list \
       select 1024x768 @ 60 Hz

そして、これだけ用意しても、後でまた設定を変更して再度ISOイメージを作りなおすとなると面倒なので、Rubyの勉強も兼ねて、ISOイメージを作成するRakeタスクも作成しました。これらをまとめてGithubに置いてあります。

https://github.com/ynojima/aigus

呼び出し方は以下の通り。引数は、config/rake.ymlにデフォルト値を記述してあります。

sudo bundle exec rake install_iso:make ip_addr="192.168.0.2" version="12.04" hostname="test" domainname="sharplab.org"
NOV
11

fsprotectによるテスト実行環境初期化

Published:2012-11-11 02:45:57 UTC

システム全体に対して変更を加えるようなプログラム、例えばChefのRecipeみたいなもののリグレッションテスト、副作用の範囲が大きいだけに、テスト実施毎に環境を巻き戻すのが大変です。一番手っ取り早い解としては、テスト環境全体をVM化し、テスト前のスナップショットに仮想ディスクをロールバックする、というのがあり、この前のSoftwareDesignのChef特集でもVagrantを使用して実現した例が載っていました。ただ、ChefのRecipeのようなプログラムはハードウェア構成の差分の影響を受けやすく、VMなど本番とハードウェア構成の異なるテスト環境では信頼性の高いテストの実施が難しい場合もあります。

要はテスト実施毎に変更を捨てられれば良いので、ファイルシステムレベルで巻き戻すことを考えます。Windows Embeddedで言うところのEWF(Enhanced Write Filter)の機能をLinuxで実現できればよいのですが、Linuxだとaufsで実現できました。

aufsとは、複数のファイルシステムを重ね合わせて、仮想的なファイルシステムを提供するファイルシステムです。普段使っているディスクをroで使い、tmpfsでメモリ上に変更を貯めておけば、プログラム側に対してrw可能に見せておきながら再起動すると変更を全て捨てるテスト環境を作ることが出来ます。いわゆるLive CD的な挙動ですね。これを実現するシェルスクリプトが、Debian系ディストリではその名もずばりfsprotectというパッケージで提供されており、簡単に導入することが可能です。

Ubuntu 12.04での導入方法は以下の通り。

# aufsとfsprotect、apparmor-utilsの導入
sudo apt-get install aufs-tools fsprotect apparmor-utils
# DHCP Clientがapparmorに引っかかってうまく動かないので調整
sudo aa-complain dhclient3


DHCP ClientがAppArmorに引っかかってしまうので、調整が必要です。

また、fsprotectはカーネルオプションにfsprotectという文字列を渡したかどうかによって、fsptotectの有効・無効を切り替えることが出来るので、GRUBの設定変更が必要です。

vim /etc/dafault/grub

#(変更行抜粋)
#GRUB_HIDDEN_TIMEOUT=0 #コメントアウト
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash fsprotect" #ブートオプションにfsprotect追加

GRUBへの変更の反映

update-grub

テスト中に加わった変更を迅速に巻き戻せる環境の構築という点では、fsprotectを基本有効にしておき、リブートするたびにクリーンな環境を利用できるようにし、メンテナンスのためにテスト環境に変更を加えたい場合はGRUB画面からエントリ編集を行い、一時的にfsprotectを外して起動させる、という運用がお勧めです。

なお、注意点として、fsprotectはデフォルトでは"/"パーティションにのみ保護を提供し、他のマウントされているパーティションについては何もしません。他のパーティションについても保護したい場合は、/etc/default/fsprotectを編集し、以下のように保護対象に加えてやる必要があります。

PROTECT="<directory path>=<tmpfsで確保するメモリ量>"

UNIXマシンとWindows Server(というかVMware vCenter)のユーザーアカウント管理を統合する必要性から、Ubuntu Server上にSamba+OpenLDAPを立て、でUNIXのユーザー管理とNT(samba)ドメインの管理をしてみることにしました。この前OpenLDAPでUbuntuのサーバー群のユーザーの統合管理が出来たので、今度はsambaでNTドメインを立てみました。

で、参考にしたページは、以下のページ。
https://help.ubuntu.com/10.04/serverguide/C/samba-dc.html

いつもの通り、Ubuntu公式のドキュメントです。便利便利。

大体この通りに進めていけばよかったと思うのですが、一点そのままでは動かないところがあって、それは項目3で

add machine script = sudo /usr/sbin/useradd -N -g machines -c Machine -d /var/lib/samba -s /bin/false %u

マシンアカウントの自動作成を指定した後、そのアカウントを追加しようとしているmachines(あるいは任意の好きな)グループを自分で作っておく必要があります。コマンド一つ一つの意味を深く考えずにボケーっと設定していたらはまりかけました。

そしてあともう一点。Windows 7をSambaでたてたドメインコントローラに追加する場合、Windows 7側で、http://www.natzworks.com/digital/entries/2010/000256.html

に従って、レジストリに項目を二つほど追加する必要があります。お忘れなく!

OCT
11

サーバー移転しました。

Published:2010-10-11 13:10:33 UTC

このBlogで利用しているサーバーを、これまでのXREAからさくらのVPSに変更しました。さくらのVPSは、KVMによって完全仮想化されたVMを借りられるサービスで、先日ubuntu serverのサポートも始まったことから借りてみました。XREAはどうも調子が悪いことが多かったので。。

やっぱり、気兼ねなしに使える固定IPがあるというのはいいものです。サーバー料金は、月額980円と、これまで利用していたのに比べると高いですが、まぁrootとれて自由に遊べること考えたら安いですね。Wordpress動かすだけでなく、自宅のESXi&Hyper-Vと連携させて、色々遊んでみたいと思います。

SEP
20

最近の作業まとめ

Published:2008-09-20 02:37:51 UTC

この前払い下げられてきた家族共用PCを再利用するため、自分の扱えるドメインをLinuxにも拡張するため、そして物欲を満たすため(笑)に、最近PC周りの環境を再整備中。今回のエントリはそのメモ。

さて、払い下げてきたるはFMV CE18B。自分が中二の頃からある六年選手の古参PCで、CPUはAthlon 1800+、メモリ256MB、HDD 80GBのポンコツPC。ここ二年位はほとんど稼働していなかったPCだけれども、遊んでいるデスクトップPCはこれしかなかったので今回これにUbuntuを入れて実験機にしてみることにした。Ubuntuを入れる前に、ひとまず残っているデータの吸い出しを試みたのだが、吸い出そうにもXPの動作が重すぎて話にならなかったので、とりあえずメモリを512MB分増設。768MBとした上で「Documents and Setting」辺りのデータを外部HDDに吸い出した。

その後はUbuntuを.isoファイルから焼いたCDでサクッとインストール。これでUbuntuマシンがいっちょあがりなのだから簡単なものだ。Linuxといったら恐ろしく難解で、訳の分からないコマンドを山のように覚えて、解読不能の設定ファイルの山と格闘してもなおインストールする前に挫折してしまう恐怖のOS…という思い込みが自分にはあったのだが、自分の認識はこのポンコツPC以上に古すぎたようだ。

あとH/W的にはモニタをBenQ 20.1inchLCDに交換し、そこら辺に転がっていた無線LANカードを差した位だろうか。S/Wはこれから弄るつもりである。

そして調子に乗った自分は、今回は本務機のラップトップ、VAIO TypeS(VGN-SZ53B)にも手を入れてみた。実験機にUbuntuを入れるだけでは飽き足らず、こちらにも仮想マシンとしてUbuntuを入れることにしてみたのだ。デュアルブートではなく仮想化を選んだ理由?仮想化はロマンですよ、ええ。ウィンドウの中で別のOSが走っているとか、ヲタな心性に相当アピールしますから。

さて、使った仮想マシン環境はVMware Server。VirtualBoxというソフトもあるらしいけれども、そちらを選ばなかったのは単なる気まぐれ。VMwareの方が動作が軽いという耳にした噂を信じて決めた。VMware Serverというソフトは、元は有償ソフトだったそうだが、最近無償で提供されるようになったという。ありがたい話だ。で、その軽いと噂のVMware、どんなものかとwktkしながらUbuntuの仮想マシンをマウントして立ち上げてみたものの…やっぱ重すぎ。メモリ増設前の払下げPCと大差ない体感速度。…いや、Vistaだけでももたつく1GBメモリPCで無謀なトライをした自分が悪いんですけどね。

ということで、ラップトップについても急遽4GB分のメモリを注文して全て換装。今度は殆どストレスなく動くようになった。仮想マシンの立ち上げ時こそCPUがネックになり、大分待たされるが、立ち上げてしまえば普通に使っている限りサクサク動いてくれてありがたい限り。

でも目下一つの問題に直面中。VMware内のUbuntuからネットワークに接続する際、bridge構成を選択すると上手くいかない。NATを選べば接続できるので、ひとまずは困っていないのだが、ネットワーク内の他のPC(ubuntu入れた払下げPCとか)から見えないというのは後々困りそうなので、なんとかしたいところだ。

SEP
15

KDE体験

Published:2008-09-15 16:48:51 UTC

ウィンドウマネージャをKDEに切り替えてみた。

image

GNOMEとKDE、正直どっちでもいいや。

SEP
15

Ubuntuデビュー

Published:2008-09-15 14:26:50 UTC

最近とみに話題なUbuntu。Linux系デスクトップOSなんて生まれてこのかた触ったこともない自分ですが、一念奮起してインストールしてみました。Vista上にVMwareをインストールしてその中で仮想マシンを走らせています。

image

いやしかし、拍子抜けするほど簡単でした。しばらくはこれで遊んでみようかと思います。