After some digging today, I see that Ansible's expect module is actually a hook into the relatively limited python pexpect module, which itself doesn't support the additional features you need.

However, the doc for Ansible's shell module includes an example of calling the "real" expect, and /that/ lets you do lots of things, like "sleep 5". There's also "-s" (slow mode) and "-h" (slow like a human mode). I /expect/ (ahem) that would be a better place to spend your time.


On 12/7/22 5:59 AM, Todd Lewis wrote:
In that case, you should start with the existing expect module and add the desired delay functionality. That would be far simpler than creating a worthwhile module from scratch. And you could contribute your changes so we would all benefit from your efforts.

As for the different login scenarios, that's a challenge I'm sure someone has risen to before. I still think expect is your best choice.

On 12/6/22 10:58 PM, Phillip Wu wrote:
Thanks to All!

Yes you're right...I have been using Expect part of Ansible to interact with IRIS on the remote host previously.

However there is a timing problem sometimes and with the Expect module of Ansible you cannot change the delay before sending as far as I can see.

Also in my case sometimes some of my IRIS servers ask me to sign in and some use OS authentication and Ansible Expect gets rather difficult when it's conversation changes

If anyone is interested when using module you do not need to ssh into the remote host as this is done for you without adding any configuration or code changes

On Wed, Dec 7, 2022 at 4:23 AM Todd Lewis <[email protected]> wrote:

    I was hoping someone with IRIS DB experience in Ansible would
    answer by now, because I don't want to mislead you. However, it
    looks to me like everything you're doing below could be done
    through the "expect" module.
    --
    Todd

    On 12/5/22 5:48 PM, phillip.from.oz wrote:
    Thanks to all.

    This is what I'm doing:
    Playbook:
    ---
    - name: Connect to remote IRIS DB
      hosts: localhost
      tasks:
        - name: using my custom module
          IRIS:                     <-- New Module
            name: superuser
            password: secret
            instance: SCR
            namespace: WORK
            commands:
              - w !,”Hello”
              - w !,”World”
          register: result
       - name: show output
          debug:
            var: result

    This is the logic:
    ssh localhost
    iris session “{{instance}}” -U "{{namespace}}"   <- connecting
    to IRIS DB
    username: "{{name}}"             <- send variable name when
    username prompt
    password: "{{password}}"          < - send variable password
    when password prompt
    >“{{commands[0]}}”                  < - send variable command
    when > prompt
    >“{{commands[1]}}”
    H




    On Monday, December 5, 2022 at 10:47:21 PM UTC+11 Michael
    Ströder wrote:

        On 12/5/22 09:23, phillip.from.oz wrote:
        > When writing Ansible custom module, how is the code
        (python) connect to
        > the remote host?
        >
        > Is it the code of the Ansible custom module responsible
        for ssh to the
        > remote host?

        No, for most modules.

        I'd recommend that you describe what you're trying to achieve.

        Ciao, Michael.


--
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/f706c601-f0ba-8572-e3da-6419273b29b0%40gmail.com.

Reply via email to