Ansible
docs.ansible.com より:
- Ansible は IT 自動化ツールです。システムを設定し、ソフトウェアをデプロイして、継続的なデプロイや休止期間を挟まないローリングアップデートなど高度な IT 業務をオーケストラレートできます。
目次
インストール
制御マシン (サーバーあるいはマスター) に ansible パッケージをインストールしてください。
自動デプロイや設定作業を適用したい管理マシン (クライアントあるいはスレーブ) には python2 (あるいは実験的な python) と openssh をインストールしてください。ssh 接続を正しく機能させるには ssh 鍵の設定が必要です。
基本的な使い方
インベントリ
According to the default settings in /etc/ansible/ansible.cfg
, one can define its infrastructure in /etc/ansible/hosts
. For instance, the following inventory defines a tiny cluster with three nodes:
/etc/ansible/hosts
[control] 192.168.12.1 [managed] 192.168.12.2 192.168.12.3
One can assign specific attributes to every node in the file. Check the official document for the details.
Ping
You may check if all the nodes listed in the inventory is alive by
$ ansible all -m ping
Playbook
Playbook serves as a powerful tool to deploy and configure the whole infrastructure. Check the official document for more details. Here is an extremely simple use case, only for demonstration purpose, where the administrator of above inventory want to perform a full system upgrade on all nodes. First, create a playbook file, in YAML format:
syu.yml
- hosts: control managed tasks: - name: full system upgrade script: /usr/bin/pacman -Syu
Then, run the playbook script:
# ansible-playbook syu.yml
Tips and tricks
Python の場所を Ansible に指定する
Ansible は管理対象のマシンに Python を必要とします。プレビューとして Python 3 がサポートされていますが [1]、全てのモジュールが機能するとは限りません。デフォルトでは Ansible はリモートシステム上の /usr/bin/python
が 2.X あるいは 3.X バージョンの Python (特に 2.4 以上) だと想定しています。
使用するモジュールが Python 2 を必要とする場合、Ansible のインベントリファイルで ansible_python_interpreter
変数を設定して Python 2 の場所を Ansible に指定する必要があります。以下のようにホストグループを使って設定できます:
Inventory file
[archlinux] server1 server2 [debian] server3 [archlinux:vars] ansible_python_interpreter=/usr/bin/python2
Python の設定に関する詳細は [2], [3], [4] にあります。