fill out keyman example
[scpubgit/DKit.git] / examples / keyman
1 rule dot_ssh_on { A D } {
2   home_dir_on A H
3   directory_in H '.ssh' D
4   mode D '0700'
5 }
6
7 rule authorized_keys_on { A F } {
8   dot_ssh_on A D
9   file_in D 'authorized_keys' F
10   mode F '0600'
11 }
12
13 rule key_installed_on { A K } {
14   authorized_keys_on A F
15   contains_line F K
16 }
17
18 rule key_not_installed_on { A K } {
19   authorized_keys_on A F
20   not_contains_line F K
21 }
22
23 rule my_config_dir D {
24   home_dir_on '' H
25   directory_in H '.keymangler' D
26 }
27
28 rule my_config_file { C F } {
29   my_config_dir D
30   file_in D C F
31 }
32
33 rule config_contains_line { C L } {
34   my_config_file C F
35   contains_line F L
36 }
37
38 rule config_not_contains_line { C L } {
39   my_config_file C F
40   not_contains_line F L
41 }
42
43 rule known_account A { config_contains_line 'accounts' A }
44 rule known_key K { config_contains_line 'keys' K }
45 rule known_dead D { config_contains_line 'keys.dead' D }
46
47 rule not_known_account A { config_not_contains_line 'accounts' A }
48 rule not_known_key K { config_not_contains_line 'keys' K }
49 rule not_known_dead D { config_not_contains_line 'keys.dead' D }
50
51 rule account_synchronized A {
52   foreach K { known_key K } { key_installed_on A K }
53 }
54
55 rule all_synchronized {} {
56   foreach A { known_account A } { account_synchronized A }
57 }
58
59 rule unknown_installed_on { A K } {
60   key_installed_on A K
61   not { known_key K }
62 }