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までに対して一括で実行している.

失敗した場合は同じコマンドを再び実行すると,変更が必要なホストに限定して構成ファイルを適用する.