Chef Recipe — интерактивные ответы для установки DropBox в Ubuntu

я новичок в шеф-поваре и пытаюсь научиться предоставлять ответы на сценарии установки через интерфейс командной строки. Мне не очень повезло, и я был бы признателен за помощь?

  bash 'DropboxInstall' do 
  user 'root'
  cwd  '/opt/dropbox'
  code <<-EOH
       dropbox start -i
       expect "Starting Dropbox...\rDropbox is the easiest way to share and store your files online. Want to learn more? Head to https://www.dropbox.com/\rIn order to use Dropbox, you must download the proprietary daemon. [y/n]"
       send "y\r"
       dropbox autostart y
  EOH
end

Ошибка, которую я получаю:

  * bash[DropboxInstall] action run[2018-04-23T07:47:53+00:00] INFO: Processing bash[DropboxInstall] action run (dropbox::default line 24)
[2018-04-23T07:47:53+00:00] DEBUG: Providers for generic bash resource enabled on node include: [Chef::Provider::Script]
[2018-04-23T07:47:53+00:00] DEBUG: Provider for action run on resource bash[DropboxInstall] is Chef::Provider::Script

    [execute] Starting Dropbox...dropbox: locating interpreter
              dropbox: logging to /tmp/dropbox-antifreeze-umikIQ
              dropbox: initializing
              dropbox: initializing python 2.7.11
              dropbox: setting program path '/root/.dropbox-dist/dropbox-lnx.x86_64-47.4.74/dropbox'
              dropbox: setting home path '/root/.dropbox-dist/dropbox-lnx.x86_64-47.4.74'
              dropbox: setting python path '/root/.dropbox-dist/dropbox-lnx.x86_64-47.4.74:/root/.dropbox-dist/dropbox-lnx.x86_64-47.4.74/python-packages-27.zip'
              dropbox: python initialized
              dropbox: running dropbox
              dropbox: setting args
              dropbox: applying overrides
              dropbox: running main script
              dropbox: load fq extension '/root/.dropbox-dist/dropbox-lnx.x86_64-47.4.74/cryptography.hazmat.bindings._constant_time.so'
              dropbox: load fq extension '/root/.dropbox-dist/dropbox-lnx.x86_64-47.4.74/cryptography.hazmat.bindings._openssl.so'
              dropbox: load fq extension '/root/.dropbox-dist/dropbox-lnx.x86_64-47.4.74/cryptography.hazmat.bindings._padding.so'
              dropbox: load fq extension '/root/.dropbox-dist/dropbox-lnx.x86_64-47.4.74/psutil._psutil_linux.so'
              dropbox: load fq extension '/root/.dropbox-dist/dropbox-lnx.x86_64-47.4.74/psutil._psutil_posix.so'
              dropbox: load fq extension '/root/.dropbox-dist/dropbox-lnx.x86_64-47.4.74/linuxffi.pthread._linuxffi_pthread.so'
              dropbox: load fq extension '/root/.dropbox-dist/dropbox-lnx.x86_64-47.4.74/tornado.speedups.so'
              dropbox: load fq extension '/root/.dropbox-dist/dropbox-lnx.x86_64-47.4.74/cpuid.compiled._cpuid.so'
              dropbox: load fq extension '/root/.dropbox-dist/dropbox-lnx.x86_64-47.4.74/linuxffi.resolv.compiled._linuxffi_resolv.so'
              dropbox: load fq extension '/root/.dropbox-dist/dropbox-lnx.x86_64-47.4.74/linuxffi.sys.compiled._linuxffi_sys.so'
              dropbox: load fq extension '/root/.dropbox-dist/dropbox-lnx.x86_64-47.4.74/posixffi.libc._posixffi_libc.so'
              dropbox: load fq extension '/root/.dropbox-dist/dropbox-lnx.x86_64-47.4.74/librsyncffi.compiled._librsyncffi.so'

Сценарий Chef завершает установку, но умирает, когда пытается выполнить «ожидание» из CLI:

              Dropbox is the easiest way to share and store your files online. Want to learn more? Head to https://www.dropbox.com/

              In order to use Dropbox, you must download the proprietary daemon. [y/n] Traceback (most recent call last):
                File "/usr/bin/dropbox", line 1404, in start
                  download()
                File "/usr/bin/dropbox", line 547, in download
                  if not yes_no_question("%s%s" % (WARNING, GPG_WARNING_MSG)):
                File "/usr/bin/dropbox", line 138, in yes_no_question
                  text = raw_input()
              EOFError: EOF when reading a line
              ****/tmp/chef-script20180423-29717-15l42km: line 2: expect: command not found
              /tmp/chef-script20180423-29717-15l42km: line 3: send: command not found****
[2018-04-23T07:48:54+00:00] INFO: bash[DropboxInstall] ran successfully
    - execute "bash"  "/tmp/chef-script20180423-29717-15l42km"

Я не сомневаюсь, что это я, но я немного почитал и не могу понять, как лучше всего справиться с этим. Похоже, когда он пытается выполнить сценарий bash, у него возникают проблемы, но я пытаюсь, и «cat /tmp/chef-script20180423-29717-15l42km» его там нет, поэтому я не уверен, как устранить эту проблему.

Заранее спасибо!


person Nathan    schedule 18.04.2018    source источник
comment
Вы обрезаете информацию об ошибке, прежде чем показать, что на самом деле не удалось.   -  person coderanger    schedule 18.04.2018
comment
Привет, спасибо за ответ, я обновил весь блок отладки. Любые идеи будут супер оценены.   -  person Nathan    schedule 23.04.2018
comment
Кроме того, имеет ли значение, что для использования Dropbox необходимо загрузить проприетарный демон. подсказка приходит ~ через 30 секунд? Спасибо!   -  person Nathan    schedule 23.04.2018
comment
Кажется, вы пытаетесь смешивать команды оболочки и ожидать команды? У вас есть сценарий bash, поэтому он запускает команды по порядку, а не в TTY.   -  person coderanger    schedule 24.04.2018
comment
Привет, кодрейнджер, спасибо! В итоге я немного схитрил и использовал expect и TCL. Судя по тому, что я прочитал, это не совсем лучший или рекомендуемый способ, но установщик Dropbox не имеет файла ответов или опции автоматической установки :-/ спасибо, приятель, я ценю это! Если это поможет кому-то еще, не стесняйтесь использовать:   -  person Nathan    schedule 06.05.2018