CentOS7.1でDockerをaufsで設定するAnsible Playbook
背景
以前書いたこちらの記事でdockerを試してみたところ
やはりこちらの記事の現象に悩まされて使いづらさMAXです。
CentOS7.2ぐらいになったら修正されそうな気がしますが、とりあえず評価のためにこちらの記事を参考にoverlayfsではなくてaufsで設定するAnsible Playbookを作ってみました。
なお、あくまで評価目的ですので本番環境ではオススメしません。
設定内容
- CentOS 7.1のインストール直後に設定することを想定
- SELinuxは無効化
- firewalldは無効化
- ntpdで時刻同期の設定
- ★NEW★aufs対応のkernelを追加インストール
- Dockerのstorage driverをaufsに設定
Ansible Playbook
Playbookは2つに分けています。
※冪等性は微妙です。。。
※本来ならcopyモジュールを使うべきところで強引にshellモジュール+echoとかで書いてます
※1つ目のPlaybook実行後、サーバを再起動してください
playbook1.yml
---
- hosts: all
remote_user: root
tasks:
- name: yum update
command: yum -y update
- name: disable selinux 1
selinux: >
state=disabled
- name: disable selinux 2
shell: if [ "`/usr/sbin/getenforce`" != "Disabled" ]; then /usr/sbin/setenforce 0; fi
- name: disable firewalld
service: >
name=firewalld
state=stopped
enabled=no
- name: install ntp
yum: >
name=ntp
state=present
- name: modify /etc/ntp.conf 1
lineinfile: >
dest=/etc/ntp.conf
state=absent
regexp="^server"
- name: modify /etc/ntp.conf 2
lineinfile: >
dest=/etc/ntp.conf
state=present
regexp="^pool ntp.nict.jp iburst$"
line="pool ntp.nict.jp iburst"
- name: enable ntp
service: >
name=ntpd
enabled=yes
- name: start ntpd
service: >
name=ntpd
state=started
- name: put /etc/yum.repos.d/rhel-aufs-kernel.repo
shell: echo -e "[rhel-aufs-kernel]\nname=RHEL AUFS Kernel\nbaseurl=https://yum.spaceduck.org/rhel-aufs-kernel/\$releasever/\$basearch/\ngpgcheck=0" >/etc/yum.repos.d/rhel-aufs-kernel.repo
- name: remove kernel-headers
yum: >
name=kernel-headers
state=absent
- name: install kernel-ml-aufs kernel-ml-aufs-devel kernel-ml-aufs-headers
yum: >
name={{ item }}
state=present
with_items:
- kernel-ml-aufs
- kernel-ml-aufs-devel
- kernel-ml-aufs-headers
- name: install gcc glibc-devel glibc-headers
yum: >
name={{ item }}
state=present
with_items:
- gcc
- glibc-devel
- glibc-headers
- name: grub set default
lineinfile: >
dest=/etc/default/grub
regexp=^GRUB_DEFAULT=
line=GRUB_DEFAULT=0
- name: grub2-mkconfig
shell: grub2-mkconfig -o /boot/grub2/grub.cfg
gcc glibc-devel glibc-headersをインストールしてるのは、私の環境がVirtualBoxのGuestAdditionsを使っているためで、必須ではありません。
ここまで設定したらいったんサーバを再起動してaufs対応のkernelに切り替えます。
次に、こちらのPlaybookを実行します。
playbook2.yml
---
- hosts: all
remote_user: root
tasks:
- name: put /etc/yum.repos.d/docker.repo
shell: echo -e "[dockerrepo]\nname=Docker Repository\nbaseurl=https://yum.dockerproject.org/repo/main/centos/7\nenabled=1\ngpgcheck=1\ngpgkey=https://yum.dockerproject.org/gpg" >/etc/yum.repos.d/docker.repo
- name: install docker-engine
yum: >
name=docker-engine
state=present
- name: mkdir /etc/systemd/system/docker.service.d
file: >
path=/etc/systemd/system/docker.service.d
state=directory
mode=0755
- name: put /etc/systemd/system/docker.service.d/storage.conf
shell: echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/docker daemon -H fd:// --storage-driver=aufs" >/etc/systemd/system/docker.service.d/storage.conf
- name: systemctl daemon-reload
shell: systemctl daemon-reload
- name: enable docker
service: >
name=docker
enabled=yes
- name: start docker
service: >
name=docker
state=started