親バカエンジニアのナレッジ帳

webのエンジニアをやっており、日頃の開発で詰まったことや書き残しておきたいことを載せています。

VagrantでAnsibleを使う(provision版)


vagrant provisionでPlaybookを実行

AnsibleはサーバにSSH接続をして記述されたPlaybookの通りに実行されますが、Vagrantで実行する場合は必ずしもSSH接続は必要ありません。
「vagrant provision」コマンドでもPlaybookを実行できるのです。

※ちなみに今回はVagrantの設定方法については省略します。すでに設定済みである想定で進めます。

まずはVagrantfileに以下を記述します。

config.vm.provision "ansible" do |ansible|
  ansible.playbook = "provision.yml"
  ansible.inventory_path = "hosts"
  ansible.limit = 'all'
end

いわゆるprovisionコマンド実行時の動作を指定しているのですが、
指定したhosts(inventory_path)に対して、
playbook(provision.yml)の内容が実行されます。

hostsは以下になります。

[vagrant]
192.168.33.10

「[vagrant]」は任意の値で大丈夫です(ただしplaybookでこの値を使います)。



provision.ymlの記述

provision.ymlは以下になります。

---
- hosts: vagrant
  sudo: true
  user: vagrant
  tasks:
    - name: install packages zsh
      yum: name=zsh update_cache=yes

hostsは先ほどhostsファイルの方に設定した値です。
これはyumでzshのインストールを実行するという記述です。



いざ実行!

いざprovisionをしてみましょう。

vagrant provision
==> default: Running provisioner: ansible...
    default: Running ansible-playbook...
[DEPRECATION WARNING]: Instead of sudo/sudo_user, use become/become_user and
make sure become_method is 'sudo' (default).
This feature will be removed in a
future release. Deprecation warnings can be disabled by setting
deprecation_warnings=False in ansible.cfg.
 
PLAY [vagrants] ****************************************************************
 
TASK [setup] *******************************************************************
ok: [192.168.33.10]
 
TASK [install packages zsh] ****************************************************
changed: [192.168.33.10]
 
PLAY RECAP *********************************************************************
192.168.33.10              : ok=2    changed=1    unreachable=0    failed=0

なにやら警告は出ていますが、とりあえずinstallは完成です。
VagrantでしかAnsibleを使わない場合はこれで簡単に実行できます。


Fire TV Stick

Fire TV Stick

新登場  Fire TV Stick 4K - Alexa対応音声認識リモコン付属

新登場 Fire TV Stick 4K - Alexa対応音声認識リモコン付属

Fire HD 10 タブレット (10インチHDディスプレイ) 64GB

Fire HD 10 タブレット (10インチHDディスプレイ) 64GB