Merge pull request #2952 from mmoya/bug-fixes

Don't hardcode chroot path
This commit is contained in:
Michael DeHaan 2013-05-18 17:13:17 -07:00
commit 7dfb29f8f9

View file

@ -16,13 +16,11 @@
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
import distutils.spawn
import traceback
import os
import pipes
import shutil
import subprocess
import select
import fcntl
from ansible import errors
from ansible import utils
from ansible.callbacks import vvv
@ -45,6 +43,10 @@ class Connection(object):
if not utils.is_executable(chrootsh):
raise errors.AnsibleError("%s does not look like a chrootable dir (/bin/sh missing)" % self.chroot)
self.chroot_cmd = distutils.spawn.find_executable('chroot')
if not self.chroot_cmd:
raise errors.AnsibleError("chroot command not found in PATH")
self.runner = runner
self.host = host
# port is unused, since this is local
@ -62,12 +64,10 @@ class Connection(object):
# We enter chroot as root so sudo stuff can be ignored
chroot_cmd = '/usr/sbin/chroot'
if executable:
local_cmd = [chroot_cmd, self.chroot, executable, '-c', cmd]
local_cmd = [self.chroot_cmd, self.chroot, executable, '-c', cmd]
else:
local_cmd = '%s "%s" %s' % (chroot_cmd, self.chroot, cmd)
local_cmd = '%s "%s" %s' % (self.chroot_cmd, self.chroot, cmd)
vvv("EXEC %s" % (local_cmd), host=self.chroot)
p = subprocess.Popen(local_cmd, shell=isinstance(local_cmd, basestring),