Ansibleを使ってみる

AnsibleはChefやPuppetと同じく構成管理ツールですが、管理対象のサーバーにエージェントアプリケーションをインストールしなくていい点や、YAMLを利用したシンプルな設定ファイルに特徴があり、最近人気を集めています。ここでは、CentOS7に対するAnsibleのインストール方法と基本的な使い方をお伝えしたいと思います。

Ansibleのインストール

CentOS7にAnsibleをインストールするのに一番簡単な方法はyumを利用することです。

EPELリポジトリの追加

AnsibleはCentOS7の標準リポジトリには含まれていないため、まずyumでEPELリポジトリを利用できるようにします。そのための設定もyumでインストールすることができます。

$ sudo yum install epel-release

yumを利用してAnsibleをインストール

EPELのリポジトリからAnsibleをインストールします。特にリポジトリ名の指定は必要ありません。

$ sudo yum install ansible

 

YAMLで改行

Ansibleを利用してビルドスクリプトを書いている際に、長くなったコマンドをどう改行するか小一時間悩みました。AnsibleのPlaybookはYAML形式を採用しており、YAMLでスペース区切りの文字列を複数行に渡って書くには「>」を利用するようです。

- command: command option1 option2 option3

と一行で書いていたものは、「>」を利用して以下のよう表現できます。

- command: >
    command
    option1
    option2
    option3

ちなみに、「>」の代わりに「|」を利用すると、各行がスペースではなく改行コードで連結されるようです。

AnsibleのCopyモジュールでワイルドカードを使用する

AnsibleのCopyモジュールでは、srcにワイルドカード(*)を使用することはできません。アスタリスクという文字として解釈されてしまいます。

ファイル名が未確定の場合や、条件に一致した複数のファイルをコピーしたい場合は、with_fileglobを利用します。

- name: Copy files whose name start with a
  copy: src={{ item }} dest=/path/to/dest_dir
  with_fileglob:
    - "/path/to/src_dir/a*"

with_fileglobに指定したパスに該当するファイルが、イテレーティブに{{ item }}変数に代入されコピーが行われます。

Top