Документация Chef на ресурсе bash содержит пример передачи данных атрибутов в скрипт. Вы должны иметь возможность адаптировать его к своим потребностям, например, с помощью сценария ожидания:
bash 'call main.sh and respond with attribute values' do
cwd ::File.dirname('/usr/local/bin')
code <<-EOH
#!/usr/bin/expect
set filename [lindex $argv 0]
set f [open $filename]
set inputs [split [read $f] "\n"]
# Below parameters i need to pass using chef attributes instead of expect inputs
lassign $inputs ADMIN_PASSWORD CREATE_USER USER_EMAIL FIRST_NAME LAST_NAME INST_PATH
#read -e -p "Enter the installation folder path(//): " FILEPATH3
#FILEPATH3=$(echo $FILEPATH3 | sed 's/ /\\ /')
spawn "$INST_PATH/main.sh"
expect "Enter system admin password:"
send "#{node['admin_password']\r"
expect "Create a new user y/n (y):"
send "#{node['create_user']}\r"
EOH
end
Было бы лучше, если бы main.sh
принимал аргументы командной строки, так как это значительно упростит работу вашего повара, Например:
bash 'run main.sh' do
cwd ::File.dirname('/usr/local/bin')
code <<-EOH
./main.sh --admin_password #{node['admin_password']} --create_user #{node['create_user']}
EOH
end
Вероятно, было бы еще проще, если бы main.sh был коротким, преобразовать сам сценарий в ресурс bash в Chef, как в других примерах выше.
Как видите, Chef не имеет какой-либо функции «ожидать» в ресурсе bash, поэтому вы по-прежнему придерживаетесь того же сценария ожидания, если только вы не можете переключиться на передачу значений в качестве аргументов командной строки или встроить свой основной сценарий. в ресурсе Chef (удалив интерактивные подсказки, когда вы это сделаете).
Наконец, если вы знаете достаточно Ruby для воспроизведения вашего main.sh, вы также можете сделать многое из этого изначально и полностью отказаться от использования ресурсов bash.
Вы не должны удалять /dev/ram0
самостоятельно. Он будет удален, когда вы выполните sudo rmmod brd
, что освободит место и удалит модуль. Затем вы можете начать снова с modprobe
.
Я не знаком с /dev/ram, но вы можете сделать что-то подобное с tmpfs и петлевыми устройствами:
mkdir /ramdisks
mount -t tmpfs tmpfs /ramdisks
dd if=/dev/zero of=/ramdisks/disk0 bs=1M count=100
losetup /dev/loop0 /ramdisks/disk0
mke2fs /dev/loop0
...
losetup -d /dev/loop0
rm /ramdisks/disk0