読者です 読者をやめる 読者になる 読者になる

Bonkura - Kenny

SIerで働く文系SEの記録

【Aisible】Ansibleの基礎知識と、初めてAnsibleを使いはじめるまで

Ansibleをオフでも仕事でも使ってみたいな―と思ったので、調べた基礎知識とまとめました。また、初めて(本当に基礎の基礎の所まで)Ansibleを使ってみるまでの道のりについても、ざっと書いておきます。

Ansibleとは?

Ansible = 構成管理ツール

構成管理ツールとは、安全・効率的にシステム構成を管理、維持する為のツールのこと。Ansibleで出来る事を簡潔に説明すると、 サーバ上での作業をコード化し、自動実行させる(サーバ構築の自動化を実現する)事が出来る
わかりやすく言い換えると、 「Better Shell Script」

導入のメリット

  • 作業ミスが減る
  • 作業効率の向上
  • サーバ内のシステム環境が視覚化される(Playbookと呼ばれるyaml形式の設定ファイルに)

Ansibleの特徴

  • Playbook(サーバ上での作業をコード化しまとめたもの)がYAML形式で書くのでわかりやすい
  • 対象サーバにエージェントを導入する必要がなく、sshでの接続が出来ればOK。
  • べき等性(ある操作を一回行っても複数回行っても結果が同じ)が保証されている。

Ansible用語

  • module:操作対象に実行させる作業内容。
  • playbook:moduleをまとめたもの。
  • role:Playbookの一部を利用して再構築する。ノウハウを蓄積していき、「Playbookを作るにはroleを組み替えるだけでOK!」というのが理想。
  • Inventory:操作対象ノードを指定するもの。

初めてAnsibleを使うまで。

とりあえず最初なので、極限までシンプルに、Ansibleを使ってみます。(使った、と言っていいのか憚られるレベルですが。。)

環境

今回は、Ansibleをインストールしたサーバをクライアントに見立てる。 リモートホストに対して実行する場合は、sshでの接続設定を事前に行う必要がある。

$ cat /etc/redhat-release
CentOS release 6.7 (Final)
$ python --version
Python 2.6.6

インストール

# EPELリポジトリを追加する必要がある。
$ sudo yum localinstall http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
$ sudo yum install ansible

管理対象ノードの指定

/etc/ansible/hostsに、管理対象ノードのIPを指定する。[hoge]の下に対象ノードの情報を記載する。
※今回はローカルホストへの実行なので、特には不要。

sudo vim /etc/ansible/hosts

[test-server]
192.168.1.**

pingを打ってみる。

$ ansible test-server -c local -m ping
192.168.1.21 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

pingを打ってみる@Playbook

上記のように、ansibleコマンドを使う事で、sshコマンドでリモートホストに発行するようなコマンドを実行できる。ただ、色々な作業を実行させる場合はワンライナーだと限界があるので、より複雑な事をさせる為に、Playbookを作成し、 ansible-playbook コマンドで実行する。

# vim local_ping.yml
---
- hosts: 127.0.0.1
  tasks:
    - ping

ansible-playbookコマンドを用いて、ローカルホストに対してpingコマンドを実行。

ansible-playbook local_ping.yml

PLAY ***************************************************************************

TASK [setup] *******************************************************************
ok: [127.0.0.1]

TASK [ping] ********************************************************************
ok: [127.0.0.1]

PLAY RECAP *********************************************************************
127.0.0.1                  : ok=2    changed=0    unreachable=0    failed=0

成功!とりあえずは今日はここまで。今後継続的に勉強していきます。