Configuration Management

Ansibleとは

Ansibleは構成管理を自動化するための強力なツールです。Playbookを定義することで、複数のノードに対して一貫した構築・設定を効率的に行えます。 広島サイトのEOSシステム構築においても、その自動化の中核を担っています。

Ansibleをはじめる人に。 - Qiita

Ansible入門者向けに、基本概念から実用的な内容まで網羅的にまとめられています。

qiita.com

参考資料

インベントリの定義

操作対象となるサーバーを定義します。近年はYAML形式が主流ですが、INI形式も広く利用されています。

INI Format

[eos_mgm]
grid04
grid05

[eos_fst]
nfs11
nfs12

[all:vars]
ansible_ssh_user=root

YAML Format

all:
  children:
    eos_mgm:
      hosts:
        grid04:
        grid05:
    eos_fst:
      hosts:
        nfs11:
        nfs12:
  vars:
    ansible_ssh_user: root

事前設定

SSH CONFIG

パスワードレス接続の確立

1. キーペアの生成

ssh-keygen -t rsa -b 4096

2. Rootログインの許可(全ノード)

/etc/ssh/sshd_config

PermitRootLogin yes
systemctl restart sshd

3. 公開鍵の配布

ssh-copy-id -i ~/.ssh/id_rsa.pub root@<target-host>

実行コマンド

疎通テスト

ansible all -m ping -i inventory.yml

Playbookの実行

Syntax Check

ansible-playbook -i inventory.yml your-playbook.yml --syntax-check

Dry Run (Check mode)

ansible-playbook -i inventory.yml your-playbook.yml --check --diff

Execution

ansible-playbook -i inventory.yml your-playbook.yml

機密情報の保護

ANSIBLE VAULT

パスワードやトークンなどの機密情報は ansible-vault で暗号化します。

暗号化の実行

ansible-vault encrypt password-file.yml

パスワードを入力して実行

ansible-playbook -i inventory.yml pb.yml --ask-vault-pass