LoginSignup
7
8

More than 5 years have passed since last update.

CentOS7.1でDockerをaufsで設定するAnsible Playbook

Last updated at Posted at 2015-11-19

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
7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8