InventoryFileに同名のホストを複数行書いてはいけない

Ansibleにおいて表題の通り。

■ 環境

  • Ansible 2.5.3
  • Vagrant 2.0.3
  • macOS High Sierra

■ きっかけ

開発やテスト用にVagrantを使用しているのだが、何度も作成したり削除したりを繰り返しているうちに、InventoryFileがごちゃ混ぜになってしまった。複数のVMを使用していることもあり、Ansibleのplaybookを試す際にグループを変えて試したり…と。

その中である時下記のようなエラーが。

$ ansible group1 -m ping
host01 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: Warning: Permanently added '[127.0.0.1]:2222' (RSA) to the list of known hosts.\r\nvagrant@127.0.0.1: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).\r\n",
    "unreachable": true
}
$

接続ができない!?

InventoryFileを確認してみると該当行は特に問題はなさそう。`vagrant ssh host01`でもログインが可能である。

よくよくメッセージを読んでみると、今回起動したVMのPortが違う気がする。改めてInventoryFileを確認してみると別のグループに同名で記載されてしまっていた。

$ cat hosts
  :
[group1]
host01 ansible_ssh_host=127.0.0.1 ansible_ssh_port=2201
  :
[group3]
host01 ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
  :

どうやら下に記載されていた設定で上書きされていたようである。複数行あった記載を1行のみに編集したところ問題なく使用できた。

以上。

/vagrantのマウントに失敗 – その2

表題の通り。また最近使っていて同じ現象(?)に当たったので、以前にも書いたのと似たようなものだけど書いておく。

■ 環境

  • Vagrant 1.9.1
  • Mac OSX El Capitan

■ bento/centos-6.7

CentOS 6“のVMを使いたくて下記boxを利用している。

Vagrant box bento/centos-6.7 | Atlas by HashiCorp
https://atlas.hashicorp.com/bento/boxes/centos-6.7

このboxを起動すると、いつも下記のような黄色いメッセージと最後に赤いメッセージで起動に失敗となってしまう。複数のVMを起動しようとしてるときは、最初のVMで失敗してしまうので後続が起動してくれない。

$ vagrant up centos67
  :
[cent67] GuestAdditions versions on your host (5.1.16) and guest (5.0.20) do not match.
  :
Installing Virtualbox Guest Additions 5.1.16 - guest version is 5.0.20
  :
Got different reports about installed GuestAdditions version:
Virtualbox on your host claims:   5.0.20
VBoxService inside the vm claims: 5.1.16
Going on, assuming VBoxService is correct...
Got different reports about installed GuestAdditions version:
Virtualbox on your host claims:   5.0.20
VBoxService inside the vm claims: 5.1.16
Going on, assuming VBoxService is correct...
Got different reports about installed GuestAdditions version:
Virtualbox on your host claims:   5.0.20
VBoxService inside the vm claims: 5.1.16
Going on, assuming VBoxService is correct...
Restarting VM to apply changes...
  :
Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:

mount -t vboxsf -o uid=500,gid=500 vagrant /vagrant

The error output from the command was:

/sbin/mount.vboxsf: mounting failed with the error: No such device

$

/vagrant“はもちろんマウントできていない。VM側の”Guest Addition“が古いのが原因のようである。しかし”bento/centos-6.7“のversionはこれ以上新しいものはリリースされていない。

$ vagrant box list
bento/centos-6.7 (virtualbox, 2.2.7)
centos/7         (virtualbox, 1608.02)
ubuntu/trusty64  (virtualbox, 20170222.0.0)
ubuntu/xenial64  (virtualbox, 20170331.0.0)
$

状況を確認する。プラグイン。

$ vagrant plugin list
vagrant-share (1.1.6, system)
vagrant-vbguest (0.13.0)
$

vbguest“のプラグインが新しくなっていないか?と思い確認。

$ vagrant plugin update vagrant-vbguest
Updating plugins: vagrant-vbguest. This may take a few minutes...
All plugins are up to date.
$

`update`対象は無いようである。”vbguest“の状態を確認する。

$ vagrant vbguest cent67 --status
[cent67] No installation found.
$
$ vagrant vbguest cent67
[cent67] No installation found.
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * extras: mirror.qoxy.com
 * updates: mirror.vodien.com
No package kernel-devel-2.6.32-573.el6.x86_64 available.
Package gcc-4.4.7-18.el6.x86_64 already installed and latest version
Package binutils-2.20.51.0.2-5.47.el6_9.1.x86_64 already installed and latest version
Package 1:make-3.81-23.el6.x86_64 already installed and latest version
Package 4:perl-5.10.1-144.el6.x86_64 already installed and latest version
Package bzip2-1.0.5-7.el6_0.x86_64 already installed and latest version
Nothing to do
Copy iso file /Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso into the box /tmp/VBoxGuestAdditions.iso
Installing Virtualbox Guest Additions 5.1.16 - guest version is unknown
Verifying archive integrity... All good.
Uncompressing VirtualBox 5.1.16 Guest Additions for Linux...........
VirtualBox Guest Additions installer
Removing installed version 5.1.16 of VirtualBox Guest Additions...
vboxadd.sh: Stopping VirtualBox Additions.
Copying additional installer modules ...
Installing additional modules ...
vboxadd.sh: Building Guest Additions kernel modules.
Failed to set up service vboxadd, please check the log file
/var/log/VBoxGuestAdditions.log for details.

$
$ vagrant vbguest cent67 --status
[cent67] No installation found.
$

状況は変わらない。以前のエントリの通りログインして操作することにする。

$ vagrant ssh cent67
[vagrant@cent67 ~]$ sudo yum update

VMを再起動してみる。

$ vagrant reload cent67
  :
[cent67] No installation found.
  :
Installing Virtualbox Guest Additions 5.1.16 - guest version is unknown
  :
$

気になるメッセージはまた表示されているが、マウントはしてくれた。

一度起動して対応して…と、最初の起動時からは解決できていないので根本解決にはなっていないが仕方が無い。

以上。

■ 関連

VirtualBoxの/vagrantがマウントに失敗

VirtualBoxのVMからVagrantBoxを作成

表題の通り。先日作成途中であったAlpine LinuxのVMをVagrantBoxにする。

■ 環境

  • Alpine Linux 3.4.1
  • Vagrant 1.8.1
  • VirtualBox
  • Mac OSX El Capitan

■ alpine

先日のエントリでは”3.3.3“を使用していたと記憶しているが、現在は”3.4.1“までリリースされていたので再度”3.4.1“でVirtualBoxのVMを作成しインストールした。

Alpine Linux on VirtualBox (1)
Alpine Linux on VirtualBox (2)

以降はインストールした後の作業について。

■ Vagrant Base Box

下記公式ドキュメントを参照し、最低限の作業を行う。

CREATING A BASE BOX
https://www.vagrantup.com/docs/boxes/base.html

  • vagrant user
  • key
  • sudo

VirtualBoxのVagrantBoxを作成するには更に下記のドキュメントがある。

https://www.vagrantup.com/docs/virtualbox/boxes.html

しかし、Alpine LinuxにVirtualBox Guest Additionsがインストールできなかったので、ここは諦めた。少なくとも前述の最低限の範囲ができていればVagrantBoxとして作成することは可能であろう。

■ VagrantBox

VagrantBox化するには下記のように行う。

vagrant package --base [VM] --output [VagrantBox]

自身の場合は下記のようにした。VirtualBoxのVMは”alpine“、出力するVagrantBoxの名前は”alpine-3.4.1.box“としている。

$ vagrant package --base alpine --output alpine-3.4.1.box

これで作成された”alpine-3.4.1.box“は下記のサイズになっていた。

$ ls -l alpine-3.4.1.box
-rw-r--r--  1 withsin  staff  144878996  7  5 19:09 alpine-3.4.1.box
$

この後はVagrantとして作成できるか?であるが、今回はここまでとする。

続きはこちら

以上。

■ 関連

VirtualBoxのポートフォワード

表題の通り。VirtualBoxの画面を使うと作業がしづらいので、ターミナルでアクセスできるようにポートフォワードを設定する。

■ 環境

  • Alpine Linux 3.3.3
  • VirtualBox
  • Mac OSX El Capitan

■ Alpine Linux

起動時のメッセージにも下記のように出力されているが、sshdは起動している。

alpine-ssh-001

sshdの設定を確認すると、rootでのログインが許可されていないようなので、下記を編集してrootでのログインを許可した。

$ vi /etc/ssh/sshd_config

設定項目は下記。

PermitRootLogin yes

sshdを再起動する。

$ service sshd restart

続いてVirtualBoxのポートフォワードの設定を行う。

■ VirtualBox

AlpineのVMのネットワーク設定を開く。

「設定」>「ネットワーク」>「アダプター1」

alpine-ssh-002

よく使われる”2222“は`vagrant`で使っていたりするので、ここでは”22222“をVMの”22“ポートへフォワードすることにした。

alpine-ssh-003

あとは使い慣れているターミナルソフトでログインするだけである。

$ ssh -l root -p 22222 localhost
root@localhost's password:
Welcome to Alpine!

The Alpine Wiki contains a large amount of how-to guides and general
information about administrating Alpine systems.
See <http://wiki.alpinelinux.org>.

You can setup the system with the command: setup-alpine

You may change this message by editing /etc/motd.

localhost:~#

ちなみに、”root“のパスワードを設定した時に”Bad Password: too short“と出ているパスワードではログインができないので`passwd`コマンドでそれなりのパスワードに設定しておかなければならない。

以上。

■ 関連

Alpine Linux on VirtualBox (2)

先日の下記エントリの続き。

Alpine Linux on VirtualBox (1)

■ 環境

  • Alpine Linux 3.3.3
  • VirtualBox
  • Mac OSX El Capitan

■ 起動

Alpine LinuxのVMを起動する。

alpine-setup-001

前回と同じで”root“でログイン。

alpine-setup-002

各種設定を行う`setup-alpine`を実行する。

alpine-setup-003

keyboard layout“は”jp“で進める。

alpine-setup-004

hostname“は特に設定しない。”localhost“となるようである。

alpine-setup-005

ネットワークインターフェース(NIC)の選択。記載されている通り使用可能なのは”eth0“であるのでこれを選択。

alpine-setup-006

選択した(eth0)のIPをアドレス。デフォルトの”dhcp“で行う。

alpine-setup-007

手動でネットワーク設定を行うかと問われるが行わない。

alpine-setup-008

root“のパスワード設定。短すぎると言われているが気にしない。

alpine-setup-009

タイムゾーンの選択。”?“で選択可能な一覧を取得し、表記の中から”Japan“を選択した。

alpine-setup-010

プロキシは使用しない。

alpine-setup-011

どのレポジトリを使用するかの選択のようである。”f“で一番速くアクセスできるレポジトリを選択できるようなので実行。

alpine-setup-012

SSHサーバはデフォルトの”openssh“で行う。

alpine-setup-013

NTPクライアントはデフォルトの”chrony“で行う。

alpine-setup-014

使用するディスクを選択。選択可能なのは”sda“だけなので、これを指定。

alpine-setup-015

sys“/”data“/”lvm“何を選択すれば良いのかよくわからないので”?“で確認。

alpine-setup-016

OSをインストールするのは”sys“のようなのでこれを選択。

alpine-setup-017

インストール開始。

alpine-setup-018

VirtualBoxの設定からディスクを外して継続。

alpine-setup-019

インストールを完了したら`reboot`する。ディスクはすでに外しているが起動するはずである。

alpine-setup-020

以上。

■ 関連