文鳥大好きエンジニアのガラクタ置き場

文鳥さんに日々癒されているエンジニアが業務で直面したものについてまとめていく…予定。

Ansible 入門

今回は Ansible に触ってみようと思います。

www.ansible.com

Ansible ってなに?

Ansible は構成管理ツールと呼ばれるもので、Chef や Puppet などと並ぶツールの1つです。 slideshare などで素晴らしい資料がたくさん公開されているのでそちらを見ていただくと理解が捗ると思います。

環境構築

手軽に始めたかったので以下のように Ansible をインストールしました。 (バージョンが古いので新しいバージョンで遊びたい場合は pip などでインストールすると良いかと。。)

$ yum install epel-release
$ yum install ansible
$ ansible --version
ansible 1.9.4
  configured module search path = None

とりあえず使ってみる

今回はホームディレクトリに tmp/ ディレクトリを作成し、その中に /etc/hosts をコピーしてみようと思います。

ホストを記述したファイルを作成

以下のように操作対象となるサーバを記述した .ini ファイルを作成します。

$ cat host.ini
# dev っていうホストのグループを作成していると思って大丈夫です
[dev]
ponteru.dev001

行いたい操作を記述したファイルを作成

Ansible では yaml で記述されたファイルを使用してサーバの操作を行います。 今回は hogehoge というディレクトリを作成して /etc/hosts をコピーする操作を記述した .yaml ファイルを作成しました。

$ cat test_playbook.yaml
---
- hosts: dev
  tasks:
    - name: create directory
      file:
          path: /home/ponteru/hogehoge
          state: directory
          owner: ponteru
          mode: 0755
 
    - name: copy file
      copy:
          src: /etc/hosts
          dest: /home/ponteru/hogehoge/hosts
          owner: ponteru
          mode: 0644

実行してみる

作成した ini ファイル と yaml ファイルを使用して Ansible を実行してみます。 こんな感じ。

$ ansible-playbook -i host.ini test_playbook.yaml

実行すると以下のように表示されると思います。

PLAY [dev] ********************************************************************
 
GATHERING FACTS ***************************************************************
ok: [ponteru.dev001]
 
TASK: [create directory] ******************************************************
changed: [ponteru.dev001]
 
TASK: [copy file] *************************************************************
changed: [ponteru.dev001]
 
PLAY RECAP ********************************************************************
ponteru.dev001 : ok=3    changed=2    unreachable=0    failed=0

あとは 実際に SSH をしてみて確認してみましょう。

$ ssh ponteru.dev001
$ ls -l hogehoge/hosts
-rw-r--r-- 1 ponteru users 152  7月 10 20:52 2017 hogehoge/hosts

できてますね!

まとめ

今回は Ansible でディレクトリの作成とファイルのコピーを行なってみました。 Ansible を使えば今回紹介した動作だけではなく yum install など、いろいろ行うことができるのでぜひ触ってみてくださいね! (Ansible については、またお話できたらなあと思っております。。)