Initial commit
This commit is contained in:
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
*.log
|
||||
*.pyc
|
||||
**/__pycache__/
|
||||
.env
|
||||
.secrets
|
||||
10
.gitlab-ci.yml
Normal file
10
.gitlab-ci.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
stages:
|
||||
- linter
|
||||
|
||||
linter:
|
||||
stage: linter
|
||||
image:
|
||||
name: osshelp/drone-linter
|
||||
entrypoint: [""]
|
||||
script: [entrypoint.sh]
|
||||
11
.yamllint
Normal file
11
.yamllint
Normal file
@@ -0,0 +1,11 @@
|
||||
extends: default
|
||||
|
||||
rules:
|
||||
braces:
|
||||
max-spaces-inside: 1
|
||||
level: error
|
||||
brackets:
|
||||
max-spaces-inside: 1
|
||||
level: error
|
||||
line-length: disable
|
||||
truthy: disable
|
||||
9
README.md
Normal file
9
README.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# docker
|
||||
|
||||
Simple Ansible role for docker installation.
|
||||
|
||||
## Usage (example)
|
||||
|
||||
```yaml
|
||||
- role: docker
|
||||
```
|
||||
19
defaults/main.yml
Normal file
19
defaults/main.yml
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
repo_key: 'https://download.docker.com/linux/ubuntu/gpg'
|
||||
repo_branch: stable
|
||||
repo_url: "deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_lsb.codename|lower }} {{ repo_branch }}"
|
||||
|
||||
|
||||
dst_compose_files_dir: '/mnt/deploy/docker'
|
||||
|
||||
ipv6_enable: false
|
||||
remap_enable: false
|
||||
remap_user: dockremap
|
||||
remap_subuid: 100000
|
||||
metrics_enable: true
|
||||
metrics_addr: 0.0.0.0
|
||||
metrics_port: 19323
|
||||
experimental_enable: "{{ metrics_enable }}"
|
||||
tcp_listen: false
|
||||
live_restore: true
|
||||
swarm_init: false
|
||||
6
handlers/main.yml
Normal file
6
handlers/main.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
- name: reload docker unit
|
||||
systemd: daemon_reload=yes
|
||||
|
||||
- name: restart docker service
|
||||
systemd: name=docker state=restarted
|
||||
11
meta/main.yml
Normal file
11
meta/main.yml
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
galaxy_info:
|
||||
author: OldTyT
|
||||
description: Docker install on ubuntu
|
||||
min_ansible_version: 2.8
|
||||
platforms:
|
||||
- name: Ubuntu
|
||||
versions:
|
||||
- jammy
|
||||
galaxy_tags:
|
||||
- dockerubuntuinstall
|
||||
31
tasks/composes.yml
Normal file
31
tasks/composes.yml
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
- name: create dir for ymls
|
||||
file:
|
||||
path: "{{ dst_compose_files_dir }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
|
||||
- name: Save all env variables to a file
|
||||
ansible.builtin.shell:
|
||||
cmd: printenv > {{ dst_compose_files_dir }}/.env
|
||||
args:
|
||||
executable: /bin/bash
|
||||
|
||||
- name: create compose file
|
||||
copy:
|
||||
src: "{{ 'files/' + (inventory_hostname if molecule_file is not defined else 'molecule') + '/docker-compose.yml' }}"
|
||||
dest: "{{ dst_compose_files_dir }}/docker-compose.yml"
|
||||
mode: '0644'
|
||||
|
||||
- name: deploy compose file
|
||||
docker_compose:
|
||||
env_file: "{{ dst_compose_files_dir }}/.env"
|
||||
project_src: "{{ dst_compose_files_dir }}"
|
||||
files: ["{{ dst_compose_files_dir }}/{{ item.name }}.yml"]
|
||||
state: "{{ item.state | default('present') }}"
|
||||
remove_orphans: "{{ item.remove_orphans | default('yes') }}"
|
||||
recreate: "{{ item.recreate | default('smart') }}"
|
||||
pull: "{{ item.pull | default('yes') }}"
|
||||
stopped: "{{ item.stopped | default('no') }}"
|
||||
timeout: "{{ item.timeout | default('10') }}"
|
||||
debug: "{{ item.debug | default('no') }}"
|
||||
20
tasks/config.yml
Normal file
20
tasks/config.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
- name: create directories
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
with_items:
|
||||
- /etc/systemd/system/docker.service.d
|
||||
- /etc/docker
|
||||
|
||||
- name: create daemon.json
|
||||
template:
|
||||
src: daemon-json.j2
|
||||
dest: /etc/docker/daemon.json
|
||||
mode: 0640
|
||||
register: docker_daemon_json
|
||||
notify:
|
||||
- restart docker service
|
||||
|
||||
- meta: flush_handlers
|
||||
52
tasks/install.yml
Normal file
52
tasks/install.yml
Normal file
@@ -0,0 +1,52 @@
|
||||
---
|
||||
- name: Update apt cache
|
||||
apt:
|
||||
update_cache: yes
|
||||
|
||||
- name: Install utils
|
||||
retries: 3
|
||||
delay: 5
|
||||
ansible.builtin.apt:
|
||||
pkg:
|
||||
- ca-certificates
|
||||
- curl
|
||||
- gpg
|
||||
update_cache: yes
|
||||
cache_valid_time: 3600
|
||||
|
||||
- name: Make sure the APT keyring directory exists
|
||||
file:
|
||||
path: /etc/apt/keyrings
|
||||
state: directory
|
||||
mode: '0755'
|
||||
|
||||
- name: Register the Docker GPG key with APT
|
||||
become: true
|
||||
ansible.builtin.apt_key:
|
||||
url: "{{ repo_key }}"
|
||||
state: present
|
||||
|
||||
- name: Add Docker repository to APT sources
|
||||
apt_repository:
|
||||
repo: "{{ repo_url }}"
|
||||
state: present
|
||||
filename: docker
|
||||
|
||||
- name: create user for remap
|
||||
user:
|
||||
name: "{{ remap_user }}"
|
||||
comment: "User for docker userns-remap"
|
||||
state: present
|
||||
create_home: false
|
||||
when: remap_enable
|
||||
|
||||
- name: Install Docker-CE
|
||||
retries: 3
|
||||
delay: 5
|
||||
ansible.builtin.apt:
|
||||
pkg:
|
||||
- docker-ce
|
||||
update_cache: yes
|
||||
cache_valid_time: 3600
|
||||
|
||||
- meta: flush_handlers
|
||||
15
tasks/main.yml
Normal file
15
tasks/main.yml
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
- name: docker installation
|
||||
include_tasks: install.yml
|
||||
|
||||
- name: docker configuration
|
||||
include_tasks: config.yml
|
||||
|
||||
- name: Check for docker-compose.yml in the specific directory
|
||||
ansible.builtin.stat:
|
||||
path: "{{ 'files/' + (inventory_hostname if molecule_file is not defined else 'molecule') + '/docker-compose.yml' }}"
|
||||
register: docker_compose_stat
|
||||
|
||||
- name: deploy compose files
|
||||
include_tasks: composes.yml
|
||||
when: docker_compose_stat.stat.exists
|
||||
22
templates/daemon-json.j2
Normal file
22
templates/daemon-json.j2
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
{% if tcp_listen %} "hosts": ["tcp://{{ tcp_listen_addr | default('0.0.0.0') }}:{{ tcp_listen_port | default('2375') }}", "unix:///var/run/docker.sock"],
|
||||
{% endif %}
|
||||
{% if metrics_enable %} "metrics-addr" : "{{ metrics_addr | default('0.0.0.0') }}:{{ metrics_port | default('19323') }}",
|
||||
{% endif %}
|
||||
{% if experimental_enable %} "experimental" : true,
|
||||
{% endif %}
|
||||
{% if remap_enable %} "userns-remap" : "{{ remap_user | default('dockremap') }}",
|
||||
{% endif %}
|
||||
{% if insecure_registries is defined %} "insecure-registries" : [{% for registry in insecure_registries %}"{{ registry }}"{% if not loop.last %}, {% endif %}{% endfor %}],
|
||||
{% endif %}
|
||||
{% if registry_mirrors is defined %} "registry-mirrors": [{% for registry in registry_mirrors %}"{{ registry }}"{% if not loop.last %}, {% endif %}{% endfor %}],
|
||||
{% endif %}
|
||||
"log-opts": {
|
||||
"compress": "{{ log.compress | default('false') }}",
|
||||
"max-size": "{{ log.max_size | default('50m') }}",
|
||||
"max-file": "{{ log.max_file | default('10') }}"
|
||||
},
|
||||
{% if live_restore and not swarm_init %} "live-restore": true,
|
||||
{% endif %}
|
||||
"ipv6": {{ 'true' if ipv6_enable else 'false' }}
|
||||
}
|
||||
Reference in New Issue
Block a user