On 07.08.2014 23:35, Michael DeHaan wrote:
"I'm putting it in ansible_ssh_host like this:
some_container ansible_connection=vzenter ansible_ssh_host=<SSH host>|<CTID>"

Maybe like this:

ansible_ssh_host=hostname;container=CTID
I like that syntax, thanks. I'm thinking about doing something like:
ansible_connection=stack ansible_ssh_host=<connection plugin>=<hostname for that plugin>;<connection layer>=<"hostname" for that layer>

If that could be implemented natively in Ansible's SSH.py, without doing too much damage, I would be SUPER interested.
I don't think ssh.py (or any other specific connection plugin) is a good place for this, I think it should rather be done as separate plugin or in core. That's because I'd like to see the same layers used with local/ssh/accelerate.

I'd like to see something somewhat pluggable, and in order to take it, it would need to support Docker initially.
Right, as Ansible already has a plugin system I think that should be doable :-) And being pluggable is a big part of it for me - I don't want to have separate plugin for each base plugin/layer combination.

Though I do feel the "no SSH in containers" statement is a little religious. They want to encourage automation, but when the automation uses SSH, that's totally cool :)
For me it was either jump hosts or entering containers, and the latter seemed more robust (I can access containers with broken networking :-))



On Thu, Aug 7, 2014 at 3:57 PM, Tomasz Kontusz <[email protected] <mailto:[email protected]>> wrote:

    On 07.08.2014 17:47, Alberto Berti wrote:

        Hi,

        sorry for the confusing precendence of my latter message, but
        seems that
        this  message had some problems with gmane, so i'm resending
        it....

                            "Tomasz" == Tomasz Kontusz
                            <[email protected]
                            <mailto:[email protected]>> writes:

             Tomasz> On 04.08.2014 12:14, Filias Heidt wrote:
             >> I thought the more generic "nesting" would be a good
        thing, because
             >> the next guy might want to control Docker instances or
        Containers on
             >> a remote host without them having a public IP. Maybe
        I'll try to
             >> write a connection plugin.
             Tomasz> The way connection plugins work, it's not going
        to be possible to nest
             Tomasz> existing ones.
             Tomasz> But what you can do is, create a new API for
        "connection plugin
             Tomasz> layers" that can be put on top of an existing
        "base" connection
             Tomasz> plugin.
             Tomasz> Something like:

             Tomasz> class ConnectionLayer(object):
             Tomasz>     def __init__(self, target_address):
             Tomasz>         """target_address is a part of
        ansible_ssh_host for this
             Tomasz> plugin, like jail's path"""

             Tomasz>     def wrap_command(self, command):
             Tomasz>         """Wraps the command in chroot/jail/etc."""

             Tomasz>     def unwrap_result(self, rc, stdout, stderr):
             Tomasz>         """Takes whatever the wrapped command
        returned after being run
             Tomasz> by the base connection plugin,
             Tomasz>         and returns a new tuple of (rc, stdout,
        stderr)"""

             Tomasz>     def wrap_path(self, path):
             Tomasz>         """Takes a path inside
        container/chroot/jail and translates it
             Tomasz> into host path."""

        any update on this? I would like to use nsenter [1]_ to run
        commands
        inside the container (how to transfer files is a detail i have
        yet to
        analyze) to work on docker containers either locally or on a
        remote
        host, and i would really like to contribute to and use a layer
        like
        this. Unfortunately i'm quite new to ansible and not all the
        details
        involving connections are clear to me.

    I'll see what I can do, but I wouldn't hold my breath about
    opening the one I wrote at work.
    And hey, it's always a good time to rewrite something :-)


                Tomasz> I would actually like to see something like
        this, as I've written a
             Tomasz> OpenVZ-over-SSH connection plugin at work (and I
        can already give you
             Tomasz> a hint: don't try to put host address anywhere
        but ansible_ssh_host,
             Tomasz> this variable gets special treatment. I've tried
        to have separate
             Tomasz> ansible_vzenter_ctid, and in the end had to
        rewrite that part).

        Nice! openvz is the other virtualization system i use :-)

        So, where you store the ctid? in to so other host related
        variable? Can
        you say more about having something like a variable
        ansible_vzenter_ctid
        is not feasible?

    I'm putting it in ansible_ssh_host like this:
    some_container ansible_connection=vzenter ansible_ssh_host=<SSH
    host>|<CTID>

    Using variable other than ansible_ssh_host is not feasible, as
    they are not provided to connection plugins.
    You can extract them from runner (as connection plugins do get
    access to runner), but you can't support the delegate_to: '{{ item
    }}' pattern this way (as you don't get access to loop items).

        Cheers,

        Alberto


-- You received this message because you are subscribed to the Google
    Groups "Ansible Project" group.
    To unsubscribe from this group and stop receiving emails from it,
    send an email to [email protected]
    <mailto:ansible-project%[email protected]>.
    To post to this group, send email to
    [email protected]
    <mailto:[email protected]>.
    To view this discussion on the web visit
    
https://groups.google.com/d/msgid/ansible-project/53E3DA41.7050904%40gmail.com.


    For more options, visit https://groups.google.com/d/optout.


--
You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected] <mailto:[email protected]>. To post to this group, send email to [email protected] <mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/CA%2BnsWgwx54dt5OAZOyU4ZG28JeTwgvKw6cffGAUtAWiScbZiuw%40mail.gmail.com <https://groups.google.com/d/msgid/ansible-project/CA%2BnsWgwx54dt5OAZOyU4ZG28JeTwgvKw6cffGAUtAWiScbZiuw%40mail.gmail.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Ansible 
Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/53E3F519.2030501%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to