summaryrefslogtreecommitdiffstats
path: root/lib/puppet/util/command_line/puppetrun
blob: 7eba3b2c4c107842ee5dfc92d47f11e2708379c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#!/usr/bin/env ruby

#
# = Synopsis
#
# Trigger a puppet agent run on a set of hosts.
#
# = Usage
#
#   puppet kick [-a|--all] [-c|--class <class>] [-d|--debug] [-f|--foreground]
#       [-h|--help] [--host <host>] [--no-fqdn] [--ignoreschedules]
#       [-t|--tag <tag>] [--test] [-p|--ping] <host> [<host> [...]]
#
# = Description
#
# This script can be used to connect to a set of machines running +puppet agent+
# and trigger them to run their configurations.  The most common usage would
# be to specify a class of hosts and a set of tags, and +puppet kick+ would
# look up in LDAP all of the hosts matching that class, then connect to
# each host and trigger a run of all of the objects with the specified tags.
#
# If you are not storing your host configurations in LDAP, you can specify
# hosts manually.
#
# You will most likely have to run +puppet kick+ as root to get access to
# the SSL certificates.
#
# +puppet kick+ reads +puppet master+'s configuration file, so that it can copy
# things like LDAP settings.
#
# = Usage Notes
#
# +puppet kick+ is useless unless +puppet agent+ is listening.  See its documentation
# for more information, but the gist is that you must enable +listen+ on the
# +puppet agent+ daemon, either using +--listen+ on the command line or adding
# 'listen: true' in its config file.  In addition, you need to set the daemons
# up to specifically allow connections by creating the +namespaceauth+ file,
# normally at '/etc/puppet/namespaceauth.conf'.  This file specifies who has
# access to each namespace; if you create the file you must add every namespace
# you want any Puppet daemon to allow -- it is currently global to all Puppet
# daemons.
#
# An example file looks like this::
#
#     [fileserver]
#         allow *.madstop.com
#
#     [puppetmaster]
#         allow *.madstop.com
#
#     [puppetrunner]
#         allow culain.madstop.com
#
# This is what you would install on your Puppet master; non-master hosts could
# leave off the 'fileserver' and 'puppetmaster' namespaces.
#
# = Options
#
# Note that any configuration parameter that's valid in the configuration file
# is also a valid long argument.  For example, 'ssldir' is a valid configuration
# parameter, so you can specify '--ssldir <directory>' as an argument.
#
# See the configuration file documentation at
# http://reductivelabs.com/projects/puppet/reference/configref.html for
# the full list of acceptable parameters. A commented list of all
# configuration options can also be generated by running puppet master with
# '--genconfig'.
#
#
# all::
#   Connect to all available hosts.  Requires LDAP support at this point.
#
# class::
#   Specify a class of machines to which to connect.  This only works if you
#   have LDAP configured, at the moment.
#
# debug::
#   Enable full debugging.
#
# foreground::
#   Run each configuration in the foreground; that is, when connecting to a host,
#   do not return until the host has finished its run.  The default is false.
#
# help::
#   Print this help message
#
# host::
#   A specific host to which to connect.  This flag can be specified more
#   than once.
#
# ignoreschedules::
#   Whether the client should ignore schedules when running its configuration.
#   This can be used to force the client to perform work it would not normally
#   perform so soon.  The default is false.
#
# parallel::
#   How parallel to make the connections.  Parallelization is provided by forking
#   for each client to which to connect.  The default is 1, meaning serial execution.
#
# tag::
#   Specify a tag for selecting the objects to apply. Does not work with the
#   --test option.
#
#
# test::
#   Print the hosts you would connect to but do not actually connect. This
#   option requires LDAP support at this point.
#
# ping::
#
#   Do a ICMP echo against the target host. Skip hosts that don't respond to ping.
#
# = Example
#
#   sudo puppet kick -p 10 -t remotefile -t webserver host1 host2
#
# = Author
#
# Luke Kanies
#
# = Copyright
#
# Copyright (c) 2005 Puppet Labs, LLC
# Licensed under the GNU Public License

#Puppet::Application[:kick].run