この記事の目的
メイン:Virtual Boxで仮想環境を構築して、Ansibleを検証できるようにする
サブ:環境の作り方を忘れないようにする
#1.背景
仕事でAnsibleを使い始めたが、動作検証を今すぐしたい!!!
検証しないと夜しか眠れない!!
でも環境はオフィスにしかない………
なければ作ればよいのでは??
#2.環境
ハードウェア
CPU : i7 3770 (インテル® バーチャライゼーション・テクノロジー (VT-x) 対応CPU)
メモリ : 16GB
ソフトウェア
Windows 10 professional
Virtual Box 5.2.26 r128414 (Qt5.6.2)
#3.準備
##3.1 Virtual Boxのインストール
自分のPCの環境に合わせたVirtual Boxをダウンロードしてインストール!
##3.2 仮想化支援機能の有効化
Intel VT-xを有効にしましょう!
やり方はgoogle先生に聞いてみよう!
VirtualCheckerでVT-xが有効かどうかを調べることができるので活用すべし
##3.3 CentOSのOsイメージのダウンロード
CentOSのホームページからOSイメージをダウンロードしましょう。
個人的にGUIは煩わしいのでMinimal ISOをダウンロード!
#4.VMを作成
##4.1 環境のイメージ
ansible用のサーバとansible検証用のテストサーバを作成します。
両サーバは仮想NICとしてNATとホストオンリーアダプタを持ちます。
NATはyumのために使用します。
ホストオンリーアダプタはホストPCからのTeraTermと、VM間のansible用ネットワークのために使用します。
##4.2 ホストオンリーアダプタのためのネットワークの作成
あらかじめネットワークを作っておきましょう
File->Host Network Manager
Create!
作成したAdapterを選択してPropertiesボタンを選択!
お好みのIPアドレスとNWを設定しましょう。
今回は 192.168.111.1/255.255.255.0 を設定。そしてApply!!
##4.3 VMの設定
お待たせしました。ついにVMです。
NewボタンでVMを作っていきますぞ
設定は以下の通り。CentOSはRedHatのファミリーなのでRedhatでいいでしょ(違ったらごめんなさい)
自分のPCのスペックと相談して設定しようね!
☆最小構成インストールの場合、Ansibleをインストールしても1.3GB程度しか使用しません。
次はNICの割り当て。作成したホストオンリーアダプタをVMに設定!
VMを選択してSetting->Network->Adapter2
設定値はこう!
設定 | 設定値 | 説明 |
---|---|---|
Enable Network Adapter | ✔(チェックつける) | NICの有効化 |
Attached to | Hots-only Adapter | 4.2で作ったのはホストオンリーアダプター |
Name | VirtualBox Host-Only Ethernet Adapter #4 | 4.2で作ったホストオンリーアダプターを割り当てる! |
OSインストールのために、OSのisoを仮想ドライブに割り当て!
Setting->Storage->Controller: IDE->Empty->Optical Drive->💿
3.3でダウンロードしたisoファイルを指定しよう!!
##4.4 OSインストール
遂にきました、OSインストールです。
VMを起動させましょう。
VMを選択してダブルクリックか、を押す!
「Install CentOS 7」を選択してインストール開始!
ちなみに、右のCtrlボタンでVMから離れることができます。
設定していきます。
インストール時に使用する言語はお好みで。
インストールの概要が出たら「インストール先(D)」を選択。設定しないとインストールが始まりません。
4.3で作成した仮想ディスクしかないはずなので、選択して完了!
インストール中にパスワードをroot設定しておきます。
パスワードはお好みで。
後はインストール完了まで待つ!!!!!
(いっぱいリソースを割り当てたら早く終わるゾイ)
終わったら再起動
インストール完了です。
rootユーザで、インストール中に設定したパスワードを使ってログインできることを確認しましょう。
#5.ネットワークの設定
Virtual Boxのコンソールでもよいのですが、個人的にTera Termの方が使いやすいのでTera Termで接続できるようにします。
5.1 ホストオンリーアダプターのMACアドレスの確認
各仮想NICのACアドレスはVMの設定から見れます。
Setting->Network->Adapter 2>Advanced->MAC Address:
ホストオンリーアダプターはキャプチャの通りですね。
5.2 IPアドレスの設定
VM上でホストオンリーアダプターの仮想NICがどのIFに割り当てられているか確認しましょう。
# ip addr
今回はenp0s8に割り当てられているようです。
4.2にて「192.168.111.1/255.255.255.0」を設定していたので、enp0s8には「192.168.111.10」を設定しましょう。
設定のやり方はもちろんnmcuiコマンドです。
# nmcli connection modify enp0s8 ipv4.method manual ipv4.addresses "192.168.111.10/24"
設定したらインターフェースをUPしましょう。
# nmcli connection up enp0s8
成功したら以下のように、DEVICEにCONNECTIONが追加されて、緑色になります。
ip addrコマンドでIPアドレスも確認しましょう。
[root@localhost ~]# nmcli d
DEVICE TYPE STATE CONNECTION
enp0s8 ethernet ???? enp0s8
enp0s3 ethernet ???? --
lo loopback ???? --
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:da:ce:78 brd ff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:8a:60:d3 brd ff:ff:ff:ff:ff:ff
inet 192.168.111.10/24 brd 192.168.111.255 scope global noprefixroute enp0s8
valid_lft forever preferred_lft forever
inet6 fe80::c544:e75f:b0ab:d6e1/64 scope link noprefixroute
valid_lft forever preferred_lft forever
5.3 Tera Termでアクセス
これでアクセスできますぞ!
Tera Termからログイン!!!!
作業がやりやすくなりましたね!(個人的感想)
5.4 外部NWとの接続
yumでansibleをインストールできるように外部ネットワークに接続できるようにしましょう。
enp0s3のインタフェースがNATの仮想NICなので、リンクアップさせましょう。
リンクアップのコマンドはenp0s8と同じです。
[root@localhost ~]# nmcli d
DEVICE TYPE STATE CONNECTION
enp0s8 ethernet connected enp0s8
enp0s3 ethernet disconnected --
lo loopback unmanaged --
[root@localhost ~]# nmcli c up enp0s3
?????????????????? (D-Bus ???????: /org/freedesktop/NetworkManager/ActiveConnection/2)
[root@localhost ~]# nmcli d
DEVICE TYPE STATE CONNECTION
enp0s3 ethernet connected enp0s3
enp0s8 ethernet connected enp0s8
lo loopback unmanaged --
何も設定していませんが、外部NWにpingが通るか確認してみましょう。(結果は一部マスクしています。)
[root@localhost ~]# ping -c 3 google.com
PING google.com (XXX.XXX.XXX.XXX) 56(84) bytes of data.
64 bytes from XXXXXXXXXX.XXXXX.net (XXX.XXX.XXX.XXX): icmp_seq=1 ttl=54 time=6.13 ms
64 bytes from XXXXXXXXXX.XXXXX.net (XXX.XXX.XXX.XXX): icmp_seq=2 ttl=54 time=9.35 ms
64 bytes from XXXXXXXXXX.XXXXX.net (XXX.XXX.XXX.XXX): icmp_seq=3 ttl=54 time=6.10 ms
--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2005ms
rtt min/avg/max/mdev = 6.103/7.195/9.352/1.526 ms
通りましたね。設定しなくてもつながります。
(補足:外部と繋がるご自宅のNW内で固定IPアドレスを使用したりしていると繋がらない可能性があります)
#6. Ansibleのインストール
yumさんがすべて解決してくれます。
yumは神。
最新のAnsibleをインストールするには、EPEL(Extra Package for Enterprise Linux)レポジトリが必要なようです。1
そのため、epel-releaseをインストールしてからAnsibleをインストール!
**Is this ok [y/d/N]:**はすべて「y」で継続
# yum install epel-release
# yum install ansible --enablerepo=epel-testing
(省略)
ansible noarch 2.7.7-1.el7 epel 11 M
(省略)
2019年2月11日時点では、2.7.7-1.el7がインストールされるようです。
インストールされているか確認
[root@localhost ~]# rpm -qa | grep ansible
ansible-2.7.7-1.el7.noarch
ansibleがインストールできました!
完璧では!?
#7. テストサーバの作成
Ansibleの検証はローカルでやってもよいのですが、せっかくならVMももう一つ作りたいところ。
作ったAnsibleサーバをコピーしてテストサーバにしましょう。
7.1 VMコピー
Ansilbeサーバをシャットダウンして、VirtualBoxManagerでVMを右クリックからのcloneを実行!
VM名はお好みで。
ディスクには余裕があるので「すべてをクローン」にしてしまいましょう。
###注意点
このやり方だとVirtualBoxデフォルトのフォルダにVMが作られてしまうので、ディスク容量がない場合はVMを移動させましょう。
移動方法は、VirtualBoxの仮想マシンフォルダ変更手順メモの「面倒くさいので手抜きすると」を参考に移動しましょう
7.2 VM起動
VMの起動方法は4.3と同じ。
ホストオンリーアダプタはAnsibleサーバと同じものが割り当てられているので、5.1と5.2を参考にIPアドレスを設定しましょう。
今回は192.168.111.11を設定
# nmcli connection modify enp0s8 ipv4.method manual ipv4.addresses "192.168.111.11/24"
Ansibleサーバは一度シャットダウンしたので起動させ、両VMのenp0s8のインタフェースをアップさせましょう。
# nmcli c up enp0s8
これで、両者ともに通信ができるようになりました。
pingで確認しましょう
# ping -c 3 192.168.111.10
# ping -c 3 192.168.111.11
pingが通れば環境構築は完了です。
##8. 残りの設定
環境はできましたが、いくつか設定したほうがよい設定が残っています。
ここでは何を設定したら良いか記載しますので、ご自身でやり方を調べてください。
(設定を失敗してもVMだからOSをぶっ壊しても問題なし!)
- ホスト名の設定 → どっちがテスト用サーバかわかるようにするため
- ホストオンリーアダプタのインタフェース(この記事ではenp0s8)のONBOOTをyesに設定 → シャットダウンするたびにリンクを上げなおさなくて良いようにするため
- テストサーバのCPU/メモリ量のリソース調整 → 検証用のサーバはリソースを減らしてホストPCのリソースを増やしておきましょう
#9. まとめ
Ansibleを検証できる環境ができたので、あとはAnsibleの使い方を調べてAnsibleを使ってみましょう
-
Ansibleのインストールとサンプルコードの実行を参考にさせて頂きました。 ↩