Ошибка конвейера кода AWS: скрипт в указанном месте: scripts / install_dependencies запускается как пользовательский оракул с кодом завершения 127 - PullRequest
0 голосов
/ 16 декабря 2018

У меня установлена ​​БД Oracle на экземпляре ec2, и я хочу запустить сценарий на этом сервере, чтобы всякий раз, когда я помещал сценарий в корзину s3, конвейер кода запускал и развертывал сценарий в экземплярах группы развертывания.у меня включено управление версиями S3, мой источник - S3, а развертывание - код развертывания

, но мой сценарий оболочки продолжает давать сбой из-за ошибки разрешения, sqlplus нужен сценарий для запуска от имени пользователя oracle, но он выдает следующую ошибку!

enter image description here Ниже приведен код внутри файла install_dependencies.sh:

rm -rf /oracle/backup/*
echo "oracle" | sudo -S sleep 2 && sudo su - oracle
sqlplus -s "/ as sysdba" <<EOF
whenever sqlerror exit sql.sqlcode;
set echo on;
set serveroutput on;

create table demo01 id(a number);
insert into demo01 values(1);
commit;

exit;
EOF

Код файла моего приложения:

version: 0.0
os: linux
files:
  - source: /db.dmp
    destination: /oracle/backup/
hooks:
  BeforeInstall:
    - location: scripts/install_dependencies
      timeout: 3000
      runas: oracle

IВы уже сделали запись для Oracle в файле / etc / sudoers, но она также не сработала.Итак, как я могу запустить скрипт оболочки от имени пользователя без полномочий root с помощью code-deploy-agent для ec2?

1 Ответ

0 голосов
/ 17 декабря 2018

проблема решена после того, как я обновил скрипт оболочки:

echo "oracle" | sudo -S sleep 2 && sudo su - oracle -c 'sqlplus / as sysdba'  <<EOF
whenever sqlerror exit sql.sqlcode;
set echo on;
set serveroutput on;
create table demo02 (a number);
insert into demo02 values(1);
commit;
exit;
EOF
...