Ansibleで始めるInfrastructure as Code(紹介&インストール編)
みなさんこんにちは
システムソリューション部
SREチーム所属の岡崎です。
運用している中で同じような作業、同じようなサーバを構築することは仕事上よくあると思います
その度に同じ作業をするのがすごく億劫になりますし、
他の作業をしたいのにそういった業務に手を回さなきゃいけなくなります。
そういった定型的な業務をなくすべく最近使用しているツール「Ansible」を紹介いたします。
Ansibleとは??
一般的にはデプロイ管理、インフラ周りの設定管理などの構成管理ツールとして知られています。
ほかの代表的な構成管理ツールとして Chef、Puppetがあります。
違いとしては以下の通りとなっております。
Chef
- 開発はChef社
- 実行するクライアントにもAgentのインストールが必要
- 構成定義ファイルの記述方式がRubyで学習コストが高い
- Ansibleより以前にリリースされており現在も頻繁にリリースされている
Puppet
- 開発はPuppet Labs社
- 実行するクライアントにAgentをインストールする使いかたとスタンドアロンでの使いかたができる
- 紹介する3つの中で最も古くにリリースされている
- 構成定義ファイルの記述方式がRubyで学習コストが高い
Ansible
- 開発はRedHat社
- 実行するクライアントにAgentのインストールは不要
- 3つの中で一番歴が浅い
- 構成定義ファイルの記述方式がyamlで学習コストが低い
違いは上記の通りですが、Ansibleに関してはクライアントに
Python2.4以上がインストールされており、SSHが接続できれば動作します。
Ansibleの特徴
そのほかの特徴としては下に挙げるような特徴があります。
-
冪等性
Ansibleもほかの構成管理ツールと同じく冪等性の担保を特徴としてあげられます。
これは一部のモジュールを用いて何度実行されても同じ状態に
収束することをユーザ側で操作することなくツール側にて保証するようになっています。 -
モジュール
Ansibleにおいて様々な機能やプラットフォームでの設定などを最小限の
パラメータにて制御・実行することができます。
それらを利用するにあたり定義されたモジュールという機能を利用する必要があります。
モジュール自体はサーバの細かな設定(yum、user、file)を行うもの
各プラットフォームの設定を行うもの(ec2、azure、gce)などが作成されており
各バージョンごとに対応の有無はあるが利用することができます。
Ansibleのインストール方法について
ではAnsibleのインストール方法を紹介いたします。
まずはPythonのバージョンを確認いたします。
# python --version Python 2.7.5
Pythonのバージョンが2.4以上ですので問題なくインストールができます。
epelリポジトリを指定するためインストールします
# yum install epel-release
それではAnsibleをインストールします。
# yum install --enablerepo=epel ansible Installed: ansible.noarch 0:2.6.3-1.el7 Dependency Installed: PyYAML.x86_64 0:3.10-11.el7 libtomcrypt.x86_64 0:1.17-26.el7 libtommath.x86_64 0:0.42.0-6.el7 libyaml.x86_64 0:0.1.4-11.el7_0 make.x86_64 1:3.82-23.el7 openssl.x86_64 1:1.0.2k-12.el7 python-babel.noarch 0:0.9.6-8.el7 python-cffi.x86_64 0:1.6.0-5.el7 python-enum34.noarch 0:1.0.4-1.el7 python-httplib2.noarch 0:0.9.2-1.el7 python-idna.noarch 0:2.4-1.el7 python-jinja2.noarch 0:2.7.2-2.el7 python-keyczar.noarch 0:0.71c-2.el7 python-markupsafe.x86_64 0:0.11-10.el7 python-paramiko.noarch 0:2.1.1-4.el7 python-ply.noarch 0:3.4-11.el7 python-pycparser.noarch 0:2.14-1.el7 python-six.noarch 0:1.9.0-2.el7 python2-crypto.x86_64 0:2.6.1-15.el7 python2-cryptography.x86_64 0:1.7.2-2.el7 python2-jmespath.noarch 0:0.9.0-3.el7 python2-pyasn1.noarch 0:0.1.9-7.el7 sshpass.x86_64 0:1.06-2.el7 Complete!
インストール完了!!
# ansible --version ansible 2.6.3 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/site-packages/ansible executable location = /usr/bin/ansible python version = 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
無事Ansible 2.6.3のインストールができました!!
まとめ
今回はAnsibleの紹介とインストールの方法について簡単に記入しましたが、
次回は実際にインストールしてみた後にほかのサーバにてAnsibleからSSH接続を行い
各種設定を行う方法を記入したいと思います。
今回の記事からAnsibleや運用・構築自動化に少しでも興味をもっていただければ幸いです。
以上、これで締めます。