Setup module no longer saves to disk, as templates are mostly useful in playbooks and this allows lots of simplifications
around file pathing and removes occasional permissions conflicts depending on how things are used.
This commit is contained in:
parent
887d3993c4
commit
31d9111857
5 changed files with 6 additions and 129 deletions
25
fetch
25
fetch
|
@ -1,24 +1 @@
|
||||||
#!/usr/bin/python
|
# this is a virtual module that is entirely implemented server side
|
||||||
|
|
||||||
# (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
|
|
||||||
#
|
|
||||||
# This file is part of Ansible
|
|
||||||
#
|
|
||||||
# Ansible 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.
|
|
||||||
#
|
|
||||||
# Ansible 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 Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
### THIS FILE IS FOR REFERENCE OR FUTURE USE ###
|
|
||||||
|
|
||||||
# See lib/ansible/runner.py for implementation of the fetch functionality #
|
|
||||||
|
|
||||||
|
|
24
raw
24
raw
|
@ -1,23 +1 @@
|
||||||
#!/usr/bin/python
|
# this is a virtual module that is entirely implemented server side
|
||||||
|
|
||||||
# (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
|
|
||||||
#
|
|
||||||
# This file is part of Ansible
|
|
||||||
#
|
|
||||||
# Ansible 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.
|
|
||||||
#
|
|
||||||
# Ansible 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 Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
# hey the Ansible raw module isn't really a remote transferred
|
|
||||||
# module. All the magic happens in Runner.py, see the web docs
|
|
||||||
# for more details.
|
|
||||||
|
|
||||||
|
|
52
setup
52
setup
|
@ -17,8 +17,6 @@
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
DEFAULT_ANSIBLE_SETUP = "/etc/ansible/setup"
|
|
||||||
|
|
||||||
import array
|
import array
|
||||||
import fcntl
|
import fcntl
|
||||||
import glob
|
import glob
|
||||||
|
@ -33,11 +31,6 @@ import subprocess
|
||||||
import traceback
|
import traceback
|
||||||
import syslog
|
import syslog
|
||||||
|
|
||||||
try:
|
|
||||||
from hashlib import md5 as _md5
|
|
||||||
except ImportError:
|
|
||||||
from md5 import md5 as _md5
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import selinux
|
import selinux
|
||||||
HAVE_SELINUX=True
|
HAVE_SELINUX=True
|
||||||
|
@ -316,20 +309,6 @@ def ansible_facts():
|
||||||
get_service_facts(facts)
|
get_service_facts(facts)
|
||||||
return facts
|
return facts
|
||||||
|
|
||||||
def md5(filename):
|
|
||||||
''' Return MD5 hex digest of local file, or None if file is not present. '''
|
|
||||||
if not os.path.exists(filename):
|
|
||||||
return None
|
|
||||||
digest = _md5()
|
|
||||||
blocksize = 64 * 1024
|
|
||||||
infile = open(filename, 'rb')
|
|
||||||
block = infile.read(blocksize)
|
|
||||||
while block:
|
|
||||||
digest.update(block)
|
|
||||||
block = infile.read(blocksize)
|
|
||||||
infile.close()
|
|
||||||
return digest.hexdigest()
|
|
||||||
|
|
||||||
# ===========================================
|
# ===========================================
|
||||||
|
|
||||||
# load config & template variables
|
# load config & template variables
|
||||||
|
@ -355,21 +334,6 @@ except:
|
||||||
syslog.openlog('ansible-%s' % os.path.basename(__file__))
|
syslog.openlog('ansible-%s' % os.path.basename(__file__))
|
||||||
syslog.syslog(syslog.LOG_NOTICE, 'Invoked with %s' % setup_options)
|
syslog.syslog(syslog.LOG_NOTICE, 'Invoked with %s' % setup_options)
|
||||||
|
|
||||||
ansible_file = os.path.expandvars(setup_options.get('metadata', DEFAULT_ANSIBLE_SETUP))
|
|
||||||
ansible_dir = os.path.dirname(ansible_file)
|
|
||||||
|
|
||||||
# create the config dir if it doesn't exist
|
|
||||||
|
|
||||||
if not os.path.exists(ansible_dir):
|
|
||||||
os.makedirs(ansible_dir)
|
|
||||||
|
|
||||||
changed = False
|
|
||||||
md5sum = None
|
|
||||||
if not os.path.exists(ansible_file):
|
|
||||||
changed = True
|
|
||||||
else:
|
|
||||||
md5sum = md5(ansible_file)
|
|
||||||
|
|
||||||
# Get some basic facts in case facter or ohai are not installed
|
# Get some basic facts in case facter or ohai are not installed
|
||||||
for (k, v) in ansible_facts().items():
|
for (k, v) in ansible_facts().items():
|
||||||
setup_options["ansible_%s" % k] = v
|
setup_options["ansible_%s" % k] = v
|
||||||
|
@ -409,23 +373,7 @@ if os.path.exists("/usr/bin/ohai"):
|
||||||
k2 = "ohai_%s" % k
|
k2 = "ohai_%s" % k
|
||||||
setup_options[k2] = v
|
setup_options[k2] = v
|
||||||
|
|
||||||
# write the template/settings file using
|
|
||||||
# instructions from server
|
|
||||||
|
|
||||||
f = open(ansible_file, "w+")
|
|
||||||
reformat = json.dumps(setup_options, sort_keys=True, indent=4)
|
|
||||||
f.write(reformat)
|
|
||||||
f.close()
|
|
||||||
|
|
||||||
md5sum2 = md5(ansible_file)
|
|
||||||
|
|
||||||
if md5sum != md5sum2:
|
|
||||||
changed = True
|
|
||||||
|
|
||||||
setup_result = {}
|
setup_result = {}
|
||||||
setup_result['written'] = ansible_file
|
|
||||||
setup_result['changed'] = changed
|
|
||||||
setup_result['md5sum'] = md5sum2
|
|
||||||
setup_result['ansible_facts'] = setup_options
|
setup_result['ansible_facts'] = setup_options
|
||||||
|
|
||||||
# hack to keep --verbose from showing all the setup module results
|
# hack to keep --verbose from showing all the setup module results
|
||||||
|
|
9
shell
9
shell
|
@ -1,6 +1,3 @@
|
||||||
# VIRTUAL
|
# There is actually no actual shell module source, when you use 'shell' in ansible,
|
||||||
|
# it runs the 'command' module with special arguments and it behaves differently.
|
||||||
There is actually no actual shell module source, when you use 'shell' in ansible,
|
# See the command source and the comment "#USE_SHELL".
|
||||||
it runs the 'command' module with special arguments and it behaves differently.
|
|
||||||
See the command source and the comment "#USE_SHELL".
|
|
||||||
|
|
||||||
|
|
25
template
25
template
|
@ -1,24 +1 @@
|
||||||
#!/usr/bin/python
|
# this is a virtual module that is entirely implemented server side
|
||||||
|
|
||||||
# (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
|
|
||||||
#
|
|
||||||
# This file is part of Ansible
|
|
||||||
#
|
|
||||||
# Ansible 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.
|
|
||||||
#
|
|
||||||
# Ansible 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 Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
# hey the Ansible template module isn't really a remote transferred
|
|
||||||
# module. All the magic happens in Runner.py making use of the
|
|
||||||
# copy module, and if not running from a playbook, also the 'slurp'
|
|
||||||
# module.
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue