仮想環境で『Ansible』を使ってサーバ構築

  • 2017年9月25日
  • by 
仮想環境で『Ansible』を使ってサーバ構築

ソフトバンク・au・ドコモの方は、公式のオンラインショップを利用すれば頭金不要で通常のショップよりお得に購入できます。

最近、サーバ構築を実施する必要がありました。

まずは仮想環境を作り、サーバ構築を……と思ったのですが、私はインフラ周りの経験が浅く、色々困ったことが頻出してしまいました。

今回の記事では、私と同じような “サーバ構築ビギナー” にも関わらず、実際に構築する必要に迫られた方々に役立つであろう情報を共有していきたいと思います。

『Ansible』を利用するメリットとは

今回使用するのは「VirtualBox」と「Vagrant」、そして『Ansible』です。

「VirtualBox」は使用しているPCに仮想環境を構築してくれるオラクル社製のフリーソフトであり、「Vagrant」は仮想開発環境の構築ソフトウエアになります。
こちらは過去にbitWaveでも紹介しておりますので、ぜひご参照ください。
<bitWave関連記事『ローカルPCとVirtual Boxの仮想マシンとのネットワーク接続、どうなってる?』>

そして本記事のタイトルにもある『Ansible』とはサーバ構成管理ツールになります。

通常であればサーバが複数台あった場合、そして構築の手順が多い場合は一台ずつ設定を行う必要が出てきてしまいます。
しかし『Ansible』の「Playbook」を使うことにより、例え複数台であっても構築の手順を容易に対応することができるんですね。

なお、今回ご紹介させていただく方法はMacで実践したものですので、予めご了承ください。

必要なソフトウエアをインストールする

“サーバ構築ビギナー” であれば端末もまっさらなハズです。
なので、必要なものをじゃんじゃんインストールしていきましょう。

手順1:「VirtualBox」をインストールする

下記リンクから自分の端末(Windows/Mac)の仕様に合わせ、パッケージをダウンロードしてインストールしましょう。
<参照:Oracle『Downloads –Oracle VM VirtualBox』>

手順2:「Vagrant」をインストールする

下記リンクから「Vagrant」をダウンロードしてインストールしましょう。
<参照:HashiCorp『Download -Vagrant by HashiCorp』>

手順3:「VirtualBox」と「Vagrant」のバージョンを確認する

ターミナルを開くことで、先ほどインストールしたソフトウエアのバージョンをチェックすることができます。

	Vagrant の version ⇨ vagrant --version
	VirtualBoxのversion ⇨ vboxmanage --version

※下記の画像をご参考ください

手順4:「Vagrant」で「CentOS」を立ち上げる

「Vagrant」で「CentOS」を立ち上げ、分かりやすくするためにフォルダを作ってみます。

$:mkdir vagrant
$:cd vagrant (ここにvagrant のboxを作ります)
	$:vagrant box add no_2_centos (ここはbox名) http://mirror.fairway.ne.jp/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso

こんな感じですね。

なお、「CentOS7」のダウンロード先は下記のリンクから取ってきました。
<参照:Community ENTerprise Operating System『CentOS Mirror』>
ここで、box準備に多少時間を要しますので気長に待ちましょう。

インストールが終了後に以下のようにコマンドを打ち込むと……

	$:vagrant init no_2_centos(box名) 
	$:vagrant up

以下のような感じになります。

そして「$:vagrant ssh」でログインしてみましょう。
ログインができたら、次は「VirtualBox」の設定を行うため、一旦シャットダウンします。

シャットダウンは以下のように打ち込みましょう。

 $:sudo su して $:shutdown -h now

仮想環境とローカルをセッティングする

なお、仮想環境にも『Ansible』を導入することは可能です。

ただし、今回は『Ansible』をローカル環境にインストールし、そのローカル環境から複数のサーバに対して構築を行う予定であるため、ローカルと仮想サーバのそれぞれのsshアクセスが必要になってきます。

それを実践するために、以下のような設定を行いました。

手順1:「Vagrantfile」を編集する

「Vagrant」のファイルを以下のように編集します。

$:vim Vagrantfile

下記画像にある一行のコメントアウトを外します。

$:wq!

上記で保存しましょう。

手順2:「VirtualBox」の設定を編集する

続いて「VirtualBox」の設定です。
対象boxを右クリックし、設定を選択しましょう。

設定画面が出てきたら、[ネットワークをクリック]>[アダプター2]をクリックしてましょう。
参考までに下記画像をご参照ください。

手順3:「Vagrant」をアップする

それでは、再び「Vagrant」をアップしてログインをしましょう。

ログイン後はまず「sudo su」をし、「root」のパスワードを設定します。

	$:sudo su
	$:sudo passwd

「root」パスワードの設定が終わったら、以下を実行してみます。

 $:ip addr show

すると、こんなメッセージが表示されると思います。

上記のようなメッセージが表示されたら、Pingで書いてみましょう。
仮想サーバには以下のコマンドを実行し、Pingが通っているのかのを確認します。

$:ping 8.8.8.8

続いてMacのターミナルから以下コマンドを実行し、Ping通っているかを確認します。

$:ping 192.168.33.10(先のIPアドレス)

Pingが通ってたら、以下を入力してログインしましょう。

$:ssh root@192.168.33.10

これでログインできたらOK。
ローカルの『Ansible』を使えば、仮想サーバの構築ができるようになります。

今回の本丸『Ansible』をインストールする

それでは『Ansible』のインストールを行いましょう。
前記のとおり、今回はローカル環境にインストールします。

別のターミナルを開いて(command + t)、下記コードを入力して実行します。

$:sudo pip install ansible

はい、これで『Ansible』がインストールされますね。
実際にバージョンをチェックしてみると……

こんな感じですね。
なお、『Ansible』インストールのコマンドは他にもありますので、自分に合ったコマンドで試してみてくださいね。

『Ansible』のテストを実行準備

それではインストールしたばかりの『Ansible』をテストしてみましょう。

まずはターミナルで下記のようなコードを書きます。

$: ansible 192.168.33.10(IP アドレス) -m ping -u root --ask-pass

ちなみにまだユーザ登録をしていないため、現段階ではrootユーザで行うことになります。

するとrootのパスワードを聞かれることになるでしょう。
ここで間違いのないようパスワード入れて [Enter] をクリックすると、問題がなければこんな結果が帰ってきます。

“ping” と “pong” の結果がちゃんと帰ってくることが確認できたら、次からは『Ansible』を使って「Playbook」で構築して行くことになります。

「Playbook」を書いてみる

まずはカンタンな「Playbook」を書いてみましょう。

最初はhostsを設定します。
私の場合は、ローカル環境のドキュメントフォルダ内に「ansible folder」というのを作ってみました。

手順1:「vim host」コマンド

まずは「vim host」コマンドで以下を書いて保存します。

[db]
192.168.33.10(ip アドレス)

手順2:「vim playbook_test.yml」コマンド

先ほど同様、「vim playbook_test.yml」コマンドで書いて保存。

- hosts: all
  tasks:
   - debug:
      msg: Test of Ansible Playbook!

手順3:『Ansible』を実行!

それでは『Ansible』を実行してみましょう。

	$:ansible-playbook playbook_test.yml -u root --ask-pass

ご覧のような結果が得られました。

構築開始!!

テストで実施した「Playbook」が動いたことも確認できましたので、本題の構築に取り掛かります。

なお、構築内容は以下のような手順になります。

  1. 「Apache」をインストール
  2. ユーザを作成

しかし、今回は上記「1」と「2」をまとめて一つの「Playbook」で実行してみたいと思います。

では「Playbook」を作ります。

$:vim playbook_apache_user.yml
- hosts: all
  become: yes
  tasks:
     - name: Step0_install apache
       yum: name=httpd state=latest
     - name: Step1_Add User
       user: name={{item.name}} group={{item.group}} createhome={{item.createhome}} shell={{item.shell}}
        with_items:
         - { name: 'may', group: 'root', createhome: 'yes', shell: '/bin/bash' }
     - name: Step2_change_permission_owner
       file: path={{item.path}} owner={{item.owner}} recurse={{item.recurse}} state={{item.state}}
        with_items:
          - { path: '/home/may', owner: 'root', recurse: 'yes', state: 'directory' }
     - name: Step3_create_.ssh directory
        file: path={{item.path}} owner={{item.owner}} group={{item.group}} mode={{item.mode}} state={{item.state}}
         with_items:
          - { path: '/home/may/.ssh', owner: 'root', group: 'root', mode: '0700', state: 'directory' }
     - name: Step4_upload_public keys
        copy: src={{item.src}} dest={{item.dest}} owner={{item.owner}} group={{item.group}} mode={{item.mode}}
         with_items:
          - { src: '~/.ssh/may.pub', dest: '/home/may/.ssh/authorized_keys', owner: 'root', group: 'root', mode: '0600' }

ちなみに上記の「Playbook」の中身の構成はご覧のようになっています。

  • 「Step0」…… httpdをインストール
  • 「Step1」…… ユーザを作成
  • 「Step2」…… ユーザの権限の作成
  • 「Step3」…… sshファイルを作成
  • 「Step4」…… 公開鍵をコピー

実行方法は以下のとおりです。

$:ansible-playbook playbook_apache_user.yml -u root --ask-pass

この「Playbook」を実行したことにより、「Apache」もインストールされますし、ユーザ作成を完了しています。
作成したユーザは、以下コマンドでサーバに入れるようになります。

$:ssh may@192.168.33.10

サーバ構築を自分でやってみて

今回の経験により、hostsに構築したいIPアドレスを書いておくだけで、複数台のサーバ構築ができることが分かりました。

まだ「Playbook」の書き方に慣れていない部分がありますが、実際に『Ansible』を試してみると一台ずつの構築よりも圧倒的に手間がかからないことを体感しました。
慣れさえすれば、時間の短縮も期待できるのではないでしょうか。

今回の記事を読んだだけでは難しそうに感じるかもしれませんが実際はそうでもなく、慣れると結構メリットが多いということに気づきます。
社内のインフラ担当に頼らずとも自分で構築を行うことができるスキルを持つのは、自分のストロングポイントにもなってくるかもしれませんね。

ソフトバンク・au・ドコモの方は、公式のオンラインショップを利用すれば頭金不要で通常のショップよりお得に購入できます。

【週刊bitWave】(メルマガ)始めました!

登録はこちらからメールアドレスを入力してお申込みください。

ご登録いただいたメールアドレスは 【週刊bitWave】の更新情報の配信にのみ使用します。

個人情報の取扱いに関しては、「プライバシーポリシー」をご確認ください。解除はいつでもこちらから行うことが可能です。

あなたにおすすめ