Ansibleの使い方
バージョン
- Ubuntu 20.04
- Python 3.10.1
- Ansible 2.12.1
手順
(1) Ansibleのインストール
Pythonの仮想環境をつくる.
python3 -m venv env
. env/bin/activate
pipを更新する.
pip install -U pip
Ansibleをインストールする.
pip install ansible
Ansibleがインストールされたか確認する.コマンドの結果でパスが得られればよい.
$ which ansible
/home/koyama/trace-log-engine/00-ansible/env/bin/ansible
(2) Ansible構成ファイルを作成
以下のファイルをupdate.ymlで保存する.以下では全てのホストへcdslユーザで sudo apt upgrade
を実行している.
- hosts: all
user: cdsl
tasks:
- name: upgrade
become: yes
apt:
upgrade: yes
適用する対象マシンの一覧であるhostsファイルを作成する.これらのマシンにはあらかじめ ssh-copy-id コマンドを使って公開鍵を配置してある. ssh koyama-log001
でSSHログインできる状態である.
koyama-log001
koyama-log002
koyama-log003
koyama-log004
koyama-log005
koyama-log006
koyama-log007
koyama-log008
koyama-log009
koyama-log010
(3) Ansibleでドライランを行う
ドライランとは本番の実行前に検証の実行を行う.これによって構成ファイルのミスやホスト設定のミスを検出できる.
ansible-playbook -i hosts update.yml --check -vvv
オプションの -i
ではホストファイル名を指定する.
オプションの --check
では設定ファイルのチェックを行う.
オプションの -vvv
はvの数が増えるほど詳細なログを出力する.
(4) Ansibleで設定を適用する
以下のコマンドでupdate.ymlに記述した構成を適用する.
ansible-playbook -i hosts update.yml
以下は実行例である.
$ ansible-playbook -i hosts update.yml
PLAY [all] **********************************************************************************************************************
TASK [Gathering Facts] **********************************************************************************************************
ok: [koyama-log001]
ok: [koyama-log003]
ok: [koyama-log002]
ok: [koyama-log004]
ok: [koyama-log005]
ok: [koyama-log009]
TASK [upgrade] ******************************************************************************************************************
ok: [koyama-log005]
ok: [koyama-log004]
ok: [koyama-log002]
ok: [koyama-log007]
ok: [koyama-log009]
changed: [koyama-log008]
...
PLAY RECAP **********************************************************************************************************************
koyama-log001 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
koyama-log002 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
koyama-log003 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
koyama-log004 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
koyama-log005 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
koyama-log006 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
koyama-log007 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
koyama-log008 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
koyama-log009 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
koyama-log010 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
koyama-log011 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
koyama-log012 : ok=1 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
koyama-log013 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
なお上記では koyama-log001から koyama-log080までに対して一括で実行している.
失敗した場合は同じコマンドを再び実行すると,変更が必要なホストに限定して構成ファイルを適用する.