*

構成管理ツール「Ansible」のインストールと使用方法

公開日: 最終更新日:2015/04/15  |  By  |  Ansible, Deployment, OSS

ビットアイル総合研究所の田波です。

今回は構成管理ツール「Ansible」のインストール方法と簡単な使用方法をご紹介させて頂きます。
検証環境は全てCentOS7のサーバを使用しております。

Ansibleとは

Ansibleとはクラウドプロビジョニングや構成管理、アプリケーション配置等を自動化することのできる、非常にシンプルなツールです。
Ansible公式サイト(http://www.ansible.com/home

他にもデプロイメントツールは多々ありますが、Ansibleの特徴は非常にシンプルなところです。
クライアントソフトが不要で、AnsibleサーバからSSHが可能なホストに対して動作させることができます。
また、設定ファイルも非常に簡単な言語を使用しています。(Ansible PlaybookはYAML形式で記載します。)

今回はAnsibleサーバのインストールから簡単なPlaybookの書き方までを、例を用いながら紹介していきたいと思います。

Ansibleのインストール

まずはAnsibleをインストールしてみましょう。
今回はCentOS7を使用しており、管理対象となるサーバも全てCentOS7で実施しております。

インストールといっても非常に簡単です。
yumコマンドを使用してパッケージをインストールするだけで完了です。
現在yumコマンドでインストールされるAnsibleのバージョンは「1.8.2」となっております。

sudo yum install ansible

あとは準備として、Ansibleをインストールしたサーバから管理対象のサーバに対して、SSH接続ができるようにしておいてください。

Ansibleの使用

ホストリストの作成

まずは管理対象となるホストのリストを作成します。

適当な作業フォルダに下記のような内容のファイルを作成します。
※今回は「/home/user1/hosts」として作成しました。

[group1]
192.168.1.100
192.168.1.101

[group2]
web001
web002

[all:vars]
ansible_sudo_pass=”パスワード”

上2つの”[]“内はグループ名です。
各グループによって実行するコマンド・動作を変更することができます。
グループ内には管理対象ホストのIPアドレスを記入します。
名前解決が可能な名称でも問題ありません。
※上の例ではweb00xは名前解決可能である前提で記載しています。

ansible_sudo_passはsudoパスワードを記入してください。

尚、SSHユーザは一律のユーザ名/パスワードを使用できるようにしておいてください。
※ansibleを使用してユーザを作成することも可能ですが、その場合でも初期ユーザ(rootユーザ等)を一律で事前に設定する必要があります。

リモートコマンドの実行

それでは早速ですが、前項で作成したホストリストに対して、一律にリモートコマンドを実行してみます。
全ホストで「/tmp/test.txt」というファイルを作成してみます。

ansible group1 -i /home/user1/hosts -m command -a "touch /tmp/test.txt"

上記コマンドを入力するとパスワードの入力を求められるので、パスワードを入力して下さい。
尚、ユーザは現在のユーザ(ansibleサーバにログインしているユーザ)が使用されます。
オプション「-u」でユーザ指定も可能です。

各項目の意味は下記となります。

  • group1 = ホスト一覧ファイルにて指定したグループ名です。
  • -i /home/user1/hosts = ホスト一覧ファイルを指定します。
  • -m command = モジュールを指定します。今回はshellコマンドの実行の為「command」を指定しています。
  • -a “touch /tmp/test.txt” = モジュールへの引数を指定します。今回はcommandモジュールのため、実行するコマンドを入力します。

上で出てきたモジュール250個以上あるので、よく使うものだけ覚えておくといいかもしれません。
モジュール一覧はこちらです。

playbookの作成

リモートコマンドの実行方法をご紹介いたしましたが、1コマンド・1アクションに対してansibleコマンドを一つずつ打っていたのでは、手間がかかってしようがありません。
今度はPlaybookと呼ばれる設定ファイルを作成して、一度コマンドを叩くことで複数の動作をするようにしてみたいと思います。

まずは先程と同じく空ファイルを作成するPlaybookを作成します。
今回は「/home/user1/playbook-test.yaml」として作成しました。

- hosts: group1
  remote_user: root
  sudo: yes
  gather_facts: no
  tasks:
  - name: make file
    command: touch /tmp/test.txt

基本的な項目は先程のコマンドと同様となっています。
Playbookを書くにあたり増えた項目としては「tasks」と「gather_facts」があります。

「gather_facts」はansibleを使用する際に、対象ホスト内の情報(ホスト名、IPアドレス等)を収集し、使用するための設定項目です。
今回はそれらの情報を使用しない為、「no」としました。
「name」に関してはただの名称なので、わかりやすい名前をつけましょう。
※必須項目ではありません。

「tasks」は実行する処理を定義しています。
「tasks」の配下に-(ハイフン)区切りで処理を追加していきます。
複数の処理を実行する場合は下記のようになります。
※2つ目の処理は「name」を省略しています。

  tasks:
  - name: make file
    command: touch /tmp/test.txt

  - command: touch /tmp/test-2.txt

Playbookを使用してデプロイメントする場合は、下記のようにコマンドを実行します。
こちらもパスワードの入力が求められます。

# ansible-playbook -i /home/user1/hosts /home/user1/playbook-test.yaml
SSH password:

PLAY [group1] ********************************************************

TASK: [make file] *************************************************************
changed: [192.168.1.100]
changed: [192.168.1.101]

PLAY RECAP ********************************************************************
192.168.1.100                 : ok=1    changed=1    unreachable=0    failed=0
192.168.1.101                 : ok=1    changed=1    unreachable=0    failed=0

#

実行結果「PLAY RECAP」に「unreachable」や「failed」がなければ問題なく実行できています。
結果は先程のファイル作成とどうように「/tmp/test.txt」が作成されています。

以上がAnsibleのインストール方法と、基本的な使用方法となります。
次回以降にAnsibleを使用して管理している、具体的な例を紹介させて頂きたいと思います。

関連記事

image_000001

Ceph ~ブロックアクセス可能な分散ストレージ

by kumagai(@kumagai19o) 2014/3/12 ご無沙汰しています。ビッ

記事を読む

welcome

OpenStack Summit in Paris (Day1)

by Ikuo Kumagai (@kumagai19o)   こんに

記事を読む

検証構成

RDOを使用したOpenStack Juno環境の構築

ビットアイル総合研究所 田波です。 今回はRDOを使用してOpenStack Juno環境を構築し

記事を読む

oss_on_slshowcase

CentOS 6 から7へのアップグレード

この記事は OSS on SoftLayer Showcase  の OpenStack Juno

記事を読む

top

OpenStack API でSoftLayerを操作する “Jumpgate”

by Ikuo Kumagai (@kumagai19o) この記事はAdvent Calen

記事を読む

01.all

CentOS7 RDO Juno with Ceph

ご無沙汰しています。 先日のブログではCentOS7/RDOで OpenStack Juno環境を

記事を読む

day2_3

OpenStack Upstream Training in Paris 参加報告

by Ikuo Kumagai (@kumagai19o) Bonjuor. またご無沙汰して

記事を読む

ODT2015logo

OpenStack Days Tokyo 2015

来る2月3日,4日にはOpenStack Days Tokyo 2015が開催されます。 日本国内

記事を読む

obj_pool_osd

Ceph アーキテクチャ 解説 (Ceph Clientによるデータの分割)

by kumagai(@kumagai19o) 2014/6/24 毎度ご無沙汰しています。ビ

記事を読む

howtocontribute

OpenStackコントリビューターへの道(OpenStack Advent Calendar 2014 12/12)

by Ikuo Kumagai (@kumagai19o) この記事はOpenStack Ad

記事を読む

no image

ビットアイル総合研究所は、クラウド技術に関する調査&研究を通して、社会と会社に寄与していくことを目的に、ビットアイル・エクイニクスの企業内研究所として2011年8月に設立されました。

openstack-figure1-2x
COHO DataStream のCinder連携

OpenStack Cinder のストレージバックエンドとしてはCe

blog-ocata
Jujuで Ocataを含む様々なバージョンのOpenStack をデプロイする方法

祝OpenStack Ocata リリース!! ということで、早速デプ

newton
Juju Manual Cloud で OpenStack 環境構築

本当にご無沙汰しております。 この投稿はOpenStack Adve

top
HACK! THE Juju/MAAS

6/8~6/10まで幕張メッセで開催されたInterop 2016。皆

dpdk
OpenStack OVS VXLAN ネットワークの高速化

少し前の話になりますが、3月2日に開催された 日本仮想化技術株式会社様

→もっと見る

PAGE TOP ↑