Compare commits
8 Commits
64491514a9
...
e51052c34b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e51052c34b | ||
|
|
2893a99036 | ||
|
|
9ca48d376a | ||
|
|
079b008111 | ||
|
|
20e38332e6 | ||
|
|
f845962ed9 | ||
|
|
165a04fa51 | ||
|
|
309bd41836 |
@@ -3,7 +3,7 @@
|
|||||||
namespace: uumas
|
namespace: uumas
|
||||||
name: docker
|
name: docker
|
||||||
description: Roles for installing services in docker containers
|
description: Roles for installing services in docker containers
|
||||||
version: 0.8.3
|
version: 0.8.4
|
||||||
readme: README.md
|
readme: README.md
|
||||||
repository: https://git.uumas.fi/uumas/ansible-docker
|
repository: https://git.uumas.fi/uumas/ansible-docker
|
||||||
license_file: LICENSE
|
license_file: LICENSE
|
||||||
|
|||||||
@@ -2,5 +2,6 @@
|
|||||||
|
|
||||||
docker_host_user: false
|
docker_host_user: false
|
||||||
docker_volume_type: named
|
docker_volume_type: named
|
||||||
|
docker_mariadb_config: {}
|
||||||
|
|
||||||
timezone: Etc/UTC
|
timezone: Etc/UTC
|
||||||
|
|||||||
@@ -37,6 +37,19 @@ argument_specs:
|
|||||||
description: "database_passwords[docker_service] is a string with the password used for communication between the service and database. Required if docker_database is postgres or mariadb"
|
description: "database_passwords[docker_service] is a string with the password used for communication between the service and database. Required if docker_database is postgres or mariadb"
|
||||||
type: dict
|
type: dict
|
||||||
required: false
|
required: false
|
||||||
|
docker_mariadb_config:
|
||||||
|
description: |
|
||||||
|
A dict specifying config for mariadb. For example
|
||||||
|
mysqld:
|
||||||
|
innodb_buffer_pool_size: '4G'
|
||||||
|
aria_pagecache_buffer_size': '4G'
|
||||||
|
would set
|
||||||
|
[mysqld]
|
||||||
|
innodb_buffer_pool_size = 4G
|
||||||
|
aria_pagecache_buffer_size = 4G
|
||||||
|
type: dict
|
||||||
|
required: false
|
||||||
|
default: {}
|
||||||
docker_additional_services:
|
docker_additional_services:
|
||||||
description: "List of additional services to configure (in separate containers). These will be accessible with hostname <docker_service_name>[_suffix]_<additional_service>"
|
description: "List of additional services to configure (in separate containers). These will be accessible with hostname <docker_service_name>[_suffix]_<additional_service>"
|
||||||
type: list
|
type: list
|
||||||
|
|||||||
@@ -28,6 +28,39 @@
|
|||||||
db_container_data: /data/db
|
db_container_data: /data/db
|
||||||
when: docker_database == 'mongo'
|
when: docker_database == 'mongo'
|
||||||
|
|
||||||
|
- name: Reset db container mount definition var
|
||||||
|
set_fact:
|
||||||
|
db_container_mount_definition: []
|
||||||
|
|
||||||
|
- name: Set up database container data bind mount
|
||||||
|
when: docker_volume_type == 'bind'
|
||||||
|
block:
|
||||||
|
- name: Create db data bind mount directory for {{ docker_service_name }}
|
||||||
|
file:
|
||||||
|
path: "{{ docker_mounts_dir }}/db"
|
||||||
|
state: directory
|
||||||
|
|
||||||
|
- name: Set db_container_mount_definition for db data bind mount
|
||||||
|
set_fact:
|
||||||
|
db_container_mount_definition: "{{ db_container_mount_definition + [{'source': docker_mounts_dir + '/db', 'target': db_container_data, 'type': 'bind'}] }}"
|
||||||
|
|
||||||
|
- name: Set up database container config bind mount
|
||||||
|
when: db_config_mounts_needed
|
||||||
|
block:
|
||||||
|
- name: Put mariadb config in place
|
||||||
|
template:
|
||||||
|
src: mariadb.cnf.j2
|
||||||
|
dest: "{{ docker_mounts_dir }}/mariadb.cnf"
|
||||||
|
|
||||||
|
- name: Set db_container_mount_definition for db config bind mount
|
||||||
|
set_fact:
|
||||||
|
db_container_mount_definition: "{{ db_container_mount_definition + [{'source': docker_mounts_dir + '/mariadb.cnf', 'target': '/etc/mysql/conf.d/custom.cnf', 'type': 'bind', 'read_only': true}] }}"
|
||||||
|
|
||||||
|
- name: Set db_container_mount_definition for db data named volume
|
||||||
|
set_fact:
|
||||||
|
db_container_mount_definition: "{{ db_container_mount_definition + [{'source': docker_service_name + '_db', 'target': db_container_data, 'type': 'volume'}] }}"
|
||||||
|
when: docker_volume_type == 'named'
|
||||||
|
|
||||||
- name: Set db published ports var
|
- name: Set db published ports var
|
||||||
set_fact:
|
set_fact:
|
||||||
db_published_ports: ["127.0.0.1:{{ ports[docker_service_name].db }}:{{ db_image_port }}"]
|
db_published_ports: ["127.0.0.1:{{ ports[docker_service_name].db }}:{{ db_image_port }}"]
|
||||||
@@ -41,7 +74,6 @@
|
|||||||
env: "{{ db_container_env | default(omit) }}"
|
env: "{{ db_container_env | default(omit) }}"
|
||||||
published_ports: "{{ db_published_ports | default(omit) }}"
|
published_ports: "{{ db_published_ports | default(omit) }}"
|
||||||
restart_policy: always
|
restart_policy: always
|
||||||
volumes:
|
mounts: "{{ db_container_mount_definition }}"
|
||||||
- "{{ docker_service_name }}_db:{{ db_container_data }}"
|
|
||||||
networks: "{{ container_networks | default(omit) }}"
|
networks: "{{ container_networks | default(omit) }}"
|
||||||
log_driver: local
|
log_driver: local
|
||||||
|
|||||||
@@ -1,12 +1,21 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
- name: Image build
|
- name: Image build
|
||||||
when: dockerfile is defined and dockerfile | length > 0
|
when: dockerfile_needed
|
||||||
block:
|
block:
|
||||||
|
- name: Set docker_build_directory variable
|
||||||
|
set_fact:
|
||||||
|
docker_build_directory: /opt/{{ docker_service }}/build
|
||||||
|
|
||||||
|
- name: Create container build directory
|
||||||
|
file:
|
||||||
|
path: "{{ docker_build_directory }}"
|
||||||
|
state: directory
|
||||||
|
|
||||||
- name: Put dockerfile in place
|
- name: Put dockerfile in place
|
||||||
template:
|
template:
|
||||||
src: Dockerfile.j2
|
src: Dockerfile.j2
|
||||||
dest: "/opt/{{ docker_service }}/Dockerfile"
|
dest: "{{ docker_build_directory }}/Dockerfile"
|
||||||
mode: 0644
|
mode: 0644
|
||||||
|
|
||||||
- name: Build docker image for {{ docker_service }}
|
- name: Build docker image for {{ docker_service }}
|
||||||
@@ -16,7 +25,7 @@
|
|||||||
force_source: true
|
force_source: true
|
||||||
build:
|
build:
|
||||||
pull: true
|
pull: true
|
||||||
path: "/opt/{{ docker_service }}"
|
path: "{{ docker_build_directory }}"
|
||||||
register: built_image
|
register: built_image
|
||||||
|
|
||||||
- name: Pull container image for {{ docker_service }}
|
- name: Pull container image for {{ docker_service }}
|
||||||
|
|||||||
@@ -8,12 +8,26 @@
|
|||||||
final_docker_volumes: "{{ docker_volumes }}"
|
final_docker_volumes: "{{ docker_volumes }}"
|
||||||
container_image: ''
|
container_image: ''
|
||||||
|
|
||||||
|
- name: Set assistive variables
|
||||||
|
set_fact:
|
||||||
|
template_mounts_needed: "{{ docker_mounts | selectattr('template', 'defined') | list | length > 0 }}"
|
||||||
|
volumes_needed: "{{ docker_mounts | selectattr('name', 'defined') | list | length > 0 or docker_database != 'none' }}"
|
||||||
|
dockerfile_needed: "{{ dockerfile is defined and dockerfile | length > 0 }}"
|
||||||
|
db_config_mounts_needed: "{{ docker_mariadb_config | length > 0 }}"
|
||||||
|
- name: Set more assistive variables
|
||||||
|
set_fact:
|
||||||
|
bind_volumes_needed: "{{ volumes_needed and docker_volume_type == 'bind' }}"
|
||||||
|
named_volumes_needed: "{{ volumes_needed and docker_volume_type == 'named' }}"
|
||||||
|
- name: Set even more assistive variables
|
||||||
|
set_fact:
|
||||||
|
create_opt_directory: "{{ dockerfile_needed or docker_host_user or bind_volumes_needed or template_mounts_needed or db_config_mounts_needed }}"
|
||||||
|
create_mounts_directory: "{{ bind_volumes_needed or template_mounts_needed or db_config_mounts_needed }}"
|
||||||
|
|
||||||
- name: Set docker service full name
|
- name: Set docker service full name
|
||||||
set_fact:
|
set_fact:
|
||||||
docker_service_name: "{{ docker_service }}_{{ docker_service_suffix }}"
|
docker_service_name: "{{ docker_service }}_{{ docker_service_suffix }}"
|
||||||
when: docker_service_suffix is defined
|
when: docker_service_suffix is defined
|
||||||
|
|
||||||
|
|
||||||
- name: Warn about docker_volumes legacy format
|
- name: Warn about docker_volumes legacy format
|
||||||
debug:
|
debug:
|
||||||
msg: "docker_volumes is deprecated. This support may be removed after december 2022. Use docker_mounts instead!"
|
msg: "docker_volumes is deprecated. This support may be removed after december 2022. Use docker_mounts instead!"
|
||||||
|
|||||||
@@ -24,10 +24,6 @@
|
|||||||
include_tasks: proxy.yml
|
include_tasks: proxy.yml
|
||||||
when: reverse_proxy_type != 'none'
|
when: reverse_proxy_type != 'none'
|
||||||
|
|
||||||
- name: Database container
|
|
||||||
include_tasks: database.yml
|
|
||||||
when: docker_database != 'none'
|
|
||||||
|
|
||||||
- name: Additional services
|
- name: Additional services
|
||||||
when: docker_additional_services is defined
|
when: docker_additional_services is defined
|
||||||
block:
|
block:
|
||||||
@@ -46,7 +42,7 @@
|
|||||||
path: "/opt/{{ docker_service }}"
|
path: "/opt/{{ docker_service }}"
|
||||||
state: directory
|
state: directory
|
||||||
mode: 0755
|
mode: 0755
|
||||||
when: (dockerfile is defined and dockerfile | length > 0) or docker_host_user or docker_volume_type == 'bind'
|
when: create_opt_directory
|
||||||
|
|
||||||
- name: Container image
|
- name: Container image
|
||||||
import_tasks: image.yml
|
import_tasks: image.yml
|
||||||
@@ -55,6 +51,44 @@
|
|||||||
include_tasks: host_user.yml
|
include_tasks: host_user.yml
|
||||||
when: docker_host_user
|
when: docker_host_user
|
||||||
|
|
||||||
|
- name: Create suffix directory
|
||||||
|
when: create_opt_directory and docker_service_suffix is defined
|
||||||
|
block:
|
||||||
|
- name: Create directory /opt/{{ docker_service + '/' + docker_service_suffix }}
|
||||||
|
file:
|
||||||
|
path: "/opt/{{ docker_service }}/{{ docker_service_suffix }}"
|
||||||
|
state: directory
|
||||||
|
owner: "{{ user.uid | default(omit) }}"
|
||||||
|
group: "{{ user.group | default(omit) }}"
|
||||||
|
mode: 0755
|
||||||
|
- name: Set container_workdir variable
|
||||||
|
set_fact:
|
||||||
|
container_workdir: /opt/{{ docker_service }}/{{ docker_service_suffix }}
|
||||||
|
|
||||||
|
- name: Set container_workdir variable
|
||||||
|
set_fact:
|
||||||
|
container_workdir: /opt/{{ docker_service }}
|
||||||
|
when: docker_service_suffix is not defined
|
||||||
|
|
||||||
|
- name: Create mounts directory
|
||||||
|
when: create_mounts_directory
|
||||||
|
block:
|
||||||
|
- name: Set docker_mounts_dir
|
||||||
|
set_fact:
|
||||||
|
docker_mounts_dir: "{{ container_workdir }}/mounts"
|
||||||
|
|
||||||
|
- name: Create directory {{ docker_mounts_dir }}
|
||||||
|
file:
|
||||||
|
path: "{{ docker_mounts_dir }}"
|
||||||
|
state: directory
|
||||||
|
owner: "{{ user.uid | default(omit) }}"
|
||||||
|
group: "{{ user.group | default(omit) }}"
|
||||||
|
mode: 0700
|
||||||
|
|
||||||
|
- name: Database container
|
||||||
|
include_tasks: database.yml
|
||||||
|
when: docker_database != 'none'
|
||||||
|
|
||||||
- name: Container volumes
|
- name: Container volumes
|
||||||
import_tasks: volumes.yml
|
import_tasks: volumes.yml
|
||||||
|
|
||||||
|
|||||||
@@ -1,36 +1,9 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
- name: Create directories and put files in them
|
- name: Create directories and put files in them
|
||||||
when:
|
when: create_mounts_directory
|
||||||
- docker_mounts | length > 0
|
|
||||||
- (docker_volume_type == 'bind' and docker_mounts | selectattr('name', 'defined') | list | length > 0) or (docker_mounts | selectattr('template', 'defined') | list | length > 0)
|
|
||||||
block:
|
block:
|
||||||
- name: Create directory /opt/{{ docker_service + '/' + docker_service_suffix }}
|
- name: Define mount directory owner
|
||||||
file:
|
|
||||||
path: "/opt/{{ docker_service }}/{{ docker_service_suffix }}"
|
|
||||||
state: directory
|
|
||||||
owner: "{{ user.uid | default(omit) }}"
|
|
||||||
group: "{{ user.group | default(omit) }}"
|
|
||||||
mode: 0755
|
|
||||||
when: docker_service_suffix is defined
|
|
||||||
|
|
||||||
- name: Set docker_mounts_dir
|
|
||||||
set_fact:
|
|
||||||
docker_mounts_dir: "/opt/{{ docker_service }}/{{ docker_service_suffix }}/mounts"
|
|
||||||
when: docker_service_suffix is defined
|
|
||||||
- name: Set docker_mounts_dir
|
|
||||||
set_fact:
|
|
||||||
docker_mounts_dir: "/opt/{{ docker_service }}/mounts"
|
|
||||||
when: docker_service_suffix is not defined
|
|
||||||
|
|
||||||
- name: Create directory {{ docker_mounts_dir }}
|
|
||||||
file:
|
|
||||||
path: "{{ docker_mounts_dir }}"
|
|
||||||
state: directory
|
|
||||||
owner: "{{ user.uid | default(omit) }}"
|
|
||||||
group: "{{ user.group | default(omit) }}"
|
|
||||||
mode: 0700
|
|
||||||
- name: Define mounts directory owner
|
|
||||||
set_fact:
|
set_fact:
|
||||||
mount_owner: "{{ user.uid if docker_host_user else image_user | default('') }}"
|
mount_owner: "{{ user.uid if docker_host_user else image_user | default('') }}"
|
||||||
mount_group: "{{ user.group if docker_host_user else '' }}"
|
mount_group: "{{ user.group if docker_host_user else '' }}"
|
||||||
|
|||||||
8
roles/container/templates/mariadb.cnf.j2
Normal file
8
roles/container/templates/mariadb.cnf.j2
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# {{ ansible_managed }}
|
||||||
|
|
||||||
|
{% for section in docker_mariadb_config | dict2items %}
|
||||||
|
[{{ section.key }}]
|
||||||
|
{% for item in section.value | dict2items %}
|
||||||
|
{{ item.key }} = {{ item.value }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
@@ -7,6 +7,6 @@ docker_additional_services: []
|
|||||||
docker_host_user: false
|
docker_host_user: false
|
||||||
wordpress_symlinks: false
|
wordpress_symlinks: false
|
||||||
|
|
||||||
wordpress_docker_volumes:
|
wordpress_php_memory_limit: 256M
|
||||||
- name: html
|
wordpress_php_post_max_size: 128M
|
||||||
path: /var/www/html
|
wordpress_php_upload_max_filesize: 32M
|
||||||
|
|||||||
5
roles/wordpress/templates/php.ini.j2
Normal file
5
roles/wordpress/templates/php.ini.j2
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
; {{ ansible_managed }}
|
||||||
|
|
||||||
|
memory_limit = {{ wordpress_php_memory_limit }}
|
||||||
|
post_max_size = {{ wordpress_php_post_max_size }}
|
||||||
|
upload_max_filesize = {{ wordpress_php_upload_max_filesize }}
|
||||||
7
roles/wordpress/vars/main.yml
Normal file
7
roles/wordpress/vars/main.yml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
wordpress_docker_volumes:
|
||||||
|
- name: html
|
||||||
|
path: /var/www/html
|
||||||
|
- template: php.ini
|
||||||
|
path: /usr/local/etc/php/conf.d/custom.ini
|
||||||
Reference in New Issue
Block a user