Ansible(http://www.ansible.com/home)はシンプルな構成管理ツールです。先発の類似ツールとしてPuppet(https://puppetlabs.com/)やChef(https://www.chef.io/chef/)があります。
PuppetとChefはRubyで作られており設定の記述もRubyをメインに使いますが、AnsibleはPythonで作られているのと、設定の記述に使える言語を特定しません。そのためRubyに慣れているエンジニアはPuppetとChefが好まれており、Pythonや他言語に慣れている方はAnsibleが好まれているようです。
Ansible公式のインストール手順
Ansible社から各OSに対応したインストール手順が公開されています。GitHub上のドキュメントの方が読みやすい方はこちらをご参照ください。
困った時に利用するAnsibleのソースコードはGitHub上で公開されています(https://github.com/ansible/ansible)。
Ubuntu 14.04 LTS に Ansibleをインストール
Ansibleの利用にはPython 2.6か2.7が必要です。Ubuntu側でPPA(パーソナル・パッケージ・アーカイブ)が有効になっている必要があります。
現在インストールされているPythonのバージョンを確かめます。この記事の環境では2.7.6がインストールされていました。
user@ubuntu:~$ python -V
Python 2.7.6
add-apt-repositoryが含まれるsoftware-properties-commonをインストールします。14.04からは合わせてインストールしていたpython-software-propertiesは不要になっています。
user@ubuntu:~$ sudo apt-get install software-properties-common
[sudo] password for user: Reading package lists... Done Building dependency tree Reading state information... Done software-properties-common is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 82 not upgraded.
次にapt-add-repositoryを使ってAnsibleを追加します。もしadd-apt-repositoryが使えない場合、上記の「software-properties-common」の実行を忘れている可能性があります。
user@ubuntu:~$ sudo apt-add-repository ppa:ansible/ansible
Ansible is a radically simple IT automation platform that makes your applications and systems easier to deploy. Avoid writing scripts or custom code to deploy and update your applications- automate in a language that approaches plain English, using SSH, with no agents to install on remote systems. http://ansible.com/ More info: https://launchpad.net/~ansible/+archive/ubuntu/ansible Press [ENTER] to continue or ctrl-c to cancel adding it gpg: keyring `/tmp/tmp35lfvsin/secring.gpg' created gpg: keyring `/tmp/tmp35lfvsin/pubring.gpg' created gpg: requesting key 7BB9C367 from hkp server keyserver.ubuntu.com gpg: /tmp/tmp35lfvsin/trustdb.gpg: trustdb created gpg: key 7BB9C367: public key "Launchpad PPA for Ansible, Inc." imported gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1) OK
次にサーバーからパッケージリストを入手更新します。
user@ubuntu:~$ sudo apt-get update
パッケージの一覧が表示されますので実行結果は省略します。さあ次に本題のAnsibleを実際にインストールします。
user@ubuntu:~$ sudo apt-get install ansible
Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: libyaml-0-2 python-jinja2 python-markupsafe python-paramiko python-support python-yaml sshpass Suggested packages: python-jinja2-doc The following NEW packages will be installed: ansible libyaml-0-2 python-jinja2 python-markupsafe python-paramiko python-support python-yaml sshpass 0 upgraded, 8 newly installed, 0 to remove and 109 not upgraded. Need to get 1,098 kB of archives. After this operation, 6,824 kB of additional disk space will be used. Do you want to continue? [Y/n] Y Get:1 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main libyaml-0-2 amd64 0.1.4-3ubuntu3.1 [48.1 kB] Get:2 http://ppa.launchpad.net/ansible/ansible/ubuntu/ trusty/main ansible all 1.9.2-1ppa~trusty [630 kB] Get:3 http://us.archive.ubuntu.com/ubuntu/ trusty/universe python-support all 1.0.15 [26.7 kB] Get:4 http://us.archive.ubuntu.com/ubuntu/ trusty/main python-markupsafe amd64 0.18-1build2 [14.3 kB] Get:5 http://us.archive.ubuntu.com/ubuntu/ trusty/main python-jinja2 all 2.7.2-2 [161 kB] Get:6 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main python-yaml amd64 3.10-4ubuntu0.1 [102 kB] Get:7 http://us.archive.ubuntu.com/ubuntu/ trusty/main python-paramiko all 1.10.1-1git1build1 [106 kB] Get:8 http://us.archive.ubuntu.com/ubuntu/ trusty/universe sshpass amd64 1.05-1 [10.5 kB] Fetched 1,098 kB in 2s (399 kB/s) Selecting previously unselected package libyaml-0-2:amd64. (Reading database ... 204517 files and directories currently installed.) Preparing to unpack .../libyaml-0-2_0.1.4-3ubuntu3.1_amd64.deb ... Unpacking libyaml-0-2:amd64 (0.1.4-3ubuntu3.1) ... Selecting previously unselected package python-support. Preparing to unpack .../python-support_1.0.15_all.deb ... Unpacking python-support (1.0.15) ... Selecting previously unselected package python-markupsafe. Preparing to unpack .../python-markupsafe_0.18-1build2_amd64.deb ... Unpacking python-markupsafe (0.18-1build2) ... Selecting previously unselected package python-jinja2. Preparing to unpack .../python-jinja2_2.7.2-2_all.deb ... Unpacking python-jinja2 (2.7.2-2) ... Selecting previously unselected package python-yaml. Preparing to unpack .../python-yaml_3.10-4ubuntu0.1_amd64.deb ... Unpacking python-yaml (3.10-4ubuntu0.1) ... Selecting previously unselected package python-paramiko. Preparing to unpack .../python-paramiko_1.10.1-1git1build1_all.deb ... Unpacking python-paramiko (1.10.1-1git1build1) ... Selecting previously unselected package sshpass. Preparing to unpack .../sshpass_1.05-1_amd64.deb ... Unpacking sshpass (1.05-1) ... Selecting previously unselected package ansible. Preparing to unpack .../ansible_1.9.2-1ppa~trusty_all.deb ... Unpacking ansible (1.9.2-1ppa~trusty) ... Processing triggers for man-db (2.6.7.1-1ubuntu1) ... Setting up libyaml-0-2:amd64 (0.1.4-3ubuntu3.1) ... Setting up python-support (1.0.15) ... Setting up python-markupsafe (0.18-1build2) ... Setting up python-jinja2 (2.7.2-2) ... Setting up python-yaml (3.10-4ubuntu0.1) ... Setting up python-paramiko (1.10.1-1git1build1) ... Setting up sshpass (1.05-1) ... Setting up ansible (1.9.2-1ppa~trusty) ... Processing triggers for libc-bin (2.19-0ubuntu6.6) ... Processing triggers for python-support (1.0.15) ...
Ansibleに合わせて色々なパッケージがインストールされました。
Ansibleの動作確認
それではAnsibleがインストールされていて、動作するかを確かめてみます。
user@ubuntu:~$ ansible --version
ansible 1.9.2 configured module search path = None
無事にAnsibleがインストールされています。
次に、/etc/ansible/以下にansible.cfgと接続先情報をまとめたhostsと2つの設定ファイルが作られているかを確認します。
user@ubuntu:~$ ls -la /etc/ansible/
total 32 drwxr-xr-x 2 root root 4096 8月 30 13:58 . drwxr-xr-x 133 root root 12288 8月 30 13:16 .. -rw-r--r-- 1 root root 8629 6月 26 09:25 ansible.cfg -rw-r--r-- 1 root root 979 8月 30 13:54 hosts
問題なく作られています。hostsには記述のサンプルが含まれていますので内容を確認してみてください。
次にAnsibleを実際に使ってリモートでコマンドを実行してみます。自分自身に接続しpingモジュールの実行結果を表示してみます。
user@ubuntu:~$ ansible -u user localhost -m ping --ask-pass
SSH password: localhost | success >> { "changed": false, "ping": "pong" }
モジュールも問題なく動作しています。これでインストール完了です。
Ansibleの導入について
Ansibleインストールはとても簡単です。Ansibleを使って構成管理を行うには、ネットワークの設定やSSHアカウント管理、ポート制御、ファイヤーウォールの更新など行う必要がありますので、これらに慣れている方であればAnsibleの導入で困る事は少ないと思います。
DockerリポジトリでもUbuntu14.04用のAnsibleが公開されていますので、Dockerを利用されている方はDockerリポジトリを利用する方がスムーズにインストールできます。
URL:https://hub.docker.com/r/ansible/ubuntu14.04-ansible/
Ansible社のDockerリポジトリ(https://hub.docker.com/r/ansible/)にはCentOS7版のAnsibleも公開されています。
Ansible(http://www.ansible.com/home)の日本語翻訳サイトがありました(http://www.kyoshida.jp/ansibledoc-ja/)。公式サイト内で説明されているインストール手順も翻訳されていますので、こちら少し内容が古いようですが合わせて参考にしてもらえればと思います(http://www.kyoshida.jp/ansibledoc-ja/intro_installation.html)。
本ブログは、Git / Subversionのクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。
エンタープライズ向け Git / Subversion 導入や DevOps による開発の効率化を検討している法人様必見!
「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。
No Comments