デフォルトは0。
Degital Ocean使ってる時は自分で設定してたけど、EC2もそうなのね。知らなかった。(インスタンスタイプによるのかも。t2は設定されてなかった)

このままでは、メモリが足りなくなるとOOM Killerにやられてしまう。
http://qiita.com/konpyu/items/20d1989d1251d805cf3b

というわけでAnsibleのPlaybookを書いて設定した。

Swapfileの追加手順はこの辺を参考に。

Ansibleでやる方法はこの辺り。

ちなみに、--checkはdry-runのこと。
https://docs.ansible.com/playbooks_checkmode.html

Playbook

最終的にこんなPlaybookになった。

---
- hosts: all
  user: ec2-user
  sudo: yes
  tasks:
    - name: create the file to be used for swap
      command: fallocate -l 1G /swapfile
    - name: format the file for swap
      command: mkswap /swapfile
    - name: change swap file permissions
      file: path=/swapfile owner=root group=root mode=0600
    - name: add the file to the system as a swap file
      command: swapon /swapfile
    - name: write swap entry in /etc/fstab
      mount: name=swap src=/swapfile fstype=swap opts=defaults passno=0 dump=0 state=present

存在チェックとかしてないので、2回目実行するとエラーで止まる。
ので、単体で実行。

$ ansible-playbook add_swap.yml -i hosts

無事、設定されました。

$ swapon -s
Filename                Type        Size    Used    Priority
/swapfile                               file    1048572 0   -1
$ free -m
             total       used       free     shared    buffers     cached
Mem:          2004       1700        304          0        131        224
-/+ buffers/cache:       1344        659
Swap:         1023          0       1023

CentOS 7

CentOS 7にもそのまま使えるかと思ったら、

stderr: swapon: /swapfile: swapon failed: Invalid argument

となった。

dd使わんとダメっぽい。

-     command: fallocate -l 1G /swapfile
+     command: dd if=/dev/zero of=/swapfile bs=1M count=1024

で行けた。