Verwenden Sie für die Bereitstellung ein Expect-Skript aus Vagrantfile - Problem mit nicht vorhandener Datei während der Ausführung

Verwenden Sie für die Bereitstellung ein Expect-Skript aus Vagrantfile - Problem mit nicht vorhandener Datei während der Ausführung

Ist es möglich, für die Bereitstellung ein Expect-Skript aus Vagrantfile zu verwenden?

Es sieht so aus, als ob die Datei im Skript installOracle.exp zum richtigen Zeitpunkt nicht vorhanden ist (siehe Fehlerprotokoll):

spawn "/var/wminst/vm_provision/oracle_installer/installOracleDatabase.sh"

Die Datei ist da!:)

[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

Zugehöriger Teil meiner Vagrant-Datei:

  [...]
  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

installOracle.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

Fehler:

==> 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.

Bearbeitung 1: Geändert:

#!/bin/bash

Zu

#!/usr/bin/env bash

Fehlerprotokoll jetzt:

==> 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.

Antwort1

Das problematische Skript wurde unter Windows erstellt, was bedeutete, dass es DOS-Zeilenumbrüche enthielt. Dies führte dazu, dass die Ausführung des Skripts auf der Unix-VM fehlschlug.

Die Tatsache, dass die VM unter Windows läuft, ist jedoch kein Problem.

verwandte Informationen