メニューを閉じる

テクノデジタルグループ

メニューを開く

2015.07.01

開発環境・ツール

Vagrant + Ansible(Mac)

こんにちは、KTです。

Vagrant + chef で、環境構築の自動化を進めていたんですが、時代はAnsibleという話を聞いたので乗り換えてみました。

ちなみに、今回はMacにて実施しています。

※Windowsでも以降で紹介するPlaybook等の情報はそのまま利用出来ると思います。

 

1. Vagrantとは

VirtualBoxを使った仮想環境を一元管理できる便利ツール。

仮想環境の構築から立ち上げ、コピーなどをコマンドで簡単に行える。

参照:Vagrantの紹介と使用方法

 

2. Ansibleとは

構成管理ツールの1つ。ChefとかPuppetとかの仲間。

ymlファイルで構成を管理できるので便利。

 

3. Vagrant with Ansible

まずは、Vagrantの利用環境を整えましょう。

$ vagrant box add {box_name} {box_file_name}  # BOXファイルを登録する
$ cd /path/to/vagrant_work_dir # Vagrantの仮想マシンを立ち上げるディレクトリに移動
$ vagrant init {box_name} # Vagrantfileの作成

これで、カレントディレクトリにVagrantファイルが生成されているかと思います。

次に、Vagrantファイルに、Ansibleを利用するための記述をしていきましょう。

Vagrant.configure(2) do |config|
    config.vm.box = "box_name"
    config.vm.network "private_network", ip: "192.168.33.10"
    # Ansible
    config.vm.provision :ansible do |ansible|
        ansible.playbook = "main.yml"
        ansible.limit = "all"
    end
end

2行目はboxファイルの設定、3行目はプライベートIP(ホストOSからアクセスするためのIP)です。

今回のメイン、Ansibleの設定は5行目以降です。

config.vm.provision:ansible を指定することで、Ansibleを利用して構築してくれるようになります。このdo ~ endの中に、Ansibleの設定を書いていきます。

Ansibleでは、構成を管理するファイルをPlaybookというため、7行目でPlaybookを指定しています。今回は Vagrantfile と同じディレクトリに main.yml というファイル名でPlaybookを配置します。

これで、VagrantからAnsibleを使用するための準備は完了です(早い!簡単!

 

4. AnsibleのPlaybook

次にAnsibleのPlaybookを書いていきましょう。「VagrantでAnsible使うぜ」ってなっても、Ansible側で何もしなければ意味ないですからね。

上述の通り、今回は Vagrantfile と同じディレクトリに main.yml というファイルを作ります。

まずはお試しで、yum で httpd をインストールしてみましょう。

- hosts: all
  user: vagrant
  tasks:
    - name: install
      sudo: true
      yum: name=httpd state=present

はい。これだけです。簡単ですね。説明も要らないほど簡単だと思いますが、さらっと説明していきましょう。

まず1行目は今回はおまじないです。Vagrantから利用するときはこれでOKです。他の用途で使うときにはhostsを考えたり、他にファイル作ったりが必要になります。

2行目はAnsibleでタスクを実行するときに使うユーザ名です。

3行目以降から、Ansibleで実行するタスクを記載していきます。

 

基本的には、

  tasks:
    - name: {タスク名}
      {タスクで実行する内容}
    - name: {タスク名}
      {タスクで実行する内容}

のように、タスクを並べて記載することで、上から順次実行していきます。

上の例では、yumを実行するタスクを書きましたが、他に

shell実行

    - name: install vim
      shell: ./configure {{ vim_configures }} && make && make install chdir=/usr/local/src/vim

git clone実行

    - name: git clone ag
      sudo: true
      git: repo=git://github.com/ggreer/the_silver_searcher.git dest=/usr/local/src/the_silver_searcher accept_hostkey=yes

ファイル変更

- name: set ll command
 lineinfile: dest=~/.bashrc line="alias ll='ls -sla'"

のような感じで、様々なコマンドが用意されています。

全部は紹介しきれないので、興味のある方は調べてみてください。

 

5. Vagrant起動

話を戻しましょう。main.yml が作成できたら、

vagrant up

を実行して、仮想マシンを起動しましょう。

通常の仮想マシンの起動後に、main.yml で指定したタスクが実行され、httpd がインストールされているかと思います。

あとは、自分の思い通りに、AnsibleのPlaybookを作成して、快適なVagrantの日々を過ごしてください。

 

次回はもう少しAnsibleのPlaybookの書き方に突っ込んでいきたいと思います。

でわでわ。


【記事への感想募集中!】

記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!
  • こんな記事が読んでみたい、こんなことが知りたい、調べてほしい!という意見も募集中!
  • いただいた感想は今後の記事に活かしたいと思います!

感想フォームはこちら


【テクノデジタルではエンジニア/デザイナーを積極採用中です!】

下記項目に1つでも当てはまる方は是非、詳細ページへ!
  • 自分でアプリを作ってみたい
  • ITで世の中にワクワクを生み出したい
  • 使いやすさ、デザインにこだわったWebサイトを開発したい

採用情報の詳細はこちら


Qangaroo(カンガルー)

  • 徹底した見やすさと優れた操作性で、テストの「見える化」を実現。
  • テストの進捗が見える。開発がスマートに進む。
  • クラウド型テスト管理ツール『Qangaroo(カンガルー)』

【テクノデジタルのインフラサービス】

当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。

https://www.tcdigital.jp/infrastructure/

最近の記事