mirror of
https://github.com/idealista/cookiecutter-ansible-role.git
synced 2026-03-01 02:19:57 +01:00
Compare commits
46 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8a3994cd38 | |||
| fa2d5b9d8d | |||
| 5068645964 | |||
| e06c5e24ef | |||
| 40ff2301fe | |||
| f7ead2d3c6 | |||
| 5413342847 | |||
| fe7df1f907 | |||
| dea1634b98 | |||
| b44e69ad7e | |||
|
|
e6d5c5a9a3 | ||
|
|
a0c761368d | ||
|
|
6c534bdf83 | ||
|
|
c94c86d963 | ||
|
|
3917b2a78b | ||
|
|
c6446c7e58 | ||
|
|
45e9ea744b | ||
|
|
1e99d8b02c | ||
|
|
f23f55643d | ||
|
|
4b7c659da1 | ||
|
|
f6f4658aef | ||
|
|
42900e46c4 | ||
|
|
436e824881 | ||
|
|
6522c7ef21 | ||
|
|
8a599c249f | ||
|
|
fdbc7c3908 | ||
|
|
1121b4534e | ||
|
|
16095bb031 | ||
|
|
8ef54f7f0d | ||
|
|
b33689d3b5 | ||
|
|
ea7487e2a9 | ||
|
|
2406ba62c1 | ||
|
|
9e1cb98351 | ||
|
|
dc504ad7d6 | ||
|
|
74b1c3483f | ||
|
|
b5685a90cd | ||
|
|
23d2def966 | ||
|
|
076db03bbe | ||
|
|
c9e2a83163 | ||
|
|
ff5533b940 | ||
|
|
9211b42147 | ||
|
|
4c2995e3d8 | ||
|
|
07f9750241 | ||
|
|
14ae8d9e14 | ||
|
|
ed6eb9ff29 | ||
|
|
92e30ec9ac |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -8,6 +8,7 @@ __pycache__
|
||||
*.iml
|
||||
.idea
|
||||
.project
|
||||
.venv
|
||||
|
||||
*.pyc
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
111
CHANGELOG.md
111
CHANGELOG.md
@@ -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))
|
||||
|
||||
19
README.md
19
README.md
@@ -1,9 +1,7 @@
|
||||
# Cookiecutter Ansible Role
|
||||

|
||||
|
||||
[](https://travis-ci.com/idealista/cookiecutter-ansible-role)
|
||||
|
||||
|
||||
[](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]:
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
---
|
||||
exclude_paths:
|
||||
- ./molecule
|
||||
- ./.travis.yml
|
||||
2
ansible-role-{{cookiecutter.app_name}}/.github/FUNDING.yml
vendored
Normal file
2
ansible-role-{{cookiecutter.app_name}}/.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
github: {{ cookiecutter.github_user }}
|
||||
patreon: {{ cookiecutter.patreon_user }}
|
||||
@@ -3,16 +3,16 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
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
|
||||
47
ansible-role-{{cookiecutter.app_name}}/README.md
Normal file
47
ansible-role-{{cookiecutter.app_name}}/README.md
Normal 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.
|
||||
|
||||

|
||||
|
||||
## Author Information
|
||||
|
||||
This role was created in 2023 by [Laur Ivan](https://www.laurivan.com).
|
||||
|
||||
## Built With
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
## Contributing
|
||||
|
||||
Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.
|
||||
16
ansible-role-{{cookiecutter.app_name}}/defaults/main.yml
Normal file
16
ansible-role-{{cookiecutter.app_name}}/defaults/main.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
|
||||
## General
|
||||
# Version
|
||||
{{ cookiecutter.app_name }}_version: 1.0.0
|
||||
|
||||
# {{ cookiecutter.app_name }} paths
|
||||
{{ cookiecutter.app_name }}_root_path: /opt/{{ cookiecutter.app_name }}
|
||||
{{ cookiecutter.app_name }}_config_path: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_root_path {% raw %}}}{% endraw %}/conf"
|
||||
{{ cookiecutter.app_name }}_skeleton_paths:
|
||||
- "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_config_path {% raw %}}}{% endraw %}"
|
||||
|
||||
# Documentation
|
||||
{{ cookiecutter.app_name }}_documentation_link: "{{ cookiecutter.documentation_URL }}"
|
||||
|
||||
|
||||
2
ansible-role-{{cookiecutter.app_name}}/handlers/main.yml
Normal file
2
ansible-role-{{cookiecutter.app_name}}/handlers/main.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
---
|
||||
# Handlers for {{ cookiecutter.app_name }}
|
||||
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
26
ansible-role-{{cookiecutter.app_name}}/meta/main.yml
Normal file
26
ansible-role-{{cookiecutter.app_name}}/meta/main.yml
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
|
||||
galaxy_info:
|
||||
author: {{ cookiecutter.author }}
|
||||
namespace: {{ cookiecutter.namespace }}
|
||||
{% if cookiecutter.company != "" %}company: {{ cookiecutter.company }}{% endif %}
|
||||
role_name: {{ cookiecutter.app_name }}
|
||||
description: {{ cookiecutter.app_name | replace('_',' ') | title }} Role
|
||||
min_ansible_version: {{ cookiecutter.min_ansible_version }}
|
||||
min_ansible_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 %}
|
||||
@@ -0,0 +1,23 @@
|
||||
---
|
||||
- name: Clean up
|
||||
hosts: all
|
||||
gather_facts: true
|
||||
tasks:
|
||||
- name: Check if the docker-compose file exists.
|
||||
ansible.builtin.stat:
|
||||
path: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_config_path | expanduser | realpath {% raw %}}}{% endraw %}/docker-compose.yml"
|
||||
register: docker_compose_file
|
||||
|
||||
- name: Remove docker-compose.
|
||||
community.docker.docker_compose:
|
||||
project_src: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_config_path | expanduser | realpath {% raw %}}}{% endraw %}/"
|
||||
build: false
|
||||
state: absent
|
||||
when: docker_compose_file.stat.exists
|
||||
become: false
|
||||
|
||||
- name: Remove the docker-compose file
|
||||
ansible.builtin.file:
|
||||
path: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_config_path | expanduser | realpath {% raw %}}}{% endraw %}/docker-compose.yml"
|
||||
state: absent
|
||||
when: docker_compose_file.stat.exists
|
||||
@@ -2,4 +2,4 @@
|
||||
- name: Converge
|
||||
hosts: {{ cookiecutter.app_name }}_group
|
||||
roles:
|
||||
- role: {{ cookiecutter.app_name }}_role
|
||||
- role: "{{cookiecutter.namespace}}.{{ cookiecutter.app_name }}"
|
||||
@@ -0,0 +1,27 @@
|
||||
---
|
||||
- name: Destroy
|
||||
hosts: localhost
|
||||
connection: local
|
||||
gather_facts: false
|
||||
no_log: "{% raw %}{{ molecule_no_log }}{% endraw %}"
|
||||
tasks:
|
||||
# Developer must implement.
|
||||
- name: Remove the docker image
|
||||
community.docker.docker_container:
|
||||
name: {{ cookiecutter.app_name }}
|
||||
state: absent
|
||||
|
||||
# Mandatory configuration for Molecule to function.
|
||||
|
||||
- name: Populate instance config
|
||||
ansible.builtin.set_fact:
|
||||
instance_conf: {}
|
||||
|
||||
- name: Dump instance config
|
||||
ansible.builtin.copy:
|
||||
content: |
|
||||
# Molecule managed
|
||||
{% raw %}{{ instance_conf | to_json | from_json | to_yaml }}{% endraw %}
|
||||
dest: "{% raw %}{{ molecule_instance_config }}{% endraw %}"
|
||||
mode: 0600
|
||||
when: server.changed | default(false) | bool
|
||||
@@ -1,6 +1,11 @@
|
||||
---
|
||||
dependency:
|
||||
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
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
- name: Setup the test machine
|
||||
hosts: {{ cookiecutter.app_name }}
|
||||
tasks:
|
||||
- name: Check if /var/run/docker.sock already exists
|
||||
ansible.builtin.stat:
|
||||
path: "/var/run/docker.sock"
|
||||
register: docker_sock_stat
|
||||
|
||||
- name: Create docker.sock
|
||||
ansible.builtin.raw: touch /var/run/docker.sock
|
||||
become: true
|
||||
changed_when: false
|
||||
when: not docker_sock_stat.stat.exists
|
||||
|
||||
- name: Move docker.sock from tmp
|
||||
ansible.builtin.raw: >
|
||||
mount --move /tmp/docker_mounted.sock /var/run/docker.sock
|
||||
become: true
|
||||
changed_when: false
|
||||
when: not docker_sock_stat.stat.exists
|
||||
|
||||
- name: Update apt cache.
|
||||
ansible.builtin.apt: update_cache=yes cache_valid_time=600
|
||||
when: ansible_os_family == 'Debian'
|
||||
|
||||
- name: Install python requests
|
||||
ansible.builtin.pip:
|
||||
name:
|
||||
- requests
|
||||
- docker
|
||||
- docker-compose
|
||||
|
||||
- name: Install docker
|
||||
vars:
|
||||
docker_service_manage: false
|
||||
ansible.builtin.include_role:
|
||||
name: geerlingguy.docker
|
||||
@@ -0,0 +1,4 @@
|
||||
---
|
||||
roles:
|
||||
- geerlingguy.docker
|
||||
collections: []
|
||||
@@ -0,0 +1,12 @@
|
||||
---
|
||||
## TODO: Remember to adapt goss tests to your convenience
|
||||
|
||||
|
||||
## Check if ports are really exposed
|
||||
# port:
|
||||
# # Check port at IPv6
|
||||
# # https://github.com/aelsabbahy/goss/issues/177
|
||||
# tcp6:<port>:
|
||||
# listening: true
|
||||
# ip:
|
||||
# - '::'
|
||||
@@ -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
|
||||
24
ansible-role-{{cookiecutter.app_name}}/tasks/config.yml
Normal file
24
ansible-role-{{cookiecutter.app_name}}/tasks/config.yml
Normal 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
|
||||
|
||||
7
ansible-role-{{cookiecutter.app_name}}/tasks/install.yml
Normal file
7
ansible-role-{{cookiecutter.app_name}}/tasks/install.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
- name: "{{ cookiecutter.app_name | upper }} | Ensure {{ cookiecutter.app_name }} is running"
|
||||
community.docker.docker_compose:
|
||||
project_src: "{%raw%}{{{%endraw%} {{ cookiecutter.app_name }}_config_path | expanduser | realpath {%raw%}}}{%endraw%}"
|
||||
build: false
|
||||
tags:
|
||||
- {{ cookiecutter.app_name }}_install
|
||||
11
ansible-role-{{cookiecutter.app_name}}/tasks/main.yml
Normal file
11
ansible-role-{{cookiecutter.app_name}}/tasks/main.yml
Normal 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
|
||||
@@ -0,0 +1,3 @@
|
||||
# {{ cookiecutter.app_name }} docker compose
|
||||
version: '3.9'
|
||||
services:
|
||||
@@ -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 }}
|
||||
@@ -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
|
||||
@@ -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":""
|
||||
|
||||
@@ -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
19
test.sh
@@ -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
|
||||
|
||||
@@ -1,109 +0,0 @@
|
||||
# {{ cookiecutter.app_name | replace('_',' ') | title }} Ansible role
|
||||

|
||||
|
||||
[](https://travis-ci.com/idealista/{{ cookiecutter.app_name }}_role)
|
||||
[](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
|
||||
|
||||

|
||||

|
||||

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

|
||||
|
||||
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.
|
||||
@@ -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 %}
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
{% if cookiecutter.has_service == 'True' %}
|
||||
- name: restart {{ cookiecutter.app_name }}
|
||||
systemd:
|
||||
name: {{ cookiecutter.app_name }}
|
||||
state: restarted
|
||||
when: {{ cookiecutter.app_name }}_service_state != 'stopped'
|
||||
{% endif %}
|
||||
@@ -1,17 +0,0 @@
|
||||
---
|
||||
|
||||
galaxy_info:
|
||||
author: {{ cookiecutter.author }}
|
||||
company: {{ cookiecutter.company }}
|
||||
description: {{ cookiecutter.app_name | replace('_',' ') | title }} Role
|
||||
min_ansible_version: {{ cookiecutter.min_ansible_version }}
|
||||
license: {{ cookiecutter.license }}
|
||||
galaxy-tags:
|
||||
- {{ cookiecutter.galaxy_tag_1 }}
|
||||
- {{ cookiecutter.galaxy_tag_2 }}
|
||||
- {{ cookiecutter.galaxy_tag_3 }}
|
||||
platforms:
|
||||
- name: Debian
|
||||
versions:
|
||||
{% if cookiecutter.debian_stretch_support == 'True' %}- stretch{% endif %}
|
||||
{% if cookiecutter.debian_buster_support == 'True' %}- buster{% endif %}
|
||||
@@ -1,12 +0,0 @@
|
||||
# Molecule managed
|
||||
|
||||
{% raw %}{% if item.registry is defined %}
|
||||
FROM {{ item.registry.url }}/{{ item.image }}
|
||||
{% else %}
|
||||
FROM {{ item.image }}
|
||||
{% endif %}
|
||||
|
||||
# install minimal packages for debian slim images
|
||||
RUN apt-get update && \
|
||||
apt-get install -y python sudo bash ca-certificates iproute2 systemd systemd-sysv python-pip && \
|
||||
apt-get clean{% endraw %}
|
||||
@@ -1,46 +0,0 @@
|
||||
---
|
||||
## TODO: Remember to adapt goss tests to your convenience
|
||||
{% if cookiecutter.has_service == 'True' %}
|
||||
service:
|
||||
{{ cookiecutter.app_name }}:
|
||||
enabled: true
|
||||
running: true
|
||||
|
||||
process:
|
||||
{{ cookiecutter.exec_name }}:
|
||||
running: true
|
||||
|
||||
user:
|
||||
exampleuser:
|
||||
exists: true
|
||||
groups:
|
||||
- examplegroup
|
||||
shell: /usr/sbin/nologin
|
||||
group:
|
||||
examplegroup:
|
||||
exists: true
|
||||
{% endif %}
|
||||
file:
|
||||
/opt/{{ cookiecutter.app_name }}:
|
||||
{% if cookiecutter.has_service == 'True' %}
|
||||
owner: exampleuser
|
||||
group: examplegroup
|
||||
{% endif %}
|
||||
exists: true
|
||||
filetype: directory
|
||||
/opt/{{ cookiecutter.app_name }}/bin:
|
||||
{% if cookiecutter.has_service == 'True' %}
|
||||
owner: exampleuser
|
||||
group: examplegroup
|
||||
{% endif %}
|
||||
exists: true
|
||||
filetype: directory
|
||||
|
||||
## Check if ports are really exposed
|
||||
# port:
|
||||
# # Check port at IPv6
|
||||
# # https://github.com/aelsabbahy/goss/issues/177
|
||||
# tcp6:<port>:
|
||||
# listening: true
|
||||
# ip:
|
||||
# - '::'
|
||||
@@ -1 +0,0 @@
|
||||
---
|
||||
@@ -1,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
|
||||
@@ -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 %}
|
||||
@@ -1,21 +0,0 @@
|
||||
---
|
||||
|
||||
- name: {{ cookiecutter.app_name | upper }} | Copy Daemon script
|
||||
template:
|
||||
src: {{ cookiecutter.app_name }}.service.j2
|
||||
dest: /etc/systemd/system/{{ cookiecutter.app_name }}.service
|
||||
mode: 0644
|
||||
owner: root
|
||||
group: root
|
||||
notify: restart {{ cookiecutter.app_name }}
|
||||
tags:
|
||||
- {{ cookiecutter.app_name }}_service
|
||||
|
||||
- name: {{ cookiecutter.app_name | upper }} | Configuring service
|
||||
systemd:
|
||||
name: {{ cookiecutter.app_name }}
|
||||
state: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_service_state {% raw %}}}{% endraw %}"
|
||||
enabled: "{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_service_enabled {% raw %}}}{% endraw %}"
|
||||
daemon_reload: yes
|
||||
tags:
|
||||
- {{ cookiecutter.app_name }}_service
|
||||
@@ -1,24 +0,0 @@
|
||||
{% raw %}{{ ansible_managed | comment }}{% endraw %}
|
||||
[Unit]
|
||||
Description={{ cookiecutter.app_name | replace('_',' ') }}
|
||||
Documentation={% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_documentation_link {% raw %}}}{% endraw %}
|
||||
Requires=network-online.target
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
PrivateTmp={% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_private_tmp {% raw %}}}{% endraw %}
|
||||
User={% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_user {% raw %}}}{% endraw %}
|
||||
Group={% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_group {% raw %}}}{% endraw %}
|
||||
RuntimeDirectory={{ cookiecutter.app_name }}
|
||||
LimitNOFILE={% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_max_files {% raw %}}}{% endraw %}
|
||||
|
||||
ExecStart={% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_bin_path {% raw %}}}{% endraw %}/{% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_exec_name {% raw %}}}{% endraw %} {% raw %}{%{% endraw %} for option in {{ cookiecutter.app_name }}_options {% raw %}%}{% endraw %}{% raw %}{%{% endraw %} if option {% raw %}%}{% endraw %}-{% raw %}{{{% endraw %} option {% raw %}}}{% endraw %} {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %}{% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %}
|
||||
|
||||
StandardOutput={% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_log_output {% raw %}}}{% endraw %}
|
||||
StandardError={% raw %}{{{% endraw %} {{ cookiecutter.app_name }}_log_output {% raw %}}}{% endraw %}
|
||||
ExecReload=/bin/kill -HUP $MAINPID
|
||||
KillSignal=SIGTERM
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -1,4 +0,0 @@
|
||||
ansible=={{ cookiecutter.ansible_version }}
|
||||
molecule=={{ cookiecutter.molecule_version }}
|
||||
docker=={{ cookiecutter.python_docker_version }}
|
||||
ansible-lint=={{ cookiecutter.ansible_lint_version }}
|
||||
Reference in New Issue
Block a user