46 Commits

Author SHA1 Message Date
8a3994cd38 chore(release): 1.0.2 2023-01-12 13:35:59 +01:00
fa2d5b9d8d fix: More fix to README. 2023-01-12 13:35:54 +01:00
5068645964 chore(release): 1.0.1 2023-01-12 13:31:15 +01:00
e06c5e24ef fix: Update README 2023-01-12 13:31:07 +01:00
40ff2301fe fix: Fix main.yml. 2023-01-12 13:25:25 +01:00
f7ead2d3c6 chore: Clean up changelog 2023-01-11 21:34:53 +01:00
5413342847 chore(release): 1.0.0 2023-01-11 21:30:43 +01:00
fe7df1f907 fix: meta container version. 2023-01-11 21:29:59 +01:00
dea1634b98 fix: accolades 2023-01-11 21:29:23 +01:00
b44e69ad7e feat: Refactor the template for docker-compose. 2023-01-09 15:25:45 +01:00
David Mateo
e6d5c5a9a3 Merge pull request #96 from idealista/bugs/95
Bugs/95 Fix travis pipenv install
2022-12-01 15:49:26 +01:00
David Mateo
a0c761368d Update Changelog 2022-11-07 13:16:39 +01:00
David Mateo
6c534bdf83 Update .travis.yml template to add -I option in pipenv install 2022-11-07 13:16:25 +01:00
Adrián
c94c86d963 Merge pull request #94 from idealista/develop
Release 2.10.0
2022-09-22 21:40:21 +02:00
Adrián
3917b2a78b Release 2.10.0 2022-09-22 21:27:18 +02:00
Adrián
c6446c7e58 Merge pull request #93 from idealista/feature/issue-92
Several improvements and fixes
2022-09-22 21:26:20 +02:00
Adrián Arapiles
45e9ea744b Change python version on travis.yml 2022-09-22 18:37:44 +02:00
Adrián Arapiles
1e99d8b02c Add yamllint to readme and test.sh 2022-09-22 18:33:53 +02:00
Adrián Arapiles
f23f55643d Add yamllint to dependendecies because is mandatory for lint step.
#92 Fix examples tags to achieve meta.yml galaxy_tags requisites.
2022-09-22 18:14:06 +02:00
Adrián Arapiles
4b7c659da1 Remove requirements on README command after use 2022-06-16 22:34:13 +02:00
Adrián Arapiles
f6f4658aef Fix travis indent 2022-06-16 22:16:55 +02:00
Adrián Arapiles
42900e46c4 Improve README init scrips to avoid errors when create two roles on same path because already pipenv exists.
Change travis.yml order of email notification as documentation explains.
Add first line `---` to ansible-lint file because it's a yml.
#92 Fix meta.yml lint warning from `galaxy-tags` to `galaxy_tags`.
2022-05-26 12:55:48 +02:00
Santiago Perez
436e824881 Merge pull request #91 from idealista/develop
Resolved #86 issue
2022-04-01 11:35:56 +02:00
Santiago Perez
6522c7ef21 Merge pull request #90 from idealista/features/86-update-debian-version issue #86
Features/86 update debian version
2022-04-01 11:10:32 +02:00
santi-eidu
8a599c249f Remove python2 in molecule Dockerfile 2022-03-24 18:20:09 +01:00
santi-eidu
fdbc7c3908 Change CHANGELOG.md to use github user 2022-03-24 11:13:47 +01:00
santi-eidu
1121b4534e Update CHANGELOG.md and README.md 2022-03-24 10:15:55 +01:00
santi-eidu
16095bb031 Update travis ci yml file 2022-03-23 19:59:00 +01:00
santi-eidu
8ef54f7f0d Update ansible to v5.2.0 and ansible-lint to v5.3.2 2022-03-23 18:01:02 +01:00
santi-eidu
b33689d3b5 #86 Change debian supported version stretch to bulleye 2022-03-23 17:59:55 +01:00
Marcos Pérez García
ea7487e2a9 Merge pull request #89 from idealista/develop
Release 2.8.1
2021-10-26 11:33:29 +02:00
Marcos Pérez García
2406ba62c1 update CHANGELOG.md 2021-10-26 11:00:28 +02:00
Marcos Pérez García
9e1cb98351 Merge pull request #88 from idealista/features/87
resolve #87 Travis build image and link are broken
2021-10-26 10:57:17 +02:00
Marcos Pérez García
dc504ad7d6 resolve #87 Travis build image and link are broken 2021-09-28 17:48:56 +02:00
Alex Blanco
74b1c3483f Merge pull request #85 from idealista/develop
Release 2.8.0
2021-08-24 13:59:29 +02:00
Alex Blanco
b5685a90cd Merge branch 'master' into develop 2021-08-24 13:07:33 +02:00
Alex Blanco
23d2def966 Update CHANGELOG.md 2021-08-24 12:51:41 +02:00
Alex Blanco
076db03bbe Merge pull request #84 from idealista/bugs/83
#83 Don't leave empty lines when using jinja
2021-08-24 12:49:53 +02:00
Alejandro Blanco Lopez
c9e2a83163 #83 don't leave empty lines when using jinja 2021-08-24 12:12:44 +02:00
Alex Blanco
ff5533b940 Merge pull request #82 from idealista/bugs/81
#81 add log path variable in defaults
2021-08-24 09:12:43 +02:00
Alex Blanco
9211b42147 Merge branch 'develop' into bugs/81 2021-08-24 08:34:14 +02:00
Alex Blanco
4c2995e3d8 Merge pull request #80 from idealista/bugs/79
#79 add molecule-docker support
2021-08-24 08:33:35 +02:00
Alejandro Blanco Lopez
07f9750241 #81 add log path variable in defaults 2021-08-23 09:05:51 +02:00
Alejandro Blanco Lopez
14ae8d9e14 #79 add default pip versions 2021-08-23 08:48:43 +02:00
Alejandro Blanco Lopez
ed6eb9ff29 #79 update testing versions 2021-08-20 15:34:03 +02:00
Alejandro Blanco Lopez
92e30ec9ac #79 add molecule-docker support 2021-08-20 15:21:51 +02:00
53 changed files with 350 additions and 565 deletions

1
.gitignore vendored
View File

@@ -8,6 +8,7 @@ __pycache__
*.iml
.idea
.project
.venv
*.pyc

View File

@@ -1,15 +1,15 @@
---
dist: xenial
dist: focal
language: python
python: "3.9"
python: "3.10"
os: linux
services:
- docker
install:
- pip3 install cookiecutter
- pip install -I pipenv
env:
jobs:
- MOLECULE_DISTRO=debian:stretch-slim
- MOLECULE_DISTRO=debian:bullseye-slim
- MOLECULE_DISTRO=debian:buster-slim
script:
- ./test.sh
@@ -20,3 +20,4 @@ notifications:
on_failure: always
recipients:
- desarrollo.benders@idealista.com

View File

@@ -1,110 +1,29 @@
# Change Log
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).
# Changelog
## Unreleased
## [2.7.0](https://github.com/idealista/cookiecutter-ansible-role/tree/2.7.0)
### [Full Changelog](https://github.com/idealista/cookiecutter-ansible-role/compare/2.6.1...2.7.0)
### Added
- *[#76](https://github.com/idealista/cookiecutter-ansible-role/issues/76) Create shell user variable* @emepege
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
## [2.6.1](https://github.com/idealista/cookiecutter-ansible-role/tree/2.6.1)
### [Full Changelog](https://github.com/idealista/cookiecutter-ansible-role/compare/2.6.0...2.6.1)
### Changed
- *[#73](https://github.com/idealista/cookiecutter-ansible-role/issues/73) Add document start to .yml files* @blalop
### [1.0.2](https://git.laurivan.com/Dev/cookiecutter-ansible-role-docker/compare/v1.0.1...v1.0.2) (2023-01-12)
## [2.6.0](https://github.com/idealista/cookiecutter-ansible-role/tree/2.6.0)
### [Full Changelog](https://github.com/idealista/cookiecutter-ansible-role/compare/2.5.1...2.6.0)
### Added
- *[#69](https://github.com/idealista/cookiecutter-ansible-role/issues/69) Email notifications in travis.* @vicsufer
### Changed
### Fixed
- *[#67](https://github.com/idealista/cookiecutter-ansible-role/issues/67) fix needed task in check_mode- @vicsufer
### Removed
## [2.5.1](https://github.com/idealista/cookiecutter-ansible-role/tree/2.5.1)
### [Full Changelog](https://github.com/idealista/cookiecutter-ansible-role/compare/2.5.0...2.5.1)
### Changed
- *[#63](https://github.com/idealista/cookiecutter-ansible-role/issues/63) Ignore html in gitattributes file* @blalop
### Fixed
- *[#62](https://github.com/idealista/cookiecutter-ansible-role/issues/62) molecule verify fails and breaks the run when at least one test fail* @ultraheroe
- *[#60](https://github.com/idealista/cookiecutter-ansible-role/issues/60) [BUG] Wrong state option in "Ensure skeleton log paths" task* @emepege
### Bug Fixes
## [2.5.0](https://github.com/idealista/cookiecutter-ansible-role/tree/2.5.0)
### [Full Changelog](https://github.com/idealista/cookiecutter-ansible-role/compare/2.4.1...2.5.0)
### Added
- *[#57](https://github.com/idealista/cookiecutter-ansible-role/issues/57) Added gitattributes file* @blalop
### Changed
- *[#55](https://github.com/idealista/cookiecutter-ansible-role/issues/55) Excluded non-role files from linting* @blalop
* More fix to README. ([fa2d5b9](https://git.laurivan.com/Dev/cookiecutter-ansible-role-docker/commit/fa2d5b9d8de10cd127797f7e1705c2e0b1ce98e0))
## [2.4.1](https://github.com/idealista/cookiecutter-ansible-role/tree/2.4.1)
### [Full Changelog](https://github.com/idealista/cookiecutter-ansible-role/compare/2.4.0...2.4.1)
### Fixed
- *[#50](https://github.com/idealista/cookiecutter-ansible-role/issues/50) Tags not applied properly from playbook* @vicsufer
### [1.0.1](https://git.laurivan.com/Dev/cookiecutter-ansible-role-docker/compare/v1.0.0...v1.0.1) (2023-01-12)
## [2.4.0](https://github.com/idealista/cookiecutter-ansible-role/tree/2.4.0)
### [Full Changelog](https://github.com/idealista/cookiecutter-ansible-role/compare/2.3.0...2.4.0)
### Added
- *[#45](https://github.com/idealista/cookiecutter-ansible-role/issues/45) Documentation link provided on role generation* @xtianae7
### Changed
- *[#47](https://github.com/idealista/cookiecutter-ansible-role/pull/47) Bump goss version from 0.3.14 to 0.3.16* @vicsufer
- *[#46](https://github.com/idealista/cookiecutter-ansible-role/issues/46) Static tests instead of parameters* @xtianae7
## [2.3.0](https://github.com/idealista/cookiecutter-ansible-role/tree/2.3.0)
### [Full Changelog](https://github.com/idealista/cookiecutter-ansible-role/compare/2.2.0...2.3.0)
### Fixed
- *[#40](https://github.com/idealista/cookiecutter-ansible-role/issues/40) Updated yamllint configuration* @frantsao
### Changed
- *[#38](https://github.com/idealista/cookiecutter-ansible-role/pull/38) Bump goss version from 0.3.11 to 0.3.14* @vicsufer
- *[#30](https://github.com/idealista/cookiecutter-ansible-role/issues/30) Using a new version for issue template* @xtianae7
### Removed
- *[#39](https://github.com/idealista/cookiecutter-ansible-role/pull/39) Community health files* @vicsufer
- *[#30](https://github.com/idealista/cookiecutter-ansible-role/issues/30) PULL_REQUEST_TEMPLATE removed, replaced with default community health file* @xtianae7
### Bug Fixes
## [2.2.0](https://github.com/idealista/cookiecutter-ansible-role/tree/2.2.0) (2020-11-10)
### [Full Changelog](https://github.com/idealista/cookiecutter-ansible-role/compare/2.1.0...2.2.0)
* Fix main.yml. ([40ff230](https://git.laurivan.com/Dev/cookiecutter-ansible-role-docker/commit/40ff2301feb283894a71cca57a1d2679443b131b))
* Update README ([e06c5e2](https://git.laurivan.com/Dev/cookiecutter-ansible-role-docker/commit/e06c5e24efaf43c2d2580d5dec0dc481d05b4ecc))
### Fixed
- *[#27](https://github.com/idealista/cookiecutter-ansible-role/issues/27) Adding Probot configuration to Ansible Role template* @dortegau
## 1.0.0 (2023-01-11)
### Changed
- *[#27](https://github.com/idealista/cookiecutter-ansible-role/issues/27) Increase to 90 days the minimum days to declare a PR/Issue as `staled`* @dortegau
- *[#32](https://github.com/idealista/cookiecutter-ansible-role/pull/32) Avoid closing automatically good first issues* @vicsufer
### Features
### Removed
- *[#29](https://github.com/idealista/cookiecutter-ansible-role/issues/29) Removing redudant script in .travis.yml* @xtianae7
* Refactor the template for docker-compose. ([b44e69a](https://git.laurivan.com/Dev/cookiecutter-ansible-role-docker/commit/b44e69ad7eaf1b3a0e284ac403c94c60c016a4ae))
## [2.1.0](https://github.com/idealista/cookiecutter-ansible-role/tree/2.1.0) (2020-10-19)
## [Full Changelog](https://github.com/idealista/cookiecutter-ansible-role/compare/2.0.0...2.1.0)
### Bug Fixes
### Added
- *[#20](https://github.com/idealista/cookiecutter-ansible-role/issues/20) Add basic configuration in order to enable Probot to delete automatically abandoned PRs/issues* @dortegau
### Fixed
- *[#23](https://github.com/idealista/cookiecutter-ansible-role/issues/23) Change references to branch master to main* @pgomezcaldito
## [2.0.0](https://github.com/idealista/cookiecutter-ansible-role/tree/2.0.0) (2020-10-13)
## [Full Changelog](https://github.com/idealista/cookiecutter-ansible-role/compare/1.0.1...2.0.0)
### Removed
- *[#16](https://github.com/idealista/cookiecutter-ansible-role/issues/16) Remove debian jessie support* @pablogcaldito
### Added
- *[#15](https://github.com/idealista/cookiecutter-ansible-role/issues/15) Add pipenv wrapper* @pablogcaldito
- *Add boilerplate README.md* @vicsufer
## [1.0.1](https://github.com/idealista/cookiecutter-ansible-role/tree/1.0.1) (2020-09-17)
## [Full Changelog](https://github.com/idealista/cookiecutter-ansible-role/compare/1.0.0...1.0.1)
### Removed
- *[#9](https://github.com/idealista/cookiecutter-ansible-role/issues/9) Remove Vagrant pattern from role gitignore file* @vicsufer
### Added
- *[#4](https://github.com/idealista/cookiecutter-ansible-role/issues/4) Upgrade to Goss v0.3.11* @pablogcaldito
### Fixed
- *[#11](https://github.com/idealista/cookiecutter-ansible-role/issues/11) Fix parameterization of PrivateTmp* @pablogcaldito
- *[#7](https://github.com/idealista/cookiecutter-ansible-role/issues/7) Fix bug in in the check version task in install.yml* @pablogcaldito
- *[#3](https://github.com/idealista/cookiecutter-ansible-role/issues/3) Fix typo in both contributing files* @pablogcaldito
## [1.0.0](https://github.com/idealista/cookiecutter-ansible-role/tree/1.0.0) (2020-04-28)
### Added
- *First release* @pablogcaldito
* accolades ([dea1634](https://git.laurivan.com/Dev/cookiecutter-ansible-role-docker/commit/dea1634b98c99230166d00ab5451adad9d004ddf))
* meta container version. ([fe7df1f](https://git.laurivan.com/Dev/cookiecutter-ansible-role-docker/commit/fe7df1f9073322a074489dcc5bfeb2397085dda7))

View File

@@ -1,9 +1,7 @@
# Cookiecutter Ansible Role
![Logo](https://raw.githubusercontent.com/idealista/cookiecutter-ansible-role/master/logo.gif)
[![Build Status](https://travis-ci.com/idealista/cookiecutter-ansible-role.png)](https://travis-ci.com/idealista/cookiecutter-ansible-role)
[![Build Status](https://travis-ci.org/idealista/cookiecutter-ansible-role.png)](https://travis-ci.com/idealista/cookiecutter-ansible-role)
This cookiecutter generates an [ansible role](https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html).
@@ -31,7 +29,8 @@ You just need to have [pipenv](https://github.com/pypa/pipenv) installed.
## Usage
To generate your ansible role type ```printf "cookiecutter==1.7.2\nJinja2==2.11.2" > requirements.txt && pipenv install -r requirements.txt && pipenv run cookiecutter https://github.com/idealista/cookiecutter-ansible-role && rm Pipfile* requirements.txt```.
To generate your ansible role type ```printf "cookiecutter==1.7.2\nJinja2==2.11.2" > requirements.txt && pipenv install -r requirements.txt && pipenv run cookiecutter https://github.com/idealista/cookiecutter-ansible-role && rm -rf Pipfile*
requirements.txt && pipenv --rm && rm -rf requirements.txt```.
Then, introduce some parameters needed for generating it.
@@ -46,15 +45,17 @@ github_user [idealista]:
company [Idealista S.A.U.]:
author []: pablogcaldito
min_ansible_version []: 2.2
ansible_version []: 2.8.8
molecule_version []: 3.0.1
python_docker_version []: 4.1.0
ansible_lint_version []: 4.2.0
ansible_version []: 5.2.0
molecule_version []: 3.4.0
python_docker_version []: 5.0.0
molecule_docker_version []: 0.2.4
ansible_lint_version []: 5.3.2
yamllint_version []: 1.28.0
license [Apache 2.0]:
galaxy_tag_1 [example_tag1]: github_cli
galaxy_tag_2 [example_tag2]: github
galaxy_tag_3 [example_tag3]: cli
Select debian_stretch_support:
Select debian_bullseye_support:
1 - True
2 - False
Choose from 1, 2 [1]:

View File

@@ -1,3 +1,4 @@
---
exclude_paths:
- ./molecule
- ./.travis.yml

View File

@@ -0,0 +1,2 @@
github: {{ cookiecutter.github_user }}
patreon: {{ cookiecutter.patreon_user }}

View File

@@ -3,16 +3,16 @@
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).
## [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
### Added
### Removed
### Fixed
## [X.Y.Z](https://github.com/{{ cookiecutter.github_user }}/{{ cookiecutter.app_name }}_role/tree/X.Y.Z)
### [Full Changelog](https://github.com/{{ cookiecutter.github_user }}/{{ cookiecutter.app_name }}_role/compare/1.0.0...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 }}/ansible-role-{{ cookiecutter.app_name }}/compare/1.0.0...X.Y.Z)
### 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

View File

@@ -0,0 +1,47 @@
# {{ cookiecutter.app_name | replace('_',' ') | title }} Ansible role
This role installs Mealie via Docker compose.
## Requirements
None
## Role Variables
All variables are listed below (see also `defaults/main.yml`).
```yml
---
```
## Dependencies
You need a machine with docker and docker-compose installed.
## Example Playbook
```yml
- hosts: servers
roles:
- 'laurivan.{{ cookiecutter.app_name | replace('_',' ') | title }}'
```
## License
This project is licensed under the [MIT](https://opensource.org/licenses/MIT) license - see the [LICENSE](LICENSE) file for details.
![MIT License](https://img.shields.io/badge/license-MIT%20License-brightgreen)
## Author Information
This role was created in 2023 by [Laur Ivan](https://www.laurivan.com).
## Built With
![Ansible](https://img.shields.io/badge/ansible-5.2.0-green.svg)
![Molecule](https://img.shields.io/badge/molecule-3.4.0-green.svg)
![Goss](https://img.shields.io/badge/goss-0.3.16-green.svg)
## Contributing
Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.

View 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 }}"

View File

@@ -0,0 +1,2 @@
---
# Handlers for {{ cookiecutter.app_name }}

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View 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_container_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 %}

View File

@@ -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

View File

@@ -2,4 +2,4 @@
- name: Converge
hosts: {{ cookiecutter.app_name }}_group
roles:
- role: {{ cookiecutter.app_name }}_role
- role: "{{cookiecutter.namespace}}.{{ cookiecutter.app_name }}"

View File

@@ -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

View File

@@ -1,6 +1,11 @@
---
dependency:
name: galaxy
options:
ignore-certs: true
ignore-errors: true
role-file: molecule/requirements.yml
requirements-file: molecule/requirements.yml
driver:
name: docker
lint: |
@@ -10,8 +15,9 @@ platforms:
- name: {{ cookiecutter.app_name }}
groups:
- {{ cookiecutter.app_name }}_group
image: ${MOLECULE_DISTRO:-debian:buster-slim}
privileged: false
image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos8}-ansible:latest"
privileged: true
pre_build_image: true
capabilities:
- SYS_ADMIN
tmpfs:
@@ -20,9 +26,13 @@ platforms:
- /run/lock
volumes:
- '/sys/fs/cgroup:/sys/fs/cgroup:ro'
- '/var/run/docker.sock:/tmp/docker_mounted.sock'
command: '/lib/systemd/systemd'
stop_signal: 'RTMIN+3'
provisioner:
name: ansible
playbooks:
converge: ${MOLECULE_PLAYBOOK:-converge.yml}
verifier:
name: ansible

View File

@@ -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

View File

@@ -0,0 +1,4 @@
---
roles:
- geerlingguy.docker
collections: []

View File

@@ -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:
# - '::'

View File

@@ -24,7 +24,7 @@
get_url:
url: "{% raw %}{{{% endraw %} goss_url {% raw %}}}{% endraw %}"
dest: "{% raw %}{{{% endraw %} goss_dst {% raw %}}}{% endraw %}"
sha256sum: "{% raw %}{{{% endraw %} goss_sha256sum {% raw %}}}{% endraw %}"
checksum: "sha256{% raw %}:{{{% endraw %} goss_sha256sum {% raw %}}}{% endraw %}"
mode: 0755
register: download_goss
until: download_goss is succeeded

View File

@@ -0,0 +1,24 @@
---
- 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

View 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

View File

@@ -0,0 +1,11 @@
---
- 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

View File

@@ -0,0 +1,3 @@
# {{ cookiecutter.app_name }} docker compose
version: '3.9'
services:

View File

@@ -0,0 +1,6 @@
ansible=={{ cookiecutter.ansible_version }}
molecule=={{ cookiecutter.molecule_version }}
docker=={{ cookiecutter.python_docker_version }}
molecule-docker=={{ cookiecutter.molecule_docker_version }}
ansible-lint=={{ cookiecutter.ansible_lint_version }}
yamllint=={{ cookiecutter.yamllint_version }}

View File

@@ -1,17 +1,17 @@
---
dist: xenial
language: python
python: "3.7"
python: "3.9"
os: linux
services:
- docker
install:
- pip install pipenv
- pip install -I pipenv
- pipenv sync
env:
jobs:
{% if cookiecutter.debian_stretch_support == 'True' %}- MOLECULE_DISTRO=debian:stretch-slim{% endif %}
{% 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 "bullseye" in cookiecutter.platforms.debian_list %}- MOLECULE_DISTRO=debian:bullseye-slim{% endif %}
script:
- pipenv run molecule test --all
@@ -22,4 +22,4 @@ notifications:
on_success: change
on_failure: always
recipients:
- desarrollo.benders@idealista.com
- laur.ivan@gmail.com

View File

@@ -2,24 +2,28 @@
"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",
"app_name": "",
"exec_name":"",
"github_user": "idealista",
"company": "Idealista S.A.U.",
"author": "",
"min_ansible_version": "",
"ansible_version": "",
"molecule_version": "",
"python_docker_version": "",
"ansible_lint_version":"",
"github_user": "equinoxel",
"patreon_user": "laurivan",
"company": "",
"author": "Laur Ivan (laur.ivan@gmail.com)",
"namespace": "laurivan",
"min_ansible_version": "2.4",
"min_ansible_container_version": "2.4",
"ansible_version": "5.2.0",
"molecule_version": "3.4.0",
"python_docker_version": "5.0.0",
"molecule_docker_version": "0.2.4",
"ansible_lint_version":"5.3.2",
"yamllint_version": "1.28.0",
"license":"Apache 2.0",
"galaxy_tag_1":"example_tag1",
"galaxy_tag_2":"example_tag2",
"galaxy_tag_3":"example_tag3",
"debian_stretch_support":["True", "False"],
"debian_buster_support":["True", "False"],
"has_service":["True", "False"],
"galaxy_tag_1":"tag1",
"galaxy_tag_2":"tag2",
"galaxy_tag_3":"tag3",
"platforms": {
"debian_list": ["bullseye", "buster"],
"ubuntu_list": ["bionic", "focal", "jammy"]
},
"has_files":["True", "False"],
"comment_2":"If there is service the following options will not have any effect",
"has_handlers":["True", "False"],
"has_templates":["True", "False"],
"documentation_URL":""

View File

@@ -18,17 +18,15 @@ def checkInput():
def configureRole():
# Remove or not the service
if not {{ cookiecutter.has_service }}:
# Delete the service and things that reference the service
os.remove("tasks/service.yml")
os.remove("templates/{{ cookiecutter.app_name }}.service.j2")
shutil.rmtree("molecule/default/group_vars")
# Remove or not the handlers folder
if not {{ cookiecutter.has_handlers }}:
shutil.rmtree("handlers")
# Remove or not the templates folder
if not {{ cookiecutter.has_templates }}:
shutil.rmtree("templates")
shutil.rmtree("molecule/default/group_vars")
# Remove or not the handlers folder
if not {{ cookiecutter.has_handlers }}:
shutil.rmtree("handlers")
# Remove or not the templates folder
if not {{ cookiecutter.has_templates }}:
shutil.rmtree("templates")
# Remove or not the files folder
if not {{ cookiecutter.has_files }}:
shutil.rmtree("files")

19
test.sh
View File

@@ -3,7 +3,22 @@
set -e
# Generate role
printf "cookiecutter==1.7.2\nJinja2==2.11.2" > requirements.txt && pipenv install -r requirements.txt && pipenv run cookiecutter . --no-input app_name="github_cli" exec_name="gh" author="John Doe" min_ansible_version="2.2" ansible_version="2.8.6" molecule_version="3.0.1" python_docker_version="4.1.0" ansible_lint_version="4.2.0" has_service="False" has_files="False" has_handlers="False" has_templates="False" documentation_URL="https://cli.github.com/manual/" && rm Pipfile* requirements.txt
printf "cookiecutter==1.7.2\nJinja2==2.11.2" > requirements.txt && pipenv install -r requirements.txt && pipenv run cookiecutter . --no-input \
app_name="github_cli" \
exec_name="gh" \
author="John Doe" \
min_ansible_version="2.2" \
ansible_version="5.2.0" \
molecule_version="3.4.0" \
python_docker_version="5.0.0" \
molecule_docker_version="0.2.4" \
ansible_lint_version="5.3.2" \
yamllint_version="1.28.0" \
has_files="False" \
has_handlers="False" \
has_templates="False" \
documentation_URL="https://cli.github.com/manual/" && rm Pipfile* requirements.txt && rm -rf requirements.txt
(
# Adjust the role to test
cd github_cli_role
@@ -14,7 +29,7 @@ printf "cookiecutter==1.7.2\nJinja2==2.11.2" > requirements.txt && pipenv instal
# Launch molecule tests
pipenv install -r test-requirements.txt --three
pipenv run molecule test
)
# Cleanup
rm -rf github_cli_role

View File

@@ -1,109 +0,0 @@
# {{ cookiecutter.app_name | replace('_',' ') | title }} Ansible role
![Logo](logo.gif)
[![Build Status](https://travis-ci.com/idealista/{{ cookiecutter.app_name }}_role.png)](https://travis-ci.com/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_stretch_support == 'True' %}* Stretch{% 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).
- [Getting Started](#getting-started)
- [Prerequisities](#prerequisities)
- [Installing](#installing)
- [Usage](#usage)
- [Testing](#testing)
- [Built With](#built-with)
- [Versioning](#versioning)
- [Authors](#authors)
- [License](#license)
- [Contributing](#contributing)
## 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.
### Prerequisities
Ansible {{ cookiecutter.ansible_version }} version installed.
Molecule 3.x.x version installed.
For testing purposes, [Molecule](https://molecule.readthedocs.io/) with [Docker](https://www.docker.com/) as driver and [Goss](https://github.com/aelsabbahy/goss) as verifier.
### Installing
Create or add to your roles dependency file (e.g requirements.yml):
```
- src: idealista.{{ cookiecutter.app_name }}_role
version: 1.0.0
name: {{ cookiecutter.app_name }}_role
```
Install the role with ansible-galaxy command:
```
ansible-galaxy install -p roles -r requirements.yml -f
```
Use in a playbook:
```
---
- hosts: someserver
roles:
- role: {{ cookiecutter.app_name }}_role
```
## 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.
## Testing
### Install dependencies
```sh
$ pipenv sync
```
For more information read the [pipenv docs](ipenv-fork.readthedocs.io/en/latest/).
### Testing
```sh
$ pipenv run molecule test
```
## Built With
![Ansible](https://img.shields.io/badge/ansible-{{ cookiecutter.ansible_version }}-green.svg)
![Molecule](https://img.shields.io/badge/molecule-{{ cookiecutter.molecule_version }}-green.svg)
![Goss](https://img.shields.io/badge/goss-0.3.16-green.svg)
## Versioning
For the versions available, see the [tags on this repository](https://github.com/{{ cookiecutter.github_user }}/{{ cookiecutter.app_name }}_role/tags).
Additionaly you can see what change in each version in the [CHANGELOG.md](CHANGELOG.md) file.
## Authors
* **Idealista** - *Work with* - [idealista](https://github.com/idealista)
See also the list of [contributors](https://github.com/{{ cookiecutter.github_user }}/{{ cookiecutter.app_name }}_role/contributors) who participated in this project.
## License
![Apache 2.0 License](https://img.shields.io/hexpm/l/plug.svg)
This project is licensed under the [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) license - see the [LICENSE](LICENSE) file for details.
## Contributing
Please read [CONTRIBUTING.md](.github/CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.

View File

@@ -1,61 +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_file: path_of_the_file
{{ 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 %}

View File

@@ -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 %}

View File

@@ -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_stretch_support == 'True' %}- stretch{% endif %}
{% if cookiecutter.debian_buster_support == 'True' %}- buster{% endif %}

View File

@@ -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 python sudo bash ca-certificates iproute2 systemd systemd-sysv python-pip && \
apt-get clean{% endraw %}

View File

@@ -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:
# - '::'

View File

@@ -1 +0,0 @@
---

View File

@@ -1,93 +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 %}
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 %}
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

View File

@@ -1,17 +0,0 @@
---
- name: {{ cookiecutter.app_name | upper }} | Install
include: install.yml
tags:
- {{ cookiecutter.app_name }}_install
- name: {{ cookiecutter.app_name | upper }} | Configure
include: config.yml
tags:
- {{ cookiecutter.app_name }}_configure
{% if cookiecutter.has_service == 'True' %}
- name: {{ cookiecutter.app_name | upper }} | Service
include: service.yml
tags:
- {{ cookiecutter.app_name }}_service
{% endif %}

View File

@@ -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

View File

@@ -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

View File

@@ -1,4 +0,0 @@
ansible=={{ cookiecutter.ansible_version }}
molecule=={{ cookiecutter.molecule_version }}
docker=={{ cookiecutter.python_docker_version }}
ansible-lint=={{ cookiecutter.ansible_lint_version }}