From e8e201cc75a691871c05ea1e058ef14a62e85755 Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Wed, 24 Feb 2016 13:05:23 -0600 Subject: [PATCH] Add a playbook and script for doing adhoc puppet Running puppet remotely in an ad-hoc manner on disabled hosts is mildly complex. To facilitate, have a wide open playbook that we always run with --limit - and a shell script to help us type less. Change-Id: I629072dcada38d0465d351b1b99828466405372f --- doc/source/puppet.rst | 8 ++++---- playbooks/remote_puppet_adhoc.yaml | 5 +++++ tools/kick.sh | 18 ++++++++++++++++++ 3 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 playbooks/remote_puppet_adhoc.yaml create mode 100755 tools/kick.sh diff --git a/doc/source/puppet.rst b/doc/source/puppet.rst index aa4e6f6cb2..c5b10ad7ae 100644 --- a/doc/source/puppet.rst +++ b/doc/source/puppet.rst @@ -117,14 +117,14 @@ puppetmaster, running: .. code-block:: bash - ansible-playbook --limit='$HOST:localhost' /opt/system-config/production/playbooks/remote_puppet_else.yaml + ansible-playbook --limit='$HOST:localhost' /opt/system-config/production/playbooks/remote_puppet_adhoc.yaml -as root, where `$HOST` is the host you want to run puppet on. If you are -working with git, gerrit or afs servers, you'll want to replace -`remote_puppet_else.yaml` with the appropriate specific playbook. +as root, where `$HOST` is the host you want to run puppet on. The `:localhost` is important as some of the plays depend on performing a task on the localhost before continuing to the host in question, and without it in the limit section, the tasks for the host will have undefined values. +There is also a script, `tools/kick.sh` that takes the host as an argument +and runs the above command. Testing new puppet code can be done via `puppet apply --noop` or by constructing a VM with a puppet install in it and just running `puppet apply` diff --git a/playbooks/remote_puppet_adhoc.yaml b/playbooks/remote_puppet_adhoc.yaml new file mode 100644 index 0000000000..7ec8766b17 --- /dev/null +++ b/playbooks/remote_puppet_adhoc.yaml @@ -0,0 +1,5 @@ +- hosts: '*' + gather_facts: true + roles: + - role: puppet + manage_config: true diff --git a/tools/kick.sh b/tools/kick.sh new file mode 100755 index 0000000000..b7dd7d69c1 --- /dev/null +++ b/tools/kick.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# Copyright 2013 IBM, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +ansible-playbook -f1 --limit $1:localhost \ + /opt/system-config/production/playbooks/remote_puppet_adhoc.yaml