commit 47d837fb540d5924356d27f45ca96c51b9565677 Author: Monty Taylor Date: Tue Apr 15 17:41:45 2014 -0700 Use ansible instead of direct ssh calls Instead of a shell script looping over ssh calls, use a simple ansible playbook. The benefit this gets is that we can then also script ad-hoc admin tasks either via playbooks or on the command line. We can also then get rid of the almost entirely unused salt infrastructure. Change-Id: I53112bd1f61d94c0521a32016c8a47c8cf9e50f7 diff --git a/ansible.cfg b/ansible.cfg new file mode 100644 index 0000000..6dccba0 --- /dev/null +++ b/ansible.cfg @@ -0,0 +1,3 @@ +[defaults] +hostfile=/usr/local/bin/puppet-inventory +log_path=/var/log/ansible.log diff --git a/puppet-inventory b/puppet-inventory new file mode 100755 index 0000000..0b991e0 --- /dev/null +++ b/puppet-inventory @@ -0,0 +1,30 @@ +#!/usr/bin/env python +# Copyright (c) 2014 Hewlett-Packard Development Company, L.P. +# +# 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. + +import json +import subprocess + +output = [ + x.split()[1][1:-1] for x in subprocess.check_output( + ["puppet","cert","list","-a"]).split('\n') + if x.startswith('+') +] + +data = { + '_meta': {'hostvars': dict()}, + 'ungrouped': output, +} +print json.dumps(data, sort_keys=True, indent=2) diff --git a/roles/puppet/tasks/main.yml b/roles/puppet/tasks/main.yml new file mode 100644 index 0000000..ffcf4b3 --- /dev/null +++ b/roles/puppet/tasks/main.yml @@ -0,0 +1,6 @@ +--- +- name: run puppet + command: timeout -s 9 30m puppet agent --onetime --ignorecache --no-daemonize --no-usecacheonfailure --no-splay --detailed-exitcodes --verbose + register: result + failed_when: "result.rc != 0 and result.rc != 2" + changed_when: "result.rc == 4 or result.rc == 6"