fix: use build_exec_command to execute as nonroot
parent
bb81a7bb11
commit
4ebd4a6efe
|
@ -73,10 +73,7 @@ class Connection(ConnectionBase):
|
||||||
except ValueError:
|
except ValueError:
|
||||||
raise AnsibleError("lxc command not found in PATH")
|
raise AnsibleError("lxc command not found in PATH")
|
||||||
|
|
||||||
if self._play_context.remote_user is not None and self._play_context.remote_user != self.default_user:
|
self._play_user = self._play_context.remote_user or self.default_user
|
||||||
self._play_user = self._play_context.remote_user
|
|
||||||
else:
|
|
||||||
self._play_user = self.default_user
|
|
||||||
|
|
||||||
def _host(self):
|
def _host(self):
|
||||||
""" translate remote_addr to lxd (short) hostname """
|
""" translate remote_addr to lxd (short) hostname """
|
||||||
|
@ -90,10 +87,16 @@ class Connection(ConnectionBase):
|
||||||
self._display.vvv(f"ESTABLISH LXD CONNECTION FOR USER: {self._play_user}", host=self._host())
|
self._display.vvv(f"ESTABLISH LXD CONNECTION FOR USER: {self._play_user}", host=self._host())
|
||||||
self._connected = True
|
self._connected = True
|
||||||
|
|
||||||
|
def _build_exec_command(self, cmd):
|
||||||
|
""" build the command to execute """
|
||||||
|
if self._play_user != "root":
|
||||||
|
cmd = f"su {self._play_user} {cmd}"
|
||||||
|
return cmd
|
||||||
|
|
||||||
def exec_command(self, cmd, in_data=None, sudoable=True):
|
def exec_command(self, cmd, in_data=None, sudoable=True):
|
||||||
""" execute a command on the lxd host """
|
""" execute a command on the lxd host """
|
||||||
if self._play_user:
|
|
||||||
cmd = f"sudo -u {self._play_user} {cmd}"
|
cmd = self._build_exec_command(cmd)
|
||||||
super(Connection, self).exec_command(cmd, in_data=in_data, sudoable=sudoable)
|
super(Connection, self).exec_command(cmd, in_data=in_data, sudoable=sudoable)
|
||||||
|
|
||||||
self._display.vvv(f"EXEC {cmd}", host=self._host())
|
self._display.vvv(f"EXEC {cmd}", host=self._host())
|
||||||
|
|
Loading…
Reference in New Issue