1. Bacalhau
Changes in body
Source | HTML | Preview
@@ -1,131 +1,131 @@
業務で 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
+ - gnupg-agent
- 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: Add user to docker group
user:
name: "{{ ansible_env.USER }}"
groups: docker
append: yes
become: yes
- name: Ensure docker service is enabled
systemd:
name: docker
state: started
enabled: yes
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
```