Ansibleで各サーバーごとに zabbix_agentd.conf
を用意するというのはイケてない。100台とかあったら毎回設定ファイルで変更するのはめんどくさすぎるし、運用上つらすぎる。
hostnameだけ変数化すれば一つのファイルで管理することができるので、今回 template
モジュールを使って実装してみました。
・ "Server=","ServerActive="
の部分は変更を加えない
・ "Hostname="
を変数化してansible流すとhostsファイルをみて各サーバのhostnameを挿入する
※ちなみにsshはhostnameでログインできるようにしてます。
■構成
1 2 3 4 5 6 7 8 9 |
$ tree zabbix-agent zabbix-agent ├── files ├── handlers │ └── main.yml ├── tasks │ └── main.yml └── templates └── zabbix_agentd.conf |
・tasks/main.yml
1 2 3 4 5 6 7 |
$ more main.yml - name: zabbix_agentd.conf replace template: src: templates/zabbix_agentd.conf dest: /etc/zabbix/zabbix_agentd.conf owner: root group: zabbix |
・templates/zabbix_agentd.conf
1 2 3 4 5 6 |
$ grep Server zabbix_agentd.conf Server=xx.xxx.xxx.xxx,xxx.xxx.xxx.xxx ServerActive=xx.xxx.xxx.xxx,xxx.xxx.xxx.xxx $ grep Hostname zabbix_agentd.conf Hostname={{ inventory_hostname }} |
■まとめ
これで各サーバごとのconfファイルを1つのファイルで管理することができた!他にも変数化できるところあったらやっちゃおう。というかこれの応用。
参考
http://docs.ansible.com/ansible/template_module.html
0件のコメント