Eu tentaria ignorar o Continue with Installation?
e apenas correspondesse na linha [y/N]
.
substitua (^Con[^\n]*\n+[^\n]*)+: "y"
por 'y/N' : 'y'
Ansible usa o módulo pexpect que nem sempre faz o que você esperaria. Por exemplo, o EOL é '\r\n'
, não '\n'
.
Veja os documentos aqui .
Aqui está um teste rápido:
/root/junk.sh
echo 'Enter the Agent profile name'
read -p "Agent Profile Name: " AGENT_PROFILE_NAME
echo $AGENT_PROFILE_NAME > junk.dat
echo "Continue with installation"
read -p "[y/N] : " CONFIRM
echo $CONFIRM >> junk.dat
play:
- expect:
command: sh /root/junk.sh
responses:
'Profile Name' : "oook"
'y/N' : 'y'
Aqui está uma maneira mais fácil de fazer isso sem usar esperar.
Se você observar o script agentadmin.sh, verá que as respostas a todas as perguntas são armazenadas em variáveis de ambiente, por exemplo
while [ -z ${OPENAM_URL} ]; do
Se você pré-definir todos eles no seção de ambiente do seu manual de jogo o script deve ser executado sem qualquer intervenção do usuário. Não há necessidade de esperar.
Então, algo como:
environment:
OPENAM_URL: whatever_1
AGENT_PROFILE_NAME: whatever_2
AGENT_PASSWORD: whatever_3
CONFIRM: y
- shell: /opt/nginx_agent/bin/agentadmin.sh