Module: QB::Util::STDIO

Defined in:
lib/qb/util/stdio.rb

Overview

TODO:

stdin support is pretty experimental / broken at this point. That would be nice to fix in the future so that programs that make use of user interaction work seamlessly through QB. This will probably require using pseudo-TTY streams or whatever.

Note:

This feature only works for localhost. I have no idea what it will do in other cases. It doesn't seem like it should break anything, but remotely executing modules definitely won't be able to connect to the sockets on the host.

Utilities for QB's standard-IO (stdio) handling feature.

Normally, Ansible modules can't really do much with stdio - they return results by writing JSON to stdout, can't do anything useful with stdin, and I think things written to stderr don't go anywhere useful.

This makes dealing with logging, error reporting and wrapping executables that report useful progress info to stdout or stderr pretty shitty.

So, what we do is create streaming sockets for stdout, stderr and stdin in the QB process and write their paths to environment variables, which will be available to modules.

Ansible::Module automatically detects these variables and sets up $stdout, $stderr and $stdin to point to the sockets, which proxy back to the QB process' stdio.

Of course other modules written in any language can also connect to these file sockets in the same manner.

Defined Under Namespace

Classes: InService, OutService, Service

Constant Summary collapse

SOCKET_DIR =

Constants

Pathname.new('/').join 'tmp', 'qb-stdio'