こんにちはますのです。
今更ながら触る機会が無かったAnsibleを体験してみようと思い至り、書籍を購入しておりました。
購入理由はもちろん「ひよこ大佐」さんというネームバリューでございます。
※Twitter転職で有名になったと知ったのはつい先ほどという。
筆者の事前知識など
- Ansible:聞いたことだけはある!
- Vagrant:初めて聞いた!何に使うのでしょう…。
- Viratual Box:時折検証環境作るために使ってる!
こんな感じで、Infrastructure as Code(IaC)に携わったことも考えたことも無い状態です。
やることの概要
おおよそこの図のような流れで動いていた印象。
- PCに「Virtual Box」と「Vagrant」をインストール
- Vagrant初期設定&Virtual Box内に仮想サーバ作成
- 仮想サーバにAnsibleインストール
- AnsibleからWebサーバ、DBサーバを構築
VagrantのBox(CentOS7)を追加する
vagrant box add centos/7
今回はWindows端末なのでPowerShellで実行。仮想環境を選択する箇所では「3」のvirtualboxを選択。
Vagrant Boxの起動
CentOS7を構築する用意が整ったため、「Vagrantfile」でVirtualBoxの設定をする。
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.network "private_network", ip: "xxx.xxx.xxx.xxx"
config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
end
end
「Vagrantfile」という名称で保存し、保存したディレクトリに移動して「vagrant up」と実行すれば「Vagrantfile」で記載した構成のCentOS7が起動される。
作成した仮想サーバにAnsibleをインストールする
起動した仮想サーバにsshで接続する。
vagrant ssh
接続後に仮想サーバへAnsibleをインストールする。
# sudo yum install epel-release
# sudo yum install ansible
この部分は全然知識無かったので忘れそうなのであります。
ansible-playbookコマンドで各種サーバを構築・メンテする
Ansibleのプレイブックはymlモジュールの中に諸々記載する様子。
ymlのサンプルファイルはひよこ大佐さんのGithubにデータが公開されているのでそちらをダウンロード。
- yml:構成情報を記載
- hosts:対象となるサーバグループとホストのIPアドレスを記載
nginx_install.yml
---
- hosts: all
vars:
ansible_become: yes
ansible_become_method: sudo
tasks:
- name: Install Nginx
yum:
name: nginx
state: latest
hosts
[web]
192.168.100.20
192.168.100.21
[db]
192.168.100.30
192.168.100.31
この2つの構成ファイルを使って、仮想サーバから実行する。
$ ansible-playbook -i hosts install_nginx.yml
ymlに対象となるグループとして「hosts: web」と記載されているので、webのIPアドレスが対象になるようですね。対象をすべてにする場合「hosts: all」とすればいいそうな。
Ansibleを触った感想:コードで管理出来るのは良きこと
今回触ってみて、イマイチ運用にどう乗せるかという部分が見えてこなかったのです。
ですが、仮想環境の設定(Vagrant)とWebサーバのインストール&アップデート(Ansible)の部分で、1台ずつ見なくて良いのはすごく楽ちんでした。
毎回検証環境を作るとき、VirtualBoxの設定値をググって見てたので、それだけでも時短になった気がします。
今回記事にはしてませんが、DBインストールの場合は色々設定値があって難しいところがあり、慣れが必要ですが複数台構築して運用でのメンテを考えると楽になりますね。
AWS環境でのやり方も「構築・運用ガイドブック」に記載されていたので、AWSで本運用する場合等についてもう少し追ってみたいなと思います。