不動の鳥の勉強記録

時間があるときに勉強したことをメモします。

VirtualBoxでAnsible環境を整える-構成設計編

VirtualBoxの使い方等をマスターしようと思います。とりあえず長くなりそうなので何個かの記事に分けていきたいと思います。仮想環境を作るときにVirutualBoxかDockerの2択になりそうだったのですが、私が利用している環境がWindows 10 home 64bitとなっており、OSのエディションがDockerの要件を満たしていないのでVirtualBoxを選択しました。

■記事の最終目標

最終的なゴールはAnsibleの実験がしたいので3つゲストOSを構築していきたいと思います。記事の構成としては1つの記事だと長くなりそうなので下記構成で作っていきたいと思います。

■構成設計

何かやるときにとりあえず作っちゃおうが今までのスタンスなのですが、構成設計をしておくことで後工程で躓いたり元に戻ったりしないので、先にしておきます。ここではサーバとネットワークの設計をしておきます。

〇サーバの設計

今回は3台のゲストOSを作成し、用途としては1台はAnsibleの管理用サーバ、残り2台をAnsibleのスクリプトでいろいろ実験するサーバとしたいと思います。また、OSはCentOSの最新版(CentOS 7)にしたいと思います。Windows Server系もちょっと気になりますが、今後必要になった場合に実験したいと思います。

〇ネットワークの設計

今回の要件は下記2つです。

  • ゲストOS間でAnsibleのためのssh接続ができること
  • ホストOSからファイル転送のためAnsible用のゲストOSへscp接続ができること

これらを実現するには、VirtualBoxのネットワーク設定を考えます。

  1. 案:ブリッジアダプターを利用する。
    一つの方法として3台ともブリッジアダプターで構成すると、3台のゲストOSはそれぞれがホストOSと同じネットワークのIPアドレスを割り当てられます。メリットとしては、同じネットワーク間であるのでなんでもござれで通信できるのと、ポートフォワーディングなど細かいVirtualboxの設定が不要となりそうな点がメリットです。デメリットは同じネットワークなのでもし不具合が起きた場合に、同じネットワーク内の他マシンも影響を受けてしまう点が挙げられます。今回はAnsibleの実験をしたく、ホストの設定は正しく行いますが同じネットワーク内の他マシンにAnsibleのスクリプトの影響が出るのは避けたいのでこの案は採用しません。

  2. 案:NATネットワークを構成する。
    NATネットワークを構築すると、同じNATネットワーク設定のゲストOS同士の通信が可能となります。また、ポートフォワーディングを行うことで、ホストOSからゲストOSへの通信も可能となります。また、ポートフォワーディングが設定されていないゲストOSへは外部からアクセスできないようになっているので動作試験もしやすそうです。そのため、今回はNATネットワークを構成し、Ansible用のゲストOSへのポートフォワーディング設定を行うことでネットワークの要件を満たしたいと思います。

ここまできたらNATネットワークの設計とポートフォワーディングの設定を考えます。 ホストOSでnetstatコマンドを実行しホストOSのポート利用状況を確認します。確認したところ22番ポートを利用しているプログラムは見つからなかったので、ホストOSの22番ポートの通信を、Ansible用のゲストOSの22番ポートにポートフォワーディング設定を行います。また、NATネットワークについては、接続するサーバの台数が確保できるレンジのサブネット等であれば問題ないと思いますので、デフォルトのままで構築します。

〇構成設計まとめ

ここまでで今回の構成が整いましたので自分でわかるように絵にまとめたのが下記となります。ホストOSのIPはDHCP設定で時々変わるので第4オクテットはxxxとしています。ここまでで今回作成する構成がまとまりました。次の記事でこの構成に従ってVirtualBoxを操作しながら作っていきたいと思います。ゲストOSのIPアドレスを固定化したいのですが、NATネットワークではVirtualBoxDHCP設定を使うので固定化はできなさそうでした。参考に記載のベストプラクティスというので、NATとホストオンリーアダプターの組み合わせを行うことでIP固定できるそうです。

サーバ構成

ホスト名 IPアドレス OS 用途
AnsibleControl 10.0.2.xxx CentOS 7.x Ansible管理用サーバ
CentOS01 10.0.2.yyy CentOS 7.x Ansible実験用サーバ#1
CentOS02 10.0.2.zzz CentOS 7.x Ansible実験用サーバ#2

f:id:hiyo-ac:20190504181158p:plain
構成図

ポートフォワーディング設定

名称 プロトコル ホストIP ホストポート ゲストIP ゲストポート
AnsibleSSH TCP 192.168.0.xxx 22 10.0.2.xxx 22

おわりに

記事を書きながら操作しているので、後続の過程でうまくいかなかった時は内容を修正することがありますのでご容赦ください。また、内容に誤りなどありましたらコメントにてご指摘お願いします。

■参考

これらの記事がとても参考になりました。製作者の皆様に感謝です。