当記事はケーススタディの連載となっています。目次は【こちら】です。
最新のソースコードは【GitHub】で公開中です。
今回は赤く囲んだ部分のサーバ構成(manageterm)をVagrantで構築し、「manageterm」からAnsibleが実行可能なLinuxを構築するところまでを実装します。
必要に応じて過去の記事を参照ください。
-
Windows構成は、
VirtualBox内のLinuxイメージをVagrantBoxファイルに変換する -
Vagrantの基本的な操作の流れは、
VagrantBoxの初期化から複数サーバ起動までの一般的な流れ
#Vagrantコマンドで「basecent7」(ベースとなる最小構成CentOS7)からVagrantBoxファイルを作成する
##Windows設定編(主にPowershell操作)
###1.VagrantfileのDIRに移動
Vagrant実行のルートDIRに移動する。
cd D:\_BLOG\BG001\vagrant_box
###2.VirtualBoxに作成したサーバをVagrantBoxファイルとして保存
作成した「basecent7」の仮想マシンイメージをVagrantBoxファイルにパッケージングする。
書式:
vagrant package --base ${VirtualBox仮想マシン名(Path)} --output ${boxファイル名(Path)}
例:
vagrant package --base basecent7 --output ../vagrant_boxfiles/basepackage.box
###3.Vagrantにboxを追加する
上記2.で作成したboxファイル(パッケージングしたVirutalbox)をベースにVagrantBoxに「manageterm」(Ansible操作用端末)を作成する。
書式:
vagrant box add ${box内での名前} {$ベースとなる.boxファイル}
例:
vagrant box add manageterm ../vagrant_boxfiles/basepackage.box
###4.boxファイルの登録を確認
boxの一覧を表示し、Vagrantに登録されたかを確認する。
書式:
vagrant box list
具体例:
vagrant box list
###5.Vagrantfileの作成
Vagrant起動用のVagrantfileを作成する。
以下のコマンドで実行後カレントフォルダに「Vagrantfile」が作成される。
書式:
vagrant init ${box内での名前}
例:
vagrant init manageterm
###6.Vagrantfileの修正
(GUIを見える設定/ホストOSと同一ネットワーク内への設定)
Vagrantを実行するとVirtualBoxが起動するが、デフォルトではプロセスのみ起動してGUIでの状態が見えない。
またネットワークもVirtualBoxとの通信がNATになり、ホストOS(この場合Windows8)からゲストOS(この場合manageterm)へのアクセスが出来ない。(ゲストからルーティングしてホスト経由でインターネットに出る事は可能。)
Vagrantfileを編集して以下を設定する。
-
起動時にVirtualBoxを表示する
-
ホストOSとゲストOSを同一セグメントに配置し通信可能にする
Vagrant.configure(2) do |config|
config.vm.box = "manageterm"
#ホスト名の設定
config.vm.hostname = "manageterm"
#ネットワークの設定(ホストとゲスト間のプライベートネットワーク(不要ならコメント)
config.vm.network "private_network", ip: '192.168.134.195'
#ネットワークの設定(ホストと同じセグメントのネットワークに入る設定)
config.vm.network "public_network", ip: '192.168.102.195'
config.vm.provider "virtualbox" do |vb|
#VirtualBoxが起動している時にGUIで表示する
vb.gui = true
#メモリを1Gに設定
vb.memory = "1024"
end
end
###7.Vagrantを起動
書式:
vagrant up
例:
vagrant up
(注釈)
*1.初回のみ「manageterm」のVirtualBoxイメージを作成している。
*2.Vagrantfileのネットワーク設定部分
【#ネットワークの設定(ホストとゲスト間のプライベートネットワーク(不要ならコメント)】がadapter2として設定されている
【#ネットワークの設定(ホストと同じセグメントのネットワークに入る設定)】がadapter3として設定されている
*3.起動直後の為、通信が間に合っていないだけなので無視する。ネットワーク設定が間違っている場合はこのログが出続ける
(その場合ネットワーク設定に誤りがある)
*4.Vagrantfileファイルのネットワーク設定部分
#ホスト名の設定
Bringing machine 'default' up with 'virtualbox' provider…
==> default: Importing base box 'manageterm'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: vagrant_box_default_1450866560619_16623
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
default: Adapter 2: hostonly
default: Adapter 3: bridged
==> default: Forwarding ports...
default: 22 => 2222 (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection timeout. Retrying...
default: Warning: Remote connection disconnect. Retrying...
default: Warning: Remote connection disconnect. Retrying...
default: Warning: Remote connection disconnect. Retrying...
default:
default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default:
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Setting hostname...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
default: /vagrant => D:/_BLOG/BG001/vagrant_box
PS D:\_BLOG\BG001\vagrant_box>
Vagrantfileにて「GUI=true」の設定をしている為、VirtualBoxの画面が表示される。
「GUI=false」(もしくは設定しない)の場合でも表示されないだけで、プロセスとしては起動している為、起動確認がとれる。邪魔になった場合はfalseに設定しても良い。
実際にVagrantを実行する、といってもVagrantは仮想ソフトウェアではないので、仮想化ソフトウェア(VirtualBox)を管理し起動するだけである。
今回は初回起動の為、
-
boxファイル(D:_BLOG\BG001\vagrant_boxfiles\basepackage.box)を元にVirtualBox用のイメージファイル(D:_BLOG\BG001\vb\配下)の新規作成
-
作成したVirtualBoxの起動
を行ったが、2回目以降の起動時は、VirtualBox用のイメージ作成フェーズがない為、素早く起動する。
上記の通りVagrantは仮想マシンの管理ソフトウェアであり、仮想化自体は仮想化ソフトウェアにお任せという事がわかる。
##Linux設定編(SSHにて)
ここではWindows設定編にてVagrantを使用して起動した「manageterm」をAnsibleが使用できるように設定する。
Ansibleは標準のYUMリポジトリには入っていない。
今回の「manageterm」にはVagrantが利用できるよう、既にEPELリポジトリ利用可能な設定のLinuxからスタートしているが、Vagrantを使わずにAnsibleを利用する場合は、再帰EPELリポジトリを導入すること。
※(必要であれば)epel-releaseをインストール
cd /tmp
wget http://ftp.riken.jp/Linux/fedora/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
yum localinstall epel-release-7-5.noarch.rpm
Ansibleのインストール
AnsibleをEPELリポジトリよりインストールする。
書式:
yum -y install ansible
Running transaction
インストール中 : python-crypto-2.6.1-1.el7.centos.x86_64 1/17
インストール中 : sshpass-1.05-5.el7.x86_64 2/17
インストール中 : python-babel-0.9.6-8.el7.noarch 3/17
インストール中 : python-pyasn1-0.1.6-2.el7.noarch 4/17
インストール中 : python-keyczar-0.71c-2.el7.noarch 5/17
インストール中 : python-six-1.9.0-2.el7.noarch 6/17
インストール中 : python-ecdsa-0.11-3.el7.centos.noarch 7/17
インストール中 : python-paramiko-1.15.1-1.el7.noarch 8/17
インストール中 : python-backports-1.0-8.el7.x86_64 9/17
インストール中 : python-backports-ssl_match_hostname-3.4.0.2-4.el7.noarch 10/17
インストール中 : python-setuptools-0.9.8-4.el7.noarch 11/17
インストール中 : python-httplib2-0.7.7-3.el7.noarch 12/17
インストール中 : python-markupsafe-0.11-10.el7.x86_64 13/17
インストール中 : python-jinja2-2.7.2-2.el7.noarch 14/17
インストール中 : libyaml-0.1.4-11.el7_0.x86_64 15/17
インストール中 : PyYAML-3.10-11.el7.x86_64 16/17
インストール中 : ansible-1.9.4-1.el7.noarch 17/17
検証中 : python-keyczar-0.71c-2.el7.noarch 1/17
検証中 : libyaml-0.1.4-11.el7_0.x86_64 2/17
検証中 : python-jinja2-2.7.2-2.el7.noarch 3/17
検証中 : python-setuptools-0.9.8-4.el7.noarch 4/17
検証中 : python-backports-ssl_match_hostname-3.4.0.2-4.el7.noarch 5/17
検証中 : python-markupsafe-0.11-10.el7.x86_64 6/17
検証中 : python-httplib2-0.7.7-3.el7.noarch 7/17
検証中 : python-backports-1.0-8.el7.x86_64 8/17
検証中 : python-six-1.9.0-2.el7.noarch 9/17
検証中 : python-crypto-2.6.1-1.el7.centos.x86_64 10/17
検証中 : python-pyasn1-0.1.6-2.el7.noarch 11/17
検証中 : PyYAML-3.10-11.el7.x86_64 12/17
検証中 : ansible-1.9.4-1.el7.noarch 13/17
検証中 : python-babel-0.9.6-8.el7.noarch 14/17
検証中 : sshpass-1.05-5.el7.x86_64 15/17
検証中 : python-ecdsa-0.11-3.el7.centos.noarch 16/17
検証中 : python-paramiko-1.15.1-1.el7.noarch 17/17
インストール:
ansible.noarch 0:1.9.4-1.el7
依存性関連をインストールしました:
PyYAML.x86_64 0:3.10-11.el7 libyaml.x86_64 0:0.1.4-11.el7_0
python-babel.noarch 0:0.9.6-8.el7 python-backports.x86_64 0:1.0-8.el7
python-backports-ssl_match_hostname.noarch 0:3.4.0.2-4.el7 python-crypto.x86_64 0:2.6.1-1.el7.centos
python-ecdsa.noarch 0:0.11-3.el7.centos python-httplib2.noarch 0:0.7.7-3.el7
python-jinja2.noarch 0:2.7.2-2.el7 python-keyczar.noarch 0:0.71c-2.el7
python-markupsafe.x86_64 0:0.11-10.el7 python-paramiko.noarch 0:1.15.1-1.el7
python-pyasn1.noarch 0:0.1.6-2.el7 python-setuptools.noarch 0:0.9.8-4.el7
python-six.noarch 0:1.9.0-2.el7 sshpass.x86_64 0:1.05-5.el7
完了しました!
Ansibleは、「/etc/ansible/」配下の「ansible.cfg」、「hosts」で変更及び設定を行う。
[root@manageterm ~]# cd /etc/ansible/
[root@manageterm ansible]# ll
合計 16
-rw-r--r--. 1 root root 8625 10月 11 03:36 ansible.cfg
-rw-r--r--. 1 root root 965 10月 11 03:36 hosts
drwxr-xr-x. 2 root root 6 10月 11 03:36 roles
Ansibleを実際に動かす前に、Ansibleによって設定されるサーバ群をVagrantを使って先に作成していきます。
次回は「最小構成CentOS7からAnsibleに制御されるCentOS7を構築する(On Vagrant)」について。
連載の目次は【こちら】です。