AWSでEC2を構築しているときに、swap領域設定されていないと思ったので、手動で1GBのswap領域を作ってみました。そもそもAMIにはswap領域が含まれなく、インスタンスストア(Ephemeral Disk)にswap領域を設定するのがベストのようです。Ansibleでもplaybook適用してみました。
■1GBのswap領域作成
1 2 3 4 |
# dd if=/dev/zero of=/media/ephemeral0/swapfile bs=1M count=1024; # chmod 600 /media/ephemeral0/swapfile; # mkswap /media/ephemeral0/swapfile; # swapon /media/ephemeral0/swapfile; |
今回は/media/ephemeral0/に作ります。swapのディレクトリは適宜変更してください。
■自動マウントされるように設定
1 2 |
# vim /etc/fstab /media/ephemeral0/swapfile swap swap defaults 0 0 |
■vim /etc/rc.d/rc.local
1 2 3 4 |
dd if=/dev/zero of=/media/ephemeral0/swapfile bs=1M count=1024; chmod 600 /media/ephemeral0/swapfile; mkswap /media/ephemeral0/swapfile; swapon /media/ephemeral0/swapfile; |
■サーバ再起動
1 |
# shutdown -r now |
■確認
1 |
# free -m |
swapが追加されてればOK!
■Ansibleだと?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
- name: create swap /etc/rc.d/rc.local blockinfile: dest: /etc/rc.d/rc.local create: yes block: | dd if=/dev/zero of=/media/ephemeral0/swapfile bs=1M count=2048 chmod 600 /media/ephemeral0/swapfile mkswap /media/ephemeral0/swapfile swapon /media/ephemeral0/swapfile - name: change swappiness sysctl: name: vm.swappiness value: 0 state: present - name: when swapfile1 exists stat: path: /media/ephemeral0/swapfile register: fm - name: /swapfile1 not exist apply rc.local become_user: root shell: source /etc/rc.d/rc.local when: not fm.stat.exists - name: insert swapfile /etc/fstab mount: name: swap src: /media/ephemeral0/swapfile fstype: swap opts: defaults passno: 0 dump: 0 state: present |
■まとめ
構築するときに忘れがちなのでAnsibleで管理しておけば忘れずにすみそうです!
0件のコメント