initial commit
This commit is contained in:
commit
4043862397
71
README.md
Normal file
71
README.md
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
Docker Container
|
||||||
|
=========
|
||||||
|
|
||||||
|
Deploy docker containers on Ubuntu 24.04.
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
------------
|
||||||
|
|
||||||
|
Docker engine must be insalled on the host this role will run on.
|
||||||
|
|
||||||
|
Role Variables
|
||||||
|
--------------
|
||||||
|
|
||||||
|
The following variables will be equivalent to `docker.io/ubuntu/nginx:latest`.
|
||||||
|
|
||||||
|
Docker registry base url (default: docker.io):
|
||||||
|
`docker_container_registry: docker.io`
|
||||||
|
|
||||||
|
Docker rebpository namespace (default: ""):
|
||||||
|
`docker_container_repository_namespace: ubuntu`
|
||||||
|
|
||||||
|
Docker repository name (default: ubuntu):
|
||||||
|
`docker_container_repository_name: nginx`
|
||||||
|
|
||||||
|
Docker container tag (default: latest):
|
||||||
|
`docker_container_repository_tag: latest`
|
||||||
|
|
||||||
|
Docker container options to pass to docker run command (default: undefined)
|
||||||
|
`docker_container_run_options: "-p 8080:8080"`
|
||||||
|
|
||||||
|
Default image: docker.io/ubuntu:latest
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
------------
|
||||||
|
|
||||||
|
No dependencies.
|
||||||
|
|
||||||
|
Example Playbook
|
||||||
|
----------------
|
||||||
|
|
||||||
|
---
|
||||||
|
- hosts: goapp
|
||||||
|
|
||||||
|
vars:
|
||||||
|
docker_container_registry: docker.io
|
||||||
|
docker_container_repository_name: ubuntu
|
||||||
|
docker_container_repository_tag: latest
|
||||||
|
docker_container_run_options: "-p 8080:8080"
|
||||||
|
|
||||||
|
pre_tasks:
|
||||||
|
- name: Update apt cache.
|
||||||
|
ansible.builtin.apt:
|
||||||
|
update_cache: true
|
||||||
|
cache_valid_time: 86400
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- role: cuqmbr.docker_container
|
||||||
|
|
||||||
|
TODO
|
||||||
|
----
|
||||||
|
|
||||||
|
Add support for other Linux distrubitions:
|
||||||
|
|
||||||
|
- RHEL: Almalinux, RockyLinux 9 and 8
|
||||||
|
- Debian: Debian 12 and 11, Ubuntu 24.04 and 22.04
|
||||||
|
- Archlinux
|
||||||
|
|
||||||
|
Make role more generic:
|
||||||
|
|
||||||
|
- Add dockerd parameters configuration
|
||||||
|
- Add `docker container create` parameters configuration
|
8
defaults/main.yml
Normal file
8
defaults/main.yml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
docker_container_registry: docker.io
|
||||||
|
docker_container_repository_namespace: ""
|
||||||
|
docker_container_repository_name: ubuntu
|
||||||
|
docker_container_repository_tag: latest
|
||||||
|
|
||||||
|
# docker_container_run_options: "-p 8080:8080"
|
7
handlers/main.yml
Normal file
7
handlers/main.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Restart docker container service
|
||||||
|
ansible.builtin.systemd_service:
|
||||||
|
name: "docker_{{ docker_container_repository_name }}.service"
|
||||||
|
state: restarted
|
||||||
|
daemon_reload: true
|
11
meta/main.yml
Normal file
11
meta/main.yml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
galaxy_info:
|
||||||
|
role_name: docker_container
|
||||||
|
author: cuqmbr
|
||||||
|
description: Generic docker container deployment.
|
||||||
|
# issue_tracker_url: http://example.com/issue/tracker
|
||||||
|
license: MIT
|
||||||
|
min_ansible_version: "2.1"
|
||||||
|
galaxy_tags: []
|
||||||
|
|
||||||
|
dependencies: []
|
18
molecule/default/converge.yml
Normal file
18
molecule/default/converge.yml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
- name: Converge
|
||||||
|
hosts: all
|
||||||
|
|
||||||
|
vars:
|
||||||
|
docker_container_registry: docker.io
|
||||||
|
docker_container_repository_name: ubuntu
|
||||||
|
docker_container_repository_tag: latest
|
||||||
|
|
||||||
|
pre_tasks:
|
||||||
|
- name: Update apt cache.
|
||||||
|
ansible.builtin.apt:
|
||||||
|
update_cache: true
|
||||||
|
cache_valid_time: 86400
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- role: cuqmbr.docker
|
||||||
|
- role: cuqmbr.docker_container
|
20
molecule/default/molecule.yml
Normal file
20
molecule/default/molecule.yml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
dependency:
|
||||||
|
name: galaxy
|
||||||
|
driver:
|
||||||
|
name: docker
|
||||||
|
platforms:
|
||||||
|
- name: ubuntu2404
|
||||||
|
image: docker.io/geerlingguy/docker-ubuntu2404-ansible:latest
|
||||||
|
pre_build_image: true
|
||||||
|
command: ${MOLECULE_DOCKER_COMMAND:-""}
|
||||||
|
volumes:
|
||||||
|
- /sys/fs/cgroup:/sys/fs/cgroup:rw
|
||||||
|
cgroupns_mode: host
|
||||||
|
privileged: true
|
||||||
|
provisioner:
|
||||||
|
name: ansible
|
||||||
|
# options:
|
||||||
|
# ask-vault-pass: true
|
||||||
|
verifier:
|
||||||
|
name: ansible
|
32
tasks/main.yml
Normal file
32
tasks/main.yml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Form a full container name without repository namespace.
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
docker_container_name: "{{ docker_container_registry }}/\
|
||||||
|
{{ docker_container_repository_name }}:\
|
||||||
|
{{ docker_container_repository_tag }}"
|
||||||
|
when: docker_container_repository_namespace|length == 0
|
||||||
|
|
||||||
|
- name: Form a full container name with repository namespace.
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
docker_container_name: "{{ docker_container_registry }}/\
|
||||||
|
{{ docker_container_repository_namespace }}/\
|
||||||
|
{{ docker_container_repository_name }}:\
|
||||||
|
{{ docker_container_repository_tag }}"
|
||||||
|
when: docker_container_repository_namespace|length > 0
|
||||||
|
|
||||||
|
- name: Install systemd service file.
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: docker_container.service.j2
|
||||||
|
dest: "/etc/systemd/system/\
|
||||||
|
docker_{{ docker_container_repository_name }}.service"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0644"
|
||||||
|
notify:
|
||||||
|
- Restart docker container service
|
||||||
|
|
||||||
|
- name: Enable docker container service.
|
||||||
|
ansible.builtin.service:
|
||||||
|
name: "docker_{{ docker_container_repository_name }}.service"
|
||||||
|
enabled: true
|
14
templates/docker_container.service.j2
Normal file
14
templates/docker_container.service.j2
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
[Unit]
|
||||||
|
Description={{ docker_container_name }} docker container
|
||||||
|
After=docker.service
|
||||||
|
Requires=docker.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
TimeoutStartSec=0
|
||||||
|
Restart=always
|
||||||
|
ExecStartPre=/usr/bin/docker pull {{ docker_container_name }}
|
||||||
|
ExecStart=/usr/bin/docker run --rm --name %n{% if docker_container_run_options is defined %} {{ docker_container_run_options }}{% endif %} {{ docker_container_name }}
|
||||||
|
ExecStop=/usr/bin/docker stop %n
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
Loading…
Reference in New Issue
Block a user