Compare commits

...

956 Commits

Author SHA1 Message Date
ahmadbilalkhalid a432d6a51e Support Added for Debian 10* in __letsencrypt_cert 2019-10-04 14:13:10 +05:00
Darko Poljak b039e4b1b4 ++changelog 2019-10-03 20:36:25 +02:00
poljakowski 9a172b62cb Merge branch 'unquote-os-release' into 'master'
[explorer/os] Unquote values from /etc/os-release

See merge request ungleich-public/cdist!803
2019-10-03 20:32:28 +02:00
Dennis Camera fba14496e7 [explorer/os] Unquote values from os-release file 2019-10-03 18:30:52 +02:00
Darko Poljak bf400928e2 ++changelog 2019-10-03 07:56:36 +02:00
poljakowski 4345afc8d8 Merge branch 'fix-sshkeys-escape' into 'master'
[__ssh_authorized_keys] Fix incorrectly escaped variable

See merge request ungleich-public/cdist!799
2019-10-03 07:55:14 +02:00
poljakowski b754ae576c Merge branch 'always-sort-interfaces' into 'master'
[explorer/interfaces] Always sort output

See merge request ungleich-public/cdist!801
2019-10-03 07:54:06 +02:00
Dennis Camera 55f8036377 [explorer/interfaces] Always sort output
Before, only the output of ifconfig was sorted.
2019-10-02 18:10:37 +02:00
Dennis Camera f57ce648a3 [__ssh_authorized_keys] Fix incorrectly escaped variable 2019-10-02 15:38:38 +02:00
Darko Poljak 7981f81dcd ++changelog 2019-10-01 13:18:01 +02:00
poljakowski 69e5e538ac Merge branch 'nogetent-dotssh' into 'master'
[__ssh_dot_ssh] Fall back to /etc files if getent(1) is not available

See merge request ungleich-public/cdist!796
2019-10-01 13:16:25 +02:00
poljakowski b57482d387 Merge branch 'nogetent-sshkeys' into 'master'
[__ssh_authorized_keys] Fall back to /etc files if getent(1) is not available

See merge request ungleich-public/cdist!797
2019-10-01 13:15:29 +02:00
poljakowski b7426b30e7 Merge branch 'nogetent-user' into 'master'
[__user] Fall back to /etc files if getent(1) is not available

See merge request ungleich-public/cdist!795
2019-10-01 13:14:28 +02:00
poljakowski 65f9161352 Merge branch 'nogetent-group' into 'master'
[__group] Fall back to /etc files if getent(1) is not available

See merge request ungleich-public/cdist!798
2019-10-01 13:12:46 +02:00
Dennis Camera 259aa13b6a [__ssh_authorized_keys] Better path checks 2019-10-01 11:07:29 +02:00
Dennis Camera bad3a4a4cb [__group] Fall back to /etc files if getent(1) is not available
Some (embedded) systems (and Mac OS X) don't provide getent(1). The workaround
parses /etc/group under the assumption that the system only uses local users and
groups.
2019-10-01 10:53:27 +02:00
Dennis Camera 95ab68a272 [__ssh_authorized_keys] Fall back to /etc files if getent(1) is not available
Some (embedded) systems don't provide getent(1). The workaround parses
/etc/passwd and /etc/group under the assumption that these sysems only use local
users and groups.
2019-10-01 08:43:32 +02:00
Dennis Camera 092dd19611 [__ssh_dot_ssh] Fall back to /etc files if getent(1) is not available
Some (embedded) systems don't provide getent(1). The workaround parses
/etc/passwd and /etc/group under the assumption that these sysems only use local
users and groups.
2019-10-01 08:43:12 +02:00
Dennis Camera 2d751443a4 [__user] Fall back to /etc files if getent(1) is not available
On systems without getent(1) the script would fail because "command -v getent"
exits with 1 which terminates the script due to it being called by sh -e.
2019-10-01 08:12:57 +02:00
Darko Poljak 828b4c867c Release 6.0.0 2019-10-01 07:14:35 +02:00
Darko Poljak 50156bd7cd shellcheck 2019-10-01 07:10:37 +02:00
Darko Poljak 9d8a0dae66 ++changelog 2019-10-01 07:01:38 +02:00
poljakowski f86768ab16 Merge branch 'fix_apt_key_dearmor' into 'master'
__apt_key: fix key dearmor when fetching from uri

See merge request ungleich-public/cdist!791
2019-10-01 07:00:33 +02:00
poljakowski 9d26fbdfb8 Merge branch 'git-recursive' into 'master'
__git type: Add --recursive option

See merge request ungleich-public/cdist!794
2019-10-01 06:25:31 +02:00
Dennis Camera 5c8e31b2ef [type/__git] Improve documentation of --recursive option 2019-09-30 13:22:55 +02:00
Darko Poljak 97bcfcc23c Release preos, i.e. make it non-beta 2019-09-20 19:56:17 +02:00
Darko Poljak b657ba8221 Fix log level when verbosity option is not specified 2019-09-20 19:51:55 +02:00
Nico Schottelius 90d9326740 [__sysctl] add alpine support 2019-09-20 21:17:13 +09:00
ander d147f4a86f __apt_key: fix key dearmor when fetching from uri 2019-09-20 12:00:22 +03:00
Darko Poljak 799ec72369 Implement preos 2019-09-20 07:15:37 +02:00
Darko Poljak eab540bd0f ++ 2019-09-18 07:04:41 +02:00
poljakowski 162f7d75e1 Merge branch 'fix_spelling' into 'master'
Fix beowulf's spelling

See merge request ungleich-public/cdist!790
2019-09-18 07:03:23 +02:00
PCoder 88fe83ed73 Fix beowulf's spelling 2019-09-14 15:24:36 +05:30
Dennis Camera 4294ff55e1 [type/__git] Add --recursive parameter 2019-09-09 16:12:16 +02:00
Darko Poljak 067d0a62e7 Release 5.1.3 2019-08-30 08:51:08 +02:00
Darko Poljak 65b9e1d00f ++changelog 2019-08-29 14:40:16 +02:00
poljakowski 61ce1c4756 Merge branch 'docker-swarm-fix' into 'master'
__docker_swarm: Fix for Docker 19.03

See merge request ungleich-public/cdist!789
2019-08-29 14:39:28 +02:00
lubo 451dfaffe4 __docker_swarm: Fix for Docker 19.03 2019-08-23 11:28:13 +02:00
Nico Schottelius 6c780c24c7 ++changes 2019-08-15 14:25:16 +02:00
Nico Schottelius a86893889b [letsencrypt] devuan/ascii: only install certbot package
It seems python-certbot is gone
2019-08-15 14:24:11 +02:00
Nico Schottelius 5033f67d96 Merge branch 'master' of code.ungleich.ch:ungleich-public/cdist 2019-08-15 14:20:42 +02:00
Nico Schottelius 7182de5968 ++changes 2019-08-15 14:20:14 +02:00
Nico Schottelius c0aa2214aa [letsencrypt] add support for devuan/beowulf 2019-08-15 14:19:54 +02:00
Darko Poljak 2f7dc5a65d Fix variable typo 2019-08-04 21:54:13 +02:00
Darko Poljak c6b739b5b6 ++changelog 2019-08-04 21:52:59 +02:00
poljakowski b9303b1ef6 Merge branch 'master' into 'master'
Added Devuan support for __docker type

See merge request ungleich-public/cdist!788
2019-08-04 21:52:19 +02:00
Dominique Roux 031d59c82c Added Devuan support for __docker type 2019-08-04 21:23:44 +02:00
Darko Poljak f7efde0d0a ++changelog 2019-07-25 08:06:58 +02:00
poljakowski 9773fcf719 Merge branch 'master' into 'master'
Updated repository configuration for grafana dashboard type

See merge request ungleich-public/cdist!787
2019-07-25 08:05:05 +02:00
Dominique Roux a70d2e0af5 Had to change the apt_source_distribution to stable, since the repository doesn't differ in distributions 2019-07-24 13:35:46 +02:00
Dominique Roux 6bb58f8820 Updated the __grafana_dashboard type for the new package repository
- Changed the signing key uri
- Changed the repo uri
2019-07-24 13:32:39 +02:00
Darko Poljak 5c11c15ae4 Overcome bash CDPATH issue
Thanks to Dmitry Bogatov.
2019-06-23 20:00:25 +02:00
Darko Poljak 6915d30015 Release 5.1.2 2019-06-21 14:13:25 +02:00
Darko Poljak 8881ff2224 ++changelog 2019-06-21 12:55:33 +02:00
poljakowski b4f090fd7f Merge branch '__acl_improvements_vol3' into 'master'
__acl rewrite

See merge request ungleich-public/cdist!785
2019-06-21 12:55:08 +02:00
ander a4bc051ad9 __acl: use type deprecation 2019-06-21 13:02:44 +03:00
ander a5df0badaf __acl: add compatibility for deprecated parameters 2019-06-21 12:55:59 +03:00
ander 91a6ecc701 __acl: rewrite 2019-06-21 12:55:59 +03:00
Darko Poljak d723f60673 ++changelog 2019-06-20 18:12:50 +02:00
poljakowski 175ab90a9e Merge branch 'feature/support-type-param-deprecation' into 'master'
Add support for deprecated type parameters

See merge request ungleich-public/cdist!786
2019-06-20 18:12:26 +02:00
Darko Poljak 3cb4e76175 Allow custom message for each deprecated parameter 2019-06-20 10:54:40 +02:00
Darko Poljak 55ba49efac Add support for deprecated type parameters 2019-06-19 18:19:32 +02:00
Darko Poljak 8315677ad1 Release 5.1.1 2019-05-28 17:53:34 +02:00
poljakowski 3c8b470367 Merge branch 'manual/add-caveats-to-cdist-type-chapter' into 'master'
Stdin inside a loop caveats

Closes #778

See merge request ungleich-public/cdist!784
2019-05-25 20:06:07 +02:00
Darko Poljak 68837e45cc Document type stdin inside loop caveats 2019-05-25 20:02:45 +02:00
Darko Poljak 520cfeda98 ++ 2019-05-25 16:10:18 +02:00
poljakowski bd27d432b1 Merge branch '__acl_improvements_vol2' into 'master'
__acl improvements vol 2

See merge request ungleich-public/cdist!780
2019-05-25 16:06:46 +02:00
poljakowski 811ed151fc Merge branch '__apt_key' into 'master'
__apt_key improvements

See merge request ungleich-public/cdist!779
2019-05-25 15:58:40 +02:00
ander 1d57305d35 Use gpg key, fallback to deprecated apt-key
Fixes #762
2019-05-25 15:58:39 +02:00
Darko Poljak c58ae44409 Release 5.1.0 2019-05-22 18:34:31 +02:00
poljakowski 1f7d76ae75 Merge branch 'feature/support-type-deprecation' into 'master'
Add type deprecation support.

See merge request ungleich-public/cdist!783
2019-05-21 17:50:14 +02:00
Darko Poljak 4949af894e Add type deprecation support. 2019-05-20 18:50:25 +02:00
poljakowski ea291efbf6 Merge branch 'feature/cdist-new-type-helper-script' into 'master'
Add cdist-new-type helper scrpt

See merge request ungleich-public/cdist!782
2019-05-20 18:11:40 +02:00
Darko Poljak 34eec3c214 Add cdist-new-type helper scrpt 2019-05-20 18:10:35 +02:00
ander e30d76014a __acl: update man 2019-05-19 23:44:20 +03:00
ander 02e10b1ffd __acl: fix SC1117 2019-05-19 23:27:58 +03:00
ander 03f8c3aaed __acl: don't exit on missing file when dry run 2019-05-19 23:22:02 +03:00
Nico Schottelius 21a16f5584 consul, changelog, consul agent => alpine 2019-05-18 23:46:09 +02:00
Darko Poljak 4a5425a95e Release 5.0.2 2019-05-17 13:03:54 +02:00
Darko Poljak d604a9db7a Fix pycodestyle 2019-05-17 13:03:54 +02:00
Darko Poljak 7195b594f3 ++changelog 2019-05-16 21:59:39 +02:00
poljakowski f376eb361f Merge branch 'dry_run_env_var' into 'master'
set __cdist_dry_run env var if dry-run

See merge request ungleich-public/cdist!781
2019-05-16 21:58:47 +02:00
ander 69622b0fa5 set __cdist_dry_run env var if dry-run 2019-05-16 21:58:47 +02:00
Nico Schottelius fe643b9092 ++doc 2019-05-14 17:10:46 +02:00
Nico Schottelius ce52203ba3 __user add alpine support 2019-05-14 17:10:26 +02:00
Nico Schottelius 5f462d6380 ++alpine support 2019-05-14 16:49:33 +02:00
ander 7a25ec00ed __acl: add TODO note about dry-run 2019-05-14 13:42:56 +03:00
ander 7dfc5bc473 __acl: we do not have to check here if file exist 2019-05-14 13:41:32 +03:00
ander ca8bc959ed __acl: add todo note 2019-05-14 13:27:43 +03:00
Nico Schottelius 569ae29955 [__package_apk] fix / add support for @yrepo syntax 2019-05-14 11:47:15 +02:00
Darko Poljak 66cdbc5233 Simplify maintainer's helper script 2019-05-09 21:05:33 +02:00
Darko Poljak afa00a9094 Fix build-helper script 2019-05-09 19:35:52 +02:00
Darko Poljak a8ee4356ef Release 5.0.1 2019-05-09 19:11:09 +02:00
Darko Poljak 15f01149f9 Update old homepage residual refs and non working git protocol 2019-05-09 08:26:42 +02:00
Darko Poljak 73fd1ffbc1 Update homepage 2019-05-08 23:38:43 +02:00
poljakowski 5ceb4928c7 Merge branch 'cleanup/rearrange-makefile-and-build-helper' into 'master'
Re-arrange Makefile and build-helper script

See merge request ungleich-public/cdist!778
2019-05-08 22:37:26 +02:00
Darko Poljak 4f40c6ac65 Re-arrange Makefile and build-helper script
Maintainers should use build-helper script.
End users should use Makefile, which contains targets
that can be run on pure source (without git repository).
2019-05-08 22:34:03 +02:00
Darko Poljak d696a55879 ++changelog 2019-05-06 17:13:36 +02:00
poljakowski fb52bfb353 Merge branch 'documentation/update-best-practice' into 'master'
Add 'Perils of CDIST_ORDER_DEPENDENCY' sub-section

See merge request ungleich-public/cdist!777
2019-05-06 17:12:47 +02:00
Darko Poljak 02eb6c75a7 Add 'CDIST_ORDER_DEPENDENCY kills parallelization' 2019-05-06 17:11:23 +02:00
Darko Poljak 28082c710a Add refs to perils of CDIST_ORDER_DEPENDENCY 2019-05-06 11:11:10 +02:00
Darko Poljak 735f57b3a0 Add 'Perils of CDIST_ORDER_DEPENDENCY' sub-section 2019-05-05 18:09:17 +02:00
Darko Poljak 4d75a05e35 Rm redundant tag description from rel notes 2019-05-05 10:31:23 +02:00
Darko Poljak aad6c34178 Release 5.0.0 2019-05-05 00:03:04 +02:00
Darko Poljak 10a29ca9e6 Fix pycodestyle issue 2019-05-05 00:03:04 +02:00
poljakowski 954663475a Merge branch 'cdist-5.0.0' into 'master'
Cdist 5.0.0

See merge request ungleich-public/cdist!775
2019-05-04 11:39:52 +02:00
Darko Poljak 513fde1cc1 ++changelog 2019-05-04 10:51:10 +02:00
Darko Poljak d242f1e758 Unify build-helper scripts 2019-05-04 10:09:39 +02:00
Darko Poljak 2f93320627 Generating speeches is not part of cdist release
Speeches should be generated on demand when needed
and the cdist website should be updated.
2019-05-03 22:18:19 +02:00
Darko Poljak 249ac917d3 Changes due to new website 2019-05-03 22:18:19 +02:00
Darko Poljak 0ab43e2405 Release -j/--jobs option, i.e. make it non-beta 2019-05-03 22:18:19 +02:00
Darko Poljak bd9884fac4 Tell curl to use HTTP version 1.1
By default, was getting the following error:
curl: (92) HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)
2019-05-03 22:16:51 +02:00
Darko Poljak 71945ef956 Fix copy-paste thing 2019-05-03 21:55:27 +02:00
Darko Poljak fe833fdfcb Sign git tag as one of the last steps
If it fails then the whole release should not fail,
signing git tag can be tried again.
2019-05-03 21:46:17 +02:00
Darko Poljak 6258e397ed Include changelog in gitlab release 2019-05-03 21:39:25 +02:00
Darko Poljak 2a0a24eccc ++changelog 2019-05-03 14:38:48 +02:00
poljakowski de1c198dc0 Merge branch 'feature/detect-dependency-cycle' into 'master'
Detect dependency cycle as soon as possible

See merge request ungleich-public/cdist!774
2019-05-03 14:38:09 +02:00
Darko Poljak edfaa65d2b Detect dependency cycle as soon as possible 2019-05-01 14:19:08 +02:00
Darko Poljak 2505023387 Append requirement only if already not present 2019-05-01 12:31:30 +02:00
Darko Poljak 6ad261fdf2 ++changelog 2019-04-25 23:04:38 +02:00
Darko Poljak 8b93bf0218 Migrate from github to ungleich gitlab 2019-04-25 22:23:06 +02:00
Darko Poljak 3ca337dfe0 ++changelog 2019-04-24 12:23:37 +02:00
Darko Poljak 880f653ec2
Merge pull request #771 from sideeffect42/quote-block
__block: Quote prefix/suffix
2019-04-24 12:23:19 +02:00
Darko Poljak 5b20950045
Merge pull request #773 from sideeffect42/postgres-nopw
__postgres_{database,role}: Run psql with --no-password (-w)
2019-04-24 12:20:48 +02:00
Darko Poljak 281691cfd9
Merge pull request #772 from sideeffect42/openbsd-init
explorer/init: Add support for OpenBSD
2019-04-24 12:17:11 +02:00
Takashi Yoshi f7ace88ec2 [__postgres_{database,role}] Run psql with --no-password (-w)
cdist does not work with interactive processes, so it's better to fail when
manual password input is required.
2019-04-24 11:38:31 +02:00
Takashi Yoshi 6dd5278ade [explorer/init] Add support for OpenBSD 2019-04-24 11:29:24 +02:00
Takashi Yoshi 510ea220f2 [type/__block] Quote prefix and suffix correctly
Before prefix and suffix were not allowed to contain " (quotes).
2019-04-24 11:27:26 +02:00
ander 4c21983698 __acl: remove macosx because no way to properly test 2019-04-24 00:39:54 +03:00
ander f586937614 __acl: drop Solaris because POSIX-draft ACL specification is not supported 2019-04-24 00:36:53 +03:00
ander d66b6969f3 __acl: rename missing_users_groups explorer to more generic name for future checks 2019-04-24 00:09:49 +03:00
ander 894311a572 __acl: if users/groups check fail, log error and exit in explorer 2019-04-24 00:08:43 +03:00
Darko Poljak 31b9859e08 ++changelog 2019-04-23 17:22:02 +02:00
Dmitry Bogatov a95d4ffefa Fix spelling error in manpage 2019-04-23 17:18:28 +02:00
Darko Poljak 2536cd6f95 Release 4.11.1 2019-04-22 21:12:09 +02:00
Darko Poljak 7c0ba0d5be pycodestyle 2019-04-22 21:11:36 +02:00
Darko Poljak 6bd34c74d3 ++ 2019-04-22 21:03:53 +02:00
Darko Poljak e516c9741a
Merge pull request #770 from darko-poljak/bugfix/disks-should-not-break-config
Print empty disk list for unsupported OS
2019-04-22 21:00:17 +02:00
Darko Poljak 7ca66b7b6a ++changelog 2019-04-22 09:22:52 +02:00
Darko Poljak c2d32a78a9
Merge pull request #768 from 4nd3r/fixes_for_solaris
[RFC] fixes for solaris
2019-04-22 09:20:57 +02:00
Darko Poljak 5314f514c5 Print empty disk list for unsupported OS 2019-04-22 09:12:20 +02:00
Darko Poljak a8588019ee ++changelog 2019-04-21 07:46:32 +02:00
Darko Poljak 84c4bf5577
Merge pull request #767 from darko-poljak/feature/better-explorer-error-report
Report explorer error better
2019-04-21 07:46:28 +02:00
Darko Poljak b0273af0d4 Rm relicts, pypi before web publishing 2019-04-20 17:41:07 +02:00
Darko Poljak c10074780e Release 4.11.0 2019-04-20 17:09:26 +02:00
Darko Poljak d08ab628da ++ 2019-04-20 17:04:34 +02:00
Darko Poljak c8bf78d651
Merge pull request #763 from darko-poljak/bugfix/disks-explorer-fallback
explorer/disks: do fallback right, in a POSIX way
2019-04-20 17:03:43 +02:00
ander 038524ba30 support solaris in __(file|directory)/explorer/stat 2019-04-20 16:10:17 +03:00
ander e3a900c1c9 __ssh_authorized_keys: remove legacy code 2019-04-20 16:10:17 +03:00
Darko Poljak 087066687c Report explorer error better
Fixes #766
2019-04-20 14:30:28 +02:00
Darko Poljak b5bdb54b7f Currently support only Linux, FreeBSD, OpenBSD, NetBSD
Make no assumptions, but rather output that system is unsupported
and ask the user to add support for it.
2019-04-20 13:08:22 +02:00
Darko Poljak 250f3d3fb8 shellcheck: remove unused var 2019-04-20 12:40:04 +02:00
Darko Poljak 3b3ac95ac3 ++changelog 2019-04-20 12:35:47 +02:00
Darko Poljak f8d36446db
Merge pull request #765 from 4nd3r/__better_interfaces
global interfaces explorer: only check if we have ip or ifconfig
2019-04-20 12:35:24 +02:00
ander ab3544d5e8 global interfaces explorer: only check if we have ip or ifconfig and be more compatible.
tests on debian, centos, freebsd, openbsd, netbsd and solaris confirm that this is enough and extra os check is not needed here.
2019-04-20 02:05:32 +03:00
Darko Poljak 69fc80ec95 ++ 2019-04-19 17:50:09 +02:00
Darko Poljak e32982a648
Merge pull request #760 from 4nd3r/__acl_improvements
__acl improvements
2019-04-19 17:49:46 +02:00
ander 108e46abee __acl: fix removal in freebsd 2019-04-19 15:04:18 +03:00
ander 186ce77bb2 __acl: add messaging 2019-04-19 14:58:44 +03:00
ander c7e6109462 __acl: tabs vs spaces 2019-04-19 14:49:02 +03:00
ander 05225352aa __acl: check for missing users and groups (common mistake) 2019-04-19 14:48:26 +03:00
ander 6d71ae342a __acl: update man more 2019-04-19 14:47:16 +03:00
ander 13df0a2a2b __acl: update man 2019-04-19 14:11:29 +03:00
ander 8729e39c21 __acl: combine two explorers into one 2019-04-19 13:48:24 +03:00
ander 86f45db1b9 __acl: add nice oneliners and move default ACL decision out of the loop 2019-04-19 13:30:50 +03:00
ander 0f3c162696 __acl: setting default ACL in FreeBSD and macOS is currently not supported 2019-04-19 13:16:35 +03:00
ander 0809d89836 __acl: replace sed -r where possible or make it portable without -r 2019-04-19 12:56:55 +03:00
ander f5d3196dd4 __acl: getfacl's -E not supported on FreeBSD 2019-04-19 11:31:38 +03:00
Darko Poljak 82f310f4f8 ++changelog 2019-04-19 09:36:24 +02:00
Darko Poljak 3defdfa8df
Merge pull request #757 from darko-poljak/bugfix/order_dependency
Fix circular dep for CDIST_ORDER_DEPENDENCY
2019-04-19 09:36:03 +02:00
Nico Schottelius aba1ae68f0 [explorer] disks: use echo instead of find as fallback
Fixes #761
2019-04-17 20:50:39 +02:00
ander 68f61c35ff __acl: check for X after last occurrence of colon 2019-04-16 23:36:54 +03:00
ander f23099218a __acl: juggle man sections around because user/group are more important parameters 2019-04-16 23:29:38 +03:00
ander 7924c1339c __acl: avoid duplication and safer sed for last occurence replacement 2019-04-16 23:28:30 +03:00
ander 8b3c84dfef __acl: remove whitespace before inline comments too 2019-04-16 23:15:58 +03:00
ander a1634b3ec0 __acl: optimize gencode-remote 2019-04-16 19:24:38 +03:00
ander c1a34caba7 __acl: add "other" ACL entry support and some comments, remove getfacl's inline comments 2019-04-16 19:06:48 +03:00
ander e04d647d8e __acl: fix always check first if path exists 2019-04-16 18:09:47 +03:00
ander 53c963b2ee __acl: be bit more precise where the X is 2019-04-16 15:35:11 +03:00
ander 8b9b2c56ab __acl: be more strict because of reasons 2019-04-16 15:28:25 +03:00
ander cea639d1c9 __acl: we can't remove mask 2019-04-16 15:27:47 +03:00
ander 731986ef8b __acl: trying to understand X 2019-04-16 15:21:41 +03:00
ander 9e3cd47b9a __acl: command -v stdout to devnull 2019-04-16 15:03:07 +03:00
ander 2b5887bdbd __acl: we only care whether file is directory 2019-04-16 14:51:26 +03:00
ander ab954ffbcf __acl: always check first if path exists 2019-04-16 14:44:32 +03:00
ander ef8ff06b5f __acl: only directories can have default ACLs 2019-04-16 14:39:45 +03:00
ander d71eb3d8bd __acl: (open|net)bsd do not have (get|set)facl 2019-04-16 14:20:13 +03:00
ander 2cde09648c __acl: check if getfacl is available 2019-04-16 14:15:48 +03:00
Darko Poljak e997e98a73 ++changelog 2019-04-16 11:02:51 +02:00
Darko Poljak c7a4ae112f
Merge pull request #759 from jimis/acl_mask
Add support for ACL mask.
2019-04-16 11:00:27 +02:00
Dimitrios Apostolou 437af3a0a3 Silence getfacl
otherwise it always prints the message:

    getfacl: Removing leading '/' from absolute path names
2019-04-15 20:51:02 +02:00
Nico Schottelius 63d7499b75 [directory] add alpine support 2019-04-15 19:27:42 +02:00
Nico Schottelius 1722fced72 [file] add alpine support 2019-04-15 19:13:44 +02:00
Nico Schottelius a1cb9ee869 [locale/alpine] exit 0 in gencode-remote 2019-04-15 18:56:51 +02:00
Nico Schottelius e290733a00 [locale] Add alpine support 2019-04-15 18:54:30 +02:00
Nico Schottelius f4db6e908e [hostname] add alpine support 2019-04-15 18:48:49 +02:00
Nico Schottelius c801fb4965 [timezone] + alpine support 2019-04-15 18:44:30 +02:00
Dimitrios Apostolou 6062e3557c Output of grep should be quiet, as we care only for the exit code. 2019-04-15 18:05:16 +02:00
Dimitrios Apostolou 45e9ed441e Add support for ACL mask. 2019-04-15 18:05:16 +02:00
Nico Schottelius 978aee668c ++changelog 2019-04-15 17:03:12 +02:00
Nico Schottelius ec935353d7 [__start_on_boot] Merge alpine and gentoo, update gentoo 2019-04-15 17:02:09 +02:00
Nico Schottelius dbf29c18c1 [__start_on_boot] alpine fix 2019-04-15 16:41:27 +02:00
Nico Schottelius 707426d1f0 [__start_on_boot] add code for alpine handling, fix explorer 2019-04-15 16:35:10 +02:00
Nico Schottelius e32d92c109 [__start_on_boot] Begin to add alpine support 2019-04-15 16:32:54 +02:00
Nico Schottelius c7a9e60de0 Merge branch 'master' of github.com:ungleich/cdist 2019-04-15 16:20:31 +02:00
Nico Schottelius c17f5a7ccd ++changelog 2019-04-15 16:13:25 +02:00
Nico Schottelius 3a2041019b [alpine] add support for alpine in __package and __package_apk 2019-04-15 16:11:58 +02:00
Darko Poljak 797522f91e Fix circular dep for CDIST_ORDER_DEPENDENCY
Fixes #756
2019-04-14 16:58:18 +02:00
Darko Poljak d18584b4ff Update gitignore 2019-04-13 20:54:59 +02:00
Darko Poljak 51e650423e Fix version.py location inside raw source archive
Note that this fix only matters for maintainers using build-helper
script. Source archive is generated during release process and
uploaded to github, along its signature.
For 4.10.11 those files were fixed and uploaded manually after
build-helper script process has been finished. In future releases
this process will be automatic - no need for manual step that was
necessary for 4.10.11.
2019-04-13 20:43:11 +02:00
Darko Poljak b37b25f573 Release 4.10.11 2019-04-13 19:53:54 +02:00
Darko Poljak 4d9a8d78f7 ++changelog 2019-04-13 19:50:44 +02:00
Darko Poljak b21b6d0a7e
Merge pull request #755 from 4nd3r/bsd_stat_fix
fix __(file|directory)/explorer/stat for BSDs
2019-04-13 19:49:45 +02:00
ander 44c9d09383 fix __(file|directory)/explorer/stat for BSDs 2019-04-12 23:34:28 +03:00
Darko Poljak 4c8037764a ++changelog 2019-04-12 20:41:11 +02:00
Ander Punnar 1c152f0acb fix disks explorer (#753)
* fix disks explorer

* fix SC2230

* exclude floppies

* update comment about excluded floppies

* add link to linux documentation about device majors

* try to support netbsd

* update possible netbsd disk devices
2019-04-12 20:41:05 +02:00
Darko Poljak 20a16fe853 Add version.py into generated raw source archive
Resolves #751
2019-04-12 19:58:43 +02:00
Darko Poljak 279aada5db Fix broken quiet mode
Resolves #754
2019-04-12 09:13:25 +02:00
Darko Poljak a4ed9e4d0e Release 4.10.10 2019-04-11 14:46:56 +02:00
Darko Poljak 2ec553b480 Add cdist-dump man page 2019-04-11 14:30:23 +02:00
Darko Poljak 7a68df48f1 Add missing delimiter argument 2019-04-11 14:10:18 +02:00
Darko Poljak d11ac7dda4 Rename debug-dump.sh to cdist-dump 2019-04-11 13:56:03 +02:00
Darko Poljak 540434557d ++changelog 2019-04-11 13:43:13 +02:00
Darko Poljak e37d955845
Merge pull request #752 from 4nd3r/__link_messaging
__link: add messaging
2019-04-11 13:42:53 +02:00
ander 204a572709 __link: add messaging 2019-04-11 13:59:15 +03:00
Darko Poljak 13671c666c ++changelog 2019-04-11 08:20:52 +02:00
Darko Poljak 1ba5f6276e
Merge pull request #748 from markasoftware/ufw
UFW (Uncomplicated FireWall)
2019-04-11 08:19:37 +02:00
Mark Polyakov 0ce96f0860 Added __ufw and __ufw_rule. 2019-04-10 19:45:34 -07:00
Darko Poljak e90e296266 Release 4.10.9 2019-04-09 22:46:03 +02:00
Darko Poljak 671bb82a46 Fix shellcheck issues 2019-04-09 22:44:40 +02:00
Darko Poljak f6b318bb00 Fire onchange for present and exists states
Even if no attribute is changed.
Fixes #750.
2019-04-09 22:23:21 +02:00
Darko Poljak 8ee667f57f ++changelog 2019-04-09 22:08:47 +02:00
Darko Poljak 1402e3f084
Merge pull request #749 from darko-poljak/feature/debug-dump-script
Add debug dump script
2019-04-09 22:07:16 +02:00
Darko Poljak 9cd95f12dc Add debug dump script 2019-04-09 10:41:00 +02:00
Darko Poljak cabb0be7b6 ++changelog 2019-04-08 08:25:53 +02:00
Steven Armstrong 88513e6693 __ssh_authorized_keys: properly handle multiple --option parameters, fixes #393
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2019-04-07 12:17:19 +02:00
Darko Poljak 0583cdff09 Release 4.10.8 2019-04-06 10:52:32 +02:00
Darko Poljak b47c6e3fe4 Fix shellcheck SC2002 2019-04-06 10:52:32 +02:00
Darko Poljak a5e66bc3f6 ++changelog 2019-04-06 10:43:11 +02:00
Darko Poljak 6e56de4580
Merge pull request #747 from 4nd3r/__check_messages
new type: __check_messages
2019-04-04 06:19:59 +02:00
ander decd80bf5d be more explicit 2019-04-04 00:20:46 +03:00
ander da6a22c71a new type: __check_messages 2019-04-03 01:11:03 +03:00
Darko Poljak 033e0611b5 ++changelog 2019-04-02 18:39:05 +02:00
Darko Poljak cfe2afc225
Merge pull request #745 from 4nd3r/__clean_path_fix
__clean_path: do not exit with non-zero if path does not exist or not directory
2019-04-02 18:38:48 +02:00
ander 668dc83632 do not exit with non-zero if path does not exist or not directory 2019-04-02 17:52:00 +03:00
Darko Poljak 001f9023a2 Release 4.10.7 2019-03-30 19:11:13 +01:00
Darko Poljak cbaf1b6d8e ++ 2019-03-30 12:37:25 +01:00
Darko Poljak a60ce2fcfb
Merge pull request #744 from 4nd3r/__rm
new type: __clean_path
2019-03-30 12:36:38 +01:00
ander 5f76bd5655 new type: __clean_path 2019-03-30 13:21:13 +02:00
Darko Poljak 6440faf176 ++ 2019-03-29 22:57:52 +01:00
Darko Poljak 6eb0aa4aeb
Merge pull request #743 from 4nd3r/__file_onchange
add --onchange to __file
2019-03-29 22:57:16 +01:00
ander c6fd43da81 add --onchange to __file, because having to use __config_file just for that feels redundant 2019-03-29 23:43:09 +02:00
Darko Poljak d656058ff4 ++changelog 2019-03-29 22:15:05 +01:00
Darko Poljak 2332b52d95
Merge pull request #742 from 4nd3r/__line_onchange
add --onchange to __line
2019-03-29 22:14:31 +01:00
ander 0f6fe4764b add --onchange to __line 2019-03-28 23:31:38 +02:00
Darko Poljak 59bff81735 ++changelog 2019-03-26 19:01:26 +01:00
Darko Poljak 996bbd084f
Merge pull request #740 from silasdb/master
Use portable -p instead of --tmpdir for mktemp
2019-03-26 19:00:06 +01:00
Silas 28e2b058a4 Use portable -p instead of --tmpdir for mktemp
-p is equivalent to --tmpdir, but more portable, since it works across
GNU/Linux and *BSDs
2019-03-25 18:36:55 -03:00
Darko Poljak 825a47b3d9 ++changelog 2019-03-19 23:30:34 +01:00
Darko Poljak 66377d2c04
Merge pull request #739 from dne/openbsd-explorers
Support OpenBSD in "cpu_cores" and "disks" global explorers
2019-03-19 23:29:45 +01:00
Daniel Néri dbcf7d5543 explorer/disks: Add support for OpenBSD 2019-03-19 23:13:24 +01:00
Daniel Néri 0fc64a951c explorer/cpu_cores: Add support for OpenBSD 2019-03-19 23:09:01 +01:00
Darko Poljak 73784b04df ++changelog 2019-03-16 19:00:20 +01:00
Darko Poljak 2155ab7ea2
Merge pull request #738 from dne/openbsd-start-on-boot-absent
Implement "__start_on_boot --state absent" for OpenBSD
2019-03-16 18:58:42 +01:00
Daniel Néri 15ab7c0810 Implement "__start_on_boot --state absent" for OpenBSD 2019-03-16 17:23:19 +01:00
Darko Poljak 689f37acf6 Migrate from pep8 to pycodestyle 2019-02-15 21:05:26 +01:00
Darko Poljak afc7ca88b8 Release 4.10.6 2019-02-15 20:44:03 +01:00
Darko Poljak a40a81d36f To keep original echo intentionally disable SC2046 too 2019-02-15 20:44:03 +01:00
Darko Poljak 867b9cb102 shellcheck: SC2236: use -n instead of ! -z 2019-02-15 20:44:03 +01:00
Darko Poljak 51fa8af6b7 pycodestyle 2019-02-15 20:35:32 +01:00
Darko Poljak ef9d5494cd ++changelog 2019-02-13 18:16:59 +01:00
Darko Poljak a3a7219ad6
Merge pull request #734 from dheule/fix_zypper_types_echo
readd the use of echo in my explorers
2019-02-13 18:14:49 +01:00
Daniel Heule df693b9f47 added # shellcheck disable=SC2005 where we need the echo in __zypper explorers 2019-02-13 11:30:55 +01:00
Darko Poljak 82cfea0f3c ++changelog 2019-01-28 19:14:28 +01:00
Darko Poljak 7be3482549
Merge pull request #735 from greendeath/master
Added a startup flag for prometheus alertmanager
2019-01-28 19:13:23 +01:00
Darko Poljak a77983aead Reorganize parsers right 2019-01-28 19:09:36 +01:00
Dominique Roux 67c3c8ca12 Added a startup flag for prometheus alertmanager
aded the flag --cluster.advertise-address since it is needed for startup on a machine
which does not provide a private v4
2019-01-28 09:32:02 +01:00
Daniel Heule 0bdd590344 readd the use of echo in my explorers
this is nessessary for
 remove blanks in output (strip)
 catch exit codes of zypper (for example if no repo is defined at all)
2019-01-22 13:30:06 +01:00
Darko Poljak 5d3598b96e Release 4.10.5 2018-12-21 22:24:02 +01:00
Darko Poljak 0cb3cbae1b Remove unused explorer 2018-12-21 22:23:41 +01:00
Darko Poljak 794f20007f ++changelog 2018-12-19 17:14:37 +01:00
Darko Poljak 585221db28
Merge pull request #733 from sideeffect42/refactor-openbsd-pkg-type
Refactor __package_pkg_openbsd type
2018-12-19 17:13:10 +01:00
sideeffect42 7d50ba01da
Merge branch 'master' into refactor-openbsd-pkg-type 2018-12-15 09:46:50 +01:00
Takashi Yoshi ede076e7c5 [type/__package_pkg_openbsd] Send messages local instead of remote 2018-12-15 09:06:09 +01:00
sideeffect42 57a3257a26
Merge branch 'master' into refactor-openbsd-pkg-type 2018-12-14 21:33:42 +01:00
Darko Poljak 93b0727c3b ++changelog 2018-12-14 16:19:30 +01:00
Darko Poljak fccbcb2eb8
Merge pull request #732 from sideeffect42/package-messages
All package types send messages upon installation/removal
2018-12-14 16:18:20 +01:00
Takashi Yoshi a7f1eda328 [type/__package_emerge] Send error messages to stderr 2018-12-14 15:54:54 +01:00
Takashi Yoshi aa456ab6c1 [type/__package_pkg_openbsd] Clean up code 2018-12-14 15:51:47 +01:00
Takashi Yoshi 498628d16a [type/__package_pkg_openbsd] Misc. fixes and improvements 2018-12-14 15:49:23 +01:00
Takashi Yoshi 827081f8a2 [type/__package_pkg_openbsd/explorer/pkg_version] Fix version extraction
The earlier code stripped away all non-numeric parts of the version number.

E.g. "5.6.38p0" would be trimmed to "5.6.38"
2018-12-14 15:49:06 +01:00
Takashi Yoshi c492c53a98 [type/__package_pkg_openbsd] Send error messages to stderr 2018-12-14 15:46:31 +01:00
Darko Poljak e3b0cbe8ac ++changelog 2018-12-14 15:20:17 +01:00
Darko Poljak 77d69c987d
Merge pull request #731 from sideeffect42/sysctl-more-oses
Better OS support for __sysctl type
2018-12-14 15:19:17 +01:00
Takashi Yoshi 9acb9d1f3a [type/__sysctl] Group entries 2018-12-14 14:12:33 +01:00
Takashi Yoshi 92610fe76c [type/__sysctl] Add support for Alpine Linux, Gentoo and OpenWrt 2018-12-14 13:51:44 +01:00
Takashi Yoshi 45ff67c0f5 [type/__sysctl] Add Mac OS X support 2018-12-14 13:51:44 +01:00
Takashi Yoshi 566feba5b1 [type/__sysctl] Add NetBSD support 2018-12-14 13:51:44 +01:00
Takashi Yoshi b36716ef36 [type/__sysctl] Add OpenBSD support 2018-12-14 13:51:44 +01:00
Takashi Yoshi 183d57d6d2 [type/__sysctl] Fix spelling of FreeBSD 2018-12-14 12:43:57 +01:00
Darko Poljak 75afdd4d69 ++changelog 2018-12-13 20:14:54 +01:00
Darko Poljak a9427f6b2d
Merge pull request #729 from thriqon/allow-docker-ce-version-number
Allow docker ce version number as parameter to type
2018-12-13 20:13:32 +01:00
Jonas Weber d4bb114468 Remove usage of CDIST_ORDER_DEPENDENCY 2018-12-13 13:26:40 +01:00
Jonas Weber a7f4c8d773 Allow installing specific Docker-CE version 2018-12-13 13:23:49 +01:00
Darko Poljak f2ef1ef0d6 ++changelog 2018-12-13 12:32:57 +01:00
Darko Poljak 4a4287e02a
Merge pull request #728 from oxr463/patch-1
Fix broken links.
2018-12-13 12:31:51 +01:00
Rage OxR463 96a0eaabf1
Fix broken links. 2018-12-12 12:12:36 -05:00
Nico Schottelius 49f2d3bf91 ++ changelog 2018-12-11 18:48:23 +01:00
Nico Schottelius 3b921b5dcf
Merge pull request #727 from jgug/develop
update for debian version 9
2018-12-11 18:44:23 +01:00
kjg 8ad93a29c9 update for debian version 9 2018-12-12 01:40:39 +09:00
Takashi Yoshi ccdbf1a31c [type/__package_emerge_dependendencies] Send messages when a dependency is installed 2018-12-07 16:55:49 +01:00
Takashi Yoshi 7e9dce0ceb [type/__package_*] Print installed/removed messages
Up-/downgraded packages will send an "installed" message.
2018-12-07 16:53:21 +01:00
Darko Poljak 5014fd2388 ++changelog 2018-12-05 16:54:39 +01:00
Darko Poljak 45d1037491 [__postgres_role] Revert parts of a34060d703
Broken syntax fixed
2018-12-05 16:51:37 +01:00
Darko Poljak 0491b5b8db Revert "[__postgres_role] Revert parts of a34060d7035e84ff8f70d1e8d5bded7a1bfd71b3"
This reverts commit c85dfbdb10.
2018-12-05 16:41:22 +01:00
Nico Schottelius c85dfbdb10 [__postgres_role] Revert parts of a34060d703
Broken syntax fixed
2018-12-05 13:14:19 +01:00
Darko Poljak a85f2ebdb6 ++changelog 2018-11-27 10:41:02 +01:00
Darko Poljak 3a96c21f09
Merge pull request #723 from oliv3r/__ping
type: Add new type __ping
2018-11-27 10:40:03 +01:00
Darko Poljak 0e4ff14633
Merge pull request #725 from oliv3r/update_gitignore
Update .gitignore to more broadly ignore vim
2018-11-27 08:04:48 +01:00
Olliver Schinagl 6b95db8fc7
Update .gitignore to more broadly ignore vim
As per https://github.com/github/gitignore/blob/master/Global/Vim.gitignore

Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
2018-11-26 20:39:20 +01:00
Olliver Schinagl 71ceba4ac5
type: Add new type __ping
When starting with cdist, the documentation and examples can be
overwheliming. Further more, sometimes one would only want to do a
simple test to see if the basics are working. One such example currently
is to create a simple remote file. While this is a nice and simple
example, an even simpler example would be to just see if we can 'ping'
the host.

Other configuration management tools also seem to have this as a basic
starting command.

This thus allows to do:
echo __ping | cdist config --initial-manifest - <host>

as the most basic, most simple command to 'test' things with, without
having lingering files to boot.

Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
2018-11-26 20:37:43 +01:00
Darko Poljak 308be1b6fa ++changelog 2018-11-18 16:04:24 +01:00
Darko Poljak 74d222079b
Merge pull request #721 from jimis/master
Fix __group type failing with --gid
2018-11-18 16:04:26 +01:00
Dimitrios Apostolou 2cae33f6d6 Fix __group type failing with --gid
The command `echo -- -g` prints `-- -g` so the generated `groupadd` command
was syntactically incorrect and failing. Solution was to remove `--` since
echo command does not understand it, and add instead an extra space before
`-g` to avoid echo interpreting it as a flag.
2018-11-18 01:30:40 +01:00
Darko Poljak f8fbcdf2a7 Release 4.10.4 2018-11-03 19:22:59 +01:00
Darko Poljak d11174f2b7 Add missing ;; in case item. 2018-11-03 19:21:20 +01:00
Darko Poljak 0882a0beec ++changelog 2018-11-03 19:17:24 +01:00
sideeffect42 a34060d703 Improve OpenBSD support (#720)
* [type/__timezone] Whitelist OpenBSD

OpenBSD ships /etc/localtime and /usr/share/zoneinfo by default.

* [type/__postgres_{database,role}] Add explorer support for OpenBSD

On OpenBSD the "postgres" user is called "_postgresql".
The "postgres" database must me specifically specified as it differs from the
user name.

* [type/__postgres_{database,role}] Add gencode support for OpenBSD

On OpenBSD the "postgres" user is called "_postgresql".
The "postgres" database must me specifically specified when using psql as it
differs from the user name.

* [type/__postgres_role] Query DB if role exists instead of screen scaping

* [type/__postgres_database] Query DB if database exists instead

* [type/__postgres_{database,role}] Add user for NetBSD

* [type/__postgres_extension] Add support for OpenBSD and NetBSD

* [__ssh_authorized_key] Add OpenBSD support to entry explorer

Make sure to adhere to re_format(7) for OpenBSD compatibility.

https://man.openbsd.org/re_format.7

* [type/__start_on_boot] Add support for OpenBSD
2018-11-03 19:17:56 +01:00
Darko Poljak 6d70205319 ++changelog 2018-11-02 15:25:13 +01:00
Darko Poljak 14b1952edf
Merge pull request #719 from tom-ee/docs-patches
Docs patches
2018-11-02 15:24:37 +01:00
Darko Poljak e860f1c792 Determine source_is only if destination is symlink. 2018-11-02 14:35:06 +01:00
tom a3a0023b2a man-pages are no longer in asciidoc but in ReSTructured text instead 2018-10-31 20:24:07 +01:00
tom 1bae2be406 Synchronize notes on ssh-connection multipexing with current state. 2018-10-31 20:22:41 +01:00
Darko Poljak 6895ad0207 Fix post-shellcheck bug. 2018-10-24 18:26:33 +02:00
Darko Poljak 8c03518962 Fix spelling. 2018-10-17 07:09:59 +02:00
Darko Poljak 3d56aa83ac ++changelog 2018-10-14 10:32:30 +02:00
Darko Poljak 72a0da5537
Merge pull request #718 from darko-poljak/bugfix/716-conflicting-object-parameters
Fix DirectoryDict getitem.
2018-10-14 10:32:15 +02:00
Darko Poljak 5480c22020 Adapt object_parameters before checking conflicting parameters. 2018-10-13 16:11:51 +02:00
Darko Poljak 151edc6398 Fix DirectoryDict getitem. 2018-10-12 19:08:36 +02:00
Darko Poljak 3b7f39cab7 ++changelog 2018-10-12 15:14:30 +02:00
Darko Poljak 09bd321c5c
Merge pull request #715 from tom-ee/improve__user-type
* explicitly check for `absent` to handle state-typos gracefully
* add messaging
* redirect stdout+stderr of `userdel`
If no mail-spoolfile exists for the user the error reporting was
visible in the cdist-run.
* add new messages to man.rst
* quote "remote user", ensuring `user` is handled as one parameter
* fix [SC1117] (explicitly excaping `\n`)
2018-10-12 15:14:21 +02:00
tom c5098dfcc5 fix [SC1117] (explicitly excaping `\n`) 2018-10-12 14:05:38 +02:00
tom c950dd1e90 quote "remote user", ensuring `user` is handled as one parameter 2018-10-12 14:05:38 +02:00
tom 5761939fa9 add new messages to man.rst 2018-10-12 14:05:38 +02:00
tom c995d08ce2 redirect stdout+stderr of `userdel`
If no mail-spoolfile exists for the user the error reporting was
visible in the cdist-run.
2018-10-12 14:05:38 +02:00
tom a1bf381370 add messaging 2018-10-12 14:05:38 +02:00
tom 409d736339 explicitly check for `absent` to handle state-typos gracefully 2018-10-12 14:05:38 +02:00
Darko Poljak 09870ece59 ++changelog 2018-10-12 13:57:02 +02:00
Darko Poljak e4a7fb50fb
Merge pull request #717 from greendeath/master
[CONSUL] add newest versions
2018-10-12 13:43:16 +02:00
Dominique Roux dd5a45a809 [CONSUL] add newest versions 2018-10-12 11:42:42 +02:00
Darko Poljak 5e99219ea5
Merge pull request #713 from darko-poljak/shellcheck-files-scripts
shellcheck on /files/ scripts.
2018-10-11 09:16:24 +02:00
Darko Poljak faed292a4e Rule should be split. 2018-10-10 15:01:03 +02:00
Darko Poljak 7a9dea9754 Improve quoting. 2018-10-10 12:56:48 +02:00
Darko Poljak 610deba454 Improve quoting. 2018-10-10 12:52:50 +02:00
Darko Poljak 8669ccb9c1 Improve shell code. 2018-10-10 12:43:39 +02:00
Darko Poljak 53300b1004 Fix after shellcheck. 2018-10-10 12:43:39 +02:00
Darko Poljak dcb4395909 Resolve custom remote copy/exec shellcheck (non-)issues. 2018-10-10 12:43:39 +02:00
Darko Poljak 0f31a550cc Fix SC2012. 2018-10-10 12:43:39 +02:00
Darko Poljak c58e12a4b9 shellcheck on /files/ scripts. 2018-10-10 12:43:39 +02:00
Darko Poljak 0b58ab8c83 Bypass Configuration singleton from other tests if any. 2018-10-10 12:34:31 +02:00
Darko Poljak 9afc17f3f8 Make cdist.test return exit code. 2018-10-10 10:37:29 +02:00
Nico Schottelius 256c8324a0 Merge branch 'master' of github.com:ungleich/cdist
Signed-off-by: Nico Schottelius <nico@nico-notebook.schottelius.org>
2018-10-09 19:43:41 +02:00
Darko Poljak 52b45d4add
Merge pull request #712 from darko-poljak/shellcheck-type-explorers
Fix problems found by sellcheck in type explorers.
2018-10-08 18:01:03 +02:00
Darko Poljak 69790ec138 Fix typing error. 2018-10-08 15:43:42 +02:00
Darko Poljak 0458f66c96 Resolve SC2012. 2018-10-08 15:35:29 +02:00
Darko Poljak ec186673bf Add TODO markers for SC2012. 2018-10-07 19:48:31 +02:00
Darko Poljak 638ddd95d6 Fix problems found by sellcheck in type explorers. 2018-10-07 19:41:44 +02:00
Darko Poljak ab8f87864e Add shellcheck-ing for type explorers and auxiliary files. 2018-10-07 19:09:14 +02:00
Darko Poljak cb826ad570 ++changelog 2018-10-07 18:47:38 +02:00
Darko Poljak 791473cc2e
Merge pull request #711 from darko-poljak/shellcheck-rest
Shellcheck rest
2018-10-07 18:43:20 +02:00
Darko Poljak 334201b945 Fix remaining shellcheck problems. 2018-10-07 10:22:11 +02:00
Darko Poljak e9b823bc39 Better fixes. 2018-10-07 10:22:11 +02:00
Darko Poljak a78baccc82 Fix SC2154. Note: ignoring __<name> vars. 2018-10-07 10:22:11 +02:00
Darko Poljak a9f27beb98 Fix SC1117. 2018-10-07 10:22:11 +02:00
Darko Poljak 83806e767a Disable SC1091 where appropriate. 2018-10-07 10:22:11 +02:00
Darko Poljak 3be1c4ad6f If nothing found shellcheck targets should succeed. 2018-10-07 10:21:08 +02:00
Darko Poljak edaf4b46a5 ++changelog 2018-10-06 22:53:07 +02:00
Darko Poljak cdfa2dc628
Merge pull request #710 from darko-poljak/shellcheck-makefile-target
Shellcheck makefile target
2018-10-06 22:52:59 +02:00
Darko Poljak 140518f1b0 Add comment for SHELLCHECK_SKIP. 2018-10-06 15:56:55 +02:00
Darko Poljak 8436f872a9 Add shellcheck makefile target. shellcheck when doing release. 2018-10-06 15:56:55 +02:00
Darko Poljak 877b4d2748 ++changelog 2018-10-06 15:15:53 +02:00
Darko Poljak a46016242b
Merge pull request #708 from darko-poljak/shellcheck-various
Fix for various problems (shellcheck)
2018-10-06 15:15:38 +02:00
Darko Poljak f039b0e6e5 Fix SC2030,SC2031. 2018-10-06 08:36:06 +02:00
Darko Poljak 68fad03a6b Fix SC2120, SC2119. 2018-10-05 15:18:59 +02:00
Darko Poljak b284bafbee grep directly on the explorer file 2018-10-05 15:14:03 +02:00
Darko Poljak 02f39bcf6f Fix SC2028. 2018-10-05 15:08:25 +02:00
Darko Poljak 0d80b4473b Disable SC2031 for the single incident. 2018-10-05 15:04:22 +02:00
Darko Poljak 9a61aab631 ++ 2018-10-05 14:59:35 +02:00
Darko Poljak 88d4c8a059
Merge pull request #709 from darko-poljak/SC2044
Fix SC2044.
2018-10-05 14:58:50 +02:00
Darko Poljak bf270b6f9c Fix SC2044. 2018-10-05 13:05:01 +02:00
Darko Poljak a369acea72 Fix SC2021. 2018-10-05 12:52:44 +02:00
Darko Poljak 644ec85d80 Fix SC2162. 2018-10-05 12:50:01 +02:00
Darko Poljak 16159d8fca Fix SC2145. 2018-10-05 12:32:56 +02:00
Darko Poljak 596f3cf227 Disable SC2119,SC2120 where appropriate. 2018-10-05 12:31:05 +02:00
Darko Poljak 9b567ed8f7 Fix SC2230. 2018-10-05 12:27:43 +02:00
Darko Poljak 8cea8e67aa Disable SC2031 where appropriate. 2018-10-05 12:25:40 +02:00
Darko Poljak b120a813a2 Disable SC2030 where appropriate. 2018-10-05 12:24:03 +02:00
Darko Poljak 7b17ad4733 Fix SC2143. 2018-10-05 12:21:59 +02:00
Darko Poljak e46420e7f5 Fix SC1090. 2018-10-05 12:19:16 +02:00
Darko Poljak 2f7b8e6db9 Fix SC2153. 2018-10-05 12:16:27 +02:00
Darko Poljak 73d0a5bbbe Fix SC2235. 2018-10-05 12:14:51 +02:00
Darko Poljak 73acb35a8a Fix SC2196. 2018-10-05 12:04:45 +02:00
Darko Poljak 28889ef38a Disable SC2028 where intended. 2018-10-05 12:02:10 +02:00
Darko Poljak ed542cc7cb Fix SC2046. 2018-10-05 11:57:31 +02:00
Darko Poljak b25aff17c6 Disable SC2039 where appropriate. 2018-10-05 11:49:28 +02:00
Darko Poljak a601fa91d9 Fix SC2116. 2018-10-05 11:34:10 +02:00
Darko Poljak 5f8c631e34 ++changelog 2018-10-05 11:26:47 +02:00
Darko Poljak 678ce2bfaa
Merge pull request #707 from darko-poljak/SC2016
Disable SC2016 check.
2018-10-05 11:26:01 +02:00
Darko Poljak 3b6d759660 Disable SC2016 check. 2018-10-05 10:32:38 +02:00
Darko Poljak d2f1d6185d ++changelog 2018-10-05 10:29:47 +02:00
Darko Poljak 0cb127822f
Merge pull request #706 from darko-poljak/SC2164
Fix SC2164
2018-10-05 10:28:04 +02:00
Darko Poljak 49bb041330
Merge pull request #696 from thriqon/shellcheck-party-SC2086
Fix SC2086 on all scripts
2018-10-05 10:26:53 +02:00
Darko Poljak c01cf38660 Fix SC2164 2018-10-04 23:10:42 +02:00
Darko Poljak 738f053877 ++changelog 2018-10-04 22:39:06 +02:00
Darko Poljak 68b6477fe3
Merge pull request #705 from thriqon/shellcheck-party-various
Fix various shellcheck issues (SC2215, SC2059, SC2155, SC2091)
2018-10-04 22:39:05 +02:00
Darko Poljak f0fb5215e8
Merge pull request #700 from thriqon/shellcheck-party-SC2034
Remove unused variables (SC2034)
2018-10-04 22:35:08 +02:00
Darko Poljak 3ead8b266a
Merge pull request #704 from thriqon/shellcheck-party-SC2069
Fix SC2069 (wrong stdout/stderr redirect order)
2018-10-04 22:33:11 +02:00
Jonas Weber 34b571b7d9 Fix SC2091 (execute result of condition)
For some reason, the echo|grep pattern was enclosed four times in a $()
operation. Nothing happened, since grep is always invoked with -q
(quiet, nothing printed to stdout).
2018-10-04 22:23:48 +02:00
Jonas Weber bcd7fbbcc4 Fix SC2155 (directly export computed variables) 2018-10-04 22:23:48 +02:00
Jonas Weber a0db375f91 Disable SC2059 (printf injection) for staged_file
We're explicitly allowing for 'printf injection' here, so it's ok to
just disable the corresponding shellcheck check.
2018-10-04 22:23:38 +02:00
Jonas Weber a6fdf4255a Fix SC2069 (wrong stdout/stderr redirect order)
In the original order, stderr was connected to the old stdout
(terminal). This was _probably_ not intended. The new order fixes this
by first connecting stdout to /dev/null and then attaching stderr to
that as well.
2018-10-04 22:04:24 +02:00
Jonas Weber e2593c0dcb Fix SC2215 (missing brackets on if)
This might have never worked as intended, but how would you know?
2018-10-04 22:03:52 +02:00
Jonas Weber fff656d1ac Unquote $recursive to support empty-case
This is safe to do, as the value of $recursive is not dependent on
user-supplied code.
2018-10-04 19:45:26 +02:00
Jonas Weber 53728a7ff0 Change backslash-dquote to single quote
Slightly breaking change, but improves security and readability.
2018-10-04 19:45:26 +02:00
Jonas Weber ae7ccc5995 Fix SC2086 on all scripts
Relevant documentation: https://github.com/koalaman/shellcheck/wiki/SC2086

relates to: #540

This commit addresses 241 separate cases of missing quotes around
variables.
2018-10-04 19:45:22 +02:00
Jonas Weber 23debd5b6f Use cur_ip in jail for freebsd 2018-10-04 19:22:28 +02:00
Jonas Weber 352679386d Drop unused options parameter in __install_reboot 2018-10-04 19:22:28 +02:00
Jonas Weber b3f4d3849a Fix __install_umount target parameter 2018-10-04 19:22:28 +02:00
Jonas Weber 6b0f8fba22 Remove unused variables (almost, found bugs?)
Solves SC2034

references #540.
2018-10-04 19:22:28 +02:00
Darko Poljak ef8ec8641e ++ 2018-10-04 18:47:28 +02:00
Darko Poljak a2ed14b6d0
Merge pull request #701 from tom-ee/fix-SC2148
fix SC2148 (missing shebang) and make executable
2018-10-04 18:46:38 +02:00
tom 085b2a2b10 remove `set -e` on explorers (they should be able to fail gracefully) 2018-10-04 17:38:39 +02:00
tom a46da35bbc fix SC2148 (missing shebang) and make executable 2018-10-04 17:38:38 +02:00
Darko Poljak d49d38481f ++changelog 2018-10-04 17:31:37 +02:00
Darko Poljak 66ca2fcb70
Merge pull request #703 from tom-ee/fix-SC2045
fix SC2045 (use globs instead of `ls`)
2018-10-04 17:31:34 +02:00
tom d950ddada3 fix SC2045 (use globs instead of `ls`) 2018-10-04 16:01:45 +02:00
Darko Poljak 31bf6ab230 ++changelog 2018-10-04 12:38:40 +02:00
Darko Poljak b62b41b263
Merge pull request #702 from tom-ee/fix-SC2166-global-explorer
fix another SC2166 (test `[ .. -a.. ]` replaced by `[ .. ] && ]`)
2018-10-04 12:38:09 +02:00
tom 134c84607f fix another SC2166 (test `[ .. -a.. ]` replaced by `[ .. ] && ]`) 2018-10-04 12:28:59 +02:00
Darko Poljak ab9e2264df ++changelog 2018-10-04 09:10:31 +02:00
Darko Poljak e1b62ec560
Merge pull request #699 from darko-poljak/SC2039
Fix SC2039
2018-10-04 09:08:23 +02:00
Darko Poljak 383af6736f ++changelog 2018-10-03 14:52:17 +02:00
Darko Poljak 4403392869
Merge pull request #698 from darko-poljak/SC2002
Fix SC2002
2018-10-03 14:51:12 +02:00
Darko Poljak 8ef2773c0d Fix SC2039 2018-10-03 14:32:39 +02:00
Darko Poljak 44acfcdd12 Fix SC2002 2018-10-03 14:12:07 +02:00
Darko Poljak 3757e8c2c5 ++changelog 2018-10-02 21:50:17 +02:00
Darko Poljak e69be05f70
Merge pull request #694 from darko-poljak/SC2005
Fix SC2005
2018-10-02 21:49:45 +02:00
Darko Poljak d29534861b
Merge pull request #695 from darko-poljak/SC2004
Fix SC2004
2018-10-02 21:49:01 +02:00
Darko Poljak 0928708d19 Fix SC2004 2018-10-02 20:34:54 +02:00
Darko Poljak 5ed95ce93b Fix SC2005 2018-10-02 20:22:44 +02:00
Darko Poljak aef14ad39e ++changelog 2018-10-02 17:21:24 +02:00
Darko Poljak f1369820d0
Merge pull request #693 from thriqon/shellcheck-party-SC2166
Fix SC2166 (and/or operators in test) on all manfest/gencode/explorers
2018-10-02 17:19:21 +02:00
Jonas Weber 6326eae1bb Fix SC2166 on all manfest/gencode/explorers 2018-10-01 22:13:24 +02:00
Darko Poljak e551348cd7 Create man7 directory if needed. 2018-09-29 11:15:48 +02:00
Darko Poljak 9cb9771e33 Exclude man7 empty directory from archive. 2018-09-29 11:15:29 +02:00
Darko Poljak f705fe8fc6
Merge pull request #692 from darko-poljak/log-timestamping-config
Add timestamping log option to config file.
2018-09-28 14:22:59 +02:00
Darko Poljak 82077aff25 Add timestamping log option to config file. 2018-09-27 18:55:33 +02:00
Darko Poljak e404ff4836 ++changelog 2018-09-26 20:35:32 +02:00
Darko Poljak 1e34fc20be
Merge pull request #691 from darko-poljak/log-timestamping
Add timestamp to log messages.
2018-09-26 20:35:14 +02:00
Darko Poljak c04325fdc5 ++changelog 2018-09-23 22:26:16 +02:00
Darko Poljak 4b9994f134
Merge pull request #690 from myeisha/batch-scp
transfer all files of a directory at once
2018-09-23 22:22:57 +02:00
Darko Poljak 0c57b3083e Fix getting loggers. 2018-09-23 21:38:03 +02:00
Darko Poljak 6acf6f64dc Add timestamp to log messages. 2018-09-23 20:36:57 +02:00
Darko Poljak 02982ca8be Release 4.10.3 2018-09-23 12:04:57 +02:00
Darko Poljak 1f703ab42e ++changelog 2018-09-22 20:52:43 +02:00
Darko Poljak 9b6ed0adc7
Merge pull request #689 from myeisha/deduplicate-mkdir
don't duplicate Remote::mkdir in explorer transfer
2018-09-22 20:52:33 +02:00
dhivael c021cd15cd transfer all files of a directory at once
instead of calling the copy command once per file in a directory (eg a
type explorer dir), call the copy command only once with all files of
the directory.

batch copy saves 20% of dry-run time on my test manifest in sequential
mode, and 15% in parallel mode.
2018-09-22 17:35:32 +02:00
dhivael f918acd725 don't duplicate Remote::mkdir in explorer transfer
Remote::transfer contains a call to mkdir(destination) if the source is
a directory. since the destination must also be a directory we can omit
extra mkdir calls in Explorer.

this saves about 10% on my manifests in sequential mode, and about 6% in
parallel mode.
2018-09-22 13:16:22 +02:00
Darko Poljak d6952543a7 Add 'real world example' walkthrough docs chapter. 2018-09-14 10:53:16 +02:00
Darko Poljak aa80e8f87d ++changelog 2018-09-12 11:53:46 +02:00
Darko Poljak 690b63081f
Merge pull request #688 from thriqon/improve-package-apt
Improve __package_apt
2018-09-12 11:53:37 +02:00
Jonas Weber b3f3b907a4 Quote aptget command and params, simplify explorer 2018-09-12 11:36:11 +02:00
Jonas Weber 346f1f8af3 Send messages when installing packages via __package_apt 2018-09-12 11:36:06 +02:00
Darko Poljak 19a55ac75a
++changelog 2018-09-09 19:27:39 +02:00
Darko Poljak cebe5949fc
Merge pull request #687 from devinsolutions/update-__docker
Update __docker type
2018-09-09 19:23:18 +02:00
Adam Dej 2e653409c1 Update __docker type
- Update installation method, following official installation
instructions.
  - docker-engine was renamed to Docker CE around March 2017. Update
manpage to reflect that change.
  - Remove flag `--experimental` since it is no longer necessary to install a
different binary to get experimental features. Experimental features are
included in the stable binary and can be enabled by a flag or in a
config file.
2018-09-07 11:38:49 +02:00
Adam Dej c2f8c7abb3 Add explorer for info in /etc/os-release 2018-09-07 11:38:49 +02:00
Darko Poljak 55dcaecafe Release 4.10.2 2018-09-06 07:11:04 +02:00
Darko Poljak 3782656569 Report encoding errors nicely. 2018-09-04 08:27:20 +02:00
Darko Poljak b9ddbb1aa0 ++changelog 2018-09-01 23:30:53 +02:00
Darko Poljak b67051fac5
Merge pull request #686 from darko-poljak/letsencrypt_cert_explorers_fix
Check if certbot exists before using it. Fixes #685.
2018-09-01 23:29:37 +02:00
Darko Poljak a627247908 Check if certbot exists before using it. Fixes #685. 2018-09-01 23:27:58 +02:00
Darko Poljak 282647a88c Fix changelog formatting. 2018-08-31 10:48:21 +02:00
Darko Poljak fbc129e2ef
Merge pull request #684 from zhaostu/master
Update type `__package_update_index`
2018-08-31 10:47:30 +02:00
Stu Zhao ad46c39c86
Merge branch 'master' into master 2018-08-30 15:56:19 -07:00
Darko Poljak 93d877f5bf Add nonparallel marker for __apt_source type. 2018-08-30 20:22:51 +02:00
Stu Zhao f143a70463 Support pacman with --maxage parameter 2018-08-29 11:31:31 -07:00
Stu Zhao b12c02138d Refactor __package_update_index explorers
* add an type explorer to unify detecting of package type.
* update currage use the type explorer, so if os and passed in type
does not match, it behaves correctly.
2018-08-29 00:22:28 -07:00
Stu Zhao 2f89d8a514 Fix __package_update_index processing error
exit 1 in explorer will abort cdist.
2018-08-29 00:22:28 -07:00
Darko Poljak eeb0590150 ++changelog 2018-07-23 08:09:55 +02:00
Darko Poljak 0e9ba29850
Merge pull request #682 from greendeath/master
Bugfix:
2018-07-23 08:11:16 +02:00
Dominique Roux f04f76524c Bugfix:
- __grafana_dashboard had the wrong release name for devuan ascii
2018-07-22 18:35:30 +02:00
Darko Poljak 1f2b7c84c2 ++changelog 2018-07-18 07:40:34 +02:00
Darko Poljak e1f5fbf7b2
Merge pull request #678 from devinsolutions/improve-systemd-unit
Improve __systemd_unit
2018-07-18 07:41:41 +02:00
Adam Dej 43982f821f __systemd_unit: add support for masking units 2018-07-11 16:22:36 +02:00
Adam Dej 37b37f6e66 __systemd_unit: fix crash when transitioning to state=absent
This type tried to disable an unit after it has removed it, which
failed. Now the removal happens in gencode-remote, after the unit has
been stopped and disabled.
2018-07-11 16:22:36 +02:00
Adam Dej 8d84834db6 __systemd_unit: manpage clarifications
Clarify that this type only operates on units in /etc/systemd/system.
Also, when state=present, it is not always true that the type is
"installed, enabled and started"
2018-07-11 16:16:08 +02:00
Darko Poljak 6c8014b407 __letsencrypt_cert: add support for devuan ascii 2018-06-22 14:09:31 +02:00
Darko Poljak 7eae68c11d Release 4.10.1 2018-06-21 08:33:48 +02:00
Darko Poljak 8350b6297e ++changelog 2018-06-20 17:28:38 +02:00
Darko Poljak 58b0e83655 Add env vars usage idiom for writing types 2018-06-20 17:28:30 +02:00
Steven Armstrong 2f20b31758
Merge pull request #676 from thriqon/675-line-dry-run
Handle missing files with __line (dry-run)
2018-06-20 15:29:55 +02:00
Jonas Weber 4eaace7dd5 Handle missing file in __line explorer gracefully
closes #675
2018-06-20 11:14:25 +02:00
Darko Poljak 41186d66d4 ++changelog 2018-06-20 09:23:12 +02:00
Darko Poljak 4cee4abf7b
Merge pull request #674 from darko-poljak/fix-letsencrypt-tempfile
Fix temp file location and removal
2018-06-20 09:23:43 +02:00
Darko Poljak ec8f2f9488 Fix temp file location and removal 2018-06-20 08:29:41 +02:00
Darko Poljak ee64936ff9 Release 4.10.0 2018-06-17 10:57:06 +02:00
Darko Poljak d49daca3dc ++changelog 2018-06-16 10:51:46 +02:00
Darko Poljak f75af95bda
Merge pull request #663 from asteven/type/__line
RFC: rewrite __line type for --before and --after support
2018-06-16 10:51:33 +02:00
Darko Poljak f9892e25a3
Merge pull request #672 from darko-poljak/sysctl-support-sysctl.d
__sysctl: support sysctl.d
2018-06-16 10:48:58 +02:00
Darko Poljak 9d4c0331a9 __sysctl: support sysctl.d 2018-06-16 07:42:43 +02:00
Darko Poljak 5aa8dac80a Disable config parser interpolation 2018-06-13 07:53:52 +02:00
Darko Poljak b9a48c9316 ++changelog 2018-06-13 06:20:02 +02:00
Darko Poljak 75b68cd178
Merge pull request #669 from 4nd3r/__acl
add __acl: Basic wrapper around setfacl
2018-06-13 06:20:58 +02:00
ander d7a1645e4e __acl: fix os explorer 2018-06-11 11:21:07 +03:00
ander 90adefe2e4 add __acl: Basic wrapper around setfacl 2018-06-08 15:06:35 +03:00
Steven Armstrong 4516ee0baa position can not be empty
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2018-06-01 15:27:40 +02:00
Darko Poljak 5ec99ceda2 Release 4.9.1 2018-05-30 19:44:54 +02:00
Darko Poljak a1a589ab59
Merge pull request #666 from darko-poljak/fix-letsencrypt-cert
Fix __letsencrypt_cert type: use object id as domain
2018-05-30 19:41:50 +02:00
Darko Poljak efebe15386 Fix __letsencrypt_cert type: use object id as domain if domain param is not specified 2018-05-30 19:38:56 +02:00
Darko Poljak 81adabd1ab ++changelog 2018-05-28 08:04:41 +02:00
Darko Poljak 98ceebe386
Merge pull request #667 from aluuu/master
Fix __package_yum explorer
2018-05-28 08:05:59 +02:00
Nico Schottelius ab62d58715 ++ changes 2018-05-27 19:09:24 +02:00
Nico Schottelius 709c216096 [__consul_agent] Add LSB header so that innserv doe not fail 2018-05-27 19:07:57 +02:00
Alexander Dinu b3a4152e00 Fix __package_yum explorer
Why:

In case when name contains package name with exact version specified (e.g. rpm-build-4.11.3)
```
rpm -q --whatprovides "$pkg_name"
```

will tell you that no package could provide you with 'rpm-build-4.11.3',
because it's not virtual or file-provide, but exact package name.

This will lead to the installation of the package which was already installed.
It slows down manifest execution a lot.

My change will keep previous behaviour which relies on --whatprovides and
will fix wrong behaviour when argument is full package name with version.
2018-05-27 17:20:55 +02:00
Darko Poljak ab696a8cb8 ++changelog 2018-05-25 18:01:26 +02:00
Darko Poljak d662cc0d1b
Merge pull request #664 from devinsolutions/install-coreos
Add new type __install_coreos
2018-05-25 18:02:14 +02:00
lubo e7e8f1428a Add new type __install_coreos 2018-05-21 11:10:54 +02:00
Steven Armstrong fb26894cbd when searching treat line as string, and regex as regexp
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2018-05-18 16:57:34 +02:00
Steven Armstrong a3968f8313 rewrite __line type for --before and --after support
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2018-05-18 01:25:35 +02:00
Darko Poljak e6b6925908 Release 4.9.0 2018-05-17 16:11:05 +02:00
Darko Poljak 6946dc877a pep8 2018-05-17 13:33:58 +02:00
Darko Poljak 3cf417fa2b Fix NameError: name 'cdist_object' is not defined, #662 2018-05-15 12:12:01 +02:00
Darko Poljak 72bb485db7 ++changelog 2018-05-11 18:29:43 +02:00
Darko Poljak 87c48bebc5
Merge pull request #661 from devinsolutions/letsencrypt-cert
Rewrite __letsencrypt_cert type
2018-05-11 18:29:11 +02:00
lubo 22d570ae60 Rewrite __letsencrypt_cert type
This commit adds the following features:

 * Ability to expand existing certificate
 * Ability to manage object state
 * Ability to obtain test certificate
 * Ability to promote test certificate to production
 * Ability to specify custom certificate name
 * Ability to specify multiple domains per certificate
 * Ability to use Certbot in standalone mode
 * Messaging

This commit also introduces the following behavioral changes:

 * Attempt to install Certbot only when it is not installed
   already
 * Installation of the cron job has to be enabled using
   `--automatic-renewal` parameter

**Note:** Object ID is now treated as certificate name and new
required parameter `--domain` was added.
2018-05-08 10:49:49 +02:00
Darko Poljak 543bc8fed9
Merge pull request #660 from devinsolutions/docker-secret
__docker_secret: Set executable flag on scripts
2018-05-04 17:08:10 +02:00
Darko Poljak 6c462b2617
Merge pull request #659 from devinsolutions/docker-config
__docker_config: Fix config-data explorer
2018-05-04 17:07:50 +02:00
lubo fdb5bbcf91 __docker_secret: Set executable flag on scripts 2018-05-04 16:47:09 +02:00
lubo 1efbd6a3a0 __docker_config: Fix config-data explorer
Before this fix, the explorer returned binary data when config did
not exist.

This commit also removes dependency on jq and sets executable flag
on the explorer file.
2018-05-04 16:42:47 +02:00
Darko Poljak b5e96efcbf ++changelog 2018-05-02 08:35:12 +02:00
Darko Poljak 3ddd46e489
Merge pull request #658 from devinsolutions/docker-secret
Add new type __docker_secret
2018-05-02 08:36:17 +02:00
Darko Poljak 6722f56df1
Merge pull request #657 from devinsolutions/docker-config
Add new type __docker_config
2018-05-02 08:35:49 +02:00
lubo 5a7d74b905 Add new type __docker_secret 2018-04-30 17:59:31 +02:00
lubo 4f61f6be9c Add new type __docker_config 2018-04-30 17:58:10 +02:00
Darko Poljak 3869940fc8 ++changelog 2018-04-29 20:39:39 +02:00
Darko Poljak 6893a5f990
Merge pull request #656 from devinsolutions/docker-stack
__docker_stack: Use --with-registry-auth deploy option
2018-04-29 20:40:41 +02:00
lubo aa20ed5ea1 __docker_stack: Use --with-registry-auth deploy option
Without this option, Swarm agents are unable to download images from
private registries.
2018-04-29 13:05:50 +02:00
Darko Poljak 09642142f4 Release 4.8.4 2018-04-20 14:31:10 +02:00
Darko Poljak 7349da777b ++changelog 2018-04-20 14:24:51 +02:00
Darko Poljak 2a9057f892 ++changelog 2018-04-19 17:53:47 +02:00
Darko Poljak 0d15e1aae0
Merge pull request #653 from darko-poljak/improve_error_reporting
Improve error reporting
2018-04-19 17:53:30 +02:00
Darko Poljak f09765a03a Improve error reporting. 2018-04-17 20:06:20 +02:00
Steven Armstrong 43a65d91b1 changelog++
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2018-04-05 10:36:38 +02:00
Steven Armstrong 999f221c88 need a way to distinguish between install-config and normal config
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2018-04-05 10:32:33 +02:00
Darko Poljak 60eba42141 ++changelog 2018-03-26 08:52:41 +02:00
kamila b695e82bec FreeBSD improvements (#651) 2018-03-26 08:53:31 +02:00
Darko Poljak b740d415ca ++changelog 2018-03-19 15:18:08 +01:00
dmitrybogatov 958222133b Fix spelling errors in manpages 2018-03-19 15:16:37 +01:00
Darko Poljak 7de80678f0 Release 4.8.3 2018-03-16 19:17:53 +01:00
Darko Poljak ef13449687 Fix sphinx warnings. 2018-03-15 18:01:23 +01:00
Darko Poljak a06ee6f9f1 Fix changelog. 2018-03-15 14:00:25 +01:00
Darko Poljak d4a7b298a6 Return translator_class for older sphinx versions. 2018-03-15 13:49:22 +01:00
Darko Poljak 26a8827ec2 Add gitattributes: export-ignore entries. 2018-03-15 06:33:05 +01:00
Darko Poljak bba4c0ef67 ++changelog 2018-03-13 18:49:40 +01:00
Darko Poljak fa32bd865b
Merge pull request #650 from devinsolutions/type-docker-stack
Add new type __docker_stack
2018-03-13 18:50:14 +01:00
Darko Poljak 17fa27a56a ++changelog 2018-03-13 17:31:50 +01:00
Darko Poljak f095e40c22
Merge pull request #649 from devinsolutions/type-docker-swarm
Add new type __docker_swarm
2018-03-13 17:31:23 +01:00
lubo 7184228536 Add new type __docker_stack 2018-03-13 15:55:54 +01:00
lubo 8b86c6fc95 Add new type __docker_swarm 2018-03-13 15:54:47 +01:00
Darko Poljak f2fbb92fdd ++changelog 2018-03-13 15:17:14 +01:00
Darko Poljak f881228878 Fix manpage generation. 2018-03-13 15:09:13 +01:00
Darko Poljak e4f263ecb7 ++changelog 2018-03-11 21:11:26 +01:00
Darko Poljak 1bb9da233e
Merge pull request #647 from ungleich/new-prometheus
New __prometheus_server, __prometheus_alertmanager, __grafana_dashboard
2018-03-11 21:11:54 +01:00
kamila f03a0e586e __prometheus_{server,alertmanager}: restart when cli parameters change 2018-03-11 20:47:01 +01:00
Darko Poljak ca42fe6ee3 ++changelog 2018-03-11 18:01:03 +01:00
kamila f9443532a1 __key_value: --onchange parameter added (#648) 2018-03-11 18:01:38 +01:00
kamila e63c3429da __prometheus_{server,alertmanager}: update man pages 2018-03-11 11:07:59 +01:00
kamila 787f5237e5 __prometheus_{server,alertmanager}: use os_version instead of lsb_release
works without the `lsb-release` package and actually seems to be more reliable, even though it is inconsistent between debian and devuan
2018-03-11 10:55:24 +01:00
kamila 7ae24cf677 __grafana_dashboard: cleanup 2018-03-11 10:52:25 +01:00
kamila 34aefbc0f6 __prometheus_{server,alertmanager}: new man pages 2018-03-11 01:35:16 +01:00
kamila ee6d63325d new __prometheus_alertmanager; fixes to __prometheus_server 2018-03-11 01:28:26 +01:00
kamila 8a488591bb __prometheus_server: switch to packages; assume prometheus 2.x 2018-03-11 00:47:33 +01:00
Darko Poljak b58cb810ac Release 4.8.2 2018-03-10 23:49:50 +01:00
Darko Poljak fe870ba8ba Loglevel arguments not parsed but accessed #646 2018-03-10 11:12:31 +01:00
Darko Poljak fc79fe86a2 Release 4.8.1 2018-03-09 17:25:01 +01:00
Darko Poljak 5090038e4c Add test-remote target - remote is not tested with test target 2018-03-09 10:00:14 +01:00
Darko Poljak b0c5bc793d Fix "label empty or too long" error #645 2018-03-09 09:58:49 +01:00
Nico Schottelius 54ca7b40c7 Update consul agent init script so that it works again on Devuan
Error before:

---- BEGIN code-remote:stderr ----
insserv: warning: script 'consul' missing LSB tags and overrides
insserv: There is a loop between service monit and consul if stopped
insserv:  loop involving service consul at depth 2
insserv:  loop involving service monit at depth 1
insserv: Stopping consul depends on monit and therefore on system facility `$all' which can not be true!
insserv: exiting now without changing boot order!
update-rc.d: error: insserv rejected the script header
2018-03-06 22:33:10 +01:00
Nico Schottelius bfe8b8fa57 Support stretch + ascii in __grafana_dashboard 2018-03-06 20:52:55 +01:00
Darko Poljak bc94c01c49 Amend __file man. 2018-03-06 07:39:50 +01:00
Darko Poljak 05084c6fc6 pep8 2018-03-06 07:35:27 +01:00
Darko Poljak aba8dc4965 ++changelog 2018-03-06 07:33:19 +01:00
matthijs a9a359d542 Add pre-exists state to __file (#641)
This allows checking whether a file exists, but erroring out instead of
creating the file if it does not (or is not a regular file).
2018-03-06 07:33:22 +01:00
Darko Poljak 2b85e4f14b ++changelog 2018-03-05 12:41:42 +01:00
matthijs b8ed816af4 Add __apt_default_release type (#643) 2018-03-05 12:40:11 +01:00
Darko Poljak d621dc0afb
Merge pull request #642 from darko-poljak/support_dist_config_file
Support in-distribution config file
2018-03-02 10:03:00 +01:00
Darko Poljak 378c7f6a89 Support in-distribution config file 2018-03-01 20:12:21 +01:00
Darko Poljak 2dfbd89c5e Fix determining save_output_streams value through configuration 2018-03-01 20:00:54 +01:00
Darko Poljak 23292e5cad Fix determining beta value through configuration 2018-03-01 19:33:22 +01:00
Darko Poljak ea702c0c43 ++changelog 2018-02-28 23:40:53 +01:00
Darko Poljak 8eb0697b42
Merge pull request #640 from darko-poljak/bugfix/error_info_lost_with_jobs_#632
[BETA] bug: error info lost with parallel (option -j) #632
2018-02-28 23:40:26 +01:00
Darko Poljak be2beba36c ++changelog 2018-02-28 23:33:53 +01:00
Darko Poljak 7ccc959ebd Bugfix: --beta on the commandline does not seem to work #635
Fix argparse parsers.
2018-02-28 23:29:45 +01:00
Darko Poljak 3fb7e33305 Bugfix: non-existent manifest not handled gracefully #639 2018-02-28 23:26:04 +01:00
Darko Poljak 2b5f1a0148 Fix a case when HOME is set but empty 2018-02-27 23:07:52 +01:00
Darko Poljak cf36aece7d [BETA] bug: error info lost with parallel (option -j) #632 2018-02-25 23:48:53 +01:00
Darko Poljak 44673131fc
Merge pull request #634 from darko-poljak/bugfix/consul_#633
bugfix: __consul fails if consul is already running #633
2018-02-25 23:00:57 +01:00
Darko Poljak b870b6e43a bugfix: __consul fails if consul is already running #633 2018-02-25 09:51:51 +01:00
Darko Poljak 7cbdc55a8c ++changelog 2018-02-21 21:18:59 +01:00
Darko Poljak ef7304499a
Merge pull request #629 from tom-ee/feature/improve__package_dpkg
add `--state`-parameter and messaging to __package_dpkg
2018-02-21 21:19:07 +01:00
tom a5dc6214e1 `dpkg {-r|-P}` needs the package-, not the filename 2018-02-21 15:01:08 +01:00
tom 3208ab614e review notes (duplicate boolean section, comma separate "see also" items) 2018-02-21 11:16:23 +01:00
Darko Poljak ec85527c1a ++changelog 2018-02-21 10:05:48 +01:00
Darko Poljak 526e1c9a6d
Merge pull request #628 from tom-ee/bugfix/messaging__package_update_index
fix messaging for __package_update_index
2018-02-21 10:03:58 +01:00
Darko Poljak 1f93e7291e Fix consul message and document messaging. 2018-02-21 10:00:25 +01:00
tom a545b10538 add `--state`-parameter and messaging to __package_dpkg
- `--state` allows to remove a deb-package, if `--purge-if-absent` is
  specified the package is purged instead of "only" removed
- messaging was added
- man-page updated accordingly
2018-02-20 16:46:26 +01:00
tom 94c9d11cb8 fix messaging for __package_update_index
The message was printed unconditionally, even if no `apt-get update` had
been running.
2018-02-20 10:20:54 +01:00
Darko Poljak c0dc26a577 Fix consul message. 2018-02-15 22:03:28 +01:00
Darko Poljak 48a0fb5bd0 Add message when adding consule directly on target. 2018-02-15 21:34:54 +01:00
Darko Poljak 50b1867f4d ++changelog 2018-02-15 21:19:29 +01:00
Darko Poljak b5f38abd39
Merge pull request #627 from darko-poljak/force_ipv4_ipv6_options
Add -4 and -6 params to force IPv4, IPv6 addresses respectively.
2018-02-15 21:16:45 +01:00
Darko Poljak 4d39b6af51 Add -4 and -6 params to force IPv4, IPv6 addresses respectively. 2018-02-15 20:33:36 +01:00
Darko Poljak 19206e7693 ++changelog 2018-02-15 15:45:39 +01:00
Darko Poljak 9a832d88b5
Add option for directly downloading on target host. 2018-02-15 15:45:31 +01:00
Darko Poljak 7d06a3e7d1 Release 4.8.0 2018-02-14 20:09:00 +01:00
Darko Poljak 0074bb0564 Fix minor docs formatting. 2018-02-14 20:07:44 +01:00
Darko Poljak 0ae61c8aad ++changelog 2018-02-12 12:13:53 +01:00
Darko Poljak eb94d7a8bb
Remove update index type dep, call update index after adding new source. (#623) 2018-02-12 12:13:38 +01:00
Darko Poljak 7fcfe8cff5 ++changelog 2018-02-07 18:12:02 +01:00
Darko Poljak a993e0f5a9
Support disabling saving output streams 2018-02-07 18:12:15 +01:00
Darko Poljak 47399bfa9f Add --renew-hook param to letsencrypt_cert type. 2018-02-05 13:57:53 +01:00
Darko Poljak c76637242f ++ 2018-01-31 20:23:52 +01:00
Darko Poljak c8c627a077
Merge pull request #619 from darko-poljak/package_apt_version
__package_apt ignores --version parameter #615
2018-01-31 20:23:57 +01:00
Darko Poljak fe7da4d8b3 Update man page. 2018-01-31 20:21:48 +01:00
Darko Poljak d6ff077156 __package_apt ignores --version parameter #615 2018-01-31 20:18:11 +01:00
Darko Poljak fe8004eca2 ++changelog 2018-01-31 20:11:39 +01:00
Darko Poljak 87558adbda
Merge pull request #620 from thriqon/130-issue-stdin
Allow reading contents of __motd and __issue from stdin
2018-01-31 20:12:10 +01:00
Darko Poljak fdc7060f48 ++changelog 2018-01-31 13:56:31 +01:00
Darko Poljak 4d4d76bb38
Merge pull request #617 from tom-ee/maxage-for__package_update_index
Maxage for  package update index
2018-01-31 13:57:09 +01:00
Jonas Weber bfde7a6cfa Allow __motd to read from stdin 2018-01-31 12:53:50 +00:00
Jonas Weber 2069650e74 Allow filling __issue from stdin
closes #130
2018-01-31 12:53:50 +00:00
tom fa91dbfcdb (re-) copyright msg 2018-01-31 11:10:20 +01:00
tom 6a6fdac25d add error-message if OS is unsuppored; fix indentation 2018-01-31 10:37:30 +01:00
Darko Poljak ed1a53dda2
Merge pull request #616 from thriqon/package-apt-purge-parameter
Provide `--purge-if-absent` to __package_apt
2018-01-31 10:00:19 +01:00
tom cb21b3679a add missing legal boilerplate to explorer 2018-01-31 09:22:19 +01:00
tom 1117f49801 Merge branch 'maxage-for__package_update_index' of github-tom-ee:tom-ee/cdist into maxage-for__package_update_index 2018-01-30 16:28:08 +01:00
tom e31de114e3 __package_update_index: update man-page w/ `--magage` and MESSAGING 2018-01-30 16:26:07 +01:00
tom 179c5a2dfe __package_update_index: optional `--maxage <seconds>`-parameter for apt
`--maxage 3600` ensures that `apt-get --quiet update` is only done if
the previous run was at least 1 hour ago.

This also adds messaging
2018-01-30 16:26:02 +01:00
tom 2dc5550fa4 __package_update_index: update man-page w/ `--magage` and MESSAGING 2018-01-30 16:05:30 +01:00
Thomas Eckert 27d38a28ab __package_update_index: optional `--maxage <seconds>`-parameter for apt
`--maxage 3600` ensures that `apt-get --quiet update` is only done if
the previous run was at least 1 hour ago.

This also adds messaging
2018-01-30 13:48:25 +01:00
Jonas Weber 3545d0157f Provide `--purge-if-absent` to __package_apt
Configuration files are not purged under Debian when the package
is deinstalled. If this parameter is given, they are deleted upon
package deinstallation.
2018-01-30 12:04:19 +01:00
Darko Poljak 950f00d1a4 ++changelog 2018-01-21 12:21:41 +01:00
Darko Poljak 45e351c19c
Merge pull request #613 from thriqon/handle-stdin-from-systemd-unit-correctly
Handle stdin to __systemd_unit correctly
2018-01-21 12:22:28 +01:00
Jonas Weber dd188ca588 Handle stdin to __systemd_unit correctly
When directly piping in the source of a systemd unit file, cdist
errored out. This is due to not propagating the stdin file to the
underlying __config_file type (which already contains code for this
case, but this has to be duplicated in __systemd_unit).

The following example thus works:

    __systemd_unit test.service --source - <<EOF
    [Service]
    ExecStart=/bin/sleep 3600
    EOF
2018-01-21 09:12:45 +00:00
Darko Poljak fd6337bb09 ++changelog 2018-01-14 10:22:57 +01:00
Darko Poljak 7558af1707 Add local cache overview docs. 2018-01-14 10:03:57 +01:00
Darko Poljak 9703e0f08e Save output streams.
Implementation is 99% based on Steven's initial implementation.
2018-01-09 09:31:40 +01:00
Darko Poljak 13a13eee03
Merge pull request #612 from devinsolutions/master
Add cdist.egg-info/ to gitignore
2018-01-06 20:38:31 +01:00
lubo 9779c8c0f8 Add cdist.egg-info/ to gitignore
When installing the package in editable mode, cdist.egg-info/ is created
and is necessary for editable mode to work properly.
2018-01-06 17:19:27 +01:00
Darko Poljak ec9ce90b8b ++changelog 2018-01-06 08:42:52 +01:00
Darko Poljak 64f2fed62b
Merge pull request #611 from ungleich/AnotherKamila-patch-1
__daemontools fixes
2018-01-06 08:43:41 +01:00
kamila 00f524773e
__daemontools fixes
make __daemontools more robust and clean up the --install-init-script confusion
2018-01-05 22:04:13 +01:00
Darko Poljak f278a1e31f ++changelog 2018-01-03 21:02:37 +01:00
Darko Poljak 8e182844e4
Merge pull request #610 from michal-hanu-la/master
Fix gencode-remote for __package_pkgng_freebsd
2018-01-03 21:03:24 +01:00
Michal Hanula c895be381f When installing packages on freebsd, redirect stdout and stderr to /dev/null instead of closing them.
Some pre/post-install scripts rely on them being open.

(It would be bette to leave them open and show the output, but I didn't
want to change the behaviour)
2018-01-02 18:11:37 +01:00
Darko Poljak b1d7da4258 ++changelog 2017-12-29 17:10:23 +01:00
kamila a657af64a1 __letsencrypt_cert: add nonparallel and make admin-email required (#609) 2017-12-29 17:10:16 +01:00
uqam-fob fc8dded8e9 __line: Support regex beginning with an hyphen (fixes #607) (#608)
If `regex` begins with an hyphen, `grep` treats it as an option
and treats `file` as the regular expression. This leads to `grep`
trying to read from the standard input and making it wait infinitely.

This patch adds the missing argument breaker `--` and allows
`regex` to begin with an hyphen (provided it is called correctly).
2017-12-29 17:09:06 +01:00
lubo 3397bcbf9b __systemd_unit improvements (#606)
* __systemd_unit: Move systemctl detection to manifest

* __systemd_unit: Restart the unit if inactive

Until now, the --restart parameter caused the unit to be restarted
only when the unit file has changed. This commit modifies --restart
behavior so that the unit is also restarted when the unit is inactive.

* __systemd_unit: Do not create unit file when source is empty
2017-12-29 17:06:48 +01:00
Darko Poljak b4e98d4ab4 ++changelog 2017-12-12 08:50:25 +01:00
lubo 457233f968 __sysctl: Add support for CoreOS (#605) 2017-12-12 08:50:48 +01:00
Steven Armstrong b722843f01 changelog++
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-12-12 00:18:49 +01:00
Steven Armstrong 71b858e467 use parameter defaults for chroot; re-export cdist log level to nested cdist run
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-12-12 00:15:54 +01:00
Darko Poljak eb8922ebcd Remove redundant log.error line. 2017-11-20 08:02:25 +01:00
kamila be7a99210b add --minute to __cron (#603)
We don't want this to run _every_ minute (default for `--minute` is `*`).
2017-11-19 13:31:44 +01:00
Darko Poljak 7c8f1e0f57 changelog++ 2017-11-15 07:32:35 +01:00
uqam-fob 3b6a471119 explorer/memory: Support OpenBSD (#602)
Adds support to detect the amount of memory available on OpenBSD
systems.
2017-11-15 07:31:17 +01:00
Darko Poljak 0bf6af6d22
Skip empty parameter. Fixes #599. (#600) 2017-11-15 07:30:35 +01:00
Darko Poljak 9e7b1c4c06 Release 4.7.3 2017-11-10 21:19:27 +01:00
Darko Poljak 808851d63b changelog++ 2017-11-10 12:22:05 +01:00
lubo aec63d42f1 __config_file: Fix onchange command not being executed (#596)
When a config file state changes from present to absent, onchange
command was not being run.

Fixes #595.
2017-11-10 12:22:38 +01:00
Darko Poljak 4fc72908d8 changelog++ 2017-11-09 08:20:40 +01:00
Darko Poljak 4f5dddd9d6
Fix for __line containing single quotes: #154. (#594) 2017-11-09 08:20:33 +01:00
Darko Poljak d7120d352c Update changelog. 2017-11-08 07:51:11 +01:00
Darko Poljak 3918ad897a changelog++ 2017-11-07 13:30:04 +01:00
_moep_ 4cdc4ea42c update type for Debian Stretch (#593) 2017-11-07 13:26:44 +01:00
lubo b18327c520 Add __systemd_unit type (#589) 2017-11-07 13:25:37 +01:00
Darko Poljak a8c41bfe44 Change warning message for invalid type. 2017-11-02 19:56:27 +01:00
Darko Poljak 782e662a13 Remove invalid type link from runtime conf dir at proper time. 2017-11-02 17:54:14 +01:00
Darko Poljak c14f3b68f4 Warn about invalid type and continue instead of error. 2017-11-02 17:44:47 +01:00
Darko Poljak e6c5563a16 NoSuchTypeError -> InvalidTypeError 2017-11-02 13:57:36 +01:00
Darko Poljak 5e087fd280 changelog++ 2017-11-01 08:57:04 +01:00
kamila 4799e43516 new type: __letsencrypt_cert (#591) 2017-11-01 08:56:12 +01:00
Darko Poljak 1ed43c345b changelog++ 2017-10-31 07:56:45 +01:00
tom 5eb478da95 Add messaging to __ssh_authorized_key. (#590) 2017-10-31 07:56:25 +01:00
Darko Poljak f6745c0eda changelog++ 2017-10-29 18:33:24 +01:00
Dominique Roux 2cd006de79 F/ccollect create destination (#548) 2017-10-29 17:23:35 +01:00
Darko Poljak f767ec04ec Release 4.7.2 2017-10-22 16:17:57 +02:00
Darko Poljak d68ab24fe3 changelog++ 2017-10-20 19:21:18 +02:00
kamila da8f6efafc fix explorer/os for devuan ascii (#588) 2017-10-20 18:16:06 +02:00
Darko Poljak a4be44b313 changelog++ 2017-10-19 19:58:49 +02:00
lubo 36302f7541 Add support for CoreOS to __timezone type (#587) 2017-10-19 19:58:34 +02:00
lubo 5c4cda589c Add support for CoreOS to __hostname type (#586) 2017-10-19 19:58:25 +02:00
Darko Poljak 9fed32e373 Release 4.7.1 2017-10-01 11:12:24 +02:00
Darko Poljak c5f47a017f changelog++ 2017-09-29 14:49:31 +02:00
tom d1c3e2420f Add messaging to __process 2017-09-29 14:48:51 +02:00
Darko Poljak 07581e7231 changelog++ 2017-09-29 14:47:32 +02:00
Ander Punnar 8b78001c9e fix running scripts with execute bit (#583) 2017-09-29 14:44:44 +02:00
Darko Poljak 3198d8e76c changelog++ 2017-09-27 12:20:10 +02:00
tom 7ee56d099f resolved #444 add messaging to __line-type (#580)
#444 Add messaging to __line-type
2017-09-27 12:19:07 +02:00
Darko Poljak e5881301ad changelog++ 2017-09-27 09:16:05 +02:00
tom 6bd73237cf Bug/dotman docs fix (#581)
* fix documentation for building custom man-pages from non-standard path
2017-09-27 09:14:23 +02:00
Darko Poljak a88710a36d Release 4.7.0 2017-09-22 21:22:41 +02:00
Darko Poljak 966bf30bee Fix \n thing. 2017-09-20 21:53:05 +02:00
Darko Poljak ea58cbd171 Better format command error output. 2017-09-20 21:19:19 +02:00
Darko Poljak 0c4826ee97 Fix typo in conf_dir description: comma separated -> os.pathsep separated. 2017-09-19 13:52:49 +02:00
Darko Poljak 21328337ae Add missing dot. 2017-09-19 12:07:15 +02:00
Darko Poljak 764ea49904 Log more data. 2017-09-17 20:30:07 +02:00
Darko Poljak 8883196efb Bugfix for: __ssh_authorized_keys overwrites existing keys #577 (#579)
* Fix a bug where invalid key removes all file entries.

* __ssh_authorized_key: add key validation.
2017-09-17 08:13:05 +02:00
Darko Poljak ac04edc233 Change path removal suitable for integration and normal run. 2017-09-14 09:53:16 +02:00
Darko Poljak 47d72fb83a Create control path only if needed. 2017-09-14 09:27:27 +02:00
Darko Poljak 08bc38dd0f Log ERROR to stderr and rest to stdout. (#576) 2017-09-13 13:06:06 +02:00
Darko Poljak f2614469c5 configuration: converter() -> get_converter() 2017-09-11 22:36:45 +02:00
Darko Poljak f0dc21ec0c __cdist_log_level=<log level int value>; __cdist_log_level_name=<log level name> (#574) 2017-09-11 09:06:47 +02:00
Darko Poljak 1ae5b1732e Fix missing dirs cleanup. 2017-09-10 23:08:21 +02:00
Darko Poljak 519eb60664 Fix exec/{local,remote} tests. Add exec/local test to make test. 2017-09-10 22:05:05 +02:00
Darko Poljak 3f6a300567 changelog++ 2017-09-09 21:21:55 +02:00
kamila 1f00a35795 fixes + go version bump in __prometheus_exporter (#573) 2017-09-09 21:21:15 +02:00
Darko Poljak 3454da076f Add -l/--log-level option. Honor __cdist_loglevel env var. (#572)
Add -l/--log-level option, __cdist_loglevel -> __cdist_log_level; honor __cdist_log_level env var
2017-09-09 21:17:29 +02:00
Darko Poljak f08ac264a0 pep8 2017-09-07 16:37:49 +02:00
Darko Poljak 57f15f9cce Make __cdist_loglevel value more expressive. (#571) 2017-09-07 16:36:23 +02:00
Darko Poljak 2e4c0d3465 Improve dry run logging. 2017-09-07 16:33:22 +02:00
Darko Poljak 97f6517715 Configuration fixes. 2017-09-07 16:13:46 +02:00
Darko Poljak 28d3466e9d Fix logging dry run line. 2017-09-07 12:32:04 +02:00
Darko Poljak cb38354df3 Run cleanup commands in quiet mode for DEBUG, TRACE. 2017-09-07 12:10:17 +02:00
Darko Poljak e0a4fc4ea7 verbose -> info 2017-09-07 11:58:19 +02:00
Darko Poljak dd48c82656 Log 'Processing' line even if dry run. 2017-09-07 11:30:02 +02:00
Darko Poljak 481b987c7e changelog++ 2017-09-07 10:11:06 +02:00
Darko Poljak 7141e67d51 Merge pull request #570 from darko-poljak/debug-to-cdist_loglevel
__debug -> __cdist_loglevel
2017-09-07 10:09:57 +02:00
Darko Poljak 8360ca2445 changelog++ 2017-09-06 22:02:02 +02:00
Darko Poljak 92488e83d6 __debug -> __cdist_loglevel 2017-09-06 21:59:57 +02:00
Darko Poljak 97332833bc Document __cdist_loglevel values. 2017-09-06 21:47:53 +02:00
Darko Poljak b0cbd8f5bd changelog++ 2017-09-04 20:27:40 +02:00
Darko Poljak c69e8a58b9 Merge pull request #569 from uqam-fob/fix-pkg-openbsd-pkg_version
__package_pkg_openbsd: fix pkg_version explorer
2017-09-04 20:26:56 +02:00
Philippe Grégoire b2fb38d1f4
__package_pkg_openbsd: fix pkg_version explorer
The pkg_version explorer will fail to properly detect if a package
is installed when a package's name is present in the description of
a package (as returned by pkg_info).

Currently, trying to install libtool fails due to incorrect parsing:

    $ pkg_info | grep libtool
    libltdl-2.4.2p1     GNU libtool system independent dlopen wrapper

Additionally, trying to install nagios results in the following output:

    $ pkg_info | grep nagios
    nagios-4.0.8p3-chroot host and service monitor
    nagios-web-4.0.8p2-chroot cgis and webpages for nagios

This commit fixes detection by properly parsing pkg_info's output.
Specifically, descriptions are ignored and package names are properly
extracted.
2017-09-04 13:07:49 -04:00
Darko Poljak 4f078b52b1 changelog++ 2017-09-03 23:28:49 +02:00
uqam-fob 0dd5411216 __package_pkg_openbsd: fix use of --name (#568)
Fixes the improper use of the file holding the value of the 'name'
option.
2017-09-03 23:27:27 +02:00
Darko Poljak fb3cd98b54 Minor fixes to man page. 2017-09-02 21:38:13 +02:00
Darko Poljak 12a5aa39d4 changelog++ 2017-09-02 21:34:50 +02:00
kamila b8a1ad0ebd Improve __daemontools on FreeBSD (#567)
Improve __daemontools on freebsd
2017-09-02 21:25:17 +02:00
kamila a9f338b6a5 new type: __prometheus_exporter (#566) 2017-09-02 21:23:48 +02:00
kamila 7564038f04 fixes to __prometheus_{server,alertmanager} (#565) 2017-09-02 21:22:33 +02:00
Darko Poljak 0043b3f4b0 Add cdist config file skeleton. 2017-09-02 08:40:43 +02:00
Darko Poljak 99133219bc Add another test case. 2017-09-02 08:40:23 +02:00
Darko Poljak 4f3e417359 changelog++ 2017-09-01 20:58:14 +02:00
Sven Wick ed55d01b35 Update machine_type (#564)
detect kvm on proxmox
2017-09-01 20:56:48 +02:00
Darko Poljak 5213f343c0 pep8 2017-09-01 14:11:58 +02:00
Darko Poljak 759a917da9 changelog++ 2017-09-01 14:10:15 +02:00
Darko Poljak 136f2ecd87 Add helpers for cdist config/install integration. (#551)
Implement simple integration API.
2017-09-01 14:08:50 +02:00
Darko Poljak feb221c5df Improve configuration docs. 2017-09-01 10:40:01 +02:00
Darko Poljak 4af3c0c6d5 Fix empty conf_dir configuration value. 2017-08-30 23:57:47 +02:00
Darko Poljak 704e918421 changelog++ 2017-08-30 23:12:38 +02:00
Darko Poljak 2f10353156 Fix configuration bugs. 2017-08-30 23:11:10 +02:00
Darko Poljak bdee7273af Configfile (#559)
Add cdist configuration/config file support.
2017-08-30 23:02:17 +02:00
Darko Poljak 4b2f23db62 Release 4.6.1 2017-08-30 22:41:48 +02:00
Darko Poljak eae399b025 Fix removing ssh key that is last one in the file. 2017-08-30 09:27:06 +02:00
Steven Armstrong de9254d4c0 changelog++
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-08-29 22:50:57 +02:00
Steven Armstrong 3c3b29f710 allow hostnamectl to fail silently
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-08-29 22:50:47 +02:00
Steven Armstrong 0114001627 remember default __remote_{copy,exec} so we can use it ourself in custom __remote_{copy,exec} scripts
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-08-29 22:31:30 +02:00
Steven Armstrong 04c8415060 use __remote_{exec,copy} instead of plain ssh/scp in remote exec scripts
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-08-29 21:49:47 +02:00
Darko Poljak e9f8cb6f49 Install using distutils from cloned repo. 2017-08-28 18:01:00 +02:00
Darko Poljak 74f0664333 Update changelog. 2017-08-27 15:25:14 +02:00
Darko Poljak 4f91b402f4 Merge pull request #563 from uqam-fob/user-groups-openbsd
__user_groups: Support OpenBSD
2017-08-27 15:24:02 +02:00
Philippe Grégoire 0e3c7545cc
__user_groups: Support OpenBSD
OpenBSD's usermod(8) interface is similary to NetBSD's.
This commit makes __user_groups support it explicitly.

https://man.openbsd.org/usermod.8
http://netbsd.gw.com/cgi-bin/man-cgi?usermod++NetBSD-current
2017-08-27 08:58:16 -04:00
Darko Poljak f4c4ba7267 Update changelog. 2017-08-27 14:23:56 +02:00
Darko Poljak 6751349d21 Merge pull request #561 from uqam-fob/pkg-openbsd-installurl
__package_pkg_openbsd: support using /etc/installurl
2017-08-27 14:23:11 +02:00
Darko Poljak 4aeba7d7a7 Merge pull request #562 from uqam-fob/pkg-openbsd-empty-flavor
__package_pkg_openbsd: support the empty flavor
2017-08-27 14:20:48 +02:00
Philippe Grégoire d4f34a3f40
__package_pkg_openbsd: support the empty flavor
Adds support for specifying an empty flavor by passing --flavor "".
2017-08-26 10:59:04 -04:00
Philippe Grégoire 56adfd4dee
__package_pkg_openbsd: support using /etc/installurl
In 6.1, OpenBSD introduced installurl(5), which contains
the URL the sets where installed from during install or upgrade.
The content of this file is used by pkg_add(1) if PKG_PATH is
not defined.

This commit changes the behavior of __package_pkg_openbsd to omit
setting PKG_PATH to a hard-coded value if --pkg_path is not provided.
This, in turn, makes pkg_add(1) use installurl(5).
2017-08-26 09:42:36 -04:00
Darko Poljak 7584e3c465 Update changelog 2017-08-25 19:15:34 +02:00
Darko Poljak 518903af1b Merge pull request #560 from mverboom/master
Explorer pipes output of apt-key list, which always generates:
2017-08-25 19:13:10 +02:00
Mark Verboom 6f04c9bfce Explorer pipes output of apt-key list, which always generates:
Warning: apt-key output should not be parsed (stdout is not a terminal)
on stderr. Redirect stderr of apt-key to /dev/null to prevent output in
cdist run.
2017-08-25 14:31:32 +02:00
Darko Poljak 9f2a2169fa Update changelog 2017-08-25 11:34:43 +02:00
Darko Poljak c6d00019a8 Merge pull request #556 from uqam-fob/explorer-init-pgrep
explorer/init/Linux: use pgrep instead of ps
2017-08-25 11:31:42 +02:00
Darko Poljak 11a974aeff Merge pull request #557 from uqam-fob/type-user-explorers
__user: explore with /etc files
2017-08-25 11:30:32 +02:00
Darko Poljak ebdab4c43a Release 4.6.0 2017-08-25 10:51:09 +02:00
Darko Poljak d9cf1590b8 Fix spelling. 2017-08-25 10:50:11 +02:00
Steven Armstrong 4851c0517f inherit log level from cdist install during nested cdist config
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-08-24 14:43:26 +02:00
Darko Poljak f368539447 Some pylint cleaning. 2017-08-22 10:58:30 +02:00
Philippe Grégoire 31e5c97c55
use command(1) to get executable's path 2017-08-21 10:51:55 -04:00
Philippe Grégoire 997fdd8ac4
fix typo in group entry extraction 2017-08-20 15:13:01 -04:00
Darko Poljak 722389f838 Update changelog 2017-08-20 20:39:49 +02:00
Darko Poljak d3b4a5b2c1 Merge pull request #555 from uqam-fob/explorer-os-etc-os-release
explorer/os: get ID from /etc/os-release
2017-08-20 20:33:51 +02:00
Philippe Grégoire a915baa73b
__user: explore with /etc files
getent(1) is a utility available where Name Service Switch (NSS)
is available. Many modern operating systems support it, but that
may not be the case of all (e.g. embedded systems).

This commit modifies the __user type explorers to check the
traditional files instead of relying solely on the availability
of getent(1).

- Makes the group explorer use /etc/group
- Makes the passwd explorer use /etc/passwd
- Makes the shadow explorer use /etc/shadow

Implementation note

"getent shadow" does not support querying an entry using a uid
since it does not store that information. Since the shadow explorer
uses __object_id, the passwd explorer does not check if __object_id
matches an entry by uid. This behavior ensures consistent, transparent
behavior of the type. The group explorer, on the other hand, handles
group names and uids; like always.
2017-08-20 12:10:54 -04:00
Philippe Grégoire ebe0c0d66d
make sure we continue on errors 2017-08-20 11:12:30 -04:00
Philippe Grégoire 5646a66f6c
explorer/init/Linux: replace ps by pgrep
BusyBox's version of ps does not support the -o option.
On Linux systems, use pgrep -P0 -l to get the name of
pid 1.
2017-08-20 11:06:07 -04:00
Philippe Grégoire 2b9bf3de24
replace grep+sed by awk 2017-08-19 18:19:17 -04:00
Philippe Grégoire e88e9c357f
fix formatting 2017-08-19 16:49:19 -04:00
Philippe Grégoire 69c6de9f9c
explorer/os: get ID from /etc/os-release
/etc/os-release was introduced by systemd[1] and is now
more and more common; even on systems without systemd (e.g. lede).
In addition to detecting the OS based on specific attributes,
this file provides the ID marker to describe the OS.

This commit adds support for OS detection via /etc/os-release.
According to [2], it is already lowercase.

[1] http://0pointer.de/blog/projects/os-release
[2] https://www.freedesktop.org/software/systemd/man/os-release.html
2017-08-19 16:41:50 -04:00
Darko Poljak ceb97fd0ee Fix for mistake in 982bb286f4. 2017-08-19 19:12:30 +02:00
Darko Poljak 8a23227ec9 Update changelog 2017-08-17 12:28:46 +02:00
Darko Poljak 982bb286f4 Cleanup options' help and cdist man page. 2017-08-17 08:24:58 +02:00
Darko Poljak eb01c5bb85 Merge pull request #554 from uqam-fob/fix-remote-cmds
Fix remote cmds cleanup
2017-08-14 22:29:28 +02:00
Philippe Gregoire 61b52ac806 Set default remote_cmds_cleanup_pattern
Fixes an exception when --remote-copy and --remote-exec are used.
2017-08-14 16:13:57 -04:00
Philippe Gregoire 7b0b3d9415 Fix remote cmds cleanup
When --remote-copy and --remote-exec are provided,
args.remote_cmds_cleanup_pattern is not set.

This patches fixes the evaluation of args.remote_cmds_cleanup_pattern
and prevents cdist from throwing an exception when --remote-copy
and --remote-exec are used.
2017-08-14 14:25:19 -04:00
Darko Poljak 7aa7a8db6d Update changelog: add file locking for -j parallel execution 2017-08-13 12:30:07 +02:00
Darko Poljak f96829f657 Merge pull request #553 from darko-poljak/jobs-locking
Add file locking for -j parallel execution
2017-08-13 12:28:22 +02:00
Darko Poljak b6467e716e Merge remote-tracking branch 'ungleich/master' into jobs-locking 2017-08-13 12:27:57 +02:00
Darko Poljak 75fe3272b3 Add file locking for -j parallel execution. 2017-08-13 12:26:20 +02:00
Darko Poljak 87fe52ea61 Default logging level is WARNING. 2017-08-12 23:02:31 +02:00
Darko Poljak 7361353497 Merge pull request #552 from darko-poljak/emulator-logging
Respect cdist log level in emulator.
2017-08-12 21:46:57 +02:00
Darko Poljak 314a931b84 Respect cdist log level in emulator. 2017-08-12 21:40:23 +02:00
Darko Poljak 1fa37566cb Document config/install -R option. 2017-08-11 14:10:29 +02:00
Darko Poljak 59782ad64e Fix unit test. 2017-08-11 01:20:45 +02:00
Darko Poljak d5d7f0dd37 Update changelog: Fix ssh connection multiplexing race condition 2017-08-10 23:43:38 +02:00
Darko Poljak 2b0e8160cf Merge pull request #543 from darko-poljak/ssh-mux-sigpipe
Fix ssh connection multiplexing race condition #542
2017-08-10 23:42:16 +02:00
Darko Poljak be86a89f30 Update changelog 2017-08-10 22:00:42 +02:00
Darko Poljak d17f11f80d Merge pull request #550 from ungleich/archiving
Add archiving support
2017-08-10 21:49:09 +02:00
Darko Poljak 8bb70055f4 Merge branch 'master' into archiving 2017-08-10 19:11:35 +02:00
Darko Poljak ca1cc0f64a object_id = '/' is invalid 2017-08-10 19:08:44 +02:00
Darko Poljak 68cb13881f Add archiving support. 2017-08-09 16:56:02 +02:00
Nico Schottelius 260303dd14 Fix gpasswd call in __user_groups: order incorrect
From the manpage:

       -a, --add user
           Add the user to the named group.

       -d, --delete user
           Remove the user from the named group.
2017-08-03 15:11:35 +02:00
Darko Poljak 1b0f560608 Add missing args to method call. 2017-07-27 09:51:23 +02:00
Darko Poljak 0a85d913cc Optimize dir transfer. 2017-07-27 09:49:06 +02:00
Darko Poljak 0d734c872d Fix log var assignment. 2017-07-27 09:36:00 +02:00
Darko Poljak 3db987b913 Merge pull request #549 from 4nd3r/__timezone
__timezone: always exit 0
2017-07-27 09:01:15 +02:00
Ander Punnar b7b1101f11 always exit 0 2017-07-27 01:28:26 +03:00
Darko Poljak 23fbabe303 Further improve parallel execution. 2017-07-26 17:39:07 +02:00
Darko Poljak d1a044cc23 multiprocessing.Pool -> concurrent.futures.ProcessPoolExecutor 2017-07-26 12:01:19 +02:00
Darko Poljak 7c7a98d083 pep8 2017-07-25 12:43:54 +02:00
Darko Poljak d30b1a2f54 Update changelog 2017-07-25 12:41:58 +02:00
Darko Poljak 32838a096d Refine inventory logging to adhere new cdist logging. 2017-07-25 12:40:12 +02:00
Nico Schottelius 55f4528d1e Merge pull request #547 from darko-poljak/p-host_max
Add -p HOST_MAX argument.
2017-07-25 12:35:06 +02:00
Darko Poljak 0af64c01bf Add -p HOST_MAX argument. 2017-07-25 11:12:18 +02:00
Darko Poljak bb2cc68169 Fix broken text 2017-07-24 19:13:40 +02:00
Darko Poljak 4a54d1420e Remove unwanted fixme 2017-07-24 19:12:43 +02:00
Darko Poljak 9b5220a29c Merge pull request #546 from greendeath/master
Updated to docker-compose version 1.14
2017-07-21 21:49:02 +02:00
Dominique Roux 5ccfec9c18 Updated to docker-compose version 1.14 2017-07-21 21:18:16 +02:00
Darko Poljak 060ddc2a17 Merge remote-tracking branch 'ungleich/master' into ssh-mux-sigpipe 2017-07-21 17:23:07 +02:00
Darko Poljak 493150650c Update changelog 2017-07-21 17:21:08 +02:00
Darko Poljak 6b9ec1d3ce Merge pull request #545 from 4nd3r/__timezone
__timezone: check current timezone before doing anything
2017-07-21 17:19:19 +02:00
ander 6bfe02094d year is 2017 2017-07-21 10:23:05 +03:00
ander 2c56622eeb check file first 2017-07-21 10:22:54 +03:00
ander c706b9eefb check current timezone before doing anything 2017-07-21 10:19:02 +03:00
Darko Poljak e2a1519332 Merge inventory from beta branch. 2017-07-20 22:04:44 +02:00
Darko Poljak 2b6177c9f7 Fix rst. 2017-07-20 20:48:07 +02:00
Darko Poljak b705893f38 Add missing -q in cdist man page. 2017-07-20 20:12:08 +02:00
Darko Poljak 6a256213f1 Add missing -r option argument in cdist man page. 2017-07-20 20:08:15 +02:00
Darko Poljak 4a72592ae5 Document nonparallel type flag. 2017-07-20 18:45:44 +02:00
Darko Poljak a20b7167cd pep8 2017-07-19 07:58:14 +02:00
Darko Poljak 01d7f63fcb Merge remote-tracking branch 'ungleich/master' into ssh-mux-sigpipe 2017-07-19 07:55:19 +02:00
Darko Poljak 2beb55be54 Remove FIXME comment due to fix appliance 2017-07-19 07:52:57 +02:00
Darko Poljak 660d01ce0c Update changelog 2017-07-19 07:49:06 +02:00
Darko Poljak 126a1812a5 Fix parallel object prepare and run steps. Add nonparallel type marker. 2017-07-15 22:18:20 +02:00
Darko Poljak 31899b2263 Add missing shebangs. 2017-07-15 22:16:25 +02:00
Darko Poljak 4e27c863ef Update changelog 2017-07-14 14:50:39 +02:00
Darko Poljak b50e605441 Merge pull request #544 from darko-poljak/ignore-dot-files-under-conf-types
Ignore directory entries that begin with dot('.').
2017-07-14 14:49:20 +02:00
Steven Armstrong 1fe12f81a9 Merge branch 'feature/install' 2017-07-07 02:12:38 +02:00
Steven Armstrong d9a358bdf3 add forgotten symlink
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-07-07 02:10:06 +02:00
Darko Poljak 1f12faecca Update changelog 2017-07-06 22:58:58 +02:00
Darko Poljak 6b3b5c735e Merge pull request #541 from 4nd3r/__file
fix __file
2017-07-06 22:56:54 +02:00
Darko Poljak f9b632eebb Improve listdir. 2017-07-06 17:22:25 +02:00
Darko Poljak 80c3dd7572 Ignore directory entries that begin with dot('.'). 2017-07-06 13:30:57 +02:00
Darko Poljak 9c914308f6 Fix ssh connection multiplexing race condition #542
Increase ControlPersist to 2h.
After host run run ssh mux master exit command.
If custom remote exec/copy is specified then do nothing.
2017-07-06 12:43:17 +02:00
Darko Poljak 93ab184e3a Update changelog 2017-07-06 07:34:08 +02:00
Steven Armstrong 9fe2420547 also log start of config run
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-07-05 16:40:02 +02:00
Steven Armstrong a1d73f7281 log changing object as Processing instead of Updating
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-07-04 23:49:43 +02:00
Steven Armstrong f6e1174adb start moving info log messages to verbose
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-07-04 23:49:43 +02:00
Darko Poljak cef1d215b2 Finally remove deprecated -d/--debug option. 2017-07-04 23:49:43 +02:00
Darko Poljak 015861e63b pep8 2017-07-04 23:49:43 +02:00
Darko Poljak a37d286d67 Suppress subprocess script output in quiet mode. 2017-07-04 23:49:43 +02:00
Darko Poljak a722f3c634 3rd iteration of logging cleanup. 2017-07-04 23:49:43 +02:00
Darko Poljak 127c05a882 2nd iteration of logging cleanup. 2017-07-04 23:49:43 +02:00
Darko Poljak 248656b81f First iteration of logging cleanup. 2017-07-04 23:49:43 +02:00
Darko Poljak c63ab44c9c Define better warning facility. 2017-07-04 23:49:43 +02:00
Steven Armstrong 01ca5910ec increase ControlPersist to 30 to workaround #542
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-07-04 23:49:27 +02:00
ander 6a6716035b one space too much 2017-07-04 19:25:08 +03:00
ander 0e8302c204 if no --source, then create only if there's no file 2017-07-04 19:23:51 +03:00
Darko Poljak 1582661da9 Merge pull request #539 from 4nd3r/__apt_mark
__apt_mark tweaks
2017-07-03 21:26:25 +02:00
ander 49f9760eac +x 2017-07-03 15:18:27 +03:00
ander df437851f0 add -e 2017-07-02 12:19:40 +03:00
ander e4d9f78349 grep fixed string 2017-07-02 12:17:07 +03:00
ander c052e507eb shellcheck __apt_mark 2017-07-02 12:17:07 +03:00
Darko Poljak 138705e3dc Code improvements. 2017-07-02 00:32:43 +02:00
Darko Poljak 35d2628941 Update changelog 2017-07-02 00:16:00 +02:00
Darko Poljak a6d2407b73 Add -r option to completions. 2017-07-02 00:07:13 +02:00
Darko Poljak a8dcba53a4 Add missing -r option. 2017-07-02 00:07:02 +02:00
Darko Poljak 2a9bd77550 Merge custom cache path pattern from beta branch. 2017-07-01 23:59:51 +02:00
Darko Poljak b7873abf07 Improve english based on Mesar Hameed's contribution. 2017-07-01 09:28:41 +02:00
Darko Poljak 7afa1057cd Update changelog 2017-07-01 09:21:51 +02:00
Darko Poljak b61d82debb Merge pull request #538 from mhameed/master
Documentation fixes
2017-07-01 09:19:24 +02:00
mhameed b42a6d7431 Improvements to the english. 2017-06-30 16:45:14 +01:00
mhameed adfec76bce Fix typos. 2017-06-30 16:01:07 +01:00
Darko Poljak 19b07dbbb2 Update changelog. 2017-06-28 23:16:28 +02:00
Darko Poljak 7dbe375530 Merge pull request #537 from darko-poljak/any-lang-type-support
Any lang type support
2017-06-28 23:13:01 +02:00
Darko Poljak 9aa4465718 If script is executable then execute it, if not then assume it is a shell script. 2017-06-28 13:57:48 +02:00
Darko Poljak 62378dc8b9 Change shebang to #!/bin/sh -e 2017-06-28 13:19:32 +02:00
Darko Poljak fc97381c6e Add missing shebang. 2017-06-28 12:54:10 +02:00
Darko Poljak 9312bcb6b0 chmod +x *manifest *gencode-* 2017-06-28 12:52:10 +02:00
Darko Poljak e894d67ddf Update changelog. 2017-06-27 18:22:45 +02:00
Darko Poljak f53615f583 Merge pull request #534 from asteven/feature/remote-out-dir
need a way to set remote.base_path from the command line
2017-06-27 17:56:56 +02:00
Steven Armstrong f968d90475 docs++
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 17:49:58 +02:00
Steven Armstrong 9cee230ef5 alphabetical order ftw
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 17:47:30 +02:00
Nico Schottelius 0ef62e1901 Merge pull request #533 from asteven/feature/install
Feature/install
2017-06-27 14:05:43 +02:00
Steven Armstrong 93ccf925cd need a way to set remote.base_path from the command line
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:36:26 +02:00
Steven Armstrong 574f36f593 fix order of arguments
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:33:34 +02:00
Steven Armstrong b8fcd30a37 support for bind mounts
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:33:34 +02:00
Steven Armstrong c740c96890 set log level for cdist config based on env vars
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:33:34 +02:00
Steven Armstrong 1627b58cfc for bind mount also have to prefix device
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:33:34 +02:00
Steven Armstrong e74d2be2d4 add support for bind mounting
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:33:34 +02:00
Steven Armstrong efd9351500 document new parameters: device, minor
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:33:34 +02:00
Steven Armstrong 86a61bbcff need to pass a known suffix from outside
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:33:34 +02:00
Steven Armstrong 058e4d757b disabel debug log
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:33:34 +02:00
Steven Armstrong a495a20d95 uefi support
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:33:34 +02:00
Steven Armstrong d34843347a add __install_directory type
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:33:34 +02:00
Steven Armstrong f9d371c6e3 use sysrq to reboot
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:33:34 +02:00
Steven Armstrong 42e197a5ba use the force when creating swap
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:33:34 +02:00
Steven Armstrong 9ee0de7c8b make uefi boot work
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:32:25 +02:00
Steven Armstrong 2ce00f3357 fix syntax error
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:27:40 +02:00
Steven Armstrong 8305477e01 fix typo
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:27:40 +02:00
Steven Armstrong ce82e32c59 handle resolv.conf
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:27:40 +02:00
Steven Armstrong 4547d2efa1 properly escape single quotes
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:27:40 +02:00
Steven Armstrong aea9747918 mount/umounting a chroot should not mess with resolv.conf at all
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:27:40 +02:00
Steven Armstrong 73cad9dee2 backcompat
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:27:40 +02:00
Steven Armstrong 1d42e4afcb bind mount /etc/resolv.conf instead of overwriting/removing
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:27:40 +02:00
Steven Armstrong c6e4888c84 support for centos7
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:27:40 +02:00
Steven Armstrong fd6258c90e unsure apt index is up2date
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:27:40 +02:00
Steven Armstrong d05f11b0b8 deal with that stinkin cdist marker thinggy
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:27:40 +02:00
Steven Armstrong 9ad203c744 deal with that stinkin cdist marker thinggy
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:27:40 +02:00
Steven Armstrong bb62787c7c deal with that stinkin cdist marker thinggy
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:27:40 +02:00
Steven Armstrong f97e6c42c7 no point generating grub.conf at this time, there is no kernel installed yet
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:27:40 +02:00
Steven Armstrong 5417471dff add support for centos
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:27:40 +02:00
Steven Armstrong 2bd48f1c8d make nuking mdadm/lvm actually work
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:27:40 +02:00
Steven Armstrong 49dfcf4885 first remove lvm, then mdadm
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:27:40 +02:00
Steven Armstrong c1141453fe fix quoting
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2017-06-27 10:27:40 +02:00
Darko Poljak 00a7f4af93 Separate functions for target host name and fqdn. 2017-06-23 20:03:28 +02:00
Darko Poljak 689cac5be5 Release 4.4.4 2017-06-16 12:50:10 +02:00
Darko Poljak 6d8763f721 Update changelog 2017-06-16 10:08:04 +02:00
Darko Poljak ad51d4e0f6 Merge pull request #532 from ungleich/prometheus-fixes
fix missing dependencies in __prometheus_*, __go_get
2017-06-16 10:04:58 +02:00
Nico Schottelius e7fa238b2a Fix mkfs.vfat support (no -q) 2017-06-16 05:30:40 +02:00
kamila 5d148a58d2 fix missing dependencies in __prometheus_*, __go_get 2017-06-15 11:13:39 +02:00
Darko Poljak e32f2110ab Document object prepare and object run parallelization. 2017-06-13 22:54:40 +02:00
Darko Poljak e774fc2b2a Merge pull request #507 from darko-poljak/the-good-the-bad-and-the-ugly
The good the bad and the ugly - object prepare/run parallelization
2017-06-13 22:45:09 +02:00
Darko Poljak e375bd464d Merge remote-tracking branch 'ungleich/master' into the-good-the-bad-and-the-ugly 2017-06-12 13:15:00 +02:00
Darko Poljak 8d2d538660 Fix typo. 2016-12-11 21:17:22 +01:00
Darko Poljak e5a6599ccb Create mp_pool_run helper function for running in parallel. 2016-12-08 21:48:59 +01:00
Darko Poljak 6ea1809a30 Merge remote-tracking branch 'ungleich/master' into the-good-the-bad-and-the-ugly 2016-12-08 20:08:30 +01:00
Darko Poljak ede5282d93 Merge remote-tracking branch 'ungleich/master' into the-good-the-bad-and-the-ugly 2016-12-08 20:06:59 +01:00
Darko Poljak 8776a2ee06 concurrent.futures -> multiprocessing 2016-12-08 17:36:57 +01:00
Darko Poljak e6b9fc90ba Add log messages. 2016-12-08 14:11:30 +01:00
Darko Poljak ca3a8ddf67 no clear() in python < 3.3; if only one then do it sequentially 2016-12-08 00:47:07 +01:00
Darko Poljak e79519afce Merge remote-tracking branch 'ungleich/master' into the-good-the-bad-and-the-ugly 2016-12-08 00:42:17 +01:00
Darko Poljak 1952d43073 Initial try for parallelization. 2016-12-07 19:06:51 +01:00
Darko Poljak 258a6c7f56 Merge branch 'the-good-the-bad-and-the-ugly-gunfight' into the-good-the-bad-and-the-ugly 2016-12-07 18:57:58 +01:00
Darko Poljak 6c1b215db8 Begin parallelizing object prepare and run. 2016-12-06 14:27:17 +01:00
714 changed files with 26214 additions and 3578 deletions

8
.gitattributes vendored Normal file
View File

@ -0,0 +1,8 @@
.gitignore export-ignore
.gitattributes export-ignore
.gitkeep export-ignore
docs/speeches export-ignore
docs/video export-ignore
docs/src/man7 export-ignore
bin/build-helper export-ignore
README-maintainers export-ignore

24
.gitignore vendored
View File

@ -1,5 +1,22 @@
# -vim
.*.swp
# Swap
[._]*.s[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]
# Session
Session.vim
# Temporary
.netrwhist
*~
*.tmp
# Auto-generated tag files
tags
# Persistent undo
[._]*.un~
# Ignore generated manpages
docs/src/.marker
@ -11,18 +28,23 @@ docs/src/cdist-reference.rst
# Ignore cdist cache for version control
/cache/
# Ignore inventory basedir
cdist/inventory/
# Python: cache, distutils, distribution in general
__pycache__/
*.pyc
MANIFEST
dist/
cdist/version.py
cdist.egg-info/
# sphinx build dirs, cache
_build/
docs/dist
# Ignore temp files used for signing
cdist-*.tar
cdist-*.tar.gz
cdist-*.tar.gz.asc

185
Makefile
View File

@ -18,31 +18,30 @@
#
#
helper=./bin/build-helper
.PHONY: help
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo "man build only man user documentation"
@echo "html build only html user documentation"
@echo "docs build both man and html user documentation"
@echo "dotman build man pages for types in your ~/.cdist directory"
@echo "speeches build speeches pdf files"
@echo "install install in the system site-packages directory"
@echo "install-user install in the user site-packages directory"
@echo "docs-clean clean documentation"
@echo "clean clean"
DOCS_SRC_DIR=docs/src
SPEECHDIR=docs/speeches
TYPEDIR=cdist/conf/type
WEBSRCDIR=docs/web
WEBDIR=$$HOME/vcs/www.nico.schottelius.org
WEBBLOG=$(WEBDIR)/blog
WEBBASE=$(WEBDIR)/software/cdist
WEBPAGE=$(WEBBASE).mdwn
CHANGELOG_VERSION=$(shell $(helper) changelog-version)
CHANGELOG_FILE=docs/changelog
PYTHON_VERSION=cdist/version.py
DOCS_SRC_DIR=./docs/src
SPEECHDIR=./docs/speeches
TYPEDIR=./cdist/conf/type
SPHINXM=make -C $(DOCS_SRC_DIR) man
SPHINXH=make -C $(DOCS_SRC_DIR) html
SPHINXC=make -C $(DOCS_SRC_DIR) clean
################################################################################
# Manpages
#
MAN1DSTDIR=$(DOCS_SRC_DIR)/man1
MAN7DSTDIR=$(DOCS_SRC_DIR)/man7
# Manpages #1: Types
@ -54,6 +53,7 @@ MANTYPES=$(subst /man.rst,.rst,$(MANTYPEPREFIX))
# Link manpage: do not create man.html but correct named file
$(MAN7DSTDIR)/cdist-type%.rst: $(TYPEDIR)/%/man.rst
mkdir -p $(MAN7DSTDIR)
ln -sf "../../../$^" $@
# Manpages #2: reference
@ -63,11 +63,16 @@ DOCSREFSH=$(DOCS_SRC_DIR)/cdist-reference.rst.sh
$(DOCSREF): $(DOCSREFSH)
$(DOCSREFSH)
version:
@[ -f "cdist/version.py" ] || { \
printf "Missing 'cdist/version.py', please generate it first.\n" && exit 1; \
}
# Manpages #3: generic part
man: $(MANTYPES) $(DOCSREF) $(PYTHON_VERSION)
man: version $(MANTYPES) $(DOCSREF)
$(SPHINXM)
html: $(MANTYPES) $(DOCSREF) $(PYTHON_VERSION)
html: version $(MANTYPES) $(DOCSREF)
$(SPHINXH)
docs: man html
@ -75,24 +80,6 @@ docs: man html
docs-clean:
$(SPHINXC)
# Manpages #5: release part
MANWEBDIR=$(WEBBASE)/man/$(CHANGELOG_VERSION)
HTMLBUILDDIR=docs/dist/html
docs-dist: html
rm -rf "${MANWEBDIR}"
mkdir -p "${MANWEBDIR}"
# mkdir -p "${MANWEBDIR}/man1" "${MANWEBDIR}/man7"
# cp ${MAN1DSTDIR}/*.html ${MAN1DSTDIR}/*.css ${MANWEBDIR}/man1
# cp ${MAN7DSTDIR}/*.html ${MAN7DSTDIR}/*.css ${MANWEBDIR}/man7
cp -R ${HTMLBUILDDIR}/* ${MANWEBDIR}
cd ${MANWEBDIR} && git add . && git commit -m "cdist manpages update: $(CHANGELOG_VERSION)" || true
man-latest-link: web-pub
# Fix ikiwiki, which does not like symlinks for pseudo security
ssh staticweb.ungleich.ch \
"cd /home/services/www/nico/nico.schottelius.org/www/software/cdist/man/ && rm -f latest && ln -sf "$(CHANGELOG_VERSION)" latest"
# Manpages: .cdist Types
DOT_CDIST_PATH=${HOME}/.cdist
DOTMAN7DSTDIR=$(MAN7DSTDIR)
@ -105,8 +92,7 @@ DOTMANTYPES=$(subst /man.rst,.rst,$(DOTMANTYPEPREFIX))
$(DOTMAN7DSTDIR)/cdist-type%.rst: $(DOTTYPEDIR)/%/man.rst
ln -sf "$^" $@
# Manpages #3: generic part
dotman: $(DOTMANTYPES)
dotman: version $(DOTMANTYPES)
$(SPHINXM)
################################################################################
@ -114,7 +100,6 @@ dotman: $(DOTMANTYPES)
#
SPEECHESOURCES=$(SPEECHDIR)/*.tex
SPEECHES=$(SPEECHESOURCES:.tex=.pdf)
SPEECHESWEBDIR=$(WEBBASE)/speeches
# Create speeches and ensure Toc is up-to-date
$(SPEECHDIR)/%.pdf: $(SPEECHDIR)/%.tex
@ -124,128 +109,26 @@ $(SPEECHDIR)/%.pdf: $(SPEECHDIR)/%.tex
speeches: $(SPEECHES)
speeches-dist: speeches
rm -rf "${SPEECHESWEBDIR}"
mkdir -p "${SPEECHESWEBDIR}"
cp ${SPEECHES} "${SPEECHESWEBDIR}"
cd ${SPEECHESWEBDIR} && git add . && git commit -m "cdist speeches updated" || true
################################################################################
# Website
# Misc
#
BLOGFILE=$(WEBBLOG)/cdist-$(CHANGELOG_VERSION)-released.mdwn
$(BLOGFILE): $(CHANGELOG_FILE)
$(helper) blog $(CHANGELOG_VERSION) $(BLOGFILE)
web-blog: $(BLOGFILE)
web-doc:
# Go to top level, because of cdist.mdwn
rsync -av "$(WEBSRCDIR)/" "${WEBBASE}/.."
cd "${WEBBASE}/.." && git add cdist* && git commit -m "cdist doc update" cdist* || true
web-dist: web-blog web-doc
web-pub: web-dist docs-dist speeches-dist
cd "${WEBDIR}" && make pub
web-release-all: man-latest-link
web-release-all-no-latest: web-pub
################################################################################
# Release: Mailinglist
#
ML_FILE=.lock-ml
# Only send mail once - lock until new changelog things happened
$(ML_FILE): $(CHANGELOG_FILE)
$(helper) ml-release $(CHANGELOG_VERSION)
touch $@
ml-release: $(ML_FILE)
################################################################################
# pypi
#
PYPI_FILE=.pypi-release
$(PYPI_FILE): man $(PYTHON_VERSION)
python3 setup.py sdist upload
touch $@
pypi-release: $(PYPI_FILE)
################################################################################
# archlinux
#
ARCHLINUX_FILE=.lock-archlinux
ARCHLINUXTAR=cdist-$(CHANGELOG_VERSION)-1.src.tar.gz
$(ARCHLINUXTAR): PKGBUILD
umask 022; mkaurball
PKGBUILD: PKGBUILD.in $(PYTHON_VERSION)
./PKGBUILD.in $(CHANGELOG_VERSION)
$(ARCHLINUX_FILE): $(ARCHLINUXTAR) $(PYTHON_VERSION)
burp -c system $(ARCHLINUXTAR)
touch $@
archlinux-release: $(ARCHLINUX_FILE)
################################################################################
# Release
#
$(PYTHON_VERSION): .git/refs/heads/master
$(helper) version
# Code that is better handled in a shell script
check-%:
$(helper) $@
release:
$(helper) $@
################################################################################
# Cleanup
#
clean:
clean: docs-clean
rm -f $(DOCS_SRC_DIR)/cdist-reference.rst
find "$(DOCS_SRC_DIR)" -mindepth 2 -type l \
| xargs rm -f
make -C $(DOCS_SRC_DIR) clean
find * -name __pycache__ | xargs rm -rf
# Archlinux
rm -f cdist-*.pkg.tar.xz cdist-*.tar.gz
rm -rf pkg/ src/
rm -f MANIFEST PKGBUILD
rm -rf dist/
# Signed release
rm -f cdist-*.tar.gz
rm -f cdist-*.tar.gz.asc
distclean: clean
rm -f cdist/version.py
# distutils
rm -rf ./build
################################################################################
# Misc
# install
#
# The pub is Nico's "push to all git remotes" way ("make pub")
pub:
git push --mirror
install:
python3 setup.py install
test:
$(helper) $@
pep8:
$(helper) $@
install-user:
python3 setup.py install --user

View File

@ -9,7 +9,7 @@ pkgver=$version
pkgrel=1
pkgdesc='A Usable Configuration Management System"'
arch=('any')
url='http://www.nico.schottelius.org/software/cdist/'
url='https://www.cdi.st/'
license=('GPL3')
depends=('python>=3.2.0')
source=("http://pypi.python.org/packages/source/c/cdist/cdist-\${pkgver}.tar.gz")

3
README
View File

@ -3,4 +3,5 @@ cdist
cdist is a usable configuration management system.
For the web documentation have a look at docs/web/.
For the web documentation have a look at https://www.cdi.st/
or at docs/src for reStructuredText manual.

4
README-maintainers Normal file
View File

@ -0,0 +1,4 @@
Maintainers should use ./bin/build-helper script.
Makefile is intended for end users. It can be used for non-maintaining
targets that can be run from pure source (without git repository).

View File

@ -1,6 +1,7 @@
#!/bin/sh
#
# 2011-2013 Nico Schottelius (nico-cdist at schottelius.org)
# 2016-2019 Darko Poljak (darko.poljak at gmail.com)
#
# This file is part of cdist.
#
@ -18,17 +19,66 @@
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
#
# This file contains the heavy lifting found usually in the Makefile
# This file contains the heavy lifting found usually in the Makefile.
#
basedir=${0%/*}/../
# Change to checkout directory
cd "$basedir"
usage() {
printf "usage: %s TARGET [TARGET-ARGS...]
Available targets:
changelog-changes
changelog-version
check-date
check-unittest
ml-release
archlinux-release
pypi-release
release-git-tag
sign-git-release
release
test
test-remote
pycodestyle
pep8
check-pycodestyle
shellcheck-global-explorers
shellcheck-type-explorers
shellcheck-manifests
shellcheck-local-gencodes
shellcheck-remote-gencodes
shellcheck-scripts
shellcheck-gencodes
shellcheck-types
shellcheck
shellcheck-type-files
shellcheck-with-files
shellcheck-build-helper
check-shellcheck
version-branch
version
target-version
clean
distclean\n" "$1"
}
version=$(git describe)
basename="${0##*/}"
if [ $# -lt 1 ]
then
usage "${basename}"
exit 1
fi
option=$1; shift
SHELLCHECKCMD="shellcheck -s sh -f gcc -x"
# Skip SC2154 for variables starting with __ since such variables are cdist
# environment variables.
SHELLCHECK_SKIP=': __.*is referenced but not assigned.*\[SC2154\]'
# Change to checkout directory
basedir="${0%/*}/../"
cd "$basedir"
case "$option" in
changelog-changes)
if [ "$#" -eq 1 ]; then
@ -66,8 +116,8 @@ case "$option" in
date_changelog=$(grep '^[[:digit:]]' "$basedir/docs/changelog" | head -n1 | sed 's/.*: //')
if [ "$date_today" != "$date_changelog" ]; then
echo "Date in changelog is not today"
echo "Changelog: $date_changelog"
printf "Date in changelog is not today\n"
printf "Changelog date: %s\n" "${date_changelog}"
exit 1
fi
;;
@ -76,54 +126,17 @@ case "$option" in
"$0" test
;;
blog)
version=$1; shift
blogfile=$1; shift
dir=${blogfile%/*}
file=${blogfile##*/}
cat << eof > "$blogfile"
[[!meta title="Cdist $version released"]]
Here's a short overview about the changes found in version ${version}:
eof
$0 changelog-changes "$version" >> "$blogfile"
cat << eof >> "$blogfile"
For more information visit the [[cdist homepage|software/cdist]].
[[!tag cdist config unix]]
eof
cd "$dir"
git add "$file"
# Allow git commit to fail if there are no changes
git commit -m "cdist blog update: $version" "$blogfile" || true
;;
ml-release)
if [ $# -ne 1 ]; then
echo "$0 ml-release version" >&2
printf "%s ml-release version\n" "$0" >&2
exit 1
fi
version=$1; shift
to_a=cdist
to_d=l.schottelius.org
to=${to_a}@${to_d}
from_a=nico-cdist
from_d=schottelius.org
from=${from_a}@${from_d}
(
cat << eof
From: Nico -telmich- Schottelius <$from>
To: cdist mailing list <$to>
Subject: cdist $version released
Subject: cdist $version has been released
Hello .*,
@ -134,25 +147,41 @@ eof
"$0" changelog-changes "$version"
cat << eof
Cheers,
Nico
--
Automatisation at its best level. With cdist.
eof
) | /usr/sbin/sendmail -f "$from" "$to"
) > mailinglist.tmp
;;
archlinux-release)
if [ $# -ne 1 ]; then
printf "%s archlinux-release version\n" "$0" >&2
exit 1
fi
version=$1; shift
ARCHLINUXTAR="cdist-${version}-1.src.tar.gz"
./PKGBUILD.in "${version}"
umask 022
mkaurball
burp -c system "${ARCHLINUXTAR}"
;;
pypi-release)
# Ensure that pypi release has the right version
"$0" version
make docs-clean
make docs
python3 setup.py sdist upload
;;
release-git-tag)
target_version=$($0 changelog-version)
if git rev-parse --verify refs/tags/$target_version 2>/dev/null; then
echo "Tag for $target_version exists, aborting"
if git rev-parse --verify "refs/tags/${target_version}" 2>/dev/null; then
printf "Tag for %s exists, aborting\n" "${target_version}"
exit 1
fi
printf "Enter tag description for ${target_version}: "
read tagmessage
printf "Enter tag description for %s: " "${target_version}"
read -r tagmessage
# setup for signed tags:
# gpg --fulL-gen-key
@ -170,7 +199,8 @@ eof
# gpg --verify <asc-file> <file>
# gpg --no-default-keyring --keyring <pubkey.gpg> --verify <asc-file> <file>
# Ensure gpg-agent is running.
export GPG_TTY=$(tty)
GPG_TTY=$(tty)
export GPG_TTY
gpg-agent
git tag -s "$target_version" -m "$tagmessage"
@ -180,14 +210,14 @@ eof
sign-git-release)
if [ $# -lt 2 ]
then
printf "usage: $0 sign-git-release TAG TOKEN [ARCHIVE]\n"
printf "usage: %s sign-git-release TAG TOKEN [ARCHIVE]\n" "$0"
printf " if ARCHIVE is not specified then it is created\n"
exit 1
fi
tag="$1"
if ! git rev-parse -q --verify "${tag}" >/dev/null 2>&1
then
printf "Tag \"${tag}\" not found.\n"
printf "Tag \"%s\" not found.\n" "${tag}"
exit 1
fi
token="$2"
@ -195,44 +225,53 @@ eof
then
archivename="$3"
else
archivename="cdist-${tag}.tar.gz"
archivename="cdist-${tag}.tar"
git archive --prefix="cdist-${tag}/" -o "${archivename}" "${tag}" \
|| exit 1
# make sure target version is generated
"$0" target-version
tar -x -f "${archivename}" || exit 1
cp cdist/version.py "cdist-${tag}/cdist/version.py" || exit 1
tar -c -f "${archivename}" "cdist-${tag}/" || exit 1
rm -r -f "cdist-${tag}/"
gzip "${archivename}" || exit 1
archivename="${archivename}.gz"
fi
gpg --armor --detach-sign "${archivename}" || exit 1
# make github release
curl -H "Authorization: token ${token}" \
--request POST \
--data "{ \"tag_name\":\"${tag}\", \
\"target_commitish\":\"master\", \
\"name\": \"${tag}\", \
\"body\":\"${tag}\", \
\"draft\":false, \
\"prerelease\": false}" \
"https://api.github.com/repos/ungleich/cdist/releases" || exit 1
project="ungleich-public%2Fcdist"
sed_cmd='s/^.*"markdown":"\([^"]*\)".*$/\1/'
# get release ID
repoid=$(curl "https://api.github.com/repos/ungleich/cdist/releases/tags/${tag}" \
| python3 -c 'import json; import sys; print(json.loads(sys.stdin.read())["id"])') \
|| exit 1
# upload archive
response_archive=$(curl -f -X POST \
--http1.1 \
-H "PRIVATE-TOKEN: ${token}" \
-F "file=@${archivename}" \
"https://code.ungleich.ch/api/v4/projects/${project}/uploads" \
| sed "${sed_cmd}") || exit 1
# upload archive and then signature
curl -H "Authorization: token ${token}" \
-H "Accept: application/vnd.github.manifold-preview" \
-H "Content-Type: application/x-gtar" \
--data-binary @${archivename} \
"https://uploads.github.com/repos/ungleich/cdist/releases/${repoid}/assets?name=${archivename}" \
|| exit 1
curl -H "Authorization: token ${token}" \
-H "Accept: application/vnd.github.manifold-preview" \
-H "Content-Type: application/pgp-signature" \
--data-binary @${archivename}.asc \
"https://uploads.github.com/repos/ungleich/cdist/releases/${repoid}/assets?name=${archivename}.asc" \
# upload archive signature
response_archive_sig=$(curl -f -X POST \
--http1.1 \
-H "PRIVATE-TOKEN: ${token}" \
-F "file=@${archivename}.asc" \
"https://code.ungleich.ch/api/v4/projects/${project}/uploads" \
| sed "${sed_cmd}") || exit 1
# make release
changelog=$("$0" changelog-changes "$1" | sed 's/^[[:space:]]*//')
release_notes=$(
printf "%s\n\n%s\n\n**Changelog**\n\n%s\n" \
"${response_archive}" "${response_archive_sig}" "${changelog}"
)
curl -f -X POST \
-H "PRIVATE-TOKEN: ${token}" \
-F "description=${release_notes}" \
"https://code.ungleich.ch/api/v4/projects/${project}/repository/tags/${tag}/release" \
|| exit 1
# remove generated files (archive and asc)
if [ $# -eq 2]
if [ $# -eq 2 ]
then
rm -f "${archivename}"
fi
@ -244,29 +283,30 @@ eof
target_version=$($0 changelog-version)
target_branch=$($0 version-branch)
echo "Beginning release process for $target_version"
printf "Beginning release process for %s\n" "${target_version}"
# First check everything is sane
"$0" check-date
"$0" check-unittest
"$0" check-pep8
"$0" check-pycodestyle
"$0" check-shellcheck
# Generate version file to be included in packaging
"$0" target-version
# Ensure the git status is clean, else abort
if ! git diff-index --name-only --exit-code HEAD ; then
echo "Unclean tree, see files above, aborting"
printf "Unclean tree, see files above, aborting.\n"
exit 1
fi
# Ensure we are on the master branch
masterbranch=yes
if [ "$(git rev-parse --abbrev-ref HEAD)" != "master" ]; then
echo "Releases are happening from the master branch, aborting"
printf "Releases are happening from the master branch, aborting.\n"
echo "Enter the magic word to release anyway"
read magicword
printf "Enter the magic word to release anyway:"
read -r magicword
if [ "$magicword" = "iknowwhatido" ]; then
masterbranch=no
@ -277,7 +317,7 @@ eof
if [ "$masterbranch" = yes ]; then
# Ensure version branch exists
if ! git rev-parse --verify refs/heads/$target_branch 2>/dev/null; then
if ! git rev-parse --verify "refs/heads/${target_branch}" 2>/dev/null; then
git branch "$target_branch"
fi
@ -295,20 +335,12 @@ eof
make docs-clean
make docs
# Generate speeches (indirect check if they build)
make speeches
#############################################################
# Everything green, let's do the release
# Tag the current commit
"$0" release-git-tag
# sign git tag
printf "Enter github authentication token: "
read token
"$0" sign-git-release "${target_version}" "${token}"
# Also merge back the version branch
if [ "$masterbranch" = yes ]; then
git checkout master
@ -316,41 +348,41 @@ eof
fi
# Publish git changes
make pub
# publish man, speeches, website
if [ "$masterbranch" = yes ]; then
make web-release-all
else
make web-release-all-no-latest
fi
# Ensure that pypi release has the right version
"$0" version
# if you want to have mirror locally then uncomment this and comment below
# git push --mirror
git push
# push also new branch and set up tracking
git push -u origin "${target_branch}"
# fi
# Create and publish package for pypi
make pypi-release
"$0" pypi-release
# Archlinux release is based on pypi
make archlinux-release
# sign git tag
printf "Enter upstream repository authentication token: "
read -r token
"$0" sign-git-release "${target_version}" "${token}"
# Announce change on ML
make ml-release
"$0" ml-release "${target_version}"
cat << eof
Manual steps post release:
- linkedin
- hackernews
- reddit
- cdist-web
- send mail body generated in mailinglist.tmp and inform Dmitry for deb
- twitter
eof
;;
test)
export PYTHONPATH="$(pwd -P)"
if [ ! -f "cdist/version.py" ]
then
printf "cdist/version.py is missing, generate it first.\n"
exit 1
fi
PYTHONPATH="$(pwd -P)"
export PYTHONPATH
if [ $# -lt 1 ]; then
python3 -m cdist.test
@ -359,18 +391,31 @@ eof
fi
;;
pep8)
pep8 "${basedir}" "${basedir}/scripts/cdist" | less
test-remote)
if [ ! -f "cdist/version.py" ]
then
printf "cdist/version.py is missing, generate it first.\n"
exit 1
fi
PYTHONPATH="$(pwd -P)"
export PYTHONPATH
python3 -m cdist.test.exec.remote
;;
check-pep8)
"$0" pep8
echo "Please review pep8 report."
pycodestyle|pep8)
pycodestyle "${basedir}" "${basedir}/scripts/cdist" | less
;;
check-pycodestyle)
"$0" pycodestyle
printf "\\nPlease review pycodestyle report.\\n"
while true
do
echo "Continue (yes/no)?"
printf "Continue (yes/no)?\n"
any=
read any
read -r any
case "$any" in
yes)
break
@ -379,7 +424,83 @@ eof
exit 1
;;
*)
echo "Please answer with 'yes' or 'no' explicitly."
printf "Please answer with 'yes' or 'no' explicitly.\n"
;;
esac
done
;;
shellcheck-global-explorers)
find cdist/conf/explorer -type f -exec ${SHELLCHECKCMD} {} + | grep -v "${SHELLCHECK_SKIP}" || exit 0
;;
shellcheck-type-explorers)
find cdist/conf/type -type f -path "*/explorer/*" -exec ${SHELLCHECKCMD} {} + | grep -v "${SHELLCHECK_SKIP}" || exit 0
;;
shellcheck-manifests)
find cdist/conf/type -type f -name manifest -exec ${SHELLCHECKCMD} {} + | grep -v "${SHELLCHECK_SKIP}" || exit 0
;;
shellcheck-local-gencodes)
find cdist/conf/type -type f -name gencode-local -exec ${SHELLCHECKCMD} {} + | grep -v "${SHELLCHECK_SKIP}" || exit 0
;;
shellcheck-remote-gencodes)
find cdist/conf/type -type f -name gencode-remote -exec ${SHELLCHECKCMD} {} + | grep -v "${SHELLCHECK_SKIP}" || exit 0
;;
shellcheck-scripts)
${SHELLCHECKCMD} scripts/cdist-dump scripts/cdist-new-type || exit 0
;;
shellcheck-gencodes)
"$0" shellcheck-local-gencodes
"$0" shellcheck-remote-gencodes
;;
shellcheck-types)
"$0" shellcheck-type-explorers
"$0" shellcheck-manifests
"$0" shellcheck-gencodes
;;
shellcheck)
"$0" shellcheck-global-explorers
"$0" shellcheck-types
"$0" shellcheck-scripts
;;
shellcheck-type-files)
find cdist/conf/type -type f -path "*/files/*" -exec ${SHELLCHECKCMD} {} + | grep -v "${SHELLCHECK_SKIP}" || exit 0
;;
shellcheck-with-files)
"$0" shellcheck
"$0" shellcheck-type-files
;;
shellcheck-build-helper)
${SHELLCHECKCMD} ./bin/build-helper
;;
check-shellcheck)
"$0" shellcheck
printf "\\nPlease review shellcheck report.\\n"
while true
do
printf "Continue (yes/no)?\n"
any=
read -r any
case "$any" in
yes)
break
;;
no)
exit 1
;;
*)
printf "Please answer with 'yes' or 'no' explicitly.\n"
;;
esac
done
@ -390,16 +511,39 @@ eof
;;
version)
echo "VERSION = \"$(git describe)\"" > cdist/version.py
printf "VERSION = \"%s\"\n" "$(git describe)" > cdist/version.py
;;
target-version)
target_version=$($0 changelog-version)
echo "VERSION = \"${target_version}\"" > cdist/version.py
printf "VERSION = \"%s\"\n" "${target_version}" > cdist/version.py
;;
clean)
make clean
# Archlinux
rm -f cdist-*.pkg.tar.xz cdist-*.tar.gz
rm -rf pkg/ src/
rm -f MANIFEST PKGBUILD
rm -rf dist/
# Signed release
rm -f cdist-*.tar.gz
rm -f cdist-*.tar.gz.asc
# Temp files
rm -f ./*.tmp
;;
distclean)
"$0" clean
rm -f cdist/version.py
;;
*)
echo "Unknown helper target $@ - aborting"
printf "Unknown target: '%s'.\n" "${option}" >&2
usage "${basename}"
exit 1
;;

View File

@ -1,468 +0,0 @@
#!/bin/sh
#
# 2011-2013 Nico Schottelius (nico-cdist at schottelius.org)
# 2016 Darko Poljak (darko.poljak at gmail.com)
#
# This file is part of cdist.
#
# cdist is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cdist is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
#
# This file contains the heavy lifting found usually in the Makefile
#
# vars for make
helper=$0
basedir=${0%/*}/../
# run_as is used to check how the script is called (by $0 value)
# currently supported sufixes for $0 are:
# .freebsd - run as freebsd
basename=${0##*/}
run_as=${basename#*.}
case "$run_as" in
freebsd)
to_a=cdist-configuration-management
to_d=googlegroups.com
from_a=darko.poljak
from_d=gmail.com
ml_name="Darko Poljak"
ml_sig_name="Darko"
# vars for make
WEBDIR=../vcs/www.nico.schottelius.org
;;
*)
to_a=cdist
to_d=l.schottelius.org
from_a=nico-cdist
from_d=schottelius.org
ml_name="Nico -telmich- Schottelius"
ml_sig_name="Nico"
# vars for make
WEBDIR=$$HOME/vcs/www.nico.schottelius.org
;;
esac
# Change to checkout directory
cd "$basedir"
version=$(git describe)
option=$1; shift
case "$option" in
print-make-vars)
printf "helper: ${helper}\n"
printf "WEBDIR: ${WEBDIR}\n"
;;
print-runas)
printf "run_as: $run_as\n"
;;
changelog-changes)
if [ "$#" -eq 1 ]; then
start=$1
else
start="[[:digit:]]"
fi
end="[[:digit:]]"
awk -F: "BEGIN { start=0 }
{
if(start == 0) {
if (\$0 ~ /^$start/) {
start = 1
}
} else {
if (\$0 ~ /^$end/) {
exit
} else {
print \$0
}
}
}" "$basedir/docs/changelog"
;;
changelog-version)
# get version from changelog
grep '^[[:digit:]]' "$basedir/docs/changelog" | head -n1 | sed 's/:.*//'
;;
check-date)
# verify date in changelog is today
date_today="$(date +%Y-%m-%d)"
date_changelog=$(grep '^[[:digit:]]' "$basedir/docs/changelog" | head -n1 | sed 's/.*: //')
if [ "$date_today" != "$date_changelog" ]; then
echo "Date in changelog is not today"
echo "Changelog: $date_changelog"
exit 1
fi
;;
check-unittest)
"$0" test
;;
blog)
version=$1; shift
blogfile=$1; shift
dir=${blogfile%/*}
file=${blogfile##*/}
cat << eof > "$blogfile"
[[!meta title="Cdist $version released"]]
Here's a short overview about the changes found in version ${version}:
eof
$0 changelog-changes "$version" >> "$blogfile"
cat << eof >> "$blogfile"
For more information visit the [[cdist homepage|software/cdist]].
[[!tag cdist config unix]]
eof
cd "$dir"
git add "$file"
# Allow git commit to fail if there are no changes
git commit -m "cdist blog update: $version" "$blogfile" || true
;;
ml-release)
if [ $# -ne 1 ]; then
echo "$0 ml-release version" >&2
exit 1
fi
version=$1; shift
to=${to_a}@${to_d}
from=${from_a}@${from_d}
(
cat << eof
From: ${ml_name} <$from>
To: cdist mailing list <$to>
Subject: cdist $version released
Hello .*,
cdist $version has been released with the following changes:
eof
"$0" changelog-changes "$version"
cat << eof
Cheers,
${ml_sig_name}
--
Automatisation at its best level. With cdist.
eof
) | /usr/sbin/sendmail -f "$from" "$to"
;;
release-git-tag)
target_version=$($0 changelog-version)
if git rev-parse --verify refs/tags/$target_version 2>/dev/null; then
echo "Tag for $target_version exists, aborting"
exit 1
fi
printf "Enter tag description for ${target_version}: "
read tagmessage
# setup for signed tags:
# gpg --fulL-gen-key
# gpg --list-secret-keys --keyid-format LONG
# git config --local user.signingkey <id>
# for exporting pub key:
# gpg --armor --export <id> > pubkey.asc
# gpg --output pubkey.gpg --export <id>
# show tag with signature
# git show <tag>
# verify tag signature
# git tag -v <tag>
#
# gpg verify signature
# gpg --verify <asc-file> <file>
# gpg --no-default-keyring --keyring <pubkey.gpg> --verify <asc-file> <file>
# Ensure gpg-agent is running.
export GPG_TTY=$(tty)
gpg-agent
git tag -s "$target_version" -m "$tagmessage"
git push --tags
;;
sign-git-release)
if [ $# -lt 2 ]
then
printf "usage: $0 sign-git-release TAG TOKEN [ARCHIVE]\n"
printf " if ARCHIVE is not specified then it is created\n"
exit 1
fi
tag="$1"
if ! git rev-parse -q --verify "${tag}" >/dev/null 2>&1
then
printf "Tag \"${tag}\" not found.\n"
exit 1
fi
token="$2"
if [ $# -gt 2 ]
then
archivename="$3"
else
archivename="cdist-${tag}.tar.gz"
git archive --prefix="cdist-${tag}/" -o "${archivename}" "${tag}" \
|| exit 1
fi
gpg --armor --detach-sign "${archivename}" || exit 1
# make github release
curl -H "Authorization: token ${token}" \
--request POST \
--data "{ \"tag_name\":\"${tag}\", \
\"target_commitish\":\"master\", \
\"name\": \"${tag}\", \
\"body\":\"${tag}\", \
\"draft\":false, \
\"prerelease\": false}" \
"https://api.github.com/repos/ungleich/cdist/releases" || exit 1
# get release ID
repoid=$(curl "https://api.github.com/repos/ungleich/cdist/releases/tags/${tag}" \
| python3 -c 'import json; import sys; print(json.loads(sys.stdin.read())["id"])') \
|| exit 1
# upload archive and then signature
curl -H "Authorization: token ${token}" \
-H "Accept: application/vnd.github.manifold-preview" \
-H "Content-Type: application/x-gtar" \
--data-binary @${archivename} \
"https://uploads.github.com/repos/ungleich/cdist/releases/${repoid}/assets?name=${archivename}" \
|| exit 1
curl -H "Authorization: token ${token}" \
-H "Accept: application/vnd.github.manifold-preview" \
-H "Content-Type: application/pgp-signature" \
--data-binary @${archivename}.asc \
"https://uploads.github.com/repos/ungleich/cdist/releases/${repoid}/assets?name=${archivename}.asc" \
|| exit 1
# remove generated files (archive and asc)
if [ $# -eq 2]
then
rm -f "${archivename}"
fi
rm -f "${archivename}.asc"
;;
release)
set -e
target_version=$($0 changelog-version)
target_branch=$($0 version-branch)
echo "Beginning release process for $target_version"
# First check everything is sane
"$0" check-date
"$0" check-unittest
"$0" check-pep8
# Generate version file to be included in packaging
"$0" target-version
# Ensure the git status is clean, else abort
if ! git diff-index --name-only --exit-code HEAD ; then
echo "Unclean tree, see files above, aborting"
exit 1
fi
# Ensure we are on the master branch
masterbranch=yes
if [ "$(git rev-parse --abbrev-ref HEAD)" != "master" ]; then
echo "Releases are happening from the master branch, aborting"
echo "Enter the magic word to release anyway"
read magicword
if [ "$magicword" = "iknowwhatido" ]; then
masterbranch=no
else
exit 1
fi
fi
if [ "$masterbranch" = yes ]; then
# Ensure version branch exists
if ! git rev-parse --verify refs/heads/$target_branch 2>/dev/null; then
git branch "$target_branch"
fi
# Merge master branch into version branch
git checkout "$target_branch"
git merge master
fi
# Verify that after the merge everything works
"$0" check-date
"$0" check-unittest
# Generate documentation (man and html)
# First, clean old generated docs
make helper=${helper} WEBDIR=${WEBDIR} docs-clean
make helper=${helper} WEBDIR=${WEBDIR} docs
# Generate speeches (indirect check if they build)
make helper=${helper} WEBDIR=${WEBDIR} speeches
#############################################################
# Everything green, let's do the release
# Tag the current commit
"$0" release-git-tag
# sign git tag
printf "Enter github authentication token: "
read token
"$0" sign-git-release "${target_version}" "${token}"
# Also merge back the version branch
if [ "$masterbranch" = yes ]; then
git checkout master
git merge "$target_branch"
fi
# Publish git changes
case "$run_as" in
freebsd)
# if we are not Nico :) then just push, no mirror
git push
# push also new branch and set up tracking
git push -u origin "${target_branch}"
;;
*)
make helper=${helper} WEBDIR=${WEBDIR} pub
;;
esac
# publish man, speeches, website
if [ "$masterbranch" = yes ]; then
make helper=${helper} WEBDIR=${WEBDIR} web-release-all
else
make helper=${helper} WEBDIR=${WEBDIR} web-release-all-no-latest
fi
# Ensure that pypi release has the right version
"$0" version
# Create and publish package for pypi
make helper=${helper} WEBDIR=${WEBDIR} pypi-release
case "$run_as" in
freebsd)
;;
*)
# Archlinux release is based on pypi
make archlinux-release
;;
esac
# Announce change on ML
make helper=${helper} WEBDIR=${WEBDIR} ml-release
cat << eof
Manual steps post release:
- linkedin
- hackernews
- reddit
- twitter
eof
case "$run_as" in
freebsd)
cat <<eof
Additional steps post release:
- archlinux release
eof
;;
*)
;;
esac
;;
test)
export PYTHONPATH="$(pwd -P)"
if [ $# -lt 1 ]; then
python3 -m cdist.test
else
python3 -m unittest "$@"
fi
;;
pep8)
pep8 "${basedir}" "${basedir}/scripts/cdist" | less
;;
check-pep8)
"$0" pep8
echo "Please review pep8 report."
while true
do
echo "Continue (yes/no)?"
any=
read any
case "$any" in
yes)
break
;;
no)
exit 1
;;
*)
echo "Please answer with 'yes' or 'no' explicitly."
;;
esac
done
;;
version-branch)
"$0" changelog-version | cut -d. -f '1,2'
;;
version)
echo "VERSION = \"$(git describe)\"" > cdist/version.py
;;
target-version)
target_version=$($0 changelog-version)
echo "VERSION = \"${target_version}\"" > cdist/version.py
;;
*)
echo "Unknown helper target $@ - aborting"
exit 1
;;
esac

View File

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
#
# 2010-2015 Nico Schottelius (nico-cdist at schottelius.org)
# 2012-2017 Steven Armstrong (steven-cdist at armstrong.cc)
#
# This file is part of cdist.
#
@ -20,9 +21,9 @@
#
import os
import subprocess
import hashlib
import cdist.log
import cdist.version
VERSION = cdist.version.VERSION
@ -42,8 +43,9 @@ BANNER = """
"P' "" ""
"""
REMOTE_COPY = "scp -o User=root"
REMOTE_COPY = "scp -o User=root -q"
REMOTE_EXEC = "ssh -o User=root"
REMOTE_CMDS_CLEANUP_PATTERN = "ssh -o User=root -O exit -S {}"
class Error(Exception):
@ -79,18 +81,159 @@ class CdistBetaRequired(cdist.Error):
return err_msg.format(*fmt_args)
class CdistObjectError(Error):
"""Something went wrong with an object"""
class CdistEntityError(Error):
"""Something went wrong while executing cdist entity"""
def __init__(self, entity_name, entity_params, stdout_paths,
stderr_paths, subject=''):
self.entity_name = entity_name
self.entity_params = entity_params
self.stderr_paths = stderr_paths
self.stdout_paths = stdout_paths
if isinstance(subject, Error):
self.original_error = subject
else:
self.original_error = None
self.message = str(subject)
def __init__(self, cdist_object, message):
self.name = cdist_object.name
self.source = " ".join(cdist_object.source)
self.message = message
def _stdpath(self, stdpaths, header_name):
result = {}
for name, path in stdpaths:
if name not in result:
result[name] = []
try:
if os.path.exists(path) and os.path.getsize(path) > 0:
output = []
label_begin = name + ":" + header_name
output.append(label_begin)
output.append('\n')
output.append('-' * len(label_begin))
output.append('\n')
with open(path, 'r') as fd:
output.append(fd.read())
output.append('\n')
result[name].append(''.join(output))
except UnicodeError as ue:
result[name].append(('Cannot output {}:{} due to: {}.\n'
'You can try to read the error file "{}"'
' yourself.').format(
name, header_name, ue, path))
return result
def _stderr(self):
return self._stdpath(self.stderr_paths, 'stderr')
def _stdout(self):
return self._stdpath(self.stdout_paths, 'stdout')
def _update_dict_list(self, target, source):
for x in source:
if x not in target:
target[x] = []
target[x].extend(source[x])
@property
def std_streams(self):
std_dict = {}
self._update_dict_list(std_dict, self._stdout())
self._update_dict_list(std_dict, self._stderr())
return std_dict
def __str__(self):
return '%s: %s (defined at %s)' % (self.name,
self.message,
self.source)
output = []
output.append(self.message)
output.append('\n\n')
header = "Error processing " + self.entity_name
under_header = '=' * len(header)
output.append(header)
output.append('\n')
output.append(under_header)
output.append('\n')
for param_name, param_value in self.entity_params:
output.append(param_name + ': ' + str(param_value))
output.append('\n')
output.append('\n')
for x in self.std_streams:
output.append(''.join(self.std_streams[x]))
return ''.join(output)
class CdistObjectError(CdistEntityError):
"""Something went wrong while working on a specific cdist object"""
def __init__(self, cdist_object, subject=''):
params = [
('name', cdist_object.name, ),
('path', cdist_object.absolute_path, ),
('source', " ".join(cdist_object.source), ),
('type', os.path.realpath(
cdist_object.cdist_type.absolute_path), ),
]
stderr_paths = []
for stderr_name in os.listdir(cdist_object.stderr_path):
stderr_path = os.path.join(cdist_object.stderr_path,
stderr_name)
stderr_paths.append((stderr_name, stderr_path, ))
stdout_paths = []
for stdout_name in os.listdir(cdist_object.stdout_path):
stdout_path = os.path.join(cdist_object.stdout_path,
stdout_name)
stdout_paths.append((stdout_name, stdout_path, ))
super().__init__("object '{}'".format(cdist_object.name),
params, stdout_paths, stderr_paths, subject)
class CdistObjectExplorerError(CdistEntityError):
"""
Something went wrong while working on a specific
cdist object explorer
"""
def __init__(self, cdist_object, explorer_name, explorer_path,
stderr_path, subject=''):
params = [
('object name', cdist_object.name, ),
('object path', cdist_object.absolute_path, ),
('object source', " ".join(cdist_object.source), ),
('object type', os.path.realpath(
cdist_object.cdist_type.absolute_path), ),
('explorer name', explorer_name, ),
('explorer path', explorer_path, ),
]
stdout_paths = []
stderr_paths = [
('remote', stderr_path, ),
]
super().__init__("explorer '{}' of object '{}'".format(
explorer_name, cdist_object.name), params, stdout_paths,
stderr_paths, subject)
class InitialManifestError(CdistEntityError):
"""Something went wrong while executing initial manifest"""
def __init__(self, initial_manifest, stdout_path, stderr_path, subject=''):
params = [
('path', initial_manifest, ),
]
stdout_paths = [
('init', stdout_path, ),
]
stderr_paths = [
('init', stderr_path, ),
]
super().__init__('initial manifest', params, stdout_paths,
stderr_paths, subject)
class GlobalExplorerError(CdistEntityError):
"""Something went wrong while executing global explorer"""
def __init__(self, name, path, stderr_path, subject=''):
params = [
('name', name, ),
('path', path, ),
]
stderr_paths = [
('remote', stderr_path, ),
]
super().__init__("global explorer '{}'".format(name),
params, [], stderr_paths, subject)
def file_to_list(filename):
@ -114,3 +257,15 @@ def str_hash(s):
return hashlib.md5(s.encode('utf-8')).hexdigest()
else:
raise Error("Param should be string")
def home_dir():
if 'HOME' in os.environ:
home = os.environ['HOME']
if home:
rv = os.path.join(home, ".cdist")
else:
rv = None
else:
rv = None
return rv

View File

@ -1,29 +1,49 @@
import argparse
import cdist
import multiprocessing
import os
import logging
import collections
import functools
import cdist.configuration
import cdist.preos
# set of beta sub-commands
BETA_COMMANDS = set(('install', ))
BETA_COMMANDS = set(('install', 'inventory', ))
# set of beta arguments for sub-commands
BETA_ARGS = {
'config': set(('jobs', )),
'config': set(('tag', 'all_tagged_hosts', 'use_archiving', )),
}
EPILOG = "Get cdist at http://www.nico.schottelius.org/software/cdist/"
EPILOG = "Get cdist at https://code.ungleich.ch/ungleich-public/cdist"
# Parser others can reuse
parser = None
_verbosity_level_off = -2
_verbosity_level = {
0: logging.ERROR,
1: logging.WARNING,
2: logging.INFO,
None: logging.WARNING,
_verbosity_level_off: logging.OFF,
-1: logging.ERROR,
0: logging.WARNING,
1: logging.INFO,
2: logging.VERBOSE,
3: logging.DEBUG,
4: logging.TRACE,
}
# Generate verbosity level constants:
# VERBOSE_OFF, VERBOSE_ERROR, VERBOSE_WARNING, VERBOSE_INFO, VERBOSE_VERBOSE,
# VERBOSE_DEBUG, VERBOSE_TRACE.
this_globals = globals()
for level in _verbosity_level:
const = 'VERBOSE_' + logging.getLevelName(_verbosity_level[level])
this_globals[const] = level
# All verbosity levels above 4 are TRACE.
_verbosity_level = collections.defaultdict(
lambda: logging.DEBUG, _verbosity_level)
lambda: logging.TRACE, _verbosity_level)
def add_beta_command(cmd):
@ -55,17 +75,15 @@ def check_beta(args_dict):
raise cdist.CdistBetaRequired(cmd, arg)
def check_positive_int(value):
import argparse
def check_lower_bounded_int(value, lower_bound, name):
try:
val = int(value)
except ValueError:
raise argparse.ArgumentTypeError(
"{} is invalid int value".format(value))
if val <= 0:
if val < lower_bound:
raise argparse.ArgumentTypeError(
"{} is invalid positive int value".format(val))
"{} is invalid {} value".format(val, name))
return val
@ -80,31 +98,43 @@ def get_parsers():
# Options _all_ parsers have in common
parser['loglevel'] = argparse.ArgumentParser(add_help=False)
parser['loglevel'].add_argument(
'-d', '--debug',
help=('Set log level to debug (deprecated, use -vvv instead)'),
'-l', '--log-level', metavar='LOGLEVEL',
type=functools.partial(check_lower_bounded_int, lower_bound=-1,
name="log level"),
help=('Set the specified verbosity level. '
'The levels, in order from the lowest to the highest, are: '
'ERROR (-1), WARNING (0), INFO (1), VERBOSE (2), DEBUG (3) '
'TRACE (4 or higher). If used along with -v then -v '
'increases last set value and -l overwrites last set '
'value.'),
action='store', dest='verbose', required=False)
parser['loglevel'].add_argument(
'-q', '--quiet',
help='Quiet mode: disables logging, including WARNING and ERROR.',
action='store_true', default=False)
parser['loglevel'].add_argument(
'-v', '--verbose',
help=('Increase the verbosity level. Every instance of -v '
'increments the verbosity level by one. Its default value '
'is 0. There are 4 levels of verbosity. The order of levels '
'from the lowest to the highest are: ERROR (0), '
'WARNING (1), INFO (2) and DEBUG (3 or higher).'),
action='count', default=0)
'is 0 which includes ERROR and WARNING levels. '
'The levels, in order from the lowest to the highest, are: '
'ERROR (-1), WARNING (0), INFO (1), VERBOSE (2), DEBUG (3) '
'TRACE (4 or higher). If used along with -l then -l '
'overwrites last set value and -v increases last set '
'value.'),
action='count', default=None)
parser['beta'] = argparse.ArgumentParser(add_help=False)
parser['beta'].add_argument(
'-b', '--beta',
help=('Enable beta functionalities. '
'Can also be enabled using CDIST_BETA env var.'),
action='store_true', dest='beta',
default='CDIST_BETA' in os.environ)
help=('Enable beta functionality. '),
action='store_true', dest='beta', default=None)
# Main subcommand parser
parser['main'] = argparse.ArgumentParser(
description='cdist ' + cdist.VERSION, parents=[parser['loglevel']])
description='cdist ' + cdist.VERSION)
parser['main'].add_argument(
'-V', '--version', help='Show version', action='version',
'-V', '--version', help='Show version.', action='version',
version='%(prog)s ' + cdist.VERSION)
parser['sub'] = parser['main'].add_subparsers(
title="Commands", dest="command")
@ -114,67 +144,147 @@ def get_parsers():
'banner', parents=[parser['loglevel']])
parser['banner'].set_defaults(func=cdist.banner.banner)
parser['inventory_common'] = argparse.ArgumentParser(add_help=False)
parser['inventory_common'].add_argument(
'-I', '--inventory',
help=('Use specified custom inventory directory. '
'Inventory directory is set up by the following rules: '
'if cdist configuration resolves this value then specified '
'directory is used, '
'if HOME env var is set then ~/.cdist/inventory is '
'used, otherwise distribution inventory directory is used.'),
dest="inventory_dir", required=False)
parser['common'] = argparse.ArgumentParser(add_help=False)
parser['common'].add_argument(
'-g', '--config-file',
help=('Use specified custom configuration file.'),
dest="config_file", required=False)
# Config
parser['config_main'] = argparse.ArgumentParser(add_help=False)
parser['config_main'].add_argument(
'-4', '--force-ipv4',
help=('Force to use IPv4 addresses only. No influence for custom'
' remote commands.'),
action='store_const', dest='force_ipv', const=4)
parser['config_main'].add_argument(
'-6', '--force-ipv6',
help=('Force to use IPv6 addresses only. No influence for custom'
' remote commands.'),
action='store_const', dest='force_ipv', const=6)
parser['config_main'].add_argument(
'-C', '--cache-path-pattern',
help=('Specify custom cache path pattern. If '
'it is not set then default hostdir is used.'),
dest='cache_path_pattern',
default=None)
parser['config_main'].add_argument(
'-c', '--conf-dir',
help=('Add configuration directory (can be repeated, '
'last one wins)'), action='append')
'last one wins).'), action='append')
parser['config_main'].add_argument(
'-i', '--initial-manifest',
help='path to a cdist manifest or \'-\' to read from stdin.',
help='Path to a cdist manifest or \'-\' to read from stdin.',
dest='manifest', required=False)
parser['config_main'].add_argument(
'-j', '--jobs', nargs='?',
type=check_positive_int,
help=('Specify the maximum number of parallel jobs, currently '
'only global explorers are supported'),
type=functools.partial(check_lower_bounded_int, lower_bound=1,
name="positive int"),
help=('Operate in parallel in specified maximum number of jobs. '
'Global explorers, object prepare and object run are '
'supported. Without argument CPU count is used by default. '),
action='store', dest='jobs',
const=multiprocessing.cpu_count())
parser['config_main'].add_argument(
'-n', '--dry-run',
help='do not execute code', action='store_true')
help='Do not execute code.', action='store_true')
parser['config_main'].add_argument(
'-o', '--out-dir',
help='directory to save cdist output in', dest="out_path")
help='Directory to save cdist output in.', dest="out_path")
parser['config_main'].add_argument(
'-P', '--timestamp',
help=('Timestamp log messages with the current local date and time '
'in the format: YYYYMMDDHHMMSS.us.'),
action='store_true', dest='timestamp')
parser['config_main'].add_argument(
'-R', '--use-archiving', nargs='?',
choices=('tar', 'tgz', 'tbz2', 'txz',),
help=('Operate by using archiving with compression where '
'appropriate. Supported values are: tar - tar archive, '
'tgz - gzip tar archive (the default), '
'tbz2 - bzip2 tar archive and txz - lzma tar archive. '
'Currently in beta.'),
action='store', dest='use_archiving',
const='tgz')
# remote-copy and remote-exec defaults are environment variables
# if set; if not then None - these will be futher handled after
# parsing to determine implementation default
parser['config_main'].add_argument(
'-r', '--remote-out-dir',
help='Directory to save cdist output in on the target host.',
dest="remote_out_path")
parser['config_main'].add_argument(
'--remote-copy',
help='Command to use for remote copy (should behave like scp)',
help='Command to use for remote copy (should behave like scp).',
action='store', dest='remote_copy',
default=os.environ.get('CDIST_REMOTE_COPY'))
default=None)
parser['config_main'].add_argument(
'--remote-exec',
help=('Command to use for remote execution '
'(should behave like ssh)'),
'(should behave like ssh).'),
action='store', dest='remote_exec',
default=os.environ.get('CDIST_REMOTE_EXEC'))
default=None)
parser['config_main'].add_argument(
'-S', '--disable-saving-output-streams',
help='Disable saving output streams.',
action='store_false', dest='save_output_streams', default=True)
# Config
parser['config_args'] = argparse.ArgumentParser(add_help=False)
parser['config_args'].add_argument(
'host', nargs='*', help='host(s) to operate on')
'-A', '--all-tagged',
help=('Use all hosts present in tags db. Currently in beta.'),
action="store_true", dest="all_tagged_hosts", default=False)
parser['config_args'].add_argument(
'-a', '--all',
help=('List hosts that have all specified tags, '
'if -t/--tag is specified.'),
action="store_true", dest="has_all_tags", default=False)
parser['config_args'].add_argument(
'-f', '--file',
help=('Read additional hosts to operate on from specified file '
'or from stdin if \'-\' (each host on separate line). '
'If no host or host file is specified then, by default, '
'read hosts from stdin.'),
help=('Read specified file for a list of additional hosts to '
'operate on or if \'-\' is given, read stdin (one host per '
'line). If no host or host file is specified then, by '
'default, read hosts from stdin.'),
dest='hostfile', required=False)
parser['config_args'].add_argument(
'-p', '--parallel',
help='operate on multiple hosts in parallel',
action='store_true', dest='parallel')
'-p', '--parallel', nargs='?', metavar='HOST_MAX',
type=functools.partial(check_lower_bounded_int, lower_bound=1,
name="positive int"),
help=('Operate on multiple hosts in parallel for specified maximum '
'hosts at a time. Without argument CPU count is used by '
'default.'),
action='store', dest='parallel',
const=multiprocessing.cpu_count())
parser['config_args'].add_argument(
'-s', '--sequential',
help='operate on multiple hosts sequentially (default)',
action='store_false', dest='parallel')
help='Operate on multiple hosts sequentially (default).',
action='store_const', dest='parallel', const=0)
parser['config_args'].add_argument(
'-t', '--tag',
help=('Host is specified by tag, not hostname/address; '
'list all hosts that contain any of specified tags. '
'Currently in beta.'),
dest='tag', required=False, action="store_true", default=False)
parser['config_args'].add_argument(
'host', nargs='*', help='Host(s) to operate on.')
parser['config'] = parser['sub'].add_parser(
'config', parents=[parser['loglevel'], parser['beta'],
parser['common'],
parser['config_main'],
parser['inventory_common'],
parser['config_args']])
parser['config'].set_defaults(func=cdist.config.Config.commandline)
@ -183,6 +293,140 @@ def get_parsers():
parents=[parser['config']])
parser['install'].set_defaults(func=cdist.install.Install.commandline)
# Inventory
parser['inventory'] = parser['sub'].add_parser('inventory')
parser['invsub'] = parser['inventory'].add_subparsers(
title="Inventory commands", dest="subcommand")
parser['add-host'] = parser['invsub'].add_parser(
'add-host', parents=[parser['loglevel'], parser['beta'],
parser['common'],
parser['inventory_common']])
parser['add-host'].add_argument(
'host', nargs='*', help='Host(s) to add.')
parser['add-host'].add_argument(
'-f', '--file',
help=('Read additional hosts to add from specified file '
'or from stdin if \'-\' (each host on separate line). '
'If no host or host file is specified then, by default, '
'read from stdin.'),
dest='hostfile', required=False)
parser['add-tag'] = parser['invsub'].add_parser(
'add-tag', parents=[parser['loglevel'], parser['beta'],
parser['common'],
parser['inventory_common']])
parser['add-tag'].add_argument(
'host', nargs='*',
help='List of host(s) for which tags are added.')
parser['add-tag'].add_argument(
'-f', '--file',
help=('Read additional hosts to add tags from specified file '
'or from stdin if \'-\' (each host on separate line). '
'If no host or host file is specified then, by default, '
'read from stdin. If no tags/tagfile nor hosts/hostfile'
' are specified then tags are read from stdin and are'
' added to all hosts.'),
dest='hostfile', required=False)
parser['add-tag'].add_argument(
'-T', '--tag-file',
help=('Read additional tags to add from specified file '
'or from stdin if \'-\' (each tag on separate line). '
'If no tag or tag file is specified then, by default, '
'read from stdin. If no tags/tagfile nor hosts/hostfile'
' are specified then tags are read from stdin and are'
' added to all hosts.'),
dest='tagfile', required=False)
parser['add-tag'].add_argument(
'-t', '--taglist',
help=("Tag list to be added for specified host(s), comma separated"
" values."),
dest="taglist", required=False)
parser['del-host'] = parser['invsub'].add_parser(
'del-host', parents=[parser['loglevel'], parser['beta'],
parser['common'],
parser['inventory_common']])
parser['del-host'].add_argument(
'host', nargs='*', help='Host(s) to delete.')
parser['del-host'].add_argument(
'-a', '--all', help=('Delete all hosts.'),
dest='all', required=False, action="store_true", default=False)
parser['del-host'].add_argument(
'-f', '--file',
help=('Read additional hosts to delete from specified file '
'or from stdin if \'-\' (each host on separate line). '
'If no host or host file is specified then, by default, '
'read from stdin.'),
dest='hostfile', required=False)
parser['del-tag'] = parser['invsub'].add_parser(
'del-tag', parents=[parser['loglevel'], parser['beta'],
parser['common'],
parser['inventory_common']])
parser['del-tag'].add_argument(
'host', nargs='*',
help='List of host(s) for which tags are deleted.')
parser['del-tag'].add_argument(
'-a', '--all',
help=('Delete all tags for specified host(s).'),
dest='all', required=False, action="store_true", default=False)
parser['del-tag'].add_argument(
'-f', '--file',
help=('Read additional hosts to delete tags for from specified '
'file or from stdin if \'-\' (each host on separate line). '
'If no host or host file is specified then, by default, '
'read from stdin. If no tags/tagfile nor hosts/hostfile'
' are specified then tags are read from stdin and are'
' deleted from all hosts.'),
dest='hostfile', required=False)
parser['del-tag'].add_argument(
'-T', '--tag-file',
help=('Read additional tags from specified file '
'or from stdin if \'-\' (each tag on separate line). '
'If no tag or tag file is specified then, by default, '
'read from stdin. If no tags/tagfile nor'
' hosts/hostfile are specified then tags are read from'
' stdin and are added to all hosts.'),
dest='tagfile', required=False)
parser['del-tag'].add_argument(
'-t', '--taglist',
help=("Tag list to be deleted for specified host(s), "
"comma separated values."),
dest="taglist", required=False)
parser['list'] = parser['invsub'].add_parser(
'list', parents=[parser['loglevel'], parser['beta'],
parser['common'],
parser['inventory_common']])
parser['list'].add_argument(
'host', nargs='*', help='Host(s) to list.')
parser['list'].add_argument(
'-a', '--all',
help=('List hosts that have all specified tags, '
'if -t/--tag is specified.'),
action="store_true", dest="has_all_tags", default=False)
parser['list'].add_argument(
'-f', '--file',
help=('Read additional hosts to list from specified file '
'or from stdin if \'-\' (each host on separate line). '
'If no host or host file is specified then, by default, '
'list all.'), dest='hostfile', required=False)
parser['list'].add_argument(
'-H', '--host-only', help=('Suppress tags listing.'),
action="store_true", dest="list_only_host", default=False)
parser['list'].add_argument(
'-t', '--tag',
help=('Host is specified by tag, not hostname/address; '
'list all hosts that contain any of specified tags.'),
action="store_true", default=False)
parser['inventory'].set_defaults(
func=cdist.inventory.Inventory.commandline)
# PreOs
parser['preos'] = parser['sub'].add_parser('preos', add_help=False)
# Shell
parser['shell'] = parser['sub'].add_parser(
'shell', parents=[parser['loglevel']])
@ -199,12 +443,31 @@ def get_parsers():
def handle_loglevel(args):
if args.debug:
retval = "-d/--debug is deprecated, use -vvv instead"
args.verbose = 3
else:
retval = None
if hasattr(args, 'quiet') and args.quiet:
args.verbose = _verbosity_level_off
logging.root.setLevel(_verbosity_level[args.verbose])
return retval
def parse_and_configure(argv, singleton=True):
parser = get_parsers()
parser_args = parser['main'].parse_args(argv)
try:
cfg = cdist.configuration.Configuration(parser_args,
singleton=singleton)
args = cfg.get_args()
except ValueError as e:
raise cdist.Error(str(e))
# Loglevels are handled globally in here
handle_loglevel(args)
log = logging.getLogger("cdist")
log.verbose("version %s" % cdist.VERSION)
log.trace('command line args: {}'.format(cfg.command_line_args))
log.trace('configuration: {}'.format(cfg.get_config()))
log.trace('configured args: {}'.format(args))
check_beta(vars(args))
return parser, cfg

71
cdist/autil.py Normal file
View File

@ -0,0 +1,71 @@
# -*- coding: utf-8 -*-
#
# 2017 Darko Poljak (darko.poljak at gmail.com)
#
# This file is part of cdist.
#
# cdist is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cdist is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
#
import cdist
import tarfile
import os
import glob
import tempfile
_ARCHIVING_MODES = {
'tar': '',
'tgz': 'gz',
'tbz2': 'bz2',
'txz': 'xz',
}
_UNARCHIVE_OPT = {
'tar': None,
'tgz': '-z',
'tbz2': '-j',
'txz': '-J',
}
# Archiving will be enabled if directory contains more than FILES_LIMIT files.
FILES_LIMIT = 1
def get_extract_option(mode):
return _UNARCHIVE_OPT[mode]
def tar(source, mode="tgz"):
if mode not in _ARCHIVING_MODES:
raise cdist.Error("Unsupported archiving mode {}.".format(mode))
files = glob.glob1(source, '*')
fcnt = len(files)
if fcnt <= FILES_LIMIT:
return None, fcnt
tarmode = 'w:{}'.format(_ARCHIVING_MODES[mode])
_, tarpath = tempfile.mkstemp(suffix='.' + mode)
with tarfile.open(tarpath, tarmode, dereference=True) as tar:
if os.path.isdir(source):
for f in files:
tar.add(os.path.join(source, f), arcname=f)
else:
tar.add(source)
return tarpath, fcnt

View File

@ -20,8 +20,6 @@
#
import logging
import sys
import cdist
log = logging.getLogger(__name__)

View File

@ -25,13 +25,17 @@
os=$("$__explorer/os")
case "$os" in
"macosx")
echo "$(sysctl -n hw.physicalcpu)"
sysctl -n hw.physicalcpu
;;
"openbsd")
sysctl -n hw.ncpuonline
;;
*)
if [ -r /proc/cpuinfo ]; then
cores="$(grep "core id" /proc/cpuinfo | sort | uniq | wc -l)"
if [ ${cores} -eq 0 ]; then
if [ "${cores}" -eq 0 ]; then
cores="1"
fi
echo "$cores"

View File

@ -25,14 +25,14 @@
os=$("$__explorer/os")
case "$os" in
"macosx")
echo "$(system_profiler SPHardwareDataType | grep "Number of Processors" | awk -F': ' '{print $2}')"
system_profiler SPHardwareDataType | grep "Number of Processors" | awk -F': ' '{print $2}'
;;
*)
if [ -r /proc/cpuinfo ]; then
sockets="$(grep "physical id" /proc/cpuinfo | sort | uniq | wc -l)"
if [ ${sockets} -eq 0 ]; then
sockets="$(cat /proc/cpuinfo | grep "processor" | wc -l)"
sockets="$(grep "physical id" /proc/cpuinfo | sort -u | wc -l)"
if [ "${sockets}" -eq 0 ]; then
sockets="$(grep -c "processor" /proc/cpuinfo)"
fi
echo "${sockets}"
fi

29
cdist/conf/explorer/disks Normal file → Executable file
View File

@ -1,2 +1,27 @@
cd /dev
echo sd? hd? vd?
#!/bin/sh
uname_s="$(uname -s)"
case "${uname_s}" in
FreeBSD)
sysctl -n kern.disks
;;
OpenBSD|NetBSD)
sysctl -n hw.disknames | grep -Eo '[lsw]d[0-9]+' | xargs
;;
Linux)
if command -v lsblk > /dev/null
then
# exclude ram disks, floppies and cdroms
# https://www.kernel.org/doc/Documentation/admin-guide/devices.txt
lsblk -e 1,2,11 -dno name | xargs
else
printf "Don't know how to list disks for %s operating system without lsblk, if you can please submit a patch\n" "${uname_s}" >&2
fi
;;
*)
printf "Don't know how to list disks for %s operating system, if you can please submit a patch\n" "${uname_s}" >&2
;;
esac
exit 0

View File

@ -1,6 +1,7 @@
#!/bin/sh
#
# 2016 Daniel Heule (hda at sfs.biz)
# Copyright 2017, Philippe Gregoire <pg@pgregoire.xyz>
#
# This file is part of cdist.
#
@ -25,7 +26,10 @@
uname_s="$(uname -s)"
case "$uname_s" in
Linux|FreeBSD)
Linux)
(pgrep -P0 -l | awk '/^1[ \t]/ {print $2;}') || true
;;
FreeBSD|OpenBSD)
ps -o comm= -p 1 || true
;;
*)

View File

@ -1,6 +1,6 @@
#!/bin/sh
#!/bin/sh -e
#
# 2012 Sébastien Gross <seb•ɑƬ•chezwam•ɖɵʈ•org>
# 2019 Ander Punnar (ander-at-kvlt-dot-ee)
#
# This file is part of cdist.
#
@ -17,35 +17,12 @@
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
#
# List all network interfaces in explorer/ifaces. One interface per line.
#
# If your OS is not supported please provide a ifconfig output
#
# Use ip, if available
if command -v ip >/dev/null; then
ip -o link show | sed -n 's/^[0-9]\+: \(.\+\): <.*/\1/p'
exit 0
fi
if ! command -v ifconfig >/dev/null; then
# no ifconfig, nothing we could do
exit 0
fi
uname_s="$(uname -s)"
REGEXP='s/^(.*)(:[[:space:]]*flags=|Link encap).*/\1/p'
case "$uname_s" in
Darwin)
ifconfig -a | sed -n -E "$REGEXP"
;;
Linux|*BSD)
ifconfig -a | sed -n -r "$REGEXP"
;;
*)
echo "Unsupported ifconfig output for $uname_s" >&2
exit 1
;;
esac
if command -v ip >/dev/null
then
ip -o link show | sed -n 's/^[0-9]\+: \(.\+\): <.*/\1/p'
elif command -v ifconfig >/dev/null
then
ifconfig -a | sed -n -E 's/^(.*)(:[[:space:]]*flags=|Link encap).*/\1/p'
fi \
| sort -u

View File

@ -0,0 +1,2 @@
#!/bin/sh
sysctl -n security.jail.jailed 2>/dev/null | grep "1" || true

1
cdist/conf/explorer/kernel_name Normal file → Executable file
View File

@ -1 +1,2 @@
#!/bin/sh
uname -s

View File

@ -20,8 +20,9 @@
#
set +e
case "$($__explorer/os)" in
case "$("$__explorer/os")" in
openwrt)
# shellcheck disable=SC1091
(. /etc/openwrt_release && echo "$DISTRIB_CODENAME")
;;
*)

View File

@ -20,8 +20,9 @@
#
set +e
case "$($__explorer/os)" in
case "$("$__explorer/os")" in
openwrt)
# shellcheck disable=SC1091
(. /etc/openwrt_release && echo "$DISTRIB_DESCRIPTION")
;;
*)

View File

@ -20,8 +20,9 @@
#
set +e
case "$($__explorer/os)" in
case "$("$__explorer/os")" in
openwrt)
# shellcheck disable=SC1091
(. /etc/openwrt_release && echo "$DISTRIB_ID")
;;
*)

View File

@ -20,8 +20,9 @@
#
set +e
case "$($__explorer/os)" in
case "$("$__explorer/os")" in
openwrt)
# shellcheck disable=SC1091
(. /etc/openwrt_release && echo "$DISTRIB_RELEASE")
;;
*)

View File

@ -22,6 +22,6 @@
#
#
if command -v uname 2>&1 >/dev/null; then
if command -v uname >/dev/null 2>&1 ; then
uname -m
fi

View File

@ -22,13 +22,13 @@
# FIXME: other system types (not linux ...)
if [ -d "/proc/vz" -a ! -d "/proc/bc" ]; then
if [ -d "/proc/vz" ] && [ ! -d "/proc/bc" ]; then
echo openvz
exit
fi
if [ -e "/proc/1/environ" ] &&
cat "/proc/1/environ" | tr '\000' '\n' | grep -Eiq '^container='; then
tr '\000' '\n' < "/proc/1/environ" | grep -Eiq '^container='; then
echo lxc
exit
fi
@ -56,6 +56,20 @@ if [ -r /proc/cpuinfo ]; then
exit
fi
fi
if [ -r /sys/class/dmi/id/sys_vendor ]; then
if grep -q -i 'qemu' /sys/class/dmi/id/sys_vendor; then
echo "virtual_by_kvm"
exit
fi
fi
if [ -r /sys/class/dmi/id/chassis_vendor ]; then
if grep -q -i 'qemu' /sys/class/dmi/id/chassis_vendor; then
echo "virtual_by_kvm"
exit
fi
fi
fi
echo "virtual_by_unknown"
else

View File

@ -2,6 +2,7 @@
#
# 2014 Daniel Heule (hda at sfs.biz)
# 2014 Thomas Oettli (otho at sfs.biz)
# Copyright 2017, Philippe Gregoire <pg@pgregoire.xyz>
#
# This file is part of cdist.
#
@ -28,6 +29,10 @@ case "$os" in
echo "$(sysctl -n hw.memsize)/1024" | bc
;;
"openbsd")
echo "$(sysctl -n hw.physmem) / 1048576" | bc
;;
*)
if [ -r /proc/meminfo ]; then
grep "MemTotal:" /proc/meminfo | awk '{print $2}'

View File

@ -1,6 +1,7 @@
#!/bin/sh
#
# 2010-2011 Nico Schottelius (nico-cdist at schottelius.org)
# Copyright 2017, Philippe Gregoire <pg@pgregoire.xyz>
#
# This file is part of cdist.
#
@ -50,15 +51,17 @@ if grep -q ^DISTRIB_ID=Ubuntu /etc/lsb-release 2>/dev/null; then
exit 0
fi
# devuan ascii has both devuan_version and debian_version, so we need to check devuan_version first!
if [ -f /etc/devuan_version ]; then
echo devuan
exit 0
fi
if [ -f /etc/debian_version ]; then
echo debian
exit 0
fi
if [ -f /etc/devuan_version ]; then
echo devuan
exit 0
fi
###
if [ -f /etc/gentoo-release ]; then
@ -139,5 +142,12 @@ case "$uname_s" in
;;
esac
if [ -f /etc/os-release ]; then
# already lowercase, according to:
# https://www.freedesktop.org/software/systemd/man/os-release.html
awk -F= '/^ID=/ { if ($2 ~ /^'"'"'(.*)'"'"'$/ || $2 ~ /^"(.*)"$/) { print substr($2, 2, length($2) - 2) } else { print $2 } }' /etc/os-release
exit 0
fi
echo "Unknown OS" >&2
exit 1

View File

@ -1,6 +1,6 @@
#!/bin/sh
#
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
# 2018 Adam Dej (dejko.a at gmail.com)
#
# This file is part of cdist.
#
@ -17,7 +17,10 @@
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
#
# set defaults
options="$(cat "$__object/parameter/options" 2>/dev/null \
|| echo "" | tee "$__object/parameter/options")"
# See os-release(5) and http://0pointer.de/blog/projects/os-release
set +e
cat /etc/os-release || cat /usr/lib/os-release || true

View File

@ -22,7 +22,7 @@
#
#
case "$($__explorer/os)" in
case "$("$__explorer/os")" in
amazon)
cat /etc/system-release
;;

View File

@ -0,0 +1,31 @@
#!/bin/sh -e
#
# 2018 Ander Punnar (ander-at-kvlt-dot-ee)
#
# This file is part of cdist.
#
# cdist is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cdist is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
[ ! -e "/$__object_id" ] && exit 0
if ! command -v getfacl > /dev/null
then
echo 'getfacl not available' >&2
exit 1
fi
getfacl "/$__object_id" 2>/dev/null \
| grep -Eo '^(default:)?(user|group|(mask|other):):[^:][[:graph:]]+' \
|| true

View File

@ -0,0 +1,39 @@
#!/bin/sh -e
#
# 2019 Ander Punnar (ander-at-kvlt-dot-ee)
#
# This file is part of cdist.
#
# cdist is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cdist is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
# TODO check if filesystem has ACL turned on etc
if [ -f "$__object/parameter/acl" ]
then
grep -E '^(default:)?(user|group):' "$__object/parameter/acl" \
| while read -r acl
do
param="$( echo "$acl" | awk -F: '{print $(NF-2)}' )"
check="$( echo "$acl" | awk -F: '{print $(NF-1)}' )"
[ "$param" = 'user' ] && db=passwd || db="$param"
if ! getent "$db" "$check" > /dev/null
then
echo "missing $param '$check'" >&2
exit 1
fi
done
fi

View File

@ -0,0 +1,31 @@
#!/bin/sh -e
#
# 2018 Ander Punnar (ander-at-kvlt-dot-ee)
#
# This file is part of cdist.
#
# cdist is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cdist is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
if [ -e "/$__object_id" ]
then
if [ -d "/$__object_id" ]
then echo directory
elif [ -f "/$__object_id" ]
then echo regular
else echo other
fi
else
echo missing
fi

View File

@ -0,0 +1,126 @@
#!/bin/sh -e
#
# 2018 Ander Punnar (ander-at-kvlt-dot-ee)
#
# This file is part of cdist.
#
# cdist is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cdist is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
file_is="$( cat "$__object/explorer/file_is" )"
[ "$file_is" = 'missing' ] && [ -z "$__cdist_dry_run" ] && exit 0
os="$( cat "$__global/explorer/os" )"
acl_path="/$__object_id"
acl_is="$( cat "$__object/explorer/acl_is" )"
if [ -f "$__object/parameter/acl" ]
then
acl_should="$( cat "$__object/parameter/acl" )"
elif
[ -f "$__object/parameter/user" ] \
|| [ -f "$__object/parameter/group" ] \
|| [ -f "$__object/parameter/mask" ] \
|| [ -f "$__object/parameter/other" ]
then
acl_should="$( for param in user group mask other
do
[ ! -f "$__object/parameter/$param" ] && continue
echo "$param" | grep -Eq 'mask|other' && sep=:: || sep=:
echo "$param$sep$( cat "$__object/parameter/$param" )"
done )"
else
echo 'no parameters set' >&2
exit 1
fi
if [ -f "$__object/parameter/default" ]
then
acl_should="$( echo "$acl_should" \
| sed 's/^default://' \
| sort -u \
| sed 's/\(.*\)/default:\1\n\1/' )"
fi
if [ "$file_is" = 'regular' ] \
&& echo "$acl_should" | grep -Eq '^default:'
then
# only directories can have default ACLs,
# but instead of error,
# let's just remove default entries
acl_should="$( echo "$acl_should" | grep -Ev '^default:' )"
fi
if echo "$acl_should" | awk -F: '{ print $NF }' | grep -Fq 'X'
then
[ "$file_is" = 'directory' ] && rep=x || rep=-
acl_should="$( echo "$acl_should" | sed "s/\\(.*\\)X/\\1$rep/" )"
fi
setfacl_exec='setfacl'
if [ -f "$__object/parameter/recursive" ]
then
if echo "$os" | grep -Fq 'freebsd'
then
echo "$os setfacl do not support recursive operations" >&2
else
setfacl_exec="$setfacl_exec -R"
fi
fi
if [ -f "$__object/parameter/remove" ]
then
echo "$acl_is" | while read -r acl
do
# skip wanted ACL entries which already exist
# and skip mask and other entries, because we
# can't actually remove them, but only change.
if echo "$acl_should" | grep -Eq "^$acl" \
|| echo "$acl" | grep -Eq '^(default:)?(mask|other)'
then continue
fi
if echo "$os" | grep -Fq 'freebsd'
then
remove="$acl"
else
remove="$( echo "$acl" | sed 's/:...$//' )"
fi
echo "$setfacl_exec -x \"$remove\" \"$acl_path\""
echo "removed '$remove'" >> "$__messages_out"
done
fi
for acl in $acl_should
do
if ! echo "$acl_is" | grep -Eq "^$acl"
then
if echo "$os" | grep -Fq 'freebsd' \
&& echo "$acl" | grep -Eq '^default:'
then
echo "setting default ACL in $os is currently not supported" >&2
else
echo "$setfacl_exec -m \"$acl\" \"$acl_path\""
echo "added '$acl'" >> "$__messages_out"
fi
fi
done

View File

@ -0,0 +1,85 @@
cdist-type__acl(7)
==================
NAME
----
cdist-type__acl - Set ACL entries
DESCRIPTION
-----------
Fully supported and tested on Linux (ext4 filesystem), partial support for FreeBSD.
See ``setfacl`` and ``acl`` manpages for more details.
REQUIRED MULTIPLE PARAMETERS
----------------------------
acl
Set ACL entry following ``getfacl`` output syntax.
BOOLEAN PARAMETERS
------------------
default
Set all ACL entries as default too.
Only directories can have default ACLs.
Setting default ACL in FreeBSD is currently not supported.
recursive
Make ``setfacl`` recursive (Linux only), but not ``getfacl`` in explorer.
remove
Remove undefined ACL entries.
``mask`` and ``other`` entries can't be removed, but only changed.
DEPRECATED PARAMETERS
---------------------
Parameters ``user``, ``group``, ``mask`` and ``other`` are deprecated and they
will be removed in future versions. Please use ``acl`` parameter instead.
EXAMPLES
--------
.. code-block:: sh
__acl /srv/project \
--default \
--recursive \
--remove \
--acl user:alice:rwx \
--acl user:bob:r-x \
--acl group:project-group:rwx \
--acl group:some-other-group:r-x \
--acl mask::r-x \
--acl other::r-x
# give Alice read-only access to subdir,
# but don't allow her to see parent content.
__acl /srv/project2 \
--remove \
--acl default:group:secret-project:rwx \
--acl group:secret-project:rwx \
--acl user:alice:--x
__acl /srv/project2/subdir \
--default \
--remove \
--acl group:secret-project:rwx \
--acl user:alice:r-x
AUTHORS
-------
Ander Punnar <ander-at-kvlt-dot-ee>
COPYING
-------
Copyright \(C) 2018 Ander Punnar. You can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

View File

@ -0,0 +1,3 @@
recursive
default
remove

View File

@ -0,0 +1 @@
see manual for details

View File

@ -0,0 +1 @@
see manual for details

View File

@ -0,0 +1 @@
see manual for details

View File

@ -0,0 +1 @@
see manual for details

View File

@ -0,0 +1,2 @@
mask
other

View File

@ -0,0 +1,3 @@
acl
user
group

View File

@ -0,0 +1,46 @@
cdist-type__apt_default_release(7)
==================================
NAME
----
cdist-type__apt_default_release - Configure the default release for apt
DESCRIPTION
-----------
Configure the default release for apt, using the APT::Default-Release
configuration value.
REQUIRED PARAMETERS
-------------------
release
The value to set APT::Default-Release to.
This can contain release name, codename or release version. Examples:
'stable', 'testing', 'unstable', 'stretch', 'buster', '4.0', '5.0*'.
OPTIONAL PARAMETERS
-------------------
None.
EXAMPLES
--------
.. code-block:: sh
__apt_default_release --release stretch
AUTHORS
-------
Matthijs Kooijman <matthijs--@--stdin.nl>
COPYING
-------
Copyright \(C) 2017 Matthijs Kooijman. You can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

View File

@ -0,0 +1,41 @@
#!/bin/sh -e
#
# 2014 Steven Armstrong (steven-cdist at armstrong.cc)
# 2017 Matthijs Kooijman (matthijs at stdin.nl)
#
# This file is part of cdist.
#
# cdist is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cdist is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
os=$(cat "$__global/explorer/os")
release="$(cat "$__object/parameter/release")"
case "$os" in
ubuntu|debian|devuan)
__file /etc/apt/apt.conf.d/99-default-release \
--owner root --group root --mode 644 \
--source - << DONE
APT::Default-Release "$release";
DONE
;;
*)
cat >&2 << DONE
The developer of this type (${__type##*/}) did not think your operating system
($os) would have any use for it. If you think otherwise please submit a patch.
DONE
exit 1
;;
esac

View File

@ -0,0 +1 @@
release

View File

@ -27,6 +27,18 @@ else
keyid="$__object_id"
fi
apt-key export "$keyid" | head -n 1 | grep -Fqe "BEGIN PGP PUBLIC KEY BLOCK" \
&& echo present \
|| echo absent
keydir="$(cat "$__object/parameter/keydir")"
keyfile="$keydir/$__object_id.gpg"
if [ -d "$keydir" ]
then
if [ -f "$keyfile" ]
then echo present
else echo absent
fi
else
# fallback to deprecated apt-key
apt-key export "$keyid" | head -n 1 | grep -Fqe "BEGIN PGP PUBLIC KEY BLOCK" \
&& echo present \
|| echo absent
fi

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh -e
#
# 2011-2014 Steven Armstrong (steven-cdist at armstrong.cc)
#
@ -31,12 +31,84 @@ if [ "$state_should" = "$state_is" ]; then
exit 0
fi
keydir="$(cat "$__object/parameter/keydir")"
keyfile="$keydir/$__object_id.gpg"
case "$state_should" in
present)
keyserver="$(cat "$__object/parameter/keyserver")"
echo "apt-key adv --keyserver \"$keyserver\" --recv-keys \"$keyid\""
if [ -f "$__object/parameter/uri" ]; then
uri="$(cat "$__object/parameter/uri")"
if [ -d "$keydir" ]; then
cat << EOF
curl -s -L \\
-o "$keyfile" \\
"$uri"
key="\$( cat "$keyfile" )"
if echo "\$key" | grep -Fq 'BEGIN PGP PUBLIC KEY BLOCK'
then
echo "\$key" | gpg --dearmor > "$keyfile"
fi
EOF
else
# fallback to deprecated apt-key
echo "curl -s -L '$uri' | apt-key add -"
fi
elif [ -d "$keydir" ]; then
tmp='/tmp/cdist_apt_key_tmp'
# we need to kill gpg after 30 seconds, because gpg
# can get stuck if keyserver is not responding.
# exporting env var and not exit 1,
# because we need to clean up and kill dirmngr.
cat << EOF
mkdir -m 700 -p "$tmp"
if timeout 30s \\
gpg --homedir "$tmp" \\
--keyserver "$keyserver" \\
--recv-keys "$keyid"
then
gpg --homedir "$tmp" \\
--export "$keyid" \\
> "$keyfile"
else
export GPG_GOT_STUCK=1
fi
GNUPGHOME="$tmp" gpgconf --kill dirmngr
rm -rf "$tmp"
if [ -n "\$GPG_GOT_STUCK" ]
then
echo "GPG GOT STUCK - no response from keyserver after 30 seconds" >&2
exit 1
fi
EOF
else
# fallback to deprecated apt-key
echo "apt-key adv --keyserver \"$keyserver\" --recv-keys \"$keyid\""
fi
echo "added '$keyid'" >> "$__messages_out"
;;
absent)
echo "apt-key del \"$keyid\""
if [ -f "$keyfile" ]; then
echo "rm '$keyfile'"
else
# fallback to deprecated apt-key
echo "apt-key del \"$keyid\""
fi
echo "removed '$keyid'" >> "$__messages_out"
;;
esac

View File

@ -28,6 +28,12 @@ keyserver
the keyserver from which to fetch the key. If omitted the default set
in ./parameter/default/keyserver is used.
keydir
key save location, defaults to ``/etc/apt/trusted.pgp.d``
uri
the URI from which to download the key
EXAMPLES
--------
@ -47,15 +53,20 @@ EXAMPLES
# same thing with other keyserver
__apt_key UbuntuArchiveKey --keyid 437D05B5 --keyserver keyserver.ubuntu.com
# download key from the internet
__apt_key rabbitmq \
--uri http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
AUTHORS
-------
Steven Armstrong <steven-cdist--@--armstrong.cc>
Ander Punnar <ander-at-kvlt-dot-ee>
COPYING
-------
Copyright \(C) 2011-2014 Steven Armstrong. You can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation, either version 3 of the
Copyright \(C) 2011-2019 Steven Armstrong and Ander Punnar. You can
redistribute it and/or modify it under the terms of the GNU General Public
License as published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

View File

@ -0,0 +1,8 @@
#!/bin/sh -e
__package gnupg
if [ -f "$__object/parameter/uri" ]
then __package curl
else __package dirmngr
fi

View File

@ -0,0 +1 @@
/etc/apt/trusted.gpg.d

View File

@ -1,3 +1,5 @@
state
keyid
keyserver
keydir
uri

View File

@ -27,6 +27,6 @@ else
name="$__object_id"
fi
apt-key list | grep -Fqe "$name" \
apt-key list 2> /dev/null | grep -Fqe "$name" \
&& echo present \
|| echo absent

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh -e
#
# 2011-2014 Steven Armstrong (steven-cdist at armstrong.cc)
#

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh -e
#
# 2013-2014 Steven Armstrong (steven-cdist at armstrong.cc)
#

4
cdist/conf/type/__apt_mark/explorer/apt_version Normal file → Executable file
View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh -e
#
# 2016 Ander Punnar (cdist at kvlt.ee)
#
@ -26,6 +26,6 @@ apt_version_is=$(dpkg-query --show --showformat '${Version}' apt)
apt_version_should=0.8.14.2
dpkg --compare-versions $apt_version_should le $apt_version_is \
dpkg --compare-versions "$apt_version_should" le "$apt_version_is" \
&& echo 0 \
|| echo 1

6
cdist/conf/type/__apt_mark/explorer/package_installed Normal file → Executable file
View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh -e
#
# 2016 Ander Punnar (cdist at kvlt.ee)
#
@ -24,7 +24,7 @@ else
name="$__object_id"
fi
dpkg-query --show --showformat '${Status}' $name 2>/dev/null \
| grep -q 'ok installed' \
dpkg-query --show --showformat '${Status}' "$name" 2>/dev/null \
| grep -Fq 'ok installed' \
&& echo 0 \
|| echo 1

4
cdist/conf/type/__apt_mark/explorer/state Normal file → Executable file
View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh -e
#
# 2016 Ander Punnar (cdist at kvlt.ee)
#
@ -24,4 +24,4 @@ else
name="$__object_id"
fi
apt-mark showhold | grep -q $name && echo hold || echo unhold
apt-mark showhold | grep -Fq "$name" && echo hold || echo unhold

2
cdist/conf/type/__apt_mark/gencode-remote Normal file → Executable file
View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh -e
#
# 2016 Ander Punnar (cdist at kvlt.ee)
#

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh -e
#
# 2014 Steven Armstrong (steven-cdist at armstrong.cc)
#

View File

@ -23,10 +23,11 @@
name="$__object_id"
# shellcheck disable=SC1091
. /etc/lsb-release
repo_name="${name#ppa:}"
repo_file_name="$(echo "$repo_name" | sed -e "s|[/:]|-|" -e "s|\.|_|")-${DISTRIB_CODENAME}.list"
repo_file_name="$(echo "$repo_name" | sed -e 's|[/:]|-|' -e 's|\.|_|')-${DISTRIB_CODENAME}.list"
[ -s "/etc/apt/sources.list.d/${repo_file_name}" ] \
&& echo present || echo absent

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh -e
#
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
#
@ -29,9 +29,9 @@ fi
case "$state_should" in
present)
echo add-apt-repository \"$name\"
echo "add-apt-repository '$name'"
;;
absent)
echo remove-apt-repository \"$name\"
echo "remove-apt-repository '$name'"
;;
esac

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh -e
#
# 2011-2016 Steven Armstrong (steven-cdist at armstrong.cc)
#
@ -18,8 +18,6 @@
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
name="$__object_id"
__package software-properties-common
require="__package/software-properties-common" \

View File

@ -0,0 +1,28 @@
#!/bin/sh -e
#
# 2018 Steven Armstrong (steven-cdist at armstrong.cc)
#
# This file is part of cdist.
#
# cdist is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cdist is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
#
name="$__object_id"
destination="/etc/apt/sources.list.d/${name}.list"
if grep -q "^__file${destination}" "$__messages_in"; then
printf 'apt-get update || apt-get update\n'
fi

View File

@ -8,7 +8,8 @@ cdist-type__apt_source - Manage apt sources
DESCRIPTION
-----------
This cdist type allows you to manage apt sources.
This cdist type allows you to manage apt sources. It invokes index update
internally when needed so call of index updating type is not needed.
REQUIRED PARAMETERS
@ -63,7 +64,7 @@ Steven Armstrong <steven-cdist--@--armstrong.cc>
COPYING
-------
Copyright \(C) 2011-2014 Steven Armstrong. You can redistribute it
Copyright \(C) 2011-2018 Steven Armstrong. You can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

View File

@ -1,6 +1,6 @@
#!/bin/sh
#!/bin/sh -e
#
# 2011-2013 Steven Armstrong (steven-cdist at armstrong.cc)
# 2011-2018 Steven Armstrong (steven-cdist at armstrong.cc)
#
# This file is part of cdist.
#
@ -50,5 +50,3 @@ __file "/etc/apt/sources.list.d/${name}.list" \
--source "$__object/files/source.list" \
--owner root --group root --mode 0644 \
--state "$state"
require="$__object_name" __apt_update_index

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh -e
#
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
#

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh -e
#
# 2013 Steven Armstrong (steven-cdist at armstrong.cc)
#
@ -18,6 +18,11 @@
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
# quote function from http://www.etalabs.net/sh_tricks.html
quote() {
printf '%s\n' "$1" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/'/"
}
file="$(cat "$__object/parameter/file" 2>/dev/null || echo "/$__object_id")"
state_should=$(cat "$__object/parameter/state")
prefix=$(cat "$__object/parameter/prefix" 2>/dev/null || echo "#cdist:__block/$__object_id")
@ -46,7 +51,7 @@ tmpfile=\$(mktemp ${file}.cdist.XXXXXXXXXX)
if [ -f "$file" ]; then
cp -p "$file" "\$tmpfile"
fi
awk -v prefix="^$prefix\$" -v suffix="^$suffix\$" '
awk -v prefix=^$(quote "$prefix")\$ -v suffix=^$(quote "$suffix")\$ '
{
if (match(\$0,prefix)) {
triggered=1

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh -e
#
# 2013-2014 Steven Armstrong (steven-cdist at armstrong.cc)
#
@ -18,8 +18,6 @@
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
file="$(cat "$__object/parameter/file" 2>/dev/null || echo "/$__object_id")"
prefix=$(cat "$__object/parameter/prefix" 2>/dev/null || echo "#cdist:__block/$__object_id")
suffix=$(cat "$__object/parameter/suffix" 2>/dev/null || echo "#/cdist:__block/$__object_id")
text=$(cat "$__object/parameter/text")

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh -e
#
# 2014 Nico Schottelius (nico-cdist at schottelius.org)
#
@ -42,21 +42,20 @@ get_current_value() {
}
set_group() {
echo chgrp \"$1\" \"$destination\"
echo chgrp $1 >> "$__messages_out"
echo "chgrp '$1' '$destination'"
echo "chgrp '$1'" >> "$__messages_out"
}
set_owner() {
echo chown \"$1\" \"$destination\"
echo chown $1 >> "$__messages_out"
echo "chown '$1' '$destination'"
echo "chown '$1'" >> "$__messages_out"
}
set_mode() {
echo chmod \"$1\" \"$destination\"
echo chmod $1 >> "$__messages_out"
echo "chmod '$1' '$destination'"
echo "chmod '$1'" >> "$__messages_out"
}
set_attributes=
case "$state_should" in
present|exists)
# Note: Mode - needs to happen last as a chown/chgrp can alter mode by
@ -67,11 +66,11 @@ case "$state_should" in
# change 0xxx format to xxx format => same as stat returns
if [ "$attribute" = mode ]; then
value_should="$(echo $value_should | sed 's/^0\(...\)/\1/')"
value_should="$(echo "$value_should" | sed 's/^0\(...\)/\1/')"
fi
value_is="$(get_current_value "$attribute" "$value_should")"
if [ -f "$__object/files/set-attributes" -o "$value_should" != "$value_is" ]; then
if [ -f "$__object/files/set-attributes" ] || [ "$value_should" != "$value_is" ]; then
"set_$attribute" "$value_should"
fi
fi
@ -81,7 +80,7 @@ case "$state_should" in
absent)
if [ "$type" = "file" ]; then
echo rm -f \"$destination\"
echo "rm -f '$destination'"
echo remove >> "$__messages_out"
fi
;;

View File

@ -38,6 +38,8 @@ BOOLEAN PARAMETERS
verbose
Whether to report backup verbosely
create-destination
Create the directory specified in the destination parameter on the remote host
EXAMPLES
--------
@ -50,6 +52,13 @@ EXAMPLES
--exclude '/proc/*' --exclude '/sys/*' \
--verbose
__ccollect_source doc.ungleich.ch \
--source doc.ungleich.ch:/ \
--destination /backup/doc.ungleich.ch \
--exclude '/proc/*' --exclude '/sys/*' \
--verbose \
--create-destination
SEE ALSO
--------

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh -e
#
# 2014 Nico Schottelius (nico-cdist at schottelius.org)
#
@ -22,7 +22,7 @@ name="$__object_id"
state="$(cat "$__object/parameter/state")"
source="$(cat "$__object/parameter/source")"
destination="$(cat "$__object/parameter/destination")"
ccollectconf="$(cat "$__object/parameter/ccollectconf" | sed 's,/$,,')"
ccollectconf="$(sed 's,/$,,' "$__object/parameter/ccollectconf")"
sourcedir="$ccollectconf/sources"
basedir="$sourcedir/$name"
@ -53,3 +53,7 @@ if [ -f "$__object/parameter/exclude" ]; then
__file "$exclude_file" --source - --state "$state" \
< "$__object/parameter/exclude"
fi
if [ -f "$__object/parameter/create-destination" ]; then
__directory "${destination}" --parents --state "${state}"
fi

View File

@ -1 +1,2 @@
verbose
create-destination

View File

@ -30,7 +30,7 @@ username
source
Select the source from which to clone cdist from.
Defaults to "git://github.com/ungleich/cdist.git".
Defaults to "git@code.ungleich.ch:ungleich-public/cdist.git".
branch
@ -47,7 +47,7 @@ EXAMPLES
__cdist /home/cdist/cdist
# Use alternative source
__cdist --source "git://github.com/ungleich/cdist" /home/cdist/cdist
__cdist --source "git@code.ungleich.ch:ungleich-public/cdist.git" /home/cdist/cdist
AUTHORS

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh -e
#
# 2013 Nico Schottelius (nico-cdist at schottelius.org)
#

View File

@ -1 +1 @@
git://github.com/ungleich/cdist.git
git@code.ungleich.ch:ungleich-public/cdist.git

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh -e
#
# Copyright (C) 2011 Daniel Maher (phrawzty+cdist at gmail.com)
#

View File

@ -0,0 +1,26 @@
#!/bin/sh -e
#
# 2019 Ander Punnar (ander-at-kvlt-dot-ee)
#
# This file is part of cdist.
#
# cdist is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cdist is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
if grep -Eq \
"$( cat "$__object/parameter/pattern" )" \
"$__messages_in"
then
tee "$__messages_out" < "$__object/parameter/execute"
fi

View File

@ -0,0 +1,52 @@
cdist-type__check_messages(7)
=============================
NAME
----
cdist-type__check_messages - Check messages for pattern and execute command on match.
DESCRIPTION
-----------
Check messages for pattern and execute command on match.
This type is useful if you chain together multiple related types using
dependencies and want to restart service if at least one type changes
something.
For more information about messages see `cdist messaging <cdist-messaging.html>`_.
For more information about dependencies and execution order see
`cdist manifest <cdist-manifest.html#dependencies>`_ documentation.
REQUIRED PARAMETERS
-------------------
pattern
Extended regular expression pattern for search (passed to ``grep -E``).
execute
Command to execute on pattern match.
EXAMPLES
--------
.. code-block:: sh
__check_messages munin \
--pattern '^__(file|link|line)/etc/munin/' \
--execute 'service munin-node restart'
AUTHORS
-------
Ander Punnar <ander-at-kvlt-dot-ee>
COPYING
-------
Copyright \(C) 2019 Ander Punnar. You can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

View File

@ -0,0 +1,2 @@
pattern
execute

View File

@ -0,0 +1,36 @@
#!/bin/sh -e
#
# 2016 Steven Armstrong (steven-cdist at armstrong.cc)
#
# This file is part of cdist.
#
# cdist is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cdist is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
chroot="/$__object_id"
if [ -f "$__object/parameter/manage-resolv-conf" ]; then
suffix="$(cat "$__object/parameter/manage-resolv-conf")"
resolv_conf="${chroot}/etc/resolv.conf"
original_resolv_conf="${resolv_conf}.${suffix}"
cat << DONE
$__remote_exec $__target_host << EOSSH
if [ -f "${resolv_conf}" ]; then
mv "${resolv_conf}" "${original_resolv_conf}"
fi
# copy hosts resolv.conf into chroot
cp /etc/resolv.conf "${resolv_conf}"
EOSSH
DONE
fi

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh -e
#
# 2012 Steven Armstrong (steven-cdist at armstrong.cc)
#
@ -41,8 +41,4 @@ mountpoint -q "${chroot}/dev/pts" \
[ -d "${chroot}/tmp" ] || mkdir -m 1777 "${chroot}/tmp"
mountpoint -q "${chroot}/tmp" \
|| mount -t tmpfs -o mode=1777,strictatime,nodev,nosuid tmpfs "${chroot}/tmp"
if [ ! -f "${chroot}/etc/resolv.conf" ]; then
cp /etc/resolv.conf "${chroot}/etc/"
fi
DONE

View File

@ -1,5 +1,5 @@
cdist-type__chroot_mount(7)
===================================
===========================
NAME
----
@ -18,7 +18,17 @@ None
OPTIONAL PARAMETERS
-------------------
None
manage-resolv-conf
manage /etc/resolv.conf inside the chroot.
Use the value of this parameter as the suffix to save a copy
of the current /etc/resolv.conf to /etc/resolv.conf.$suffix.
This is used by the __chroot_umount type to restore the initial
file content when unmounting the chroot.
BOOLEAN PARAMETERS
------------------
None.
EXAMPLES
@ -28,6 +38,9 @@ EXAMPLES
__chroot_mount /path/to/chroot
__chroot_mount /path/to/chroot \
--manage-resolv-conf "some-known-string"
AUTHORS
-------
@ -36,7 +49,7 @@ Steven Armstrong <steven-cdist--@--armstrong.cc>
COPYING
-------
Copyright \(C) 2012 Steven Armstrong. You can redistribute it
Copyright \(C) 2012-2017 Steven Armstrong. You can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

View File

@ -0,0 +1 @@
manage-resolv-conf

View File

@ -0,0 +1,36 @@
#!/bin/sh -e
#
# 2016 Steven Armstrong (steven-cdist at armstrong.cc)
#
# This file is part of cdist.
#
# cdist is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cdist is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
chroot="/$__object_id"
if [ -f "$__object/parameter/manage-resolv-conf" ]; then
suffix="$(cat "$__object/parameter/manage-resolv-conf")"
resolv_conf="${chroot}/etc/resolv.conf"
original_resolv_conf="${resolv_conf}.${suffix}"
cat << DONE
$__remote_exec $__target_host << EOSSH
if [ -f "${original_resolv_conf}" ]; then
# restore original /etc/resolv.conf that we moved out of the way
# in __chroot_mount/gencode-local
mv -f "${original_resolv_conf}" "${resolv_conf}"
fi
EOSSH
DONE
fi

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh -e
#
# 2012 Steven Armstrong (steven-cdist at armstrong.cc)
#
@ -26,7 +26,6 @@ umount -l "${chroot}/dev/pts"
umount -l "${chroot}/dev"
umount -l "${chroot}/sys"
umount -l "${chroot}/proc"
rm -f "${chroot}/etc/resolv.conf"
if [ -d "${chroot}/etc/resolvconf/resolv.conf.d" ]; then
# ensure /etc/resolvconf/resolv.conf.d/tail is not linked to \
# e.g. /etc/resolvconf/resolv.conf.d/original

View File

@ -18,7 +18,17 @@ None
OPTIONAL PARAMETERS
-------------------
None
manage-resolv-conf
manage /etc/resolv.conf inside the chroot.
Use the value of this parameter as the suffix to find the backup file
that was saved by the __chroot_mount.
This is used by the to restore the initial file content when unmounting
the chroot.
BOOLEAN PARAMETERS
------------------
None.
EXAMPLES
@ -28,6 +38,9 @@ EXAMPLES
__chroot_umount /path/to/chroot
__chroot_umount /path/to/chroot \
--manage-resolv-conf "some-known-string"
SEE ALSO
--------
@ -41,7 +54,7 @@ Steven Armstrong <steven-cdist--@--armstrong.cc>
COPYING
-------
Copyright \(C) 2012 Steven Armstrong. You can redistribute it
Copyright \(C) 2012-2017 Steven Armstrong. You can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

View File

@ -0,0 +1,36 @@
#!/bin/sh -e
#
# 2016 Steven Armstrong (steven-cdist at armstrong.cc)
#
# This file is part of cdist.
#
# cdist is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cdist is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
chroot="/$__object_id"
if [ -f "$__object/parameter/manage-resolv-conf" ]; then
suffix="$(cat "$__object/parameter/manage-resolv-conf")"
resolv_conf="${chroot}/etc/resolv.conf"
original_resolv_conf="${resolv_conf}.${suffix}"
cat << DONE
$__remote_exec $__target_host << EOSSH
if [ -f "${original_resolv_conf}" ]; then
# restore original /etc/resolv.conf that we moved out of the way
# in __chroot_mount/gencode-local
mv -f "${original_resolv_conf}" "${resolv_conf}"
fi
EOSSH
DONE
fi

View File

@ -0,0 +1 @@
manage-resolv-conf

View File

@ -0,0 +1,35 @@
#!/bin/sh -e
#
# 2019 Ander Punnar (ander-at-kvlt-dot-ee)
#
# This file is part of cdist.
#
# cdist is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cdist is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
path="/$__object_id"
[ ! -d "$path" ] && exit 0
pattern="$( cat "$__object/parameter/pattern" )"
if [ -f "$__object/parameter/exclude" ]
then
exclude="$( cat "$__object/parameter/exclude" )"
find "$path" -mindepth 1 -maxdepth 1 -regex "$pattern" \
-and -not -regex "$exclude"
else
find "$path" -mindepth 1 -maxdepth 1 -regex "$pattern"
fi

View File

@ -0,0 +1,48 @@
#!/bin/sh -e
#
# 2019 Ander Punnar (ander-at-kvlt-dot-ee)
#
# This file is part of cdist.
#
# cdist is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cdist is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
[ ! -s "$__object/explorer/list" ] && exit 0
path="/$__object_id"
pattern="$( cat "$__object/parameter/pattern" )"
if [ -f "$__object/parameter/exclude" ]
then
exclude="$( cat "$__object/parameter/exclude" )"
echo "find '$path' -mindepth 1 -maxdepth 1 -regex '$pattern'" \
"-and -not -regex '$exclude'" \
'-exec rm -rf {} \;'
else
echo "find '$path' -mindepth 1 -maxdepth 1 -regex '$pattern'" \
'-exec rm -rf {} \;'
fi
while read -r f
do
echo "removed '$f'" >> "$__messages_out"
done \
< "$__object/explorer/list"
if [ -f "$__object/parameter/onchange" ]
then
cat "$__object/parameter/onchange"
fi

View File

@ -0,0 +1,60 @@
cdist-type__clean_path(7)
=========================
NAME
----
cdist-type__clean_path - Remove files and directories which match the pattern.
DESCRIPTION
-----------
Remove files and directories which match the pattern.
Provided path (as __object_id) must be a directory.
Patterns are passed to ``find``'s ``-regex`` - see ``find(1)`` for more details.
Look up of files and directories is non-recursive (``-maxdepth 1``).
Parent directory is excluded (``-mindepth 1``).
This type is not POSIX compatible (sorry, Solaris users).
REQUIRED PARAMETERS
-------------------
pattern
Pattern of files which are removed from path.
OPTIONAL PARAMETERS
-------------------
exclude
Pattern of files which are excluded from removal.
onchange
The code to run if files or directories were removed.
EXAMPLES
--------
.. code-block:: sh
__clean_path /etc/apache2/conf-enabled \
--pattern '.+' \
--exclude '.+\(charset\.conf\|security\.conf\)' \
--onchange 'service apache2 restart'
AUTHORS
-------
Ander Punnar <ander-at-kvlt-dot-ee>
COPYING
-------
Copyright \(C) 2019 Ander Punnar. You can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

View File

@ -0,0 +1,2 @@
exclude
onchange

View File

@ -0,0 +1 @@
pattern

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh -e
#
# 2015 Steven Armstrong (steven-cdist at armstrong.cc)
#
@ -19,16 +19,9 @@
#
destination="$__object_id"
state="$(cat "$__object/parameter/state")"
if [ "$state" = "absent" ]; then
# nothing to do
exit 0
fi
if [ -f "$__object/parameter/onchange" ]; then
if grep -q "^__file/${destination}" "$__messages_in"; then
cat "$__object/parameter/onchange"
fi
fi

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh -e
#
# 2015 Steven Armstrong (steven-cdist at armstrong.cc)
#
@ -19,7 +19,8 @@
#
set -- "/${__object_id}"
for param in $(ls "$__object/parameter/"); do
cd "$__object/parameter/"
for param in *; do
case "$param" in
source)
source="$(cat "$__object/parameter/source")"

View File

@ -0,0 +1 @@
4120550353 48801129 consul

View File

@ -0,0 +1 @@
https://releases.hashicorp.com/consul/1.0.6/consul_1.0.6_linux_amd64.zip

View File

@ -0,0 +1 @@
191982 110369685

View File

@ -0,0 +1 @@
https://releases.hashicorp.com/consul/1.2.3/consul_1.2.3_linux_amd64.zip

Some files were not shown because too many files have changed in this diff Show More