スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[入] maas

maas 1.7.1でVMへのOSインストールを試しているが、どうもうまくいかない。

commisioningの途中、TFTPにてboot imageを持ってくるところが
働いてくれていないようで、失敗しているのだが、途中までやったことを書いておく。
pservの設定がおかしいのだろうか?

参考:maas 1.7 document

追記:もしかして、これ?(bug 1246236)
syslinux別バージョンをダウンロードして入れる
と、一応動いたりするのだろうか?



(追記)
Virtualboxのextensionの問題も疑ったが、入っていたようなので
それもなさげ。謎。

importの失敗はどうも通信自体がうまく通っていないように見えるので、
virtual box + wlanでのネットワーク(ルーティング)まわりの問題か?
しかしvmから普通にhttpでファイル取得できるので、あまり
関係ないようにも思う。iptablesでも閉めてないし。。

とりあえずファイルがあればよいところについては、
wget -nc -np -e robots=off -r -R "*.html?*" -Aexe,xz,zip http://maas.ubuntu.com/images/ephemeral-v2/releases/
のようにして、当面ごまかしておこうと思う。

オプションがごてごてついているのは[蝶] TeXを参照。
curlはやり方ちゃんと調べてないが、wgetで再帰的にファイルを
取得してくると余計なファイルが釣れて困るときがあるので
必要なもののみとってくるようにしている、ということ。


●0. バージョンなど、作業環境
vagrant 1.6.3
virtual box 4.2
realvnc

●1. vagrant init
Vagrantfileを生成する

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# Every Vagrant virtual environment requires a box to build off of.
config.vm.box = "ubuntu/trusty64"

# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"
config.vm.network "private_network", ip: "192.168.33.10"

config.vm.provider "virtualbox" do |vb|
# Don't boot with headless mode
vb.gui = true

# Use VBoxManage to customize the VM. For example to change memory:
vb.customize ["modifyvm", :id, "--cpus", "1", "--memory", "2048", "--vram", "16" ]
end
end


●2. vagrant up
boxをimportしてVMを起動する。
1でVagrantfileを引用したが、起動中に止まることがあっても何が起きているか
見れるようにvirtual boxのGUIを起動する設定にしている。
VMが起動してから、vagrantユーザでログインする。
初期パスワードはアカウント名と同じだが、ログイン後に変更しておく。

なお、このVM(KVMホストとして使う)では、以下のようなユーザを使う。
vagrant , ubuntu , maas


●3. ネットワーク設定確認

# /etc/network/interfaces
source /etc/network/interfaces.d/*.cfg

## eth0.cfg is following:
# auto eth0
# iface eth0 inet dhcp
##

auto eth1
iface eth1 inet static
address 192.168.33.10
netmask 255.255.255.0


上記に、あとでVMのブリッジ設定を追加する。

なお、プロキシ環境で作業の場合、
/etc/apt/apt.conf
~/.wgetrc
~/.bashrc
を以下のように設定しておく。
([proxy-server], [proxy-port]には実際のホスト名またはIPアドレス、ポート番号を入れる)

$ cat /etc/apt/apt.conf
Acquire::ftp::proxy "ftp://[proxy-server]:[proxy-port]/";
Acquire::http::proxy "http://[proxy-server]:[proxy-port]/";
Acquire::https::proxy "https://[proxy-server]:[proxy-port]/";
$ tail -4 ~/.bashrc
export ftp_proxy="http://[proxy-server]:[proxy-port]/"
export http_proxy="http://[proxy-server]:[proxy-port]/"
export https_proxy="http://[proxy-server]:[proxy-port]/"
export rsync_proxy="http://[proxy-server]:[proxy-port]/"
$ cat ~/.wgetrc
ftp_proxy = http://[proxy-server]:[proxy-port]/
http_proxy = http://[proxy-server]:[proxy-port]/
https_proxy = http://[proxy-server]:[proxy-port]/


上記のほか、はまりやすいところとして/etc/hostsやresolv.conf
に注意する。maas.ubuntu.comなど外部の名前解決が
できるようにhostsに記載するか適切な名前参照先を設定しておく。
publicなDNSを指定しておくというのも一案。


●4. PPA追加、maasインストール
ここでmaasのPPA(personal package archive)を追加して、
maas 1.7.1をtrustyで使えるようにする。

デフォルトのまま(apt-add-repositoryしないまま)だと、
公式レポジトリからしかダウンロードしないので、
最新バージョンのソフトウェアなどが入手できないので、
この作業が必要。

ppa追加したら、maasをバージョン指定でインストールし、
dpkgで正常に更新されていることを確認する。

なお、プロキシ環境の場合は、
sudo -E apt-add-repository ppa:maas-maintainers/stable
としないと、プロキシ設定を読んでくれないようなので注意。


$ sudo apt-add-repository ppa:maas-maintainers/stable
→ Enterを押すと、keyring作成され、公開鍵がインポートされる。
$ sudo apt-get update
$ sudo apt-get install maas 1.7.1
$ dpkg -l | grep maas


なお、ppa:~の部分で指定する文字列(チームID/PPA名)は、
https://launchpad.net/ubuntu/+ppas
で検索してひっかかったページの、「Adding this PPA to your system」の項目を調べるとわかる。

https://launchpad.net/~maas-maintainers/+archive/ubuntu/stable
をみて、trustyでも使える1.7.1のパッケージがあったから1.7.1を
たまたま指定しているが、今後新しいバージョンが出てきたら、
ここをより新しいものにする。


●5. VMでmaas管理ユーザ作成

$ sudo maas-region-admin createadmin --username=root --email=hoge@example.com
Password: ←たとえば「password」と入力
Again: ←上と同じ文字列「password」と入力
$



●6. 管理場面にログイン
ブラウザからMAAS管理画面にアクセスする。
手元の環境で、VMのvirtual boxホストからみたIPアドレスは
192.168.33.10なので、以下のアドレスにアクセスして、
アカウントroot (→5で作成したユーザ名)
パスワードpassword(→5で入力したパスワード)
によりログイン。

http://192.168.33.10/MAAS/
→ 以下にリダイレクトされる
http://192.168.33.10/MAAS/accounts/login/?next=%2FMAAS%2F


●7. boot imageのダウンロード(CUI)
ブートイメージのダウンロードが必要である。
GUIからの方法は画面でボタン押下のみだが、CUIの場合を書いておく。

まずプロファイル名を付与してのログイン。ここでは例として「example」にした

$ sudo maas-region-admin apikey --username root
xxxxxx:yyyyyy:zzzzzz
 → まずAPIキーの取得
$ maas login example http://192.168.33.10/MAAS/api/1.0
API key (leave empty for anonymous access): ★ここで上記apikeyを入力

You are now logged in to the MAAS server at
http://192.168.33.10/MAAS/api/1.0/ with the profile name 'example'.

For help with the available commands, try: 

maas example --help

$


次に、ブートイメージの読み込み元を確認してからインポートする。

$ sudo maas example boot-sources read
Success.
Machine-readable output follows:
[
{
"url": "http://maas.ubuntu.com/images/ephemeral-v2/releases/",
"keyring_data": "",
"resource_uri": "/MAAS/api/1.0/boot-sources/1/",
"keyring_filename": "/usr/share/keyrings/ubuntu-cloudimage-keyring.gpg",
"id": 1
}
]
$ maas example boot-source-selections read 1
Success.
Machine-readable output follows:
[
{
"labels": [
"release"
],
"arches": [
"amd64"
],
"subarches": [
"*"
],
"release": "trusty",
"os": "ubuntu",
"id": 1,
"resource_uri": "/MAAS/api/1.0/boot-sources/1/selections/1/"
}
]
$
$ maas example boot-resources import
Success.
Machine-readable output follows:
Import of boot resources started
$ 

デフォルト設定の場合、取得したブートリソース(pxelinux.0など)は
/etc/maas/pserv.yamlのtftp設定に出ている以下のディレクトリ
(resource_root)に格納される。
/var/lib/maas/boot-resources/current

/etc/maas/maas-cluster-http.conf
によると、上記は
http://192.168.33.10/MAAS/static/images/
に紐付けられている。


●8. KVMの準備
パッケージを入れる。

$ sudo apt-get install libvirt-bin
$ sudo apt-get install qemu-utils
$ sudo apt-get install virtinst
$ sudo apt-get install qemu-kvm
$ sudo apt-get install bridge-utils
$ sudo apt-get install qemu-system


bridgeの設定をしてvirtualboxのVM(kvmホスト)をリブート。

# /etc/network/interfaces
source /etc/network/interfaces.d/*.cfg
## eth0.cfg
# auto eth0
# iface eth0 inet manual
##

auto br0
iface br0 inet static
address 10.0.2.15
netmask 255.255.255.0
gateway 10.0.2.2.
bridge_ports eth0
bridge_maxwait 0
bridge_fd 0
bridge_stp off

auto eth1
iface eth1 inet static
address 192.168.33.10
netmask 255.255.255.0



●9. kvmのVM準備
入れ物をqemu-imgで作成(10G)して、virt-installにてOS入れる準備をする
virsh listで表示されるvmの名前は、maasのnode追加時に
power idとして使うので覚えておく。

$ sudo su
# cd /var/lib/libvirt/images
# qemu-img create -f qcow2 test1.qcow2 10G
# virt-install --connect=qemu:///system --hvm --name test1 --vcpus 1 --ram 1024 \
--disk path=/var/lib/libvirt/images/test1.qcow2,size=10,format=qcow2,bus=virtio \
--network bridge=br0,model=virtio --vnc --vnclisten=0.0.0.0 --vncport 5900 \
--keymap=ja --os-type=linux --pxe \
# virsh list --all


●10. その他ユーザ準備

vagrant$ sudo passwd ubuntu
$ sudo mkdir /home/maas
$ sudo chown maas:maas /home/maas
$ sudo chsh -s /bin/bash maas
$ sudo su - maas
maas$ ssh-keygen
$ pwd
/var/lib/maas
$ ssh-copy-id -i /var/lib/maas/.ssh/id_rsa ubuntu@10.0.2.15
 → maasでvirshを使うとき、上記の「ubuntuユーザ」は、vm作成先のkvmホスト
   にいるユーザを指定している。
   なので、kvmホストに存在しているユーザを指定しないといけない。
$ virsh -c qemu+ssh://ubuntu@10.0.2.15/system list --all
 → 仮想マシン一覧が取得できること。
$ cat .ssh/id_rsa.pub
 → maas管理画面のpreferenceでペーストにより登録することに
   なるので中身を表示して記録しておく
$ exit
vagrant$ sudo virsh dumpxml test1 | grep mac
 → DHCP時に必要なのでMACアドレスを確認しておく


maas管理画面のpreferenceにて、上記のmaasユーザの
公開鍵を登録しておく。
また、必要なホストキーが生成されていない場合は
$ sudo ssh-keygen -A
しておく。(生成されていない場合、sshのログにエラーとして出ているはず)

●11. tftp準備
ドキュメントの
https://maas.ubuntu.com/docs1.7/hacking.html#running-the-built-in-tftp-server
にしたがって、maas同梱のtftpサーバの設定を変更する


$ dpkg -l | grep authbind
 → 存在していること
$sudo vi /etc/maas/pserv.yaml
 → tftpについてコメントをはずし、有効化

▲TFTP
$ ls -l /etc/authbind/byport/69
No such file or directory
$ sudo touch /etc/authbind/byport/69
$ sudo chmod a+x /etc/authbind/byport/69

ここでbind, cluster worker, bootpも上記のようにauthbind設定をしておく。
▲bind
$ ls -l /etc/authbind/byport/53
No such file or directory
$ sudo touch /etc/authbind/byport/53
$ sudo chmod a+x /etc/authbind/byport/53

▲cluster worker (dhcp)
$ ls -l /etc/authbind/byport/68
No such file or directory
$ sudo touch /etc/authbind/byport/68
$ sudo chmod a+x /etc/authbind/byport/68

▲bootp/dhcp (不要?)
$ ls -l /etc/authbind/byport/67
No such file or directory
$ sudo touch /etc/authbind/byport/67
$ sudo chmod a+x /etc/authbind/byport/67

▲その他(port 21, 80, 443)


pserv.yamlの設定は以下のとおり。

## /etc/maas/pserv.yaml
## Provisioning Server (pserv) configuration.
logfile: "/var/log/maas/pserv.log"

oops:
directory: "/var/log/maas/oops"
reporter: "maas-pserv"

tftp:
resource_root: "/var/lib/maas/boot-resources/current/"
port: 69
# generator: "http://localhost/MAAS/api/1.0/pxeconfig/"
generator: "http://10.0.2.15/MAAS/api/1.0/pxeconfig/"



/etc/maas/dhcpd.confの設定は以下のとおり。
DHCP設定の不具合が疑われる場合、dnsmasqではあるが[立] dnsmasqとipxeも参考にしてみる。
(pxe実績のあるコンフィグとの比較)

# WARNING: Do not edit /etc/maas/dhcpd.conf yourself. MAAS will overwrite any
# changes made there.
#
# Instead, edit /etc/maas/templates/dhcp/dhcpd.conf.template and your changes
# will be present whenever MAAS rewrites the DHCP configuration. Update and save
# the cluster's configuration in MAAS to trigger an update to this file.

option arch code 93 = unsigned integer 16; # RFC4578
option path-prefix code 210 = text; #RFC5071
subnet 10.0.2.0 netmask 255.255.255.0 {
if option arch = 00:0E {
filename "pxelinux.0";
option path-prefix "ppc64el/";
} elsif option arch = 00:07 {
filename "bootx64.efi";
} elsif option arch = 00:0C {
filename "bootppc64.bin";
} else {
filename "pxelinux.0";
}
interface "br0";
ignore-client-uids true;
option subnet-mask 255.255.255.0;
option broadcast-address 10.0.2.255;
option domain-name-servers 10.0.2.15;
option domain-name "maas";
option routers 10.0.2.15;
option ntp-servers ntp.ubuntu.com;
range dynamic-bootp 10.0.2.21 10.0.2.30;
class "PXE" {
match if substring (option vendor-class-identifier, 0, 3) = "PXE";
default-lease-time 30;
max-lease-time 30;
}
}

omapi-port 7911;
key omapi_key {
algorithm HMAC-MD5;
secret "xxxxxxxxxx";
};
omapi-key omapi_key;


●12. node登録
鍵登録まで実施してからノード画面でノード追加。
→ここでNG★

http://maas.ubuntu.com/images/ephemeral-v2/releases/
を見に行ってリソースをチェックして、dhcpでのアドレス付与までは
いけている(authbindの設定が正しく実施してあれば、tcpdump -i br0で
DHCPによりアドレス付与されているのが確認できる)のだが、
その後でだんまりになる。

windows7(virtual boxホスト)にて、tftpクライアントを有効にしてみて
以下のようにTFTPサーバが機能していることは確認済み。
ブートイメージの取得はできそうなものであるが、、?

C:\Users\hoge> tftp 192.168.33.10
tftp> get pxelinux.0
Received 27116 bytes in 0.1 seconds
tftp> quit

C:\Users\hoge>


●X. ブートイメージのミラー準備


$ sudo apt-get install simplestreams ubuntu-cloudimage-keyring apache2
$ sudo sstream-mirror --keyring=/usr/share/keyrings/ubuntu-cloudimage-keyring.gpg http://maas.ubuntu.com/images/ephemeral-v2/daily/ /var/www/html/maas/images/ephemeral-v2/daily 'arch=amd64' 'release=trusty' --max=1




関連記事
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

kr2

Author:kr2
ネコと音楽が好き。
CD紹介、技術ネタ
などの雑記帳。

カレンダー
10 | 2017/11 | 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -
月別アーカイブ
カテゴリー
ブログ内検索
RSSフィード
最近の記事
最近のコメント
最近のトラックバック
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。