add ansible

This commit is contained in:
Vassiliy Yegorov
2022-11-15 10:30:03 +07:00
parent 2d44f9f8f8
commit a08e7b0120
31 changed files with 1172 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
---
skip_list:
- '204'

View File

@@ -0,0 +1,7 @@
*.retry
*.log
.molecule
.cache
__pycache__/
.pytest_cache
.tox

View File

@@ -0,0 +1,25 @@
---
rules:
exclude_files:
- .github
- molecule
exclude_filter:
- LINT0009
- ANSIBLE0015
ignore_dotfiles: True
# based on ansible-galaxy rules
yamllint:
braces: {max-spaces-inside: 1, level: error}
colons: {max-spaces-after: -1, level: error}
commas: {max-spaces-after: -1, level: error}
comments: disable
comments-indentation: disable
empty-lines: {max: 3, level: error}
hyphens: {level: error}
key-duplicates: enable
line-length: disable
new-line-at-end-of-file: disable
new-lines: {type: unix}
trailing-spaces: disable
truthy: disable

View File

@@ -0,0 +1,31 @@
extends: default
ignore: |
.travis/
.travis.yml
.github/
.tox
meta/
rules:
# based on ansible-galaxy rules
braces: {max-spaces-inside: 1, level: error}
colons: {max-spaces-after: -1, level: error}
commas: {max-spaces-after: -1, level: error}
comments: disable
comments-indentation: disable
document-start: disable
empty-lines: {max: 3, level: error}
hyphens: {level: error}
indentation: disable
key-duplicates: enable
line-length: disable
new-line-at-end-of-file: disable
new-lines: {type: unix}
trailing-spaces: disable
truthy: disable
# Max 1 space in empty brackets
brackets:
min-spaces-inside-empty: 0
max-spaces-inside-empty: 1

View File

@@ -0,0 +1,328 @@
# Changelog
## [1.18.0](https://github.com/patrickjahns/ansible-role-promtail/tree/1.18.0) (2022-07-19)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.17.0...1.18.0)
**Implemented enhancements:**
- Add variable promtail\_systemd\_service\_template\_file for systemd service template file [\#117](https://github.com/patrickjahns/ansible-role-promtail/pull/117) ([ni-mkougioumtzian](https://github.com/ni-mkougioumtzian))
**Merged pull requests:**
- chore\(deps\): update dependency grafana/loki to v2.6.1 [\#120](https://github.com/patrickjahns/ansible-role-promtail/pull/120) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency molecule-docker to v2 [\#119](https://github.com/patrickjahns/ansible-role-promtail/pull/119) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency setuptools to v63.2.0 [\#118](https://github.com/patrickjahns/ansible-role-promtail/pull/118) ([renovate[bot]](https://github.com/apps/renovate))
## [1.17.0](https://github.com/patrickjahns/ansible-role-promtail/tree/1.17.0) (2022-07-08)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.16.0...1.17.0)
**Closed issues:**
- Support pipeline\_stages [\#105](https://github.com/patrickjahns/ansible-role-promtail/issues/105)
**Merged pull requests:**
- chore\(deps\): update dependency grafana/loki to v2.6.0 [\#115](https://github.com/patrickjahns/ansible-role-promtail/pull/115) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency setuptools to v63 [\#114](https://github.com/patrickjahns/ansible-role-promtail/pull/114) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency setuptools to v62.6.0 [\#111](https://github.com/patrickjahns/ansible-role-promtail/pull/111) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency molecule to v4 [\#110](https://github.com/patrickjahns/ansible-role-promtail/pull/110) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update actions/setup-python action to v4 [\#109](https://github.com/patrickjahns/ansible-role-promtail/pull/109) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update robertdebock/galaxy-action action to v1.2.1 [\#107](https://github.com/patrickjahns/ansible-role-promtail/pull/107) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency setuptools to v62.5.0 [\#106](https://github.com/patrickjahns/ansible-role-promtail/pull/106) ([renovate[bot]](https://github.com/apps/renovate))
## [1.16.0](https://github.com/patrickjahns/ansible-role-promtail/tree/1.16.0) (2022-04-11)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.15.0...1.16.0)
**Implemented enhancements:**
- Add upstream sync script [\#4](https://github.com/patrickjahns/ansible-role-promtail/issues/4)
- chore\(deps\): update dependency grafana/loki to v2.5.0 [\#103](https://github.com/patrickjahns/ansible-role-promtail/pull/103) ([renovate[bot]](https://github.com/apps/renovate))
**Merged pull requests:**
- chore\(deps\): update dependency setuptools to v62 [\#102](https://github.com/patrickjahns/ansible-role-promtail/pull/102) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update robertdebock/galaxy-action action to v1.2.0 [\#100](https://github.com/patrickjahns/ansible-role-promtail/pull/100) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency setuptools to v61 [\#99](https://github.com/patrickjahns/ansible-role-promtail/pull/99) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update actions/checkout action to v3 [\#98](https://github.com/patrickjahns/ansible-role-promtail/pull/98) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update actions/setup-python action to v3 [\#97](https://github.com/patrickjahns/ansible-role-promtail/pull/97) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency molecule to v3.6.1 [\#95](https://github.com/patrickjahns/ansible-role-promtail/pull/95) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency setuptools to v60.9.2 [\#94](https://github.com/patrickjahns/ansible-role-promtail/pull/94) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency molecule to v3.6.0 [\#93](https://github.com/patrickjahns/ansible-role-promtail/pull/93) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency setuptools to v60.8.1 [\#92](https://github.com/patrickjahns/ansible-role-promtail/pull/92) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency setuptools to v60.6.0 [\#91](https://github.com/patrickjahns/ansible-role-promtail/pull/91) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency setuptools to v60 [\#88](https://github.com/patrickjahns/ansible-role-promtail/pull/88) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency setuptools to v58.5.3 [\#87](https://github.com/patrickjahns/ansible-role-promtail/pull/87) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update robertdebock/galaxy-action action to v1.1.1 [\#83](https://github.com/patrickjahns/ansible-role-promtail/pull/83) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): pin dependencies [\#82](https://github.com/patrickjahns/ansible-role-promtail/pull/82) ([renovate[bot]](https://github.com/apps/renovate))
- chore: add renovate config [\#80](https://github.com/patrickjahns/ansible-role-promtail/pull/80) ([MindTooth](https://github.com/MindTooth))
## [1.15.0](https://github.com/patrickjahns/ansible-role-promtail/tree/1.15.0) (2022-01-13)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.14.0...1.15.0)
**Implemented enhancements:**
- Add promtail\_systemd\_service variable \(needed to configure multiple promtail instances\). [\#73](https://github.com/patrickjahns/ansible-role-promtail/pull/73) ([aberes](https://github.com/aberes))
**Merged pull requests:**
- Remove deprecated `include` [\#78](https://github.com/patrickjahns/ansible-role-promtail/pull/78) ([Lithimlin](https://github.com/Lithimlin))
- chore: update to promtail 2.4.2 [\#77](https://github.com/patrickjahns/ansible-role-promtail/pull/77) ([patrickjahns](https://github.com/patrickjahns))
## [1.14.0](https://github.com/patrickjahns/ansible-role-promtail/tree/1.14.0) (2021-12-28)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.13.1...1.14.0)
**Implemented enhancements:**
- Allow for custom checksum [\#72](https://github.com/patrickjahns/ansible-role-promtail/pull/72) ([Cyb3r-Jak3](https://github.com/Cyb3r-Jak3))
**Closed issues:**
- Ability to disable checksum check [\#71](https://github.com/patrickjahns/ansible-role-promtail/issues/71)
## [1.13.1](https://github.com/patrickjahns/ansible-role-promtail/tree/1.13.1) (2021-11-28)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.13.0...1.13.1)
**Closed issues:**
- Cannot pull latest version [\#65](https://github.com/patrickjahns/ansible-role-promtail/issues/65)
**Merged pull requests:**
- \[RELEASE\] 1.13.1 [\#69](https://github.com/patrickjahns/ansible-role-promtail/pull/69) ([github-actions[bot]](https://github.com/apps/github-actions))
- Update meta and CI to show Debian Bullseye support. [\#68](https://github.com/patrickjahns/ansible-role-promtail/pull/68) ([twoequaldots](https://github.com/twoequaldots))
## [1.13.1](https://github.com/patrickjahns/ansible-role-promtail/tree/1.13.1) (2021-11-28)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.13.0...1.13.1)
**Closed issues:**
- Cannot pull latest version [\#65](https://github.com/patrickjahns/ansible-role-promtail/issues/65)
**Merged pull requests:**
- Update meta and CI to show Debian Bullseye support. [\#68](https://github.com/patrickjahns/ansible-role-promtail/pull/68) ([twoequaldots](https://github.com/twoequaldots))
## [1.13.0](https://github.com/patrickjahns/ansible-role-promtail/tree/1.13.0) (2021-11-10)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.12.0...1.13.0)
**Merged pull requests:**
- chore: bump promtail to 2.4.1 [\#66](https://github.com/patrickjahns/ansible-role-promtail/pull/66) ([patrickjahns](https://github.com/patrickjahns))
## [1.12.0](https://github.com/patrickjahns/ansible-role-promtail/tree/1.12.0) (2021-09-10)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.11.0...1.12.0)
**Closed issues:**
- Remove update\_cache or make it optional [\#63](https://github.com/patrickjahns/ansible-role-promtail/issues/63)
- Remove `run\_once: True` in preflight [\#59](https://github.com/patrickjahns/ansible-role-promtail/issues/59)
**Merged pull requests:**
- Add possibility to opt out of APT cache updates [\#64](https://github.com/patrickjahns/ansible-role-promtail/pull/64) ([mweinelt](https://github.com/mweinelt))
- chore: bump promtail to version 2.3.0 [\#60](https://github.com/patrickjahns/ansible-role-promtail/pull/60) ([patrickjahns](https://github.com/patrickjahns))
## [1.11.0](https://github.com/patrickjahns/ansible-role-promtail/tree/1.11.0) (2021-04-06)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.10.0...1.11.0)
**Implemented enhancements:**
- chore: bump promtail version to 2.2.1 [\#56](https://github.com/patrickjahns/ansible-role-promtail/pull/56) ([patrickjahns](https://github.com/patrickjahns))
**Closed issues:**
- Version 1.10.0 not available on Galaxy [\#53](https://github.com/patrickjahns/ansible-role-promtail/issues/53)
## [1.10.0](https://github.com/patrickjahns/ansible-role-promtail/tree/1.10.0) (2021-04-02)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.9.1...1.10.0)
**Implemented enhancements:**
- chore: bump promtail to 2.2.0 [\#51](https://github.com/patrickjahns/ansible-role-promtail/pull/51) ([patrickjahns](https://github.com/patrickjahns))
**Fixed bugs:**
- ci: ensure the release version is properly parsed in the release pipeline [\#54](https://github.com/patrickjahns/ansible-role-promtail/pull/54) ([patrickjahns](https://github.com/patrickjahns))
**Merged pull requests:**
- \[RELEASE\] 1.10.0 [\#52](https://github.com/patrickjahns/ansible-role-promtail/pull/52) ([github-actions[bot]](https://github.com/apps/github-actions))
## [1.10.0](https://github.com/patrickjahns/ansible-role-promtail/tree/1.10.0) (2021-03-11)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.9.1...1.10.0)
**Implemented enhancements:**
- chore: bump promtail to 2.2.0 [\#51](https://github.com/patrickjahns/ansible-role-promtail/pull/51) ([patrickjahns](https://github.com/patrickjahns))
## [1.9.1](https://github.com/patrickjahns/ansible-role-promtail/tree/1.9.1) (2020-12-30)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.9.0...1.9.1)
**Closed issues:**
- Entry\_parser setting is no longer needed in playbook examples [\#47](https://github.com/patrickjahns/ansible-role-promtail/issues/47)
**Merged pull requests:**
- doc: correct links to upstream configuration [\#50](https://github.com/patrickjahns/ansible-role-promtail/pull/50) ([patrickjahns](https://github.com/patrickjahns))
- Remove entry parser setting from example config [\#48](https://github.com/patrickjahns/ansible-role-promtail/pull/48) ([tideline3d](https://github.com/tideline3d))
## [1.9.0](https://github.com/patrickjahns/ansible-role-promtail/tree/1.9.0) (2020-12-26)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.8.0...1.9.0)
**Merged pull requests:**
- chore: bump promtail version to 2.1.0 [\#45](https://github.com/patrickjahns/ansible-role-promtail/pull/45) ([patrickjahns](https://github.com/patrickjahns))
## [1.8.0](https://github.com/patrickjahns/ansible-role-promtail/tree/1.8.0) (2020-12-25)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.7.0...1.8.0)
**Implemented enhancements:**
- Make role compatible with RHEL linux distributions [\#8](https://github.com/patrickjahns/ansible-role-promtail/issues/8)
- Feature rhel compatability [\#43](https://github.com/patrickjahns/ansible-role-promtail/pull/43) ([patrickjahns](https://github.com/patrickjahns))
**Fixed bugs:**
- Why is the promtail\_config\_positions empty by default? [\#37](https://github.com/patrickjahns/ansible-role-promtail/issues/37)
**Closed issues:**
- Move ansible tests to github actions [\#34](https://github.com/patrickjahns/ansible-role-promtail/issues/34)
**Merged pull requests:**
- CI: fix testing by pinning dependencies [\#44](https://github.com/patrickjahns/ansible-role-promtail/pull/44) ([patrickjahns](https://github.com/patrickjahns))
- doc: improve readme [\#42](https://github.com/patrickjahns/ansible-role-promtail/pull/42) ([patrickjahns](https://github.com/patrickjahns))
- CI: notify galay on a new release [\#41](https://github.com/patrickjahns/ansible-role-promtail/pull/41) ([patrickjahns](https://github.com/patrickjahns))
- Fixes / extends configuration of the positions file [\#39](https://github.com/patrickjahns/ansible-role-promtail/pull/39) ([funkyfuture](https://github.com/funkyfuture))
- ci: move to github actions [\#38](https://github.com/patrickjahns/ansible-role-promtail/pull/38) ([patrickjahns](https://github.com/patrickjahns))
## [1.7.0](https://github.com/patrickjahns/ansible-role-promtail/tree/1.7.0) (2020-10-28)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.6.1...1.7.0)
**Implemented enhancements:**
- Chore\(binary\) update promtail to 2.0.0 [\#32](https://github.com/patrickjahns/ansible-role-promtail/pull/32) ([abmurksi](https://github.com/abmurksi))
**Merged pull requests:**
- ci: test with ansible 2.10 [\#36](https://github.com/patrickjahns/ansible-role-promtail/pull/36) ([patrickjahns](https://github.com/patrickjahns))
- fix: fix tests by including new required molecule-docker dependency [\#33](https://github.com/patrickjahns/ansible-role-promtail/pull/33) ([patrickjahns](https://github.com/patrickjahns))
## [1.6.1](https://github.com/patrickjahns/ansible-role-promtail/tree/1.6.1) (2020-09-11)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.6.0...1.6.1)
**Merged pull requests:**
- chore\(binary\): update promtail to 1.6.1 [\#29](https://github.com/patrickjahns/ansible-role-promtail/pull/29) ([abmurksi](https://github.com/abmurksi))
## [1.6.0](https://github.com/patrickjahns/ansible-role-promtail/tree/1.6.0) (2020-09-03)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.5.0...1.6.0)
**Fixed bugs:**
- fix: specify provide permissions for file related tasks [\#27](https://github.com/patrickjahns/ansible-role-promtail/pull/27) ([patrickjahns](https://github.com/patrickjahns))
**Merged pull requests:**
- chore\(binary\): update promtail to version 1.6.0 [\#26](https://github.com/patrickjahns/ansible-role-promtail/pull/26) ([secustor](https://github.com/secustor))
## [1.5.0](https://github.com/patrickjahns/ansible-role-promtail/tree/1.5.0) (2020-07-29)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.4.0...1.5.0)
**Implemented enhancements:**
- Make role compatible with arm architecture [\#20](https://github.com/patrickjahns/ansible-role-promtail/issues/20)
**Fixed bugs:**
- Replace the rest of the hardcoded references to amd64 with {{ go\_arch }} [\#23](https://github.com/patrickjahns/ansible-role-promtail/pull/23) ([mkeesey](https://github.com/mkeesey))
## [1.4.0](https://github.com/patrickjahns/ansible-role-promtail/tree/1.4.0) (2020-05-27)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.3.1...1.4.0)
**Implemented enhancements:**
- feat: add support for arm architecture [\#22](https://github.com/patrickjahns/ansible-role-promtail/pull/22) ([patrickjahns](https://github.com/patrickjahns))
- Promtail 1.5.0 [\#17](https://github.com/patrickjahns/ansible-role-promtail/pull/17) ([patrickjahns](https://github.com/patrickjahns))
## [1.3.1](https://github.com/patrickjahns/ansible-role-promtail/tree/1.3.1) (2020-05-26)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.3.0...1.3.1)
**Fixed bugs:**
- fix: raise privileges of restart handler [\#15](https://github.com/patrickjahns/ansible-role-promtail/pull/15) ([terorie](https://github.com/terorie))
## [1.3.0](https://github.com/patrickjahns/ansible-role-promtail/tree/1.3.0) (2020-05-10)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.2.0...1.3.0)
**Implemented enhancements:**
- Include canary [\#1](https://github.com/patrickjahns/ansible-role-promtail/issues/1)
- add support for ubuntu disco [\#13](https://github.com/patrickjahns/ansible-role-promtail/pull/13) ([patrickjahns](https://github.com/patrickjahns))
- Feat add file sd config [\#12](https://github.com/patrickjahns/ansible-role-promtail/pull/12) ([patrickjahns](https://github.com/patrickjahns))
## [1.2.0](https://github.com/patrickjahns/ansible-role-promtail/tree/1.2.0) (2020-04-11)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.1.0...1.2.0)
**Fixed bugs:**
- fix: renamed promtail\_config\_scrap\_configs to promtail\_config\_scrape\_configs [\#10](https://github.com/patrickjahns/ansible-role-promtail/pull/10) ([patrickjahns](https://github.com/patrickjahns))
**Merged pull requests:**
- feat: install promtail 1.4.1 by default [\#9](https://github.com/patrickjahns/ansible-role-promtail/pull/9) ([patrickjahns](https://github.com/patrickjahns))
## [1.1.0](https://github.com/patrickjahns/ansible-role-promtail/tree/1.1.0) (2020-03-01)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.0.1...1.1.0)
**Implemented enhancements:**
- feat: specify the log level for promtail [\#7](https://github.com/patrickjahns/ansible-role-promtail/pull/7) ([patrickjahns](https://github.com/patrickjahns))
**Merged pull requests:**
- Updated repository settings and added release automation [\#5](https://github.com/patrickjahns/ansible-role-promtail/pull/5) ([patrickjahns](https://github.com/patrickjahns))
- added ansible-later for more indepth static code analysis [\#3](https://github.com/patrickjahns/ansible-role-promtail/pull/3) ([patrickjahns](https://github.com/patrickjahns))
## [1.0.1](https://github.com/patrickjahns/ansible-role-promtail/tree/1.0.1) (2020-02-09)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/1.0.0...1.0.1)
**Fixed bugs:**
- fix: failing installation on ubuntu1604 [\#2](https://github.com/patrickjahns/ansible-role-promtail/pull/2) ([patrickjahns](https://github.com/patrickjahns))
## [1.0.0](https://github.com/patrickjahns/ansible-role-promtail/tree/1.0.0) (2020-02-08)
[Full Changelog](https://github.com/patrickjahns/ansible-role-promtail/compare/87a46bd92a106bffd43e000a4579c1a444bfbf2e...1.0.0)
\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*

View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2020 Patrick Jahns
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1,125 @@
# Ansible Role: promtail
[![Test](https://github.com/patrickjahns/ansible-role-promtail/workflows/Test/badge.svg)](https://github.com/patrickjahns/ansible-role-promtail/actions?query=workflow%3ATest+branch%3Amaster)
[![License](https://img.shields.io/badge/license-MIT%20License-brightgreen.svg)](https://opensource.org/licenses/MIT)
[![Ansible Role](https://img.shields.io/badge/ansible%20role-patrickjahns.promtail-blue.svg)](https://galaxy.ansible.com/patrickjahns/promtail/)
[![GitHub tag](https://img.shields.io/github/tag/patrickjahns/ansible-role-promtail.svg)](https://github.com/patrickjahns/ansible-role-promtail/tags)
## Description
Deploy [promtail](https://github.com/grafana/loki) using ansible. Supports amd64 and arm architectures.
For recent changes, please check the [CHANGELOG](/CHANGELOG.md) or have a look at [github releases](https://github.com/patrickjahns/ansible-role-promtail/releases)
## Requirements
- Ansible >= 2.7
## Role Variables
All variables which can be overridden are stored in [defaults/main.yml](defaults/main.yml) file as well as in table below.
| Name | Default Value | Description |
|--------------------------------------------------|------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------|
| `promtail_version` | "2.6.1" | promtail package version. Also accepts *latest* as parameter. |
| `promtail_custom_checksum` | "" | Custom checksum for custom build promtail binaries |
| `promtail_config_dir` | /etc/promtail | Directory for storing promtail configuration file |
| `promtail_config_file_sd_dir` | "{{ promtail_config_dir }}/file_sd" | Default directory for `file_sd` discovery |
| `promtail_config_file` | "{{ promtail_config_dir }}/promtail.yml" | Configuration file used by promtail |
| `promtail_system_user` | promtail | User the promtail process will run at |
| `promtail_system_group` | "{{ promtail_system_user }}" | Group of the *promtail* user |
| `promtail_user_additional_groups` | "adm" | Additional groups to be added to *promtail* user to give access to allow scraping of specific log files |
| `promtail_config_clients` | see [defaults/main.yml](defaults/main.yml) | promtail [clients](https://grafana.com/docs/loki/latest/clients/promtail/configuration/#clientsg) section |
| `promtail_loki_server_url` | http://127.0.0.1:3100 | Server url where promtail will push its result |
| `promtail_config_server` | see [defaults/main.yml](defaults/main.yml) | promtail [server](https://grafana.com/docs/loki/latest/clients/promtail/configuration/#server) section |
| `promtail_positions_directory` | `/var/lib/promtail` | Path to the directory where promtail tracks scraped log positons |
| `promtail_config_positions` | {"filename": "{{ promtail_positions_directory }}/positions.yml"} | promtail [positions](https://grafana.com/docs/loki/latest/clients/promtail/configuration/#positions) section |
| `promtail_config_scrape_configs` | [] | promtail [scrape_configs](https://grafana.com/docs/loki/latest/clients/promtail/configuration/#scrape_configs) section |
| `promtail_target_config` | {} | promtail [target_config](https://grafana.com/docs/loki/latest/clients/promtail/configuration/#target_config) section |
| `promtail_log_level` | "info" | Loglevel of promtail (one of: `debug`,`info`,`warn`,`error` ) |
| `promtail_config_include_default_file_sd_config` | "True" | When set to false, the default `file_sd` will not be provisioned |
| `promtail_apt_update_cache` | "True" | When set to false the role will not update the APT cache on its own |
For each section (`promtail_config_clients`, `promtail_config_server`,`promtail_config_positions`,`promtail_config_scrape_configs`,`promtail_target_config`) the configuration can be passed accrodingly to the [official promtail configuration](https://github.com/grafana/loki/blob/master/docs/clients/promtail/configuration.md).
The role will converte the ansible vars into the respective yaml configuration for loki.
## Example Playbook
Basic playbook that will assume that loki will be listening at `http://127.0.0.1:3100` and a simple configuration to scrape `/var/log` logs:
```yaml
---
- hosts: all
roles:
- role: patrickjahns.promtail
vars:
promtail_config_scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/*log
```
A more complex example, that overrides server, client, positions configuration and provides a scrap configuration for `/var/log`:
```yaml
---
- hosts: all
roles:
- role: patrickjahns.promtail
vars:
promtail_config_server:
http_listen_port: 9080
grpc_listen_port: 9081
promtail_config_clients:
- url: "http://prometheus.domain.tld:3100/loki/api/v1/push"
external_labels:
host: "{{ ansible_hostname }}"
promtail_config_positions:
filename: "{{ promtail_positions_directory }}/positions.yaml"
sync_period: "60s"
promtail_config_scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/*log
```
## Local Testing
The preferred way of locally testing the role is to use Docker and [molecule](https://github.com/metacloud/molecule) (v3.x). You will have to install Docker on your system. See "Get started" for a Docker package suitable to for your system.
We are using tox to simplify process of testing on multiple ansible versions. To install tox execute:
```sh
pip3 install tox
```
To run tests on all ansible versions (WARNING: this can take some time)
```sh
tox
```
To run a custom molecule command on custom environment with only default test scenario:
```sh
tox -e ansible29 -- molecule test -s default
```
For more information about molecule go to their [docs](http://molecule.readthedocs.io/en/latest/).
If you would like to run tests on remote docker host just specify `DOCKER_HOST` variable before running tox tests.
## CI
Github actions is used to test and validate this ansible role via [ansible-later](https://github.com/thegeeklab/ansible-later) and [molecule](https://github.com/ansible-community/molecule).
Molecule tests will run with several operation systems as well as ansible version in order to ensure compatability.
## License
This project is licensed under MIT License. See [LICENSE](/LICENSE) for more details.
## Maintainers and Contributors
- [Patrick Jahns](https://github.com/patrickjahns)

View File

@@ -0,0 +1,57 @@
---
promtail_apt_update_cache: True
promtail_version: "2.6.1"
promtail_dist_url: "https://github.com/grafana/loki/releases/download/v{{ promtail_version }}/promtail-linux-{{ go_arch }}.zip"
promtail_custom_checksum: ""
promtail_config_dir: /etc/promtail
promtail_config_file_sd_dir: "{{ promtail_config_dir }}/file_sd"
promtail_config_file: "{{ promtail_config_dir }}/promtail.yml"
promtail_system_user: promtail
promtail_system_group: "{{ promtail_system_user }}"
promtail_user_additional_groups: "adm"
promtail_systemd_service_template_file: service.j2
promtail_systemd_service: promtail
promtail_install_dir: /opt/promtail
promtail_tmp_dir: /tmp
promtail_log_level: info
# One of: debug, info, warn, error
promtail_config_server:
http_listen_port: 9080
promtail_loki_server_url: http://127.0.0.1:3100
promtail_config_clients:
- url: "{{ promtail_loki_server_url }}/loki/api/v1/push"
promtail_positions_directory: /var/lib/promtail
promtail_config_positions:
filename: "{{ promtail_positions_directory }}/positions.yml"
promtail_config_scrape_configs: []
# promtail_config_scrape_configs:
# - job_name: system
# entry_parser: raw
# static_configs:
# - targets:
# - localhost
# labels:
# job: varlogs
# host: {{ ansible_hostname }}
# __path__: /var/log/*log
promtail_config_include_default_file_sd_config: True
promtail_config_default_file_sd_config:
- job_name: file_sd
file_sd_configs:
- files:
- "{{ promtail_config_file_sd_dir }}/*.yml"
- "{{ promtail_config_file_sd_dir }}/*.yaml"
- "{{ promtail_config_file_sd_dir }}/*.json"
promtail_target_config: {}
# promtail_target_config:
# sync_period: "10s"

View File

@@ -0,0 +1,10 @@
---
- name: Restart promtail
become: True
systemd:
name: "{{ promtail_systemd_service }}"
state: restarted
daemon_reload: True
tags:
- promtail_run
- promtail

View File

@@ -0,0 +1,40 @@
# Standards: 0.1
---
galaxy_info:
author: Patrick Jahns
description: Deploy (loki) promtail
role_name: promtail
namespace: patrickjahns
company: none
license: MIT
min_ansible_version: 2.7
platforms:
- name: EL
versions:
- 7
- 8
- name: Fedora
versions:
- all
- name: Ubuntu
versions:
- disco
- bionic
- xenial
- name: Debian
versions:
- stretch
- buster
- bullseye
galaxy_tags:
- promtail
- loki
- logging
- collector
- monitoring
- metrics
- system
- grafana
- prometheus
dependencies: []

View File

@@ -0,0 +1,31 @@
---
dependency:
name: galaxy
driver:
name: docker
lint: |
set -e
yamllint .
flake8
platforms:
- name: instance
image: "geerlingguy/docker-${MOLECULE_DISTRO:-ubuntu1804}-ansible:latest"
command: ${MOLECULE_DOCKER_COMMAND:-""}
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
privileged: true
pre_build_image: true
provisioner:
name: ansible
playbooks:
converge: playbook.yml
inventory:
group_vars:
python3:
ansible_python_interpreter: /usr/bin/python3
scenario:
name: default
verifier:
name: testinfra

View File

@@ -0,0 +1,5 @@
---
- hosts: all
any_errors_fatal: true
roles:
- ansible-role-promtail

View File

@@ -0,0 +1,10 @@
---
- name: Prepare
hosts: all
gather_facts: true
tasks:
- name: Ensure that net-tools is available
package:
name: net-tools
state: present
when: ansible_os_family == 'RedHat'

View File

@@ -0,0 +1,64 @@
import os
import pytest
import yaml
import testinfra.utils.ansible_runner
testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
@pytest.fixture()
def AnsibleDefaults():
with open("./defaults/main.yml", 'r') as stream:
return yaml.full_load(stream)
@pytest.mark.parametrize("dir", [
"/opt/promtail",
"/etc/promtail",
"/etc/promtail/file_sd",
"/var/lib/promtail",
])
def test_directories(host, dir):
d = host.file(dir)
assert d.is_directory
assert d.exists
@pytest.mark.parametrize("files", [
"/etc/systemd/system/promtail.service",
"/usr/local/bin/promtail",
"/etc/promtail/promtail.yml"
])
def test_files(host, files):
f = host.file(files)
assert f.exists
assert f.is_file
def test_user(host):
assert host.group("promtail").exists
assert host.user("promtail").exists
def test_service(host):
s = host.service("promtail")
assert s.is_running
def test_http_socket(host):
s = host.socket("tcp://0.0.0.0:9080")
assert s.is_listening
def test_grpc_socket(host):
s = host.socket("tcp://0.0.0.0:9095")
assert s.is_listening
def test_version(host, AnsibleDefaults):
version = os.getenv('PROMTAIL', AnsibleDefaults['promtail_version'])
out = host.run("/usr/local/bin/promtail --version").stdout
assert version in out
assert "promtail" in out

View File

@@ -0,0 +1,31 @@
---
dependency:
name: galaxy
driver:
name: docker
lint: |
set -e
yamllint .
flake8
platforms:
- name: instance
image: "geerlingguy/docker-${MOLECULE_DISTRO:-ubuntu1804}-ansible:latest"
command: ${MOLECULE_DOCKER_COMMAND:-""}
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
privileged: true
pre_build_image: true
provisioner:
name: ansible
playbooks:
converge: playbook.yml
inventory:
group_vars:
python3:
ansible_python_interpreter: /usr/bin/python3
scenario:
name: latest
verifier:
name: testinfra

View File

@@ -0,0 +1,7 @@
---
- hosts: all
any_errors_fatal: true
roles:
- role: ansible-role-promtail
vars:
promtail_version: "latest"

View File

@@ -0,0 +1,10 @@
---
- name: Prepare
hosts: all
gather_facts: true
tasks:
- name: Ensure that net-tools is available
package:
name: net-tools
state: present
when: ansible_os_family == 'RedHat'

View File

@@ -0,0 +1,55 @@
import os
import pytest
import testinfra.utils.ansible_runner
testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
@pytest.mark.parametrize("dir", [
"/opt/promtail",
"/etc/promtail",
"/etc/promtail/file_sd",
"/var/lib/promtail",
])
def test_directories(host, dir):
d = host.file(dir)
assert d.is_directory
assert d.exists
@pytest.mark.parametrize("files", [
"/etc/systemd/system/promtail.service",
"/usr/local/bin/promtail",
"/etc/promtail/promtail.yml"
])
def test_files(host, files):
f = host.file(files)
assert f.exists
assert f.is_file
def test_user(host):
assert host.group("promtail").exists
assert host.user("promtail").exists
def test_service(host):
s = host.service("promtail")
assert s.is_running
def test_http_socket(host):
s = host.socket("tcp://0.0.0.0:9080")
assert s.is_listening
def test_grpc_socket(host):
s = host.socket("tcp://0.0.0.0:9095")
assert s.is_listening
def test_version(host):
result = host.run("/usr/local/bin/promtail --version")
assert result.rc == 0

View File

@@ -0,0 +1,104 @@
---
- name: Ensure unzip package is available
package:
name: unzip
state: present
update_cache: "{{ promtail_apt_update_cache }}"
- name: Create promtail group
group:
name: "{{ promtail_system_group }}"
state: present
system: True
when: promtail_system_group != "root"
- name: Create the promtail user
user:
name: "{{ promtail_system_user }}"
group: "{{ promtail_system_group }}"
groups: "{{ promtail_user_additional_groups }}"
append: True
shell: /usr/sbin/nologin
system: True
createhome: False
home: /
when: promtail_system_user != "root"
- name: Ensure /usr/local/bin exists
file:
path: /usr/local/bin
state: directory
mode: 0755
- name: Create config directories
file:
path: "{{ item }}"
state: directory
owner: root
group: "{{ promtail_system_group }}"
mode: 0770
loop:
- "{{ promtail_config_dir }}"
- "{{ promtail_config_file_sd_dir }}"
- "{{ promtail_positions_directory }}"
- name: Create application dirs
file:
path: "{{ item }}"
state: directory
owner: "{{ promtail_system_user }}"
group: "{{ promtail_system_group }}"
mode: 0755
with_items:
- "{{ promtail_install_dir }}"
- "{{ promtail_install_dir }}/{{ promtail_version }}"
- name: Check promtail binary
stat:
path: "{{ promtail_install_dir }}/{{ promtail_version }}/promtail-linux-{{ go_arch }}"
register: promtail_binary
- name: Download promtail binaries
get_url:
url: "{{ promtail_dist_url }}"
dest: "{{ promtail_tmp_dir }}/{{ promtail_version }}_promtail-linux-{{ go_arch }}.zip"
force: True
checksum: "{{ promtail_custom_checksum if promtail_custom_checksum else 'sha256:' + __promtail_checksum }}"
when: not promtail_binary.stat.exists
- name: Unpack promtail binaries
ignore_errors: "{{ ansible_check_mode }}"
unarchive:
src: "{{ promtail_tmp_dir }}/{{ promtail_version }}_promtail-linux-{{ go_arch }}.zip"
dest: "{{ promtail_install_dir }}/{{ promtail_version }}"
creates: "{{ promtail_install_dir }}/{{ promtail_version }}/promtail-linux-{{ go_arch }}"
mode: 0755
remote_src: True
- name: Create symlink to latest version
notify:
- Restart promtail
ignore_errors: "{{ ansible_check_mode }}"
file:
state: link
src: "{{ promtail_install_dir }}/{{ promtail_version }}/promtail-linux-{{ go_arch }}"
dest: /usr/local/bin/promtail
mode: 0755
- name: Write config
notify:
- Restart promtail
template:
src: config.j2
dest: "{{ promtail_config_file }}"
owner: root
group: "{{ promtail_system_group }}"
mode: 0644
- name: Create systemd service unit
notify:
- Restart promtail
template:
src: "{{ promtail_systemd_service_template_file }}"
dest: "/etc/systemd/system/{{ promtail_systemd_service }}.service"
mode: 0644

View File

@@ -0,0 +1,22 @@
---
- import_tasks: preflight.yml
tags:
- promtail_install
- promtail
- import_tasks: install.yml
become: True
tags:
- promtail_install
- promtail
- name: Ensure promtail service is started and enabled
become: True
systemd:
daemon_reload: True
name: "{{ promtail_systemd_service }}"
state: started
enabled: True
tags:
- promtail_run
- promtail

View File

@@ -0,0 +1,43 @@
---
- name: Assert usage of systemd as an init system
assert:
that: ansible_service_mgr == 'systemd'
msg: "This module only works with systemd"
- block:
- name: Get latest release
uri:
url: "https://api.github.com/repos/grafana/loki/releases/latest"
method: GET
return_content: True
status_code: 200
body_format: json
validate_certs: False
user: "{{ lookup('env', 'GH_USER') | default(omit) }}"
password: "{{ lookup('env', 'GH_TOKEN') | default(omit) }}"
no_log: "{{ not lookup('env', 'ANSIBLE_DEBUG') | bool }}"
register: _latest_release
until: _latest_release.status == 200
retries: 5
- name: "Set promtail version to {{ _latest_release.json.tag_name[1:] }}"
set_fact:
promtail_version: "{{ _latest_release.json.tag_name[1:] }}"
when:
- promtail_version == "latest"
delegate_to: localhost
run_once: True
- name: "Get checksum list"
set_fact:
__promtail_checksums: "{{ lookup('url', 'https://github.com/grafana/loki/releases/download/v' + promtail_version + '/SHA256SUMS', wantlist=True) | list }}"
run_once: True
delegate_to: localhost
- name: "Get checksum for {{ go_arch }} architecture"
set_fact:
__promtail_checksum: "{{ item.split(' ')[0] }}"
with_items: "{{ __promtail_checksums }}"
when:
- "('promtail-linux-' + go_arch + '.zip') in item"

View File

@@ -0,0 +1,26 @@
#jinja2: trim_blocks: True, lstrip_blocks: True
{{ ansible_managed | comment }}
# https://github.com/grafana/loki/blob/master/docs/clients/promtail/configuration.md
server:
{{ promtail_config_server | to_nice_yaml(indent=2) | indent(2, False) }}
{% if promtail_config_positions != {} %}
positions:
{{ promtail_config_positions | to_nice_yaml(indent=2) | indent(2, False) }}
{% endif %}
clients:
{{ promtail_config_clients | to_nice_yaml(indent=2) | indent(2, False) }}
scrape_configs:
{% if promtail_config_include_default_file_sd_config | bool %}
{{ promtail_config_default_file_sd_config | to_nice_yaml(indent=2) | indent(2, False) }}
{% endif %}
{% if promtail_config_scrape_configs|length %}
{{ promtail_config_scrape_configs | to_nice_yaml(indent=2) | indent(2, False) }}
{% endif %}
{% if promtail_target_config != {} %}
target_config:
{{ promtail_target_config | to_nice_yaml(indent=2) | indent(2, False) }}
{% endif %}

View File

@@ -0,0 +1,17 @@
{{ ansible_managed | comment }}
[Unit]
Description=promtail
After=network-online.target
[Service]
Restart=always
RestartSec=5
TimeoutSec=5
User={{ promtail_system_user }}
Group={{ promtail_system_group }}
ExecStart=/usr/local/bin/promtail -config.file={{ promtail_config_file }} -log.level={{ promtail_log_level }}
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,6 @@
docker
molecule==4.0.1
molecule-docker==2.0.0
pytest-testinfra
flake8
setuptools==63.2.0

View File

@@ -0,0 +1,33 @@
[tox]
minversion = 1.8
envlist = ansible{27,28,29,210,34,43}
skipsdist = true
[gh-actions]
python =
3.6: ansible{28,29,210,34,43}
3.7: ansible{28,29,210,34,43}
3.8: ansible{28,29,210,34,43}
3.9: ansible{28,29,210,34,43}
[gh-actions:env]
ANSIBLE=
2.7: ansible27
2.8: ansible28
2.9: ansible29
2.10: ansible210
3.4: ansible34
4.3: ansible43
[testenv]
passenv = GH_* DOCKER_HOST MOLECULE_*
deps =
-rtest-requirements.txt
ansible27: ansible<2.8
ansible28: ansible<2.9
ansible29: ansible<2.10
ansible210: ansible<2.11
ansible34: ansible<3.5
ansible43: ansible<4.4
commands =
{posargs:molecule test --all --destroy always}

View File

@@ -0,0 +1,8 @@
---
go_arch_map:
x86_64: 'amd64'
aarch64: 'arm64'
armv7l: 'arm'
armv6l: 'arm'
go_arch: "{{ go_arch_map[ansible_architecture] | default(ansible_architecture) }}"