Commit 7dfb29f8 by Michael DeHaan

Merge pull request #2952 from mmoya/bug-fixes

Don't hardcode chroot path
parents e53a9e57 60f24bb0
...@@ -16,13 +16,11 @@ ...@@ -16,13 +16,11 @@
# 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/>.
import distutils.spawn
import traceback import traceback
import os import os
import pipes
import shutil import shutil
import subprocess import subprocess
import select
import fcntl
from ansible import errors from ansible import errors
from ansible import utils from ansible import utils
from ansible.callbacks import vvv from ansible.callbacks import vvv
...@@ -45,6 +43,10 @@ class Connection(object): ...@@ -45,6 +43,10 @@ class Connection(object):
if not utils.is_executable(chrootsh): if not utils.is_executable(chrootsh):
raise errors.AnsibleError("%s does not look like a chrootable dir (/bin/sh missing)" % self.chroot) 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.runner = runner
self.host = host self.host = host
# port is unused, since this is local # port is unused, since this is local
...@@ -62,12 +64,10 @@ class Connection(object): ...@@ -62,12 +64,10 @@ class Connection(object):
# We enter chroot as root so sudo stuff can be ignored # We enter chroot as root so sudo stuff can be ignored
chroot_cmd = '/usr/sbin/chroot'
if executable: if executable:
local_cmd = [chroot_cmd, self.chroot, executable, '-c', cmd] local_cmd = [self.chroot_cmd, self.chroot, executable, '-c', cmd]
else: 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) vvv("EXEC %s" % (local_cmd), host=self.chroot)
p = subprocess.Popen(local_cmd, shell=isinstance(local_cmd, basestring), p = subprocess.Popen(local_cmd, shell=isinstance(local_cmd, basestring),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment