110 Commits

Author SHA1 Message Date
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
Marcos Pérez García
f33225106e Merge pull request #78 from idealista/develop
Release 2.7.0
2021-06-16 09:33:58 +02:00
Marcos Pérez García
665d89beb0 update CHANGELOG.md 2021-06-16 08:58:06 +02:00
Marcos Pérez García
4459ae1aa6 Merge pull request #77 from idealista/features/76
Create shell user variable
2021-06-16 08:51:30 +02:00
Marcos Pérez García
28fe4678d7 resolve #76 create shell user variable 2021-06-14 17:21:16 +02:00
Alex Blanco
57633e39ad Merge pull request #75 from idealista/develop
Release 2.6.1
2021-06-02 15:36:00 +02:00
Alex Blanco
668d890ce6 Update CHANGELOG.md 2021-06-02 12:31:55 +02:00
Alex Blanco
71711119ea Merge branch 'master' into develop 2021-06-02 12:31:19 +02:00
Alex Blanco
cdb741f701 Merge pull request #74 from idealista/bugs/73
#73 --- in the .yml files
2021-06-02 12:30:16 +02:00
Alejandro Blanco López
fb3253da25 #73 --- in the .yml files 2021-06-02 11:16:39 +02:00
Víctor Suárez Fernández
0211cfcd29 Merge pull request #71 from idealista/develop
Release 2.6.0
2021-04-30 10:11:20 +02:00
Víctor Suárez Fernández
01d41dc596 Merge branch 'master' into develop 2021-04-30 09:12:43 +02:00
Víctor Suárez Fernández
5fd7fc7e1d Update CHANGELOG.md 2021-04-30 09:11:33 +02:00
Víctor Suárez Fernández
3514236fa0 Merge pull request #70 from idealista/features/69
travis.yml email notifications
2021-04-30 09:10:06 +02:00
Víctor Suárez Fernández
d9964134da Update CHANGELOG.md 2021-04-29 17:38:30 +02:00
Víctor Suárez Fernández
9a971619a7 Update CHANGELOG.md 2021-04-29 15:38:57 +02:00
Víctor Suárez Fernández
409e7f8bd2 Update .travils.yml template 2021-04-29 15:32:18 +02:00
Víctor Suárez Fernández
6a760eb1dc Update .travis.yml 2021-04-29 15:29:30 +02:00
Víctor Suárez Fernández
684428ec80 Merge pull request #67 from idealista/fix/check_mode
Fix check_mode
2021-03-31 12:17:34 +02:00
Víctor Suárez Fernández
3a93e6734d Update CHANGELOG.md 2021-03-29 15:25:58 +02:00
Víctor Suárez Fernández
5ad5453892 Update CHANGELOG.md 2021-03-29 15:01:25 +02:00
Víctor Suárez Fernández
8e1924e9e3 Install checkmode 2021-03-29 14:57:06 +02:00
David Mateo
519a783810 Merge pull request #66 from idealista/develop
Release 2.5.1
2021-03-09 12:08:36 +01:00
Alex Blanco
5fc3bcaa2e Merge branch 'master' into develop 2021-03-09 12:07:40 +01:00
David Mateo
dacd85ef41 Update CHANGELOG.md 2021-03-09 12:05:23 +01:00
David Mateo
7e8ec829c9 Merge pull request #65 from idealista/bugs/62
Adding changes to resolve #62
2021-03-09 11:44:35 +01:00
Víctor Suárez Fernández
cc0eb0ce7c Merge branch 'develop' into bugs/62 2021-03-08 10:37:48 +01:00
Alex Blanco
08003a20e3 Merge pull request #64 from idealista/bugs/63
#63 ignore html code in linguist detection
2021-03-08 09:40:24 +01:00
David Mateo
2838871c2b Adding changes to resolve #62
- ignore_errors set to true in to the goss tests execution task
   - Change log update
2021-03-08 09:18:01 +01:00
Alex Blanco
498bb69af5 Merge branch 'develop' into bugs/63 2021-03-05 13:56:07 +01:00
Marcos Pérez García
9e12212122 Merge pull request #61 from idealista/bugs/60
Change state value in "Ensure skeleton log paths"
2021-03-05 13:49:53 +01:00
Alejandro Blanco López
bf38884dcd #63 ignore html code in linguist detection 2021-03-05 13:31:24 +01:00
Marcos Pérez García
2372221f93 update CHANGELOG.md 2021-02-23 16:37:10 +01:00
Marcos Pérez García
a082c79f12 resolve #60 change state value in Ensure skeleton log paths 2021-02-23 13:31:02 +01:00
Alex Blanco
921231864f Merge pull request #59 from idealista/develop
Release 2.5.0
2021-02-19 04:55:24 -08:00
Alex Blanco
c7be6405e8 Merge branch 'master' into develop 2021-02-19 04:54:55 -08:00
Alex Blanco
53acbaa7d7 Update CHANGELOG.md 2021-02-19 13:54:28 +01:00
Alex Blanco
055c1ed1a8 Merge pull request #58 from idealista/features/57
#57 gitattributes for yaml detection
2021-02-19 04:51:52 -08:00
Alex Blanco
092a44d4d2 Merge branch 'develop' into features/57 2021-02-19 04:51:23 -08:00
Alex Blanco
e216704e9f Merge pull request #56 from idealista/features/55
#55 exclude non-role files from linting
2021-02-19 04:51:00 -08:00
Alejandro Blanco López
1b9b8e81a2 #57 gitattributes for yaml detection 2021-02-18 12:39:38 +01:00
Alejandro Blanco López
8b089d7fdc follow excluding convention 2021-02-17 18:24:53 +01:00
Alejandro Blanco López
bd4c9ee55d #55 exclude non-role files from linting 2021-02-17 18:22:37 +01:00
Víctor Suárez Fernández
bfb05f9f7e Merge pull request #52 from idealista/develop
Release 2.4.1
2021-01-20 14:42:24 +01:00
Víctor Suárez Fernández
2a4c935222 Merge branch 'master' into develop 2021-01-20 13:14:40 +01:00
Víctor Suárez Fernández
fc1c881864 Update CHANGELOG.md 2021-01-20 13:13:35 +01:00
Víctor Suárez Fernández
29fef2078c Merge pull request #51 from idealista/bugs/50
Add tags to included tasks
2021-01-20 13:11:46 +01:00
Víctor Suárez Fernández
3cb19fc4d9 Add newline at EOF in service.yml 2021-01-20 09:07:06 +01:00
Victor Suarez Fernandez
a3fb7e6a37 Add tags to included tasks 2021-01-19 10:03:27 +01:00
Christian Ardiente
602f6e5953 Merge pull request #49 from idealista/develop
release 2.4.0
2020-12-30 11:58:51 +01:00
Christian Ardiente
34f4edf4c9 Update CHANGELOG.md 2020-12-30 11:57:47 +01:00
Christian Ardiente
0b139944f6 Merge pull request #48 from idealista/feautres/46
Static tests instead of parameters and documentation links
2020-12-30 11:54:57 +01:00
Christian Ardiente Eda
41f5790f9a typo 2020-12-30 11:14:13 +01:00
Christian Ardiente Eda
8735563651 Update travis link 2020-12-29 15:38:02 +01:00
Christian Ardiente Eda
f2e385868d Remainder to adapt goss tests 2020-12-29 15:36:13 +01:00
Christian Ardiente Eda
52fc713404 [#46] refactoring 2020-12-29 11:54:54 +01:00
Christian Ardiente Eda
747c7f30de Changelog 2020-12-29 11:45:32 +01:00
Christian Ardiente Eda
e5782c903a fix conflicts 2020-12-29 11:42:08 +01:00
Christian Ardiente Eda
3ea1b47038 [#46] Static tests instead of parameters 2020-12-29 11:41:27 +01:00
Christian Ardiente Eda
cceaac7b86 [#46] Static tests instead of parameters 2020-12-29 10:20:26 +01:00
Víctor Suárez Fernández
21de58a20b Merge pull request #47 from idealista/feature/bump-goss_0.16
Bump goss to 0.16
2020-12-28 14:07:51 +01:00
Víctor Suárez Fernández
376996d273 Merge branch 'develop' into feature/bump-goss_0.16 2020-12-28 11:42:21 +01:00
Víctor Suárez Fernández
dfedd31efb Update README.md 2020-12-28 11:41:00 +01:00
Víctor Suárez Fernández
0a9343b545 Update CHANGELOG.md 2020-12-28 11:34:26 +01:00
Víctor Suárez Fernández
035f88cd21 Bump goss to 0.16 2020-12-28 11:32:26 +01:00
Víctor Suárez Fernández
8e687b3d68 Merge pull request #44 from idealista/hotfix/multiple-test-scenarios
Support multiple test scenarios
2020-12-03 13:51:33 +01:00
Víctor Suárez Fernández
a2b0a538b2 Update {% raw %}.travis.yml{% endraw %} 2020-12-03 09:52:35 +01:00
57 changed files with 396 additions and 512 deletions

View File

@@ -1 +1,2 @@
---
blank_issues_enabled: false

View File

@@ -1,3 +1,4 @@
---
# Set to true to add reviewers to pull requests
addReviewers: true

1
.github/stale.yml vendored
View File

@@ -1,3 +1,4 @@
---
issues:
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 90

1
.gitignore vendored
View File

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

View File

@@ -1,16 +1,23 @@
---
dist: xenial
dist: focal
language: python
python: "3.7"
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
- ./test.sh
notifications:
email:
if: branch = master
on_success: change
on_failure: always
recipients:
- desarrollo.benders@idealista.com

View File

@@ -1,68 +1,22 @@
# 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
### Fixed
### Added
### Changed
### Removed
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.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
### [1.0.1](https://git.laurivan.com/Dev/cookiecutter-ansible-role-docker/compare/v1.0.0...v1.0.1) (2023-01-12)
## [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)
### Fixed
- *[#27](https://github.com/idealista/cookiecutter-ansible-role/issues/27) Adding Probot configuration to Ansible Role template* @dortegau
### Bug Fixes
### 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
* 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))
### Removed
- *[#29](https://github.com/idealista/cookiecutter-ansible-role/issues/29) Removing redudant script in .travis.yml* @xtianae7
## 1.0.0 (2023-01-11)
## [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)
### Features
### 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
* Refactor the template for docker-compose. ([b44e69a](https://git.laurivan.com/Dev/cookiecutter-ansible-role-docker/commit/b44e69ad7eaf1b3a0e284ac403c94c60c016a4ae))
## [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
### Bug Fixes
### 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.org/idealista/cookiecutter-ansible-role.png)](https://travis-ci.org/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]:
@@ -79,6 +80,7 @@ Select has_templates:
1 - True
2 - False
Choose from 1, 2 [1]:
documentation_URL: https://cli.github.com/manual/
```
It will create the following file structure:

View File

@@ -1,5 +1,8 @@
---
exclude_paths:
- ./molecule
- ./.travis.yml
- ./.github
parseable: true
skip_list:
- '204'

View File

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

View File

@@ -1,3 +1,4 @@
---
issues:
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 90

View File

@@ -4,6 +4,8 @@ extends: default
ignore: |
molecule/**/tests/
.github
.travis.yml
rules:
braces:

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,49 @@
# {{ cookiecutter.app_name | replace('_',' ') | title }} Ansible role
# {{ cookiecutter.namespace }}.{{ cookiecutter.app_name | replace('_',' ') | title }}
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

@@ -8,10 +8,10 @@
- {{ cookiecutter.app_name }}
become: true
vars:
goss_version: v0.3.14
goss_version: v0.3.16
goss_arch: amd64
goss_dst: /usr/local/bin/goss
goss_sha256sum: 26c481073d346028451d56af600a71ec2d6c7bc960c3e207f610e32c5e1f5144
goss_sha256sum: 827e354b48f93bce933f5efcd1f00dc82569c42a179cf2d384b040d8a80bfbfb
goss_url: "https://github.com/aelsabbahy/goss/releases/download/{% raw %}{{{% endraw %} goss_version {% raw %}}}{% endraw %}/goss-linux-{% raw %}{{{% endraw %} goss_arch {% raw %}}}{% endraw %}"
goss_test_directory: /tmp
goss_format: documentation
@@ -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
@@ -45,6 +45,7 @@
command: "{% raw %}{{{% endraw %} goss_dst {% raw %}}}{% endraw %} -g {% raw %}{{{% endraw %} item {% raw %}}}{% endraw %} validate --format {% raw %}{{{% endraw %} goss_format {% raw %}}}{% endraw %}"
register: test_results
with_items: "{% raw %}{{{% endraw %} test_files.stdout_lines {% raw %}}}{% endraw %}"
ignore_errors: true
- name: Display details about the Goss results
debug:

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

@@ -0,0 +1,3 @@
*.yml linguist-detectable=true
*.yaml linguist-detectable=true
*.html linguist-detectable=false

View File

@@ -0,0 +1,25 @@
---
dist: xenial
language: python
python: "3.9"
os: linux
services:
- docker
install:
- pip install -I pipenv
- pipenv sync
env:
jobs:
{% 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
notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/
email:
if: branch = main
on_success: change
on_failure: always
recipients:
- laur.ivan@gmail.com

View File

@@ -2,24 +2,29 @@
"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"]
"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" && 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 [{{ cookiecutter.app_name | replace('_',' ') | title }}](APP_URL_HERE) 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.14-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,60 +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: https://www.example.documentation.com
# Owner
{{ cookiecutter.app_name }}_user: exampleuser
{{ cookiecutter.app_name }}_group: examplegroup
# 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,36 +0,0 @@
---
file:
{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_bin_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 %}
exists: true
filetype: directory
{% if cookiecutter.has_service == 'True' %}
# port:
# # Check port at IPv6
# # https://github.com/aelsabbahy/goss/issues/177
# tcp6:{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_port {% raw %}}}{% endraw %}:
# listening: true
# ip:
# - '::'
service:
{{ cookiecutter.app_name }}:
enabled: true
running: true
process:
{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_exec_name {% raw %}}}{% endraw %}:
running: true
user:
{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_user {% raw %}}}{% endraw %}:
exists: true
groups:
- {% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_group {% raw %}}}{% endraw %}
shell: /usr/sbin/nologin
group:
{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_group {% raw %}}}{% endraw %}:
exists: true
{% endif %}

View File

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

View File

@@ -1,74 +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
- 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: /usr/sbin/nologin
createhome: no
{% 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 %}"
- 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: file
when: {{ cookiecutter.app_name }}_log_file is defined
- 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
- 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
- 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
- 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
- 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

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,17 +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 }}
- 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

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

View File

@@ -1,19 +0,0 @@
---
dist: xenial
language: python
python: "3.7"
os: linux
services:
- docker
install:
- pip install 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 %}
script:
- pipenv run molecule test
notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/