AWS EC2 にたてた CentOS サーバを Ansible で判別する
例えば firewalld のコンフィグを Ansible で管理しているけど、 EC2 の場合はセキュリティグループで管理するから除外したいといった時がたまーにある。
そんな時は Ansible で対象ホストの fact 情報を取得してあげると良い。
$ ansible -i inventory all -m setup
hostname | SUCCESS => {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
"xxx.xxx.xxx.xxx"
],
"ansible_all_ipv6_addresses": [
"xxxx::xxx:xxxx:xxxx:xxx"
],
"ansible_apparmor": {
"status": "disabled"
},
:
:
ansible_system_vendor にベンダ情報がのっているので、 AWS EC2 の場合 Playbook を読み込みたくない場合は以下のようにする。
---
- include: firewalld.yml
when:
- ansible_distribution == "CentOS"
- ansible_distribution_major_version == "7"
- ansible_system_vendor != "Amazon EC2"
- include: iptables.yml
when:
- ansible_distribution == "CentOS"
- ansible_distribution_major_version == "6"
- ansible_system_vendor != "Amazon EC2"