feat: Refactor the template for docker-compose.
This commit is contained in:
parent
e6d5c5a9a3
commit
b44e69ad7e
2
ansible-role-{{cookiecutter.app_name}}/.github/FUNDING.yml
vendored
Normal file
2
ansible-role-{{cookiecutter.app_name}}/.github/FUNDING.yml
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
github: {{ cookiecutter.github_user }}
|
||||||
|
patreon: {{ cookiecutter.patreon_user }}
|
@ -3,16 +3,16 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
This project adheres to [Semantic Versioning](http://semver.org/) and [Keep a changelog](https://github.com/olivierlacan/keep-a-changelog).
|
This project adheres to [Semantic Versioning](http://semver.org/) and [Keep a changelog](https://github.com/olivierlacan/keep-a-changelog).
|
||||||
|
|
||||||
## [Unreleased](https://github.com/{{ cookiecutter.github_user }}/{{ cookiecutter.app_name }}_role/tree/develop)
|
## [Unreleased](https://github.com/{{ cookiecutter.github_user }}/ansible-role-{{ cookiecutter.app_name }}/tree/develop)
|
||||||
### Changed
|
### Changed
|
||||||
### Added
|
### Added
|
||||||
### Removed
|
### Removed
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
## [X.Y.Z](https://github.com/{{ cookiecutter.github_user }}/{{ cookiecutter.app_name }}_role/tree/X.Y.Z)
|
## [X.Y.Z](https://github.com/{{ cookiecutter.github_user }}/ansible-role-{{ cookiecutter.app_name }}/tree/X.Y.Z)
|
||||||
### [Full Changelog](https://github.com/{{ cookiecutter.github_user }}/{{ cookiecutter.app_name }}_role/compare/1.0.0...X.Y.Z)
|
### [Full Changelog](https://github.com/{{ cookiecutter.github_user }}/ansible-role-{{ cookiecutter.app_name }}/compare/1.0.0...X.Y.Z)
|
||||||
### Changed
|
### Changed
|
||||||
*[#<issue_number>](https://github.com/{{ cookiecutter.github_user }}/{{ cookiecutter.app_name }}_role/issues/<issue_number>) \<Change description\>* @\<author\>
|
*[#<issue_number>](https://github.com/{{ cookiecutter.github_user }}/ansible-role-{{ cookiecutter.app_name }}/issues/<issue_number>) \<Change description\>* @\<author\>
|
||||||
|
|
||||||
## [1.0.0](https://github.com/{{ cookiecutter.github_user }}/{{ cookiecutter.app_name }}_role/tree/1.0.0)
|
## [1.0.0](https://github.com/{{ cookiecutter.github_user }}/ansible-role-{{ cookiecutter.app_name }}/tree/1.0.0)
|
||||||
- Initial release
|
- Initial release
|
@ -1,20 +1,12 @@
|
|||||||
# {{ cookiecutter.app_name | replace('_',' ') | title }} Ansible role
|
# {{ cookiecutter.app_name | replace('_',' ') | title }} Ansible role
|
||||||
|
|
||||||
![Logo](logo.gif)
|
![Logo](logo.gif)
|
||||||
|
|
||||||
[![Build Status](https://app.travis-ci.com/idealista/{{ cookiecutter.app_name }}_role.svg)](https://app.travis-ci.com/github/idealista/{{ cookiecutter.app_name }}_role)
|
|
||||||
[![Ansible Galaxy](https://img.shields.io/badge/galaxy-idealista.{{ cookiecutter.app_name }}_role-B62682.svg)](https://galaxy.ansible.com/idealista/{{ cookiecutter.app_name }}_role)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
This ansible role installs {% if cookiecutter.documentation_URL != "" %}[{% endif %}{{ cookiecutter.app_name | replace('_',' ') | title }}{% if cookiecutter.documentation_URL != "" %}]({{ cookiecutter.documentation_URL }}){% endif %} in a Debian environment. It has been tested for the following Debian versions:
|
|
||||||
{% if cookiecutter.debian_bullseye_support == 'True' %}* Bulleye{% endif %}
|
|
||||||
{% if cookiecutter.debian_buster_support == 'True' %}* Buster{% endif %}
|
|
||||||
|
|
||||||
This role has been generated using the [cookiecutter](https://github.com/cookiecutter/cookiecutter) tool, you can generate a similar role that fits your needs using the this [cookiecutter template](https://github.com/idealista/cookiecutter-ansible-role).
|
This role has been generated using the [cookiecutter](https://github.com/cookiecutter/cookiecutter) tool, you can generate a similar role that fits your needs using the this [cookiecutter template](https://github.com/idealista/cookiecutter-ansible-role).
|
||||||
|
|
||||||
- [Getting Started](#getting-started)
|
- [Getting Started](#getting-started)
|
||||||
- [Prerequisities](#prerequisities)
|
- [Prerequisities](#prerequisities)
|
||||||
- [Installing](#installing)
|
- [Installing](#installing)
|
||||||
- [Usage](#usage)
|
- [Usage](#usage)
|
||||||
- [Testing](#testing)
|
- [Testing](#testing)
|
||||||
- [Built With](#built-with)
|
- [Built With](#built-with)
|
||||||
@ -24,6 +16,7 @@ This role has been generated using the [cookiecutter](https://github.com/cookiec
|
|||||||
- [Contributing](#contributing)
|
- [Contributing](#contributing)
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
These instructions will get you a copy of the role for your Ansible playbook. Once launched, it will install {{ cookiecutter.app_name | replace('_',' ') | title }} in a Debian system.
|
These instructions will get you a copy of the role for your Ansible playbook. Once launched, it will install {{ cookiecutter.app_name | replace('_',' ') | title }} in a Debian system.
|
||||||
|
|
||||||
### Prerequisities
|
### Prerequisities
|
||||||
@ -38,46 +31,45 @@ For testing purposes, [Molecule](https://molecule.readthedocs.io/) with [Docker]
|
|||||||
|
|
||||||
Create or add to your roles dependency file (e.g requirements.yml):
|
Create or add to your roles dependency file (e.g requirements.yml):
|
||||||
|
|
||||||
```
|
```yml
|
||||||
- src: idealista.{{ cookiecutter.app_name }}_role
|
- src: ansible-role-{{ cookiecutter.app_name }}
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
name: {{ cookiecutter.app_name }}_role
|
name: {{cookiecutter.namespace}}.{{ cookiecutter.app_name }}
|
||||||
```
|
```
|
||||||
|
|
||||||
Install the role with ansible-galaxy command:
|
Install the role with ansible-galaxy command:
|
||||||
|
|
||||||
```
|
```sh
|
||||||
ansible-galaxy install -p roles -r requirements.yml -f
|
ansible-galaxy install -p roles -r requirements.yml -f
|
||||||
```
|
```
|
||||||
|
|
||||||
Use in a playbook:
|
Use in a playbook:
|
||||||
|
|
||||||
```
|
```yml
|
||||||
---
|
---
|
||||||
- hosts: someserver
|
- hosts: someserver
|
||||||
roles:
|
roles:
|
||||||
- role: {{ cookiecutter.app_name }}_role
|
- role: {{cookiecutter.namespace}}.{{ cookiecutter.app_name }}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Look to the [defaults](defaults/main.yml) properties file to see the possible configuration properties, it is very likely that you will not need to override any variables.
|
Look to the [defaults](defaults/main.yml) properties file to see the possible configuration properties, it is very likely that you will not need to override any variables.
|
||||||
|
|
||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
|
|
||||||
### Install dependencies
|
### Install dependencies
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ pipenv sync
|
pipenv sync
|
||||||
```
|
```
|
||||||
|
|
||||||
For more information read the [pipenv docs](ipenv-fork.readthedocs.io/en/latest/).
|
For more information read the [pipenv docs](https://pipenv-fork.readthedocs.io/en/latest/).
|
||||||
|
|
||||||
### Testing
|
### Run test
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ pipenv run molecule test
|
pipenv run molecule test
|
||||||
```
|
```
|
||||||
|
|
||||||
## Built With
|
## Built With
|
||||||
@ -88,15 +80,14 @@ $ pipenv run molecule test
|
|||||||
|
|
||||||
## Versioning
|
## Versioning
|
||||||
|
|
||||||
For the versions available, see the [tags on this repository](https://github.com/{{ cookiecutter.github_user }}/{{ cookiecutter.app_name }}_role/tags).
|
For the versions available, see the [tags on this repository](https://github.com/{{ cookiecutter.github_user }}/ansible-role-{{ cookiecutter.app_name }}/tags).
|
||||||
|
|
||||||
Additionaly you can see what change in each version in the [CHANGELOG.md](CHANGELOG.md) file.
|
Additionaly you can see what change in each version in the [CHANGELOG.md](CHANGELOG.md) file.
|
||||||
|
|
||||||
## Authors
|
## Authors
|
||||||
|
|
||||||
* **Idealista** - *Work with* - [idealista](https://github.com/idealista)
|
- **Idealista**
|
||||||
|
- **Laur IVAN**
|
||||||
See also the list of [contributors](https://github.com/{{ cookiecutter.github_user }}/{{ cookiecutter.app_name }}_role/contributors) who participated in this project.
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
16
ansible-role-{{cookiecutter.app_name}}/defaults/main.yml
Normal file
16
ansible-role-{{cookiecutter.app_name}}/defaults/main.yml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
## General
|
||||||
|
# Version
|
||||||
|
{{ cookiecutter.app_name }}_version: 1.0.0
|
||||||
|
|
||||||
|
# {{ cookiecutter.app_name }} paths
|
||||||
|
{{ cookiecutter.app_name }}_root_path: /opt/{{ cookiecutter.app_name }}
|
||||||
|
{{ cookiecutter.app_name }}_config_path: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_root_path {% raw %}}}{% endraw %}/conf"
|
||||||
|
{{ cookiecutter.app_name }}_skeleton_paths:
|
||||||
|
- "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_config_path {% raw %}}}{% endraw %}"
|
||||||
|
|
||||||
|
# Documentation
|
||||||
|
{{ cookiecutter.app_name }}_documentation_link: "{{ cookiecutter.documentation_URL }}"
|
||||||
|
|
||||||
|
|
2
ansible-role-{{cookiecutter.app_name}}/handlers/main.yml
Normal file
2
ansible-role-{{cookiecutter.app_name}}/handlers/main.yml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
---
|
||||||
|
# Handlers for {{ cookiecutter.app_name }}
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
26
ansible-role-{{cookiecutter.app_name}}/meta/main.yml
Normal file
26
ansible-role-{{cookiecutter.app_name}}/meta/main.yml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
galaxy_info:
|
||||||
|
author: {{ cookiecutter.author }}
|
||||||
|
namespace: {{ cookiecutter.namespace }}
|
||||||
|
{% if cookiecutter.company != "" %}company: {{ cookiecutter.company }}{% endif %}
|
||||||
|
role_name: {{ cookiecutter.app_name }}
|
||||||
|
description: {{ cookiecutter.app_name | replace('_',' ') | title }} Role
|
||||||
|
min_ansible_version: {{ cookiecutter.min_ansible_version }}
|
||||||
|
min_ansible_version: {{ cookiecutter.min_ansible_container_version }}
|
||||||
|
license: {{ cookiecutter.license }}
|
||||||
|
galaxy_tags:
|
||||||
|
- {{ cookiecutter.galaxy_tag_1 }}
|
||||||
|
- {{ cookiecutter.galaxy_tag_2 }}
|
||||||
|
- {{ cookiecutter.galaxy_tag_3 }}
|
||||||
|
platforms:
|
||||||
|
{% if cookiecutter.platforms.debian_list %}
|
||||||
|
- name: Debian
|
||||||
|
versions: {% for ver in cookiecutter.platforms.debian_list %}
|
||||||
|
- {{ ver }}{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% if cookiecutter.platforms.ubuntu_list %}
|
||||||
|
- name: Ubuntu
|
||||||
|
versions: {% for ver in cookiecutter.platforms.ubuntu_list %}
|
||||||
|
- {{ ver }}{% endfor %}
|
||||||
|
{% endif %}
|
@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
- name: Clean up
|
||||||
|
hosts: all
|
||||||
|
gather_facts: true
|
||||||
|
tasks:
|
||||||
|
- name: Check if the docker-compose file exists.
|
||||||
|
ansible.builtin.stat:
|
||||||
|
path: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_config_path | expanduser | realpath {% raw %}}}{% endraw %}/docker-compose.yml"
|
||||||
|
register: docker_compose_file
|
||||||
|
|
||||||
|
- name: Remove docker-compose.
|
||||||
|
community.docker.docker_compose:
|
||||||
|
project_src: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_config_path | expanduser | realpath {% raw %}}}{% endraw %}/"
|
||||||
|
build: false
|
||||||
|
state: absent
|
||||||
|
when: docker_compose_file.stat.exists
|
||||||
|
become: false
|
||||||
|
|
||||||
|
- name: Remove the docker-compose file
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_config_path | expanduser | realpath {% raw %}}}{% endraw %}/docker-compose.yml"
|
||||||
|
state: absent
|
||||||
|
when: docker_compose_file.stat.exists
|
@ -2,4 +2,4 @@
|
|||||||
- name: Converge
|
- name: Converge
|
||||||
hosts: {{ cookiecutter.app_name }}_group
|
hosts: {{ cookiecutter.app_name }}_group
|
||||||
roles:
|
roles:
|
||||||
- role: {{ cookiecutter.app_name }}_role
|
- role: "{{cookiecutter.namespace}}.{{ cookiecutter.app_name }}"
|
@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
- name: Destroy
|
||||||
|
hosts: localhost
|
||||||
|
connection: local
|
||||||
|
gather_facts: false
|
||||||
|
no_log: "{% raw %}{{ molecule_no_log }}{% endraw %}"
|
||||||
|
tasks:
|
||||||
|
# Developer must implement.
|
||||||
|
- name: Remove the docker image
|
||||||
|
community.docker.docker_container:
|
||||||
|
name: {{ cookiecutter.app_name }}
|
||||||
|
state: absent
|
||||||
|
|
||||||
|
# Mandatory configuration for Molecule to function.
|
||||||
|
|
||||||
|
- name: Populate instance config
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
instance_conf: {}
|
||||||
|
|
||||||
|
- name: Dump instance config
|
||||||
|
ansible.builtin.copy:
|
||||||
|
content: |
|
||||||
|
# Molecule managed
|
||||||
|
{% raw %}{{ instance_conf | to_json | from_json | to_yaml }}{% endraw %}
|
||||||
|
dest: "{% raw %}{{ molecule_instance_config }}{% endraw %}"
|
||||||
|
mode: 0600
|
||||||
|
when: server.changed | default(false) | bool
|
@ -1,6 +1,11 @@
|
|||||||
---
|
---
|
||||||
dependency:
|
dependency:
|
||||||
name: galaxy
|
name: galaxy
|
||||||
|
options:
|
||||||
|
ignore-certs: true
|
||||||
|
ignore-errors: true
|
||||||
|
role-file: molecule/requirements.yml
|
||||||
|
requirements-file: molecule/requirements.yml
|
||||||
driver:
|
driver:
|
||||||
name: docker
|
name: docker
|
||||||
lint: |
|
lint: |
|
||||||
@ -10,8 +15,9 @@ platforms:
|
|||||||
- name: {{ cookiecutter.app_name }}
|
- name: {{ cookiecutter.app_name }}
|
||||||
groups:
|
groups:
|
||||||
- {{ cookiecutter.app_name }}_group
|
- {{ cookiecutter.app_name }}_group
|
||||||
image: ${MOLECULE_DISTRO:-debian:bullseye-slim}
|
image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos8}-ansible:latest"
|
||||||
privileged: false
|
privileged: true
|
||||||
|
pre_build_image: true
|
||||||
capabilities:
|
capabilities:
|
||||||
- SYS_ADMIN
|
- SYS_ADMIN
|
||||||
tmpfs:
|
tmpfs:
|
||||||
@ -20,9 +26,13 @@ platforms:
|
|||||||
- /run/lock
|
- /run/lock
|
||||||
volumes:
|
volumes:
|
||||||
- '/sys/fs/cgroup:/sys/fs/cgroup:ro'
|
- '/sys/fs/cgroup:/sys/fs/cgroup:ro'
|
||||||
|
- '/var/run/docker.sock:/tmp/docker_mounted.sock'
|
||||||
command: '/lib/systemd/systemd'
|
command: '/lib/systemd/systemd'
|
||||||
stop_signal: 'RTMIN+3'
|
stop_signal: 'RTMIN+3'
|
||||||
provisioner:
|
provisioner:
|
||||||
name: ansible
|
name: ansible
|
||||||
|
playbooks:
|
||||||
|
converge: ${MOLECULE_PLAYBOOK:-converge.yml}
|
||||||
verifier:
|
verifier:
|
||||||
name: ansible
|
name: ansible
|
||||||
|
|
@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
- name: Setup the test machine
|
||||||
|
hosts: {{ cookiecutter.app_name }}
|
||||||
|
tasks:
|
||||||
|
- name: Check if /var/run/docker.sock already exists
|
||||||
|
ansible.builtin.stat:
|
||||||
|
path: "/var/run/docker.sock"
|
||||||
|
register: docker_sock_stat
|
||||||
|
|
||||||
|
- name: Create docker.sock
|
||||||
|
ansible.builtin.raw: touch /var/run/docker.sock
|
||||||
|
become: true
|
||||||
|
changed_when: false
|
||||||
|
when: not docker_sock_stat.stat.exists
|
||||||
|
|
||||||
|
- name: Move docker.sock from tmp
|
||||||
|
ansible.builtin.raw: >
|
||||||
|
mount --move /tmp/docker_mounted.sock /var/run/docker.sock
|
||||||
|
become: true
|
||||||
|
changed_when: false
|
||||||
|
when: not docker_sock_stat.stat.exists
|
||||||
|
|
||||||
|
- name: Update apt cache.
|
||||||
|
ansible.builtin.apt: update_cache=yes cache_valid_time=600
|
||||||
|
when: ansible_os_family == 'Debian'
|
||||||
|
|
||||||
|
- name: Install python requests
|
||||||
|
ansible.builtin.pip:
|
||||||
|
name:
|
||||||
|
- requests
|
||||||
|
- docker
|
||||||
|
- docker-compose
|
||||||
|
|
||||||
|
- name: Install docker
|
||||||
|
vars:
|
||||||
|
docker_service_manage: false
|
||||||
|
ansible.builtin.include_role:
|
||||||
|
name: geerlingguy.docker
|
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
roles:
|
||||||
|
- geerlingguy.docker
|
||||||
|
collections: []
|
@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
## TODO: Remember to adapt goss tests to your convenience
|
||||||
|
|
||||||
|
|
||||||
|
## Check if ports are really exposed
|
||||||
|
# port:
|
||||||
|
# # Check port at IPv6
|
||||||
|
# # https://github.com/aelsabbahy/goss/issues/177
|
||||||
|
# tcp6:<port>:
|
||||||
|
# listening: true
|
||||||
|
# ip:
|
||||||
|
# - '::'
|
23
ansible-role-{{cookiecutter.app_name}}/tasks/config.yml
Normal file
23
ansible-role-{{cookiecutter.app_name}}/tasks/config.yml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
- name: "{{ cookiecutter.app_name | upper }} | Set up directories"
|
||||||
|
ansible.builtin.file:
|
||||||
|
state: directory
|
||||||
|
path: "{%raw%}{{{%endraw%} item }}"
|
||||||
|
owner: "{%raw%}{{{%endraw%} ansible_effective_user_id {%raw%}}}{%endraw%}"
|
||||||
|
group: "{%raw%}{{{%endraw%} ansible_effective_group_id {%raw%}}}{%endraw%}"
|
||||||
|
mode: "0750"
|
||||||
|
with_items:
|
||||||
|
- "{%raw%}}}{%endraw%} {{ cookiecutter.app_name }}_skeleton_paths {%raw%}}}{%endraw%}"
|
||||||
|
tags:
|
||||||
|
- {{ cookiecutter.app_name }}_configure
|
||||||
|
become: true
|
||||||
|
|
||||||
|
- name: "{{ cookiecutter.app_name | upper }} | Write configuration files"
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: "{%raw%}}}{%endraw%} item {%raw%}}}{%endraw%}.j2"
|
||||||
|
dest: "{%raw%}}}{%endraw%} cookiecutter.app_name }}_config_path | expanduser | realpath {%raw%}}}{%endraw%}/{%raw%}}}{%endraw%} item {%raw%}}}{%endraw%}"
|
||||||
|
mode: '0640'
|
||||||
|
loop:
|
||||||
|
- "docker-compose.yml"
|
||||||
|
tags:
|
||||||
|
- {{ cookiecutter.app_name }}_configure
|
7
ansible-role-{{cookiecutter.app_name}}/tasks/install.yml
Normal file
7
ansible-role-{{cookiecutter.app_name}}/tasks/install.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
- name: "{{ cookiecutter.app_name | upper }} | Ensure {{ cookiecutter.app_name }} is running"
|
||||||
|
community.docker.docker_compose:
|
||||||
|
project_src: "{%raw%}{{{%endraw%} {{ cookiecutter.app_name }}_config_path | expanduser | realpath {%raw%}}}{%endraw%}"
|
||||||
|
build: false
|
||||||
|
tags:
|
||||||
|
- {{ cookiecutter.app_name }}_install
|
12
ansible-role-{{cookiecutter.app_name}}/tasks/main.yml
Normal file
12
ansible-role-{{cookiecutter.app_name}}/tasks/main.yml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: "{{ cookiecutter.app_name | upper }} | Configure"
|
||||||
|
import_tasks: config.yml
|
||||||
|
tags:
|
||||||
|
- {{ cookiecutter.app_name }}_configure
|
||||||
|
|
||||||
|
- name:" {{ cookiecutter.app_name | upper }} | Install"
|
||||||
|
import_tasks: install.yml
|
||||||
|
tags:
|
||||||
|
- {{ cookiecutter.app_name }}_install
|
||||||
|
|
@ -0,0 +1,3 @@
|
|||||||
|
# {{ cookiecutter.app_name }} docker compose
|
||||||
|
version: '3.9'
|
||||||
|
services:
|
@ -10,8 +10,8 @@ install:
|
|||||||
- pipenv sync
|
- pipenv sync
|
||||||
env:
|
env:
|
||||||
jobs:
|
jobs:
|
||||||
{% if cookiecutter.debian_buster_support == 'True' %}- MOLECULE_DISTRO=debian:buster-slim{% endif %}
|
{% if "buster" in cookiecutter.platforms.debian_list %}- MOLECULE_DISTRO=debian:buster-slim{% endif %}
|
||||||
{% if cookiecutter.debian_bullseye_support == 'True' %}- MOLECULE_DISTRO=debian:bullseye-slim{% endif %}
|
{% if "bullseye" in cookiecutter.platforms.debian_list %}- MOLECULE_DISTRO=debian:bullseye-slim{% endif %}
|
||||||
script:
|
script:
|
||||||
- pipenv run molecule test --all
|
- pipenv run molecule test --all
|
||||||
|
|
||||||
@ -22,4 +22,4 @@ notifications:
|
|||||||
on_success: change
|
on_success: change
|
||||||
on_failure: always
|
on_failure: always
|
||||||
recipients:
|
recipients:
|
||||||
- desarrollo.benders@idealista.com
|
- laur.ivan@gmail.com
|
@ -2,11 +2,13 @@
|
|||||||
"comment_0":"The role name will be the value you assign to app_name with _role appended",
|
"comment_0":"The role name will be the value you assign to app_name with _role appended",
|
||||||
"comment_1":"Introduce in exec_name the executable file name, you can change it later in the defaults/main.yml if you don't know it",
|
"comment_1":"Introduce in exec_name the executable file name, you can change it later in the defaults/main.yml if you don't know it",
|
||||||
"app_name": "",
|
"app_name": "",
|
||||||
"exec_name":"",
|
"github_user": "equinoxel",
|
||||||
"github_user": "idealista",
|
"patreon_user": "laurivan",
|
||||||
"company": "Idealista S.A.U.",
|
"company": "",
|
||||||
"author": "",
|
"author": "Laur Ivan (laur.ivan@gmail.com)",
|
||||||
"min_ansible_version": "",
|
"namespace": "laurivan",
|
||||||
|
"min_ansible_version": "2.4",
|
||||||
|
"min_ansible_container_version": "2.4",
|
||||||
"ansible_version": "5.2.0",
|
"ansible_version": "5.2.0",
|
||||||
"molecule_version": "3.4.0",
|
"molecule_version": "3.4.0",
|
||||||
"python_docker_version": "5.0.0",
|
"python_docker_version": "5.0.0",
|
||||||
@ -17,11 +19,11 @@
|
|||||||
"galaxy_tag_1":"tag1",
|
"galaxy_tag_1":"tag1",
|
||||||
"galaxy_tag_2":"tag2",
|
"galaxy_tag_2":"tag2",
|
||||||
"galaxy_tag_3":"tag3",
|
"galaxy_tag_3":"tag3",
|
||||||
"debian_bullseye_support":["True", "False"],
|
"platforms": {
|
||||||
"debian_buster_support":["True", "False"],
|
"debian_list": ["bullseye", "buster"],
|
||||||
"has_service":["True", "False"],
|
"ubuntu_list": ["bionic", "focal", "jammy"]
|
||||||
|
},
|
||||||
"has_files":["True", "False"],
|
"has_files":["True", "False"],
|
||||||
"comment_2":"If there is service the following options will not have any effect",
|
|
||||||
"has_handlers":["True", "False"],
|
"has_handlers":["True", "False"],
|
||||||
"has_templates":["True", "False"],
|
"has_templates":["True", "False"],
|
||||||
"documentation_URL":""
|
"documentation_URL":""
|
||||||
|
@ -18,17 +18,15 @@ def checkInput():
|
|||||||
|
|
||||||
def configureRole():
|
def configureRole():
|
||||||
# Remove or not the service
|
# Remove or not the service
|
||||||
if not {{ cookiecutter.has_service }}:
|
|
||||||
# Delete the service and things that reference the service
|
shutil.rmtree("molecule/default/group_vars")
|
||||||
os.remove("tasks/service.yml")
|
# Remove or not the handlers folder
|
||||||
os.remove("templates/{{ cookiecutter.app_name }}.service.j2")
|
if not {{ cookiecutter.has_handlers }}:
|
||||||
shutil.rmtree("molecule/default/group_vars")
|
shutil.rmtree("handlers")
|
||||||
# Remove or not the handlers folder
|
# Remove or not the templates folder
|
||||||
if not {{ cookiecutter.has_handlers }}:
|
if not {{ cookiecutter.has_templates }}:
|
||||||
shutil.rmtree("handlers")
|
shutil.rmtree("templates")
|
||||||
# Remove or not the templates folder
|
|
||||||
if not {{ cookiecutter.has_templates }}:
|
|
||||||
shutil.rmtree("templates")
|
|
||||||
# Remove or not the files folder
|
# Remove or not the files folder
|
||||||
if not {{ cookiecutter.has_files }}:
|
if not {{ cookiecutter.has_files }}:
|
||||||
shutil.rmtree("files")
|
shutil.rmtree("files")
|
||||||
|
1
test.sh
1
test.sh
@ -14,7 +14,6 @@ printf "cookiecutter==1.7.2\nJinja2==2.11.2" > requirements.txt && pipenv instal
|
|||||||
molecule_docker_version="0.2.4" \
|
molecule_docker_version="0.2.4" \
|
||||||
ansible_lint_version="5.3.2" \
|
ansible_lint_version="5.3.2" \
|
||||||
yamllint_version="1.28.0" \
|
yamllint_version="1.28.0" \
|
||||||
has_service="False" \
|
|
||||||
has_files="False" \
|
has_files="False" \
|
||||||
has_handlers="False" \
|
has_handlers="False" \
|
||||||
has_templates="False" \
|
has_templates="False" \
|
||||||
|
@ -1,62 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
## General
|
|
||||||
# Version
|
|
||||||
{{ cookiecutter.app_name }}_version: 1.0.0
|
|
||||||
{{ cookiecutter.app_name }}_release_system: linux_amd64
|
|
||||||
|
|
||||||
# Package URL
|
|
||||||
{{ cookiecutter.app_name }}_release_name: "exampleapplication_{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_version {% raw %}}}{% endraw %}_{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_release_system {% raw %}}}{% endraw %}"
|
|
||||||
{{ cookiecutter.app_name }}_package: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_release_name {% raw %}}}{% endraw %}.tar.gz"
|
|
||||||
{{ cookiecutter.app_name }}_url: "https://github.com/someuser/somerepo/releases/download/v{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_version {% raw %}}}{% endraw %}/{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_package {% raw %}}}{% endraw %}"
|
|
||||||
|
|
||||||
# Package paths
|
|
||||||
{{ cookiecutter.app_name }}_download_path: /usr/src
|
|
||||||
{{ cookiecutter.app_name }}_package_path: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_download_path {% raw %}}}{% endraw %}/{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_package {% raw %}}}{% endraw %}"
|
|
||||||
{{ cookiecutter.app_name }}_src_bin: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_download_path {% raw %}}}{% endraw %}/{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_release_name {% raw %}}}{% endraw %}/bin/{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_exec_name {% raw %}}}{% endraw %}"
|
|
||||||
|
|
||||||
# Set true to force the download and installation of the binary
|
|
||||||
{{ cookiecutter.app_name }}_force_reinstall: false
|
|
||||||
|
|
||||||
# Installation path
|
|
||||||
{{ cookiecutter.app_name }}_root_path: /opt/{{ cookiecutter.app_name }}
|
|
||||||
{{ cookiecutter.app_name }}_bin_path: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_root_path {% raw %}}}{% endraw %}/bin"
|
|
||||||
{{ cookiecutter.app_name }}_skeleton_paths:
|
|
||||||
- "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_bin_path {% raw %}}}{% endraw %}"
|
|
||||||
{{ cookiecutter.app_name }}_exec_name: {{ cookiecutter.exec_name }}
|
|
||||||
{% if cookiecutter.has_service == 'True' %}
|
|
||||||
## Service options
|
|
||||||
# Documentation
|
|
||||||
{{ cookiecutter.app_name }}_documentation_link: "{{ cookiecutter.documentation_URL }}"
|
|
||||||
|
|
||||||
# Owner
|
|
||||||
{{ cookiecutter.app_name }}_user: exampleuser
|
|
||||||
{{ cookiecutter.app_name }}_group: examplegroup
|
|
||||||
{{ cookiecutter.app_name }}_user_shell: /usr/sbin/nologin
|
|
||||||
|
|
||||||
# Maximum number of files limit
|
|
||||||
{{ cookiecutter.app_name }}_max_files: 32768
|
|
||||||
|
|
||||||
# Start on boot
|
|
||||||
{{ cookiecutter.app_name }}_service_enabled: True
|
|
||||||
# Current state: started, stopped
|
|
||||||
{{ cookiecutter.app_name }}_service_state: started
|
|
||||||
|
|
||||||
# Logs
|
|
||||||
# If wanted to output the logs to a file define the following variable
|
|
||||||
# More information at https://www.freedesktop.org/software/systemd/man/systemd.exec.html#StandardOutput=
|
|
||||||
# {{ cookiecutter.app_name }}_log_path: /var/log
|
|
||||||
# {{ cookiecutter.app_name }}_log_file: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_log_path {% raw %}}}{% endraw %}/{{ cookiecutter.app_name }}.log"
|
|
||||||
{{ cookiecutter.app_name }}_log_output: "{% raw %}{%{% endraw %} if {{ cookiecutter.app_name }}_log_file is defined {% raw %}%}{% endraw %} file:{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_log_file {% raw %}}}{% endraw %} {% raw %}{%{% endraw %} else {% raw %}%}{% endraw %} journal {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %}"
|
|
||||||
|
|
||||||
# Flags
|
|
||||||
{{ cookiecutter.app_name }}_port: # the port exposed by the service goes here
|
|
||||||
{{ cookiecutter.app_name }}_flag1_value: example_value_1
|
|
||||||
{{ cookiecutter.app_name }}_flag2_value: example_value_2
|
|
||||||
{{ cookiecutter.app_name }}_options:
|
|
||||||
- "port {% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_port {% raw %}}}{% endraw %}"
|
|
||||||
- "flag1 {% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_flag1_value {% raw %}}}{% endraw %}"
|
|
||||||
- "flag2 {% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_flag2_value {% raw %}}}{% endraw %}"
|
|
||||||
|
|
||||||
{{ cookiecutter.app_name }}_private_tmp: true
|
|
||||||
{% endif %}
|
|
@ -1,8 +0,0 @@
|
|||||||
---
|
|
||||||
{% if cookiecutter.has_service == 'True' %}
|
|
||||||
- name: restart {{ cookiecutter.app_name }}
|
|
||||||
systemd:
|
|
||||||
name: {{ cookiecutter.app_name }}
|
|
||||||
state: restarted
|
|
||||||
when: {{ cookiecutter.app_name }}_service_state != 'stopped'
|
|
||||||
{% endif %}
|
|
@ -1,17 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
galaxy_info:
|
|
||||||
author: {{ cookiecutter.author }}
|
|
||||||
company: {{ cookiecutter.company }}
|
|
||||||
description: {{ cookiecutter.app_name | replace('_',' ') | title }} Role
|
|
||||||
min_ansible_version: {{ cookiecutter.min_ansible_version }}
|
|
||||||
license: {{ cookiecutter.license }}
|
|
||||||
galaxy_tags:
|
|
||||||
- {{ cookiecutter.galaxy_tag_1 }}
|
|
||||||
- {{ cookiecutter.galaxy_tag_2 }}
|
|
||||||
- {{ cookiecutter.galaxy_tag_3 }}
|
|
||||||
platforms:
|
|
||||||
- name: Debian
|
|
||||||
versions:
|
|
||||||
{% if cookiecutter.debian_bullseye_support == 'True' %}- bullseye{% endif %}
|
|
||||||
{% if cookiecutter.debian_buster_support == 'True' %}- buster{% endif %}
|
|
@ -1,12 +0,0 @@
|
|||||||
# Molecule managed
|
|
||||||
|
|
||||||
{% raw %}{% if item.registry is defined %}
|
|
||||||
FROM {{ item.registry.url }}/{{ item.image }}
|
|
||||||
{% else %}
|
|
||||||
FROM {{ item.image }}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
# install minimal packages for debian slim images
|
|
||||||
RUN apt-get update && \
|
|
||||||
apt-get install -y python3 sudo bash ca-certificates iproute2 systemd systemd-sysv python3-pip && \
|
|
||||||
apt-get clean{% endraw %}
|
|
@ -1,46 +0,0 @@
|
|||||||
---
|
|
||||||
## TODO: Remember to adapt goss tests to your convenience
|
|
||||||
{% if cookiecutter.has_service == 'True' %}
|
|
||||||
service:
|
|
||||||
{{ cookiecutter.app_name }}:
|
|
||||||
enabled: true
|
|
||||||
running: true
|
|
||||||
|
|
||||||
process:
|
|
||||||
{{ cookiecutter.exec_name }}:
|
|
||||||
running: true
|
|
||||||
|
|
||||||
user:
|
|
||||||
exampleuser:
|
|
||||||
exists: true
|
|
||||||
groups:
|
|
||||||
- examplegroup
|
|
||||||
shell: /usr/sbin/nologin
|
|
||||||
group:
|
|
||||||
examplegroup:
|
|
||||||
exists: true
|
|
||||||
{% endif %}
|
|
||||||
file:
|
|
||||||
/opt/{{ cookiecutter.app_name }}:
|
|
||||||
{%- if cookiecutter.has_service == 'True' %}
|
|
||||||
owner: exampleuser
|
|
||||||
group: examplegroup
|
|
||||||
{%- endif %}
|
|
||||||
exists: true
|
|
||||||
filetype: directory
|
|
||||||
/opt/{{ cookiecutter.app_name }}/bin:
|
|
||||||
{%- if cookiecutter.has_service == 'True' %}
|
|
||||||
owner: exampleuser
|
|
||||||
group: examplegroup
|
|
||||||
{%- endif %}
|
|
||||||
exists: true
|
|
||||||
filetype: directory
|
|
||||||
|
|
||||||
## Check if ports are really exposed
|
|
||||||
# port:
|
|
||||||
# # Check port at IPv6
|
|
||||||
# # https://github.com/aelsabbahy/goss/issues/177
|
|
||||||
# tcp6:<port>:
|
|
||||||
# listening: true
|
|
||||||
# ip:
|
|
||||||
# - '::'
|
|
@ -1 +0,0 @@
|
|||||||
---
|
|
@ -1,95 +0,0 @@
|
|||||||
---
|
|
||||||
{% if cookiecutter.has_service == 'True' %}
|
|
||||||
- name: {{ cookiecutter.app_name | upper }} | Ensure {{ cookiecutter.app_name }} group
|
|
||||||
group:
|
|
||||||
name: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_group {% raw %}}}{% endraw %}"
|
|
||||||
system: yes
|
|
||||||
state: present
|
|
||||||
tags:
|
|
||||||
- {{ cookiecutter.app_name }}_install
|
|
||||||
|
|
||||||
- name: {{ cookiecutter.app_name | upper }} | Ensure {{ cookiecutter.app_name }} user
|
|
||||||
user:
|
|
||||||
name: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_user {% raw %}}}{% endraw %}"
|
|
||||||
group: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_group {% raw %}}}{% endraw %}"
|
|
||||||
system: yes
|
|
||||||
shell: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_user_shell {% raw %}}}{% endraw %}"
|
|
||||||
createhome: no
|
|
||||||
tags:
|
|
||||||
- {{ cookiecutter.app_name }}_install
|
|
||||||
{% endif %}
|
|
||||||
- name: {{ cookiecutter.app_name | upper }} | Ensure skeleton paths
|
|
||||||
file:
|
|
||||||
dest: "{% raw %}{{{% endraw %} item {% raw %}}}{% endraw %}"
|
|
||||||
{%- if cookiecutter.has_service == 'True' %}
|
|
||||||
owner: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_user {% raw %}}}{% endraw %}"
|
|
||||||
group: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_group {% raw %}}}{% endraw %}"
|
|
||||||
{%- endif %}
|
|
||||||
mode: 0755
|
|
||||||
state: directory
|
|
||||||
with_items:
|
|
||||||
- "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_skeleton_paths {% raw %}}}{% endraw %}"
|
|
||||||
tags:
|
|
||||||
- {{ cookiecutter.app_name }}_install
|
|
||||||
|
|
||||||
- name: {{ cookiecutter.app_name | upper }} | Ensure skeleton log paths
|
|
||||||
file:
|
|
||||||
dest: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_log_path {% raw %}}}{% endraw %}"
|
|
||||||
{%- if cookiecutter.has_service == 'True' %}
|
|
||||||
owner: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_user {% raw %}}}{% endraw %}"
|
|
||||||
group: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_group {% raw %}}}{% endraw %}"
|
|
||||||
{%- endif %}
|
|
||||||
mode: 0755
|
|
||||||
state: directory
|
|
||||||
when: {{ cookiecutter.app_name }}_log_file is defined
|
|
||||||
tags:
|
|
||||||
- {{ cookiecutter.app_name }}_install
|
|
||||||
|
|
||||||
- name: {{ cookiecutter.app_name | upper }} | Check {{ cookiecutter.app_name }} version
|
|
||||||
command: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_exec_name {% raw %}}}{% endraw %} --version"
|
|
||||||
register: {{ cookiecutter.app_name }}_check
|
|
||||||
changed_when: false
|
|
||||||
ignore_errors: true
|
|
||||||
check_mode: no
|
|
||||||
tags:
|
|
||||||
- {{ cookiecutter.app_name }}_install
|
|
||||||
|
|
||||||
- name: {{ cookiecutter.app_name | upper }} | Download package
|
|
||||||
get_url:
|
|
||||||
url: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_url {% raw %}}}{% endraw %}"
|
|
||||||
dest: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_package_path {% raw %}}}{% endraw %}"
|
|
||||||
when: {{ cookiecutter.app_name }}_force_reinstall or {{ cookiecutter.app_name }}_check is failed or {{ cookiecutter.app_name }}_version not in {{ cookiecutter.app_name }}_check.stderr
|
|
||||||
tags:
|
|
||||||
- {{ cookiecutter.app_name }}_install
|
|
||||||
|
|
||||||
- name: {{ cookiecutter.app_name | upper }} | Extract downloaded package
|
|
||||||
unarchive:
|
|
||||||
src: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_package_path {% raw %}}}{% endraw %}"
|
|
||||||
dest: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_download_path {% raw %}}}{% endraw %}"
|
|
||||||
remote_src: True
|
|
||||||
when: {{ cookiecutter.app_name }}_force_reinstall or {{ cookiecutter.app_name }}_check is failed or {{ cookiecutter.app_name }}_version not in {{ cookiecutter.app_name }}_check.stderr
|
|
||||||
tags:
|
|
||||||
- {{ cookiecutter.app_name }}_install
|
|
||||||
|
|
||||||
- name: {{ cookiecutter.app_name | upper }} | Copy binary
|
|
||||||
copy:
|
|
||||||
src: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_src_bin {% raw %}}}{% endraw %}"
|
|
||||||
dest: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_bin_path {% raw %}}}{% endraw %}/{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_exec_name {% raw %}}}{% endraw %}"
|
|
||||||
{%- if cookiecutter.has_service == 'True' %}
|
|
||||||
owner: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_user {% raw %}}}{% endraw %}"
|
|
||||||
group: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_group {% raw %}}}{% endraw %}"
|
|
||||||
{%- endif %}
|
|
||||||
remote_src: True
|
|
||||||
mode: 0755
|
|
||||||
when: {{ cookiecutter.app_name }}_force_reinstall or {{ cookiecutter.app_name }}_check is failed or {{ cookiecutter.app_name }}_version not in {{ cookiecutter.app_name }}_check.stderr
|
|
||||||
tags:
|
|
||||||
- {{ cookiecutter.app_name }}_install
|
|
||||||
|
|
||||||
- name: {{ cookiecutter.app_name | upper }} | Link binary
|
|
||||||
file:
|
|
||||||
src: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_bin_path {% raw %}}}{% endraw %}/{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_exec_name {% raw %}}}{% endraw %}"
|
|
||||||
dest: "/usr/bin/{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_exec_name {% raw %}}}{% endraw %}"
|
|
||||||
state: link
|
|
||||||
when: {{ cookiecutter.app_name }}_force_reinstall or {{ cookiecutter.app_name }}_check is failed or {{ cookiecutter.app_name }}_version not in {{ cookiecutter.app_name }}_check.stderr
|
|
||||||
tags:
|
|
||||||
- {{ cookiecutter.app_name }}_install
|
|
@ -1,17 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
- name: {{ cookiecutter.app_name | upper }} | Install
|
|
||||||
import_tasks: install.yml
|
|
||||||
tags:
|
|
||||||
- {{ cookiecutter.app_name }}_install
|
|
||||||
|
|
||||||
- name: {{ cookiecutter.app_name | upper }} | Configure
|
|
||||||
import_tasks: config.yml
|
|
||||||
tags:
|
|
||||||
- {{ cookiecutter.app_name }}_configure
|
|
||||||
{% if cookiecutter.has_service == 'True' %}
|
|
||||||
- name: {{ cookiecutter.app_name | upper }} | Service
|
|
||||||
import_tasks: service.yml
|
|
||||||
tags:
|
|
||||||
- {{ cookiecutter.app_name }}_service
|
|
||||||
{% endif %}
|
|
@ -1,21 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
- name: {{ cookiecutter.app_name | upper }} | Copy Daemon script
|
|
||||||
template:
|
|
||||||
src: {{ cookiecutter.app_name }}.service.j2
|
|
||||||
dest: /etc/systemd/system/{{ cookiecutter.app_name }}.service
|
|
||||||
mode: 0644
|
|
||||||
owner: root
|
|
||||||
group: root
|
|
||||||
notify: restart {{ cookiecutter.app_name }}
|
|
||||||
tags:
|
|
||||||
- {{ cookiecutter.app_name }}_service
|
|
||||||
|
|
||||||
- name: {{ cookiecutter.app_name | upper }} | Configuring service
|
|
||||||
systemd:
|
|
||||||
name: {{ cookiecutter.app_name }}
|
|
||||||
state: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_service_state {% raw %}}}{% endraw %}"
|
|
||||||
enabled: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_service_enabled {% raw %}}}{% endraw %}"
|
|
||||||
daemon_reload: yes
|
|
||||||
tags:
|
|
||||||
- {{ cookiecutter.app_name }}_service
|
|
@ -1,24 +0,0 @@
|
|||||||
{% raw %}{{ ansible_managed | comment }}{% endraw %}
|
|
||||||
[Unit]
|
|
||||||
Description={{ cookiecutter.app_name | replace('_',' ') }}
|
|
||||||
Documentation={% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_documentation_link {% raw %}}}{% endraw %}
|
|
||||||
Requires=network-online.target
|
|
||||||
After=network-online.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
PrivateTmp={% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_private_tmp {% raw %}}}{% endraw %}
|
|
||||||
User={% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_user {% raw %}}}{% endraw %}
|
|
||||||
Group={% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_group {% raw %}}}{% endraw %}
|
|
||||||
RuntimeDirectory={{ cookiecutter.app_name }}
|
|
||||||
LimitNOFILE={% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_max_files {% raw %}}}{% endraw %}
|
|
||||||
|
|
||||||
ExecStart={% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_bin_path {% raw %}}}{% endraw %}/{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_exec_name {% raw %}}}{% endraw %} {% raw %}{%{% endraw %} for option in {{ cookiecutter.app_name }}_options {% raw %}%}{% endraw %}{% raw %}{%{% endraw %} if option {% raw %}%}{% endraw %}-{% raw %}{{{% endraw %} option {% raw %}}}{% endraw %} {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %}{% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %}
|
|
||||||
|
|
||||||
StandardOutput={% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_log_output {% raw %}}}{% endraw %}
|
|
||||||
StandardError={% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_log_output {% raw %}}}{% endraw %}
|
|
||||||
ExecReload=/bin/kill -HUP $MAINPID
|
|
||||||
KillSignal=SIGTERM
|
|
||||||
Restart=always
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
Loading…
Reference in New Issue
Block a user