1. yukin01

    Posted

    yukin01
Changes in title
+【Ubuntu 18.04】Ansible で Docker と docker-compose をインストールする
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,117 @@
+業務で Ansible を使い始めたので、プライベートの Ubuntu マシンも Ansible で環境構築中です
+公式サイトでの手順を Ansible のお作法にのっとって書き直しただけですが、無事にインストールできました🎉
+
+【参考】
+https://docs.docker.com/install/linux/docker-ce/ubuntu/
+https://docs.docker.com/compose/install/
+https://gist.github.com/rbq/886587980894e98b23d0eee2a1d84933
+
+## 前提
+
+- Ansible Roles を使用
+- sudo のパスワードは別途指定が必要
+- Docker/docker-compose のバージョンを固定したい場合はそれぞれ追加の指定が必要
+
+## できたもの
+
+```yaml:roles/docker/tasks/main.yml
+---
+- name: Add docker GPG key
+ apt_key:
+ url: https://download.docker.com/linux/ubuntu/gpg
+ become: yes
+
+- name: Install basic list of packages
+ apt:
+ name: "{{ packages }}"
+ state: present
+ update_cache: yes
+ vars:
+ packages:
+ - apt-transport-https
+ - ca-certificates
+ - curl
+ - gnupg2
+ - software-properties-common
+ become: yes
+
+- name: Add apt repository
+ apt_repository:
+ repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable"
+ become: yes
+
+- name: Install Docker packages
+ apt:
+ name: "{{ packages }}"
+ state: present
+ vars:
+ packages:
+ - docker-ce
+ - docker-ce-cli
+ - containerd.io
+ become: yes
+
+- name: Install docker-compose
+ get_url:
+ url: "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-{{ ansible_system }}-{{ ansible_architecture }}"
+ dest: /usr/local/bin/docker-compose
+ mode: +x
+ become: yes
+```
+
+## 一部解説
+
+### GPG Key
+
+```sh
+$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
+```
+
+公式では上記コマンドですが、`apt-key` モジュールのパラメータで url が指定できるので簡潔にできます
+
+```yaml
+- name: Add docker GPG key
+ apt_key:
+ url: https://download.docker.com/linux/ubuntu/gpg
+ become: yes
+```
+
+### Docker 用リポジトリ
+
+```sh
+$ sudo add-apt-repository \
+ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
+ $(lsb_release -cs) \
+ stable"
+```
+
+`lsb_release -cs` は bionic や xenial などの ubuntu のリリースバージョンを取得するコマンドですが
+Ansible では `gather_facts` を有効にしていれば `ansible_distribution_release` で取得できます
+
+```yml
+- name: Add apt repository
+ apt_repository:
+ repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable"
+ become: yes
+```
+
+### docker-compose
+
+```sh
+$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
+$ sudo chmod +x /usr/local/bin/docker-compose
+```
+
+公式は curl なので `get_url` モジュールを使います
+`uname -s`/`uname -m` はそれぞれ `ansible_system`/`ansible_architecture` で取得しています
+また、ダウンロード先のパーミッションも同時に指定できるので1回のタスクで済みます
+
+```yml
+- name: Install docker-compose
+ get_url:
+ url: "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-{{ ansible_system }}-{{ ansible_architecture }}"
+ dest: /usr/local/bin/docker-compose
+ mode: +x
+ become: yes
+```
+