LoginSignup
11
11

More than 5 years have passed since last update.

【連載01】107.最小構成CentOS7からAnsible実行可能な操作用CentOS7を作成する(On Vagrant)

Last updated at Posted at 2016-01-11

当記事はケーススタディの連載となっています。目次は【こちら】です。
最新のソースコードは【GitHub】で公開中です。

今回は赤く囲んだ部分のサーバ構成(manageterm)をVagrantで構築し、「manageterm」からAnsibleが実行可能なLinuxを構築するところまでを実装します。

必要に応じて過去の記事を参照ください。

サーバ構成


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

実行結果イメージ:
image

3.Vagrantにboxを追加する

上記2.で作成したboxファイル(パッケージングしたVirutalbox)をベースにVagrantBoxに「manageterm」(Ansible操作用端末)を作成する。

書式:

vagrant box add \${box内での名前} {$ベースとなる.boxファイル}

例:

vagrant box add manageterm ../vagrant_boxfiles/basepackage.box

実行結果イメージ:
image

4.boxファイルの登録を確認

boxの一覧を表示し、Vagrantに登録されたかを確認する。

書式:

vagrant box list

具体例:

vagrant box list

実行イメージ:
image

5.Vagrantfileの作成

Vagrant起動用のVagrantfileを作成する。
以下のコマンドで実行後カレントフォルダに「Vagrantfile」が作成される。

書式:

vagrant init \${box内での名前}

例:

vagrant init manageterm

実行イメージ:
image

6.Vagrantfileの修正

(GUIを見える設定/ホストOSと同一ネットワーク内への設定)

Vagrantを実行するとVirtualBoxが起動するが、デフォルトではプロセスのみ起動してGUIでの状態が見えない。
またネットワークもVirtualBoxとの通信がNATになり、ホストOS(この場合Windows8)からゲストOS(この場合manageterm)へのアクセスが出来ない。(ゲストからルーティングしてホスト経由でインターネットに出る事は可能。)

Vagrantfileを編集して以下を設定する。

  • 起動時にVirtualBoxを表示する

  • ホストOSとゲストOSを同一セグメントに配置し通信可能にする

vagrantfile
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

実行イメージ:
031.png

(注釈)
*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に設定しても良い。

image

実際に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

実行結果イメージ:
image

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」で変更及び設定を行う。

image

[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)」について。

連載の目次は【こちら】です。

11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11