Ansibleとは 1221更新
Ansibleはシステムのオペレーションの自動化を支える、Python製の構成管理自動化ツール。Ansibleを利用することによって、スクリプトや手動で行なっていた運用オペレーションを自動化し、開発プロセスを効率化することができます。
Ansible以前にも管理ツールは多くあったが、導入コストの高さなどが原因で、導入まで行かなかかったケースが多かったが、現在は大手金融機関や製造業の現場でも採用しているケースも多く、認知度も上がっています。
Ansibleの特徴
・主に下記が挙げられますが、後で後述します。
・設定ファイルの可読性の高さ(Simple)
・エージェントレスの構成(Agentless)
・マルチレイヤの対応(Powerful)
Ansibleの環境
Ansibleの管理対象サーバーに、エージェントツールは不要です。必要なのは、Python2.4以降がインストールされていることだけです。最近の主要なLinuxディストリビューションであれば、Pythonは大体インストールされていますので、追加でインストールする必要もありません。
また、Ansibleモジュールによる拡張性の高さAnsibleには、管理対象サーバーやサービスごとに実に様々なモジュールが用意されています。サービスの起動・停止を行うモジュールから、iptablesのファイアウォールを設定するモジュール、AWSやAzure、OpenStackなどのクラウドインフラを制御するAnsibleモジュールも存在します。
参考書 平 初,平原一帆,小野寺大地,安久隼人,坂本諒太,冨永 善視. Ansible徹底活用ガイド (ThinkIT Books) (Japanese Edition)
Ansibleのユースケース
・Ansibleではアプリケーションのデプロイメントやミドルウェアのクラスタ構成を一つのファイルとして取り扱い、複雑な依存関係や複数のサーバー間の連携を可能にします
・Hadoopクラスタの構築
・PHP実行環境とWordpressのデプロイメント
・Jenkinsを用いたCI環境の構築
・ブーストラッピングレイヤーにおけるAnsibleの活用事例
・AWSのAPIを利用したEC2インスタンスの立ち上げ
・Dockerを利用したコンテナの管理
・Vagrantを利用した仮装マシンの立ち上げ
このように、Ansibleが包括的にマルチベンダーのAPIを 取り扱うことができる
Ansibleに取り組むべき理由とメリット
PuppetやChef、そしてAnsibleなどの構成管理ツールを使うべき理由としては、
以下のようなものが挙げられます。
①手動オペレーションによるタイムロスの削減
②メンテナンス時におけるオペレーションミスの発生可能性の低減
③運用後における手順の変更が、作業手順書に反映されていないことによる作業漏れの撲滅
平 初,平原一帆,小野寺大地,安久隼人,坂本諒太,冨永 善視. Ansible徹底活用ガイド (ThinkIT Books) (Japanese Edition) (Kindle の位置No.160-165). Kindle 版.
Ansibleのインストール
公式:Git hub
https://github.com/ansible/ansible
##yum(rpm)を利用したインストール CentOS環境下など
$ sudo yum install -y epel-release
$ sudo yum install -y sshpass
$ sudo yum install -y ansible
$ ansible --version
##apt(deb)を利用したインストール Ubuntu16.04LTS環境下など
$ sudo apt-get -y install software-properities-common
$ sudo apt-add-repository -y ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get -y install ansible
$ ansible --version
virtualenvやpipを用いたAnsibleのインストール、Virtualenvの仕組み。
virtualenvとは、同一のPythonのバージョンで異なる仮想環境を管理し、用途に応じ、Pythonを切り替えるためのツール。
$ virtualenv 【環境名】 #Pyhton環境の作成
$ source 【環境名】/bin/activate #virtualenvの有効化
$ (環境名)$ python -c "help('modules')" #仮想環境
$ (環境名)$ deactivate
pipを利用したAnsibleのインストール
$ curl -kL "https://boostrap.pypa.io/get-pip.py" |sudo python
$ sudo pip install virtualenv
$ cd $HOME/
$ virtualenv venv
$ souce $HOME/venv/bin/activate
(venv)$ pip install ansible
(venv)$ ansible --version
*Ansibleのインストールを行ったあとはvirtualenvを有効化してから利用する
##ansibleコマンド、「プレイブック」やイベントリの活用法について。
Ansibleを利用して自動化を図るためには、イベントリとプレイブックの定義が基本となっている。特に大規模環境では、グループを使い分けてターゲットのノードを分類します。
プレイブックは、タスクを定義するYAMLファイルです。
*プレイブックの応用について。1つのプレイブックで多くのタスクを定義すると、
プレイブックの管理が煩雑になるために、それを定義しているのがロール(Role)です
ロールはプレイブックを分割するコンポーネントであり、TaskやVarsセクションを別の
ファイルに分けて管理する仕組みとなっています。
CI ツールとの連携
継続的インテグレーションは、アプリケーションレイヤーで実装されていた手法ですが、インフラリソースのクラウド化やAPI化によって、インフラ側でも活用されるようになった。
中でも「Jenkins」は幅広いスクリプトジョブの実行やトリガーが多く登録できるため多くの
環境で利用されている。またCIツールがジョブを実行するには、イベントジョブと定期ジョブの2つがあり、定期ジョブではcronなどが時刻取得に活用されている。