LinuxにDockerをInstallするAnsible-Galaxy


LinuxDockerをインストールするたびに、

「ubuntu docker install」
「centos docker install」

などをググって、Docker公式サイトより手動でインストールしていました。

毎回インストールするのは手間なので、自動化したいと思っていた矢先、
OSSで素晴らしいansible-galaxyを見つけましたので、紹介したいと思います。

使用するansible-galaxy

Ansible Galaxy: https://galaxy.ansible.com/geerlingguy/docker
GitHub: https://github.com/geerlingguy/ansible-role-docker

Ansible Playbookを書いてみる

VirtualBox上にUbuntu20.04のVMを作成します。
Vagrantを用いて、Provisioning ToolとしてAnsibleを使用し、そのPlaybookでDockerをインストールします。

Vagrantfileを作成する

以下のVagrantfileを作成します。

IPアドレスは192.168.0.3/24としてあります。

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.define "ansible-docker" do |node|
    node.vm.box = "bento/ubuntu-20.04"
    node.vm.hostname = "ansible-docker"
    node.vm.network "private", ip: "192.168.0.3", netmask: "255.255.255.0"
    node.vm.provider "virtualbox" do |vb|
      vb.memory = "1024"
    end
  end

  config.vm.provision "ansible" do |ansible|
    ansible.playbook = "./install_docker.yml"
    ansible.inventory_path = "./inventory.ini"
    ansible.limit = 'all'
  end
end

roleをインストールする

rolesディレクトリを作成して、その中に今回使用するroleをインストールします。

mkdir roles
ansible-galaxy install geerlingguy.docker -p roles/

InventoryとPlaybookを作る

inventory.ini

[ansible-docker]
192.168.0.3

install_docker.yml

---
hosts: all
  roles:
    role: geerlingguy.docker
    become: yes

Playbookを実行する

ディレクトリ構造は以下のようになっています。

.
├── Vagrantfile
├── install_docker.yml
├── inventory.ini
└── roles
     └── geerlingguy.docker
         ├── LICENSE
         ├── README.md
         ├── defaults
         │   └── main.yml
         ├── handlers
         │   └── main.yml
         ├── meta
         │   └── main.yml
         ├── molecule
         │   └── default
         │       ├── converge.yml
         │       └── molecule.yml
         └── tasks
             ├── docker-compose.yml
             ├── docker-users.yml
             ├── main.yml
             ├── setup-Debian.yml
             └── setup-RedHat.yml

以下のコマンドでVM作成します。(ホストOSでAnsible実行環境が整備されている必要があります。)

vagrant up

docker,docker-composeがインストールされていることを確認できます。

vagrant@ansible-docker:~$ sudo docker -v
Docker version 19.03.12, build 48a66213fe
vagrant@ansible-docker:~$ sudo docker-compose -v
docker-compose version 1.26.0, build d4451659