LoginSignup
5
7

More than 5 years have passed since last update.

Ansibleを用いた構成管理入門

Last updated at Posted at 2018-04-08

Ansibleという存在はうっすら頭の片隅に常にいたわけではあるが、何しろ私は面倒なことが嫌いなので、DevOpsなんてことは気にせず、自分でサーバーにssh接続してメンテやらなんやらをこなしてきたわけだ。

しかし、このAnsibleという奴がすっごい便利だということにふと気づかされることになった。

したがって、今までの己の馬鹿さを改めるために今回Ansibleというやつをちゃんと勉強してみようと思ったのである。

目標

Ansibleを使ってnginxを仮想環境にインストールされた状態を作る

Ansible基本

Ansibleは構成管理ツールの一環で、いわゆる所のShefやPuppetのようなものである。後発のツールであるが、(2012年誕生)人気は高く、エージェントをサーバーに入れる必要性がないため管理が楽であることがなどが挙げられる。Ansibleは主にPlaybook, Ansible本体, Inventoryファイル,Moduleから構成されている。

Ansibleインストール

今回はVM+Vagrant+Ansibleの構成で触ってみたいと思う。(VM,Vagrantはすでにインストールされている前提で話を進めて行きたい。)

開発環境はMACなのでhomebrewを用いてAnsibleをインストールして行きたいと思う。

Ansibleのインストール
brew install ansible

上記コマンドでAnsibleをインストール完了できたら、

適当なパスに移動して今回のチュートリアル用の仮想空間を作る

仮想環境のインストール
mkdir ansible/test
cd ansible/test
vagrant init bento/centos-7.2
vagrant up

エラーが出る。。。ぐぬぬ。

vboxsfエラー
Vagrant was unable to mount VirtualBox shared folders. 
This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:

mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant

The error output from the command was:

/sbin/mount.vboxsf: mounting failed with the error: No such device
vagrant-vbguestをインストール
vagrant plugin install vagrant-vbguest

vagrant ssh-configで表示される中身は後々必要になるのでメモしておきましょう。
好好

Inventoryファイルの作成

InventoryファイルはAnsibleが捜査対象に接続するための定義のこと。
どうやらInventoryファイルはいろいろなことができるらしいが今回は初心者向けということで簡易的な物を組むことにする。

hostsという名前のファイルを作成する(Inventoryファイル)

hosts
vagrant-machine ansible_host=127.0.0.1 ansible_port=2202 ansible_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/default/virtualbox/private_key

ansible_*** で記載されている情報は全てvagrant ssh-configによって参照される値を入れればよい

Inventoryファイルを作成したらまずはテストをしてみよう

ansibleテスト
ansible all -i hosts -m ping

iオプションは Inventoryファイルへのパスを指定することができる。
allはInventoryファイル場で定義されている全てのホストに対して当てはまるグループ名である。pingはPingモジュールである。

基本の部分であとマスターする必要があることはtaskの実行内容を記載したymlファイルを作成すること

今回はsite.ymlという名前のものを作成しておきたいと思う。

site.yml

---

- name: チュートリアル
  hosts: all
  tasks:

中身の説明をしていこう。。

  • nameはログに表示される名前。
  • hostsはデプロイ対象ホスト名。allによって Inventoryに定義されているすべてのホストに対して実行する.
  • tasksは実タスクの定義。今はからになっている。
site.ymlの実行方法

ansible-playbook -i hosts site.yml
site.yml最終系

- name: Playbookチュートリアル
  hosts: all
  become: true
  tasks:
    - name: libselinux-pythonをインストール
      yum:
        name: libselinux-python
        state: present
    - name: EPELリポジトリをインストール
      yum:
        name: epel-release
        state: present
    - name: Nginxのインスト〜る
      yum:
        name: nginx
        state: present
    - name: Nginxサービスの自動起動を設定
      service:
        name: nginx
        state: started
        enabled: true

これを入力して最後に http://192.168.33.10/
を入力すると無事nginxのページが表示されました!

Ansibleなかなか使い勝手良さそう〜
次回編ではもっと高度なものに挑戦して行きます!

5
7
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
5
7