本連載では、「マニュアルやシェルスクリプトを使ったサーバ管理に課題を持つ方」を対象に、Ansibleの基本的な使い方を紹介。初回は構成管理ツールとAnsibleの概要、Ansible 2.0の環境構築方法を解説します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
近年Webアプリが増え、サーバの環境構築を行ったり、アプリのデプロイを行ったりする機会が増えてきました。しかし、いまだにこのようなサーバ作業をマニュアル頼りに手作業で行っていることもあるかと思います。環境構築やデプロイなどを何度も行う場合は自動化したいところです。
サーバ作業を自動化しようと考えたとき、最初に思い浮かぶのはシェルスクリプトを利用することではないでしょうか。シェルスクリプトを使って環境構築やリリースを自動化することは可能ですが、シェルスクリプトだけだと手間が掛かってしまう作業もあります。
例えば、リリースを行う環境が複数ある場合、scpでビルド成果物を送り、sshで接続してリリース用スクリプトを実行する、といった作業が環境ごとに必要になってしまいます。
また、ファイルの追記や修正などを行うシェルスクリプトが途中で失敗してしまった場合、シェルスクリプトを修正した後にそのまま再実行してしまうと、ファイルへの追記が二重に反映されてしまうため、「ファイルを修正前の状態に手作業で戻さなければならない」といったことも起こり得ます(「シェルスクリプトが完璧にできていれば、そのようなことは起こらない」と思うかもしれませんが、作成時点では問題なくとも、「依存するライブラリのバージョンアップなどにより実行が失敗するようになる」といったことはあり得ます)。
このような問題を解決するには、構成管理ツールを使うと便利です。構成管理ツールは、処理を自動化するという観点ではなく、最終的にマシンを目的の状態にする、という観点で作成されたツールのことです。
例えば、「ユーザーを追加する」という目的を考えてみます。シェルスクリプトではそのまま「ユーザーを追加する」という操作を書くため、既にユーザーが存在する場合、何も考慮しないと再実行時に「既にユーザーが存在する」というエラーとなってしまいます。一方、構成管理ツールでは、「ユーザーが追加されている状態にする」という命令を使います。「既に目的の状態となっているかどうか(=ユーザーが存在するかどうか)」という判断は構成管理ツールが行ってくれるため、自前で判定処理を書く必要がありません。
上記の構成管理ツールの例のように、「同じ操作を何度やっても最終的な状態が同じになる」という性質を「冪等性(べきとうせい)」といいます。環境構築やデプロイでは、冪等性を意識して処理を自動化することが望ましく、構成管理ツールはその助けとなります。
今回は、その構成管理ツールの1つである、オープンソースソフトウェアの「Ansible」を紹介します。Ansibleは構成管理ツールの中でもシンプルさを特徴としており、「初めて構成管理を行ってみよう」という方に適しています。また、最近メジャーバーションが2に上がったばかりで勢いがあるプロダクトということも追い風になっています。
また、Ansibleで構成管理を行うマシンには、特別なクライアントソフトのインストールが不要です。そのため、業務の制約上、本番環境で任意のパッケージのインストールができないような場合でもAnsibleの利用が可能です。
本連載では、今までマニュアルやシェルスクリプトを使ってサーバ管理を行っていたけれども、もう少しうまいやり方をしてみたいという方を対象にAnsibleの基本的な使い方を紹介していきます。
Copyright © ITmedia, Inc. All Rights Reserved.