¿Es posible utilizar el script esperado de Vagrantfile para el aprovisionamiento?
Parece que el archivo dentro del script installOracle.exp no está allí en el momento adecuado (consulte el registro de errores):
spawn "/var/wminst/vm_provision/oracle_installer/installOracleDatabase.sh"
¡El archivo está ahí! :)
[vagrant@wemdbc01 ~]$ ls -la /var/wminst/vm_provision/oracle_installer/installOracleDatabase.sh
-rwxrwxrwx. 1 vagrant vagrant 541 May 25 08:43 /var/wminst/vm_provision/oracle_installer/installOracleDatabase.sh
Parte relacionada de mi Vagrantfile:
[...]
db.vm.synced_folder ".", "/vagrant", disabled: true
db.vm.synced_folder "C:/Installers", "/var/wminst"
db.vm.provision :shell, :inline => "yum -y install expect"
db.vm.provision :shell, :inline => "expect /var/wminst/vm_provision/oracle_installer/installOracle.exp"
end
instalarOracle.exp:
#!/usr/bin/env expect
set timeout 20
spawn "/var/wminst/vm_provision/oracle_installer/installOracleDatabase.sh"
expect "replace Disk1/upgrade/gen_inst.sql?" { send "N\r" }
expect "Specify the HTTP port that will be used for Oracle Application Express" { send "\r" }
expect "Specify a port that will be used for the database listener" { send "\r" }
expect "initial configuration:" { send "root\r" }
expect "Confirm the password:" { send "root\r" }
expect "Do you want Oracle Database 11g Express Edition to be started on boot" { send "y\r" }
expect eof
expect eof
expect "Installation completed successfully." { send "\r" }
expect eof
Error:
==> wemdbc01: Running provisioner: shell...
wemdbc01: Running: inline script
==> wemdbc01: spawn /var/wminst/vm_provision/oracle_installer/installOracleDatabase.sh
==> wemdbc01: couldn't execute "/var/wminst/vm_provision/oracle_installer/installOracleDatabase.sh": no such file or directory
==> wemdbc01: while executing
==> wemdbc01: "spawn "/var/wminst/vm_provision/oracle_installer/installOracleDatabase.sh""
==> wemdbc01: (file "/var/wminst/vm_provision/oracle_installer/installOracle.exp" line 5)
The SSH command responded with a non-zero exit status. Vagrant
assumes that this means the command failed. The output for this command
should be in the log above. Please read the output to determine what
went wrong.
Edición 1: Cambiado:
#!/bin/bash
a
#!/usr/bin/env bash
Registro de errores ahora:
==> wemdbc01: Running provisioner: shell...
wemdbc01: Running: inline script
==> wemdbc01: spawn /var/wminst/vm_provision/oracle_installer/installOracleDatabase.sh
: No such file or directory bash
==> wemdbc01: expect: spawn id exp5 not open
==> wemdbc01: while executing
==> wemdbc01: "expect "Specify the HTTP port that will be used for Oracle Application Express" { send "\r" }"
==> wemdbc01: (file "/var/wminst/vm_provision/oracle_installer/installOracle.exp" line 8)
The SSH command responded with a non-zero exit status. Vagrant
assumes that this means the command failed. The output for this command
should be in the log above. Please read the output to determine what
went wrong.
Respuesta1
El script problemático se produjo en Windows, lo que significaba que tenía nuevas líneas de DOS. Esto provocó que el script no se ejecutara en la máquina virtual Unix.
Sin embargo, el hecho de que la VM se ejecute en Windows no es un problema.