Мне трудно написать ANSI-скрипт для установки JsReport на CentOS 7.
Я пытаюсь перевести эти операции:
https://jsreport.net/learn/centos
в ответный сценарий.
То, что я пробовал до сих пор:
- hosts: localhost
tasks:
- name: install wget
yum:
name: wget
state: latest
- name: download nvm
get_url: url=https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh dest=/opt/nvm-install.sh
- name: Changing perm of "/opt/nvm-install.sh", adding "+x"
file: dest=/opt/nvm-install.sh mode=a+x
- name: Execute the script
command: sh /opt/nvm-install.sh
- name: Changing perm of "~/.nvm/nvm.sh", adding "+x"
file: dest=~/.nvm/nvm.sh mode=a+x
- name: Make nvm command work in current terminal, Install node and set version, npm install jsreport-cli
shell: |
source ~/.nvm/nvm.sh
nvm install 8.11.3
npm install jsreport-cli -g
mkdir jsreportapp
jsreportapp
jsreport init
jsreport configure
- name: download install-google-chrome.sh
get_url: url=https://intoli.com/install-google-chrome.sh dest=/opt/install-google-chrome.sh
- name: Changing perm of "/opt/install-google-chrome.sh", adding "+x"
file: dest=/opt/install-google-chrome.sh mode=a+x
- name: Execute the script
command: sh /opt/install-google-chrome.sh
Обычно я запускаю ansible скрипты с помощью следующей команды:
sudo ansible-playbook install_jsreport.yml
Я не уверен, что хорошей практикой является использование sudo
здесь, или я должен использовать shell
здесь?
В приведенном выше скрипте я получаю следующую ошибку:
фатально: [localhost]: СБОЙ! => {"change": true, "cmd": "source ~ / .nvm / nvm.sh \ n nvm install 8.11.3 \ n npm install jsreport-cli -g \ n
mkdir jsreportapp \ n jsreportapp \ n jsreport init \ n jsreport configure ",
"delta": "0: 01: 03.627957", "end": "2019-04-19 15: 22: 26.374742", "msg":
«ненулевой код возврата», «rc»: -2, «start»: «2019-04-19
15: 21: 22.746785 "," stderr ":" v8.11.3 уже установлена. \ Nmkdir:
невозможно создать каталог "jsreportapp": файл существует \ n / bin / sh: строка 4:
jsreportapp: команда не найдена \ nНеожиданная ошибка: команда
ошибка: npm i -S jsreport \ nsh: узел: команда не найдена \ nnpm ПРЕДУПРЕЖДЕНИЕ
pdfjs-dist@2.0.489 требует однорангового узла webpack@^2.0.0 || ^ 3.0.0 но
ни один не установлен. Вы должны установить одноранговые зависимости самостоятельно. \ Nnpm
WARN worker-loader@1.1.1 требует однорангового webpack@^2.0.0 || ^ 3.0.0
|| ^ 4.0.0 но ни один не установлен. Вы должны установить одноранговые зависимости
себя. \ nnpm WARN jsreport-server @ Нет описания \ nnpm WARN
jsreport-server @ Нет поля репозитория. \ nnpm ПРЕДУПРЕЖДЕНИЕ jsreport-server @ No
поле лицензии. \ nnpm ПРЕДУПРЕЖДЕНИЕ необязательно Пропуск ОПЦИОНАЛЬНАЯ ЗАВИСИМОСТЬ:
fsevents@1.2.8 (node_modules / fsevents): \ nnpm WARN notsup Пропуск
ДОПОЛНИТЕЛЬНАЯ ЗАВИСИМОСТЬ: неподдерживаемая платформа для fsevents@1.2.8: требуется
{\ "os \": \ "darwin \", \ "arch \": \ "any \"} (текущий:
{\ "os \": \ "linux \", \ "arch \": \ "x64 \"}) \ n \ nnpm ERR! файл sh \ nnpm ERR!
код ELIFECYCLE \ nnpm ERR! errno ENOENT \ nnpm ERR! порождение системного вызова \ nnpm
ERR! puppeteer@1.12.2 установить: node install.js
\ nnpm ERR! порождать
ENOENT \ nnpm ERR! \ nnpm ERR! Ошибка при установке puppeteer@1.12.2
скрипт. \ nnpm ERR! Это, вероятно, не проблема с npm. Есть
Вероятно, дополнительные записи журнала выше. \ n \ nnpm ERR! Полный журнал
этот прогон можно найти в: \ nnpm ERR!
/root/.npm/_logs/2019-04-19T13_22_24_770Z-debug.log\n (1). \ ncaused by
ошибка (1) -> мета =
{\ "kill \": false, \ "code \": 1, \ "signal \": null, \ "cmd \": \ "npm i -S
jsreport \ "}, stack = Ошибка: \ n в ChildProcess.exithandler
(child_process.js: 275: 12) \ n в emitTwo (events.js: 126: 13) \ n в
ChildProcess.emit (events.js: 214: 7) \ n в MaybeClose
(internal / child_process.js: 925: 16) \ n в
Process.ChildProcess._handle.onexit
(internal / child_process.js: 209: 5) "," stderr_lines ": [" v8.11.3 is
уже установлен. "," mkdir: не может создать каталог "jsreportapp":
Файл существует "," / bin / sh: строка 4: jsreportapp: команда не найдена ",
«Произошла непредвиденная ошибка: сбой команды: npm i -S jsreport», «sh:
узел: команда не найдена "," npm WARN pdfjs-dist@2.0.489 требует однорангового узла
webpack@^2.0.0 || ^ 3.0.0 но ни один не установлен. Вы должны установить
сами по себе. "," npm WARN worker-loader@1.1.1 требует
пэр webpack@^2.0.0 || ^ 3.0.0 || ^ 4.0.0 но ни один не установлен. Вы
Вы должны установить одноранговые зависимости самостоятельно. "," npm WARN jsreport-server @
Нет описания "," npm WARN jsreport-server @ Нет поля репозитория. ",
"npm WARN jsreport-server @ Нет поля лицензии.", "npm WARN необязательно
Пропуск необязательной зависимости: fsevents@1.2.8
(node_modules / fsevents): "," npm WARN notsup Пропуск необязательно
ЗАВИСИМОСТЬ: неподдерживаемая платформа для fsevents@1.2.8: требуется
{\ "os \": \ "darwin \", \ "arch \": \ "any \"} (текущий:
{\ "os \": \ "linux \", \ "arch \": \ "x64 \"}) "," "," npm ERR! файл sh "," npm
ERR! код ELIFECYCLE "," npm ERR! errno ENOENT "," npm ERR! Системный вызов
spawn "," npm ERR! puppeteer@1.12.2 установить: node install.js
"," npm
ERR! spawn ENOENT "," npm ERR! "," npm ERR! Не удалось на
puppeteer@1.12.2 установить скрипт. "," npm ERR! Это, вероятно, не
probleм с нпм.Скорее всего, выше выводится логирование. "," "," Npm ERR!Полный журнал этого прогона можно найти в: "," npm ERR!/root/.npm/_logs/2019-04-19T13_22_24_770Z-debug.log "," (1)."," вызвано ошибкой (1) -> meta = {\ "kill \": false, \ "code \": 1, \ "signal \": null, \ "cmd \": \ "npm i -Sjsreport \ "}, stack = Error:", "at ChildProcess.exithandler (child_process.js: 275: 12)", "at emitTwo (events.js: 126: 13)", "
at ChildProcess.emit (events.js: 214: 7) "," at MaybeClose (internal / child_process.js: 925: 16) "," at Process.ChildProcess._handle.onexit (internal / child_process.js: 209: 5) "],"stdout ":" Теперь используется узел v8.11.3 (npm v5.6.0) \ n / root / .nvm / версии / node / v8.11.3 / bin / jsreport -> /root/.nvm/versions/node/v8.11.3/lib/node_modules/jsreport-cli/cli.js\n+ jsreport-cli@2.0.6 \ nadded 333 пакета в 16.187s \ njsreport Установка не найдена, установка последней версии jsreport сейчас, подождите немного ... \ n?Вы хотите включить веб-сервер?(Да / Нет) \ u001b [42D \ u001b [42C "," stdout_lines ": [" Теперь используется узел v8.11.3 (npm v5.6.0) "," /root/.nvm/versions/node/v8.11.3/bin / jsreport -> /root/.nvm/versions/node/v8.11.3/lib/node_modules/jsreport-cli/cli.js "," + jsreport-cli@2.0.6 "," добавил 333 пакета в 16.187 с."," Установка jsreport не найдена, установка последней версии jsreport, подождите ... ","?Вы хотите включить веб-сервер?(Да / Нет) \ u001b [42D \ u001b [42C "]}
РЕДАКТИРОВАТЬ (относительно ответа жаворонка):
ЗАДАЧА [initкаталог jsreportapp] ************************************************************************************************************* роковая: [localhost]: FAILED! => {"change": true, "cmd": ".~ / .nvm / nvm.sh \ n jsreport init "," delta ":" 0: 00: 46.367234 "," end ":" 2019-04-23 10: 12: 46.142142 "," msg ":" non-нулевой код возврата "," rc ": 1," start ":" 2019-04-23 10: 11: 59.774908 "," stderr ":" Произошла непредвиденная ошибка: команда не выполнена: npm i -S jsreport \ nsh: узел:команда не найдена \ nnpm ПРЕДУПРЕЖДЕНИЕ pdfjs-dist@2.0.489 требуется одноранговый узел webpack@^2.0.0 ||^ 3.0.0 но ни один не установлен.Вы должны установить одноранговые зависимости самостоятельно. \ Nnpm WARN worker-loader@1.1.1 требует однорангового узла webpack@^2.0.0 ||^ 3.0.0 ||^ 4.0.0 но ни один не установлен.Вы должны сами установить зависимости между равноправными узлами. \ Nnpm ПРЕДУПРЕЖДЕНИЕ jsreport-server @ Нет описания \ nnpm WARN jsreport-server @ Нет поля репозитория. \ Nnpm WARN jsreport-server @ Нет поля лицензии. \ Nnpm WARN необязательно ПЕРЕДАЧА ДОПОЛНИТЕЛЬНАЯ ЗАВИСИМОСТЬ: fsevents@1.2.8 (node_modules / fsevents): \ nnpm WARN notsup Пропуск необязательной зависимости: неподдерживаемая платформа для fsevents@1.2.8: wanted {\ "os \": \ "darwin \", \ "arch \": \ "any \"}(текущий: {\ "os \": \ "linux \", \ "arch \": \ "x64 \"}) \ n \ nnpm ERR!файл sh \ nnpm ERR!код ELIFECYCLE \ nnpm ERR!errno ENOENT \ nnpm ERR!порождение системного вызова \ nnpm ERR!puppeteer@1.12.2 установить: node install.js
\ nnpm ERR!spawn ENOENT \ nnpm ERR!\ nnpm ERR!Ошибка при установке сценария puppeteer@1.12.2. \ Nnpm ERR!Это, вероятно, не проблема с npm.Вероятно, есть дополнительные выходные данные журнала. \ N \ nnpm ERR!Полный журнал этого прогона можно найти в: \ nnpm ERR!
/root/.npm/_logs/2019-04-23T08_12_46_089Z-debug.log\n (1).\ ncaused по ошибке (1) -> meta = {\ "kill \": false, \ "code \": 1, \ "signal \": null, \ "cmd \": \ "npm i -S jsreport \"}, stack = Ошибка: \ n в ChildProcess.exithandler (child_process.js: 275: 12) \ n в emitTwo (events.js: 126: 13) \ n в ChildProcess.emit (events.js: 214: 7)\ n в MaybeClose (внутренняя / child_process.js: 925: 16) \ n в Socket.stream.socket.on (внутренняя / child_process.js: 346: 11) \ n в emitOne (events.js: 116: 13) \n в Socket.emit (events.js: 211: 7) \ n в Pipe._handle.close [as _onclose] (net.js: 557: 12) "," stderr_lines ": [" Произошла непредвиденная ошибка: Команда не выполнена:npm i -S jsreport "," sh: узел: команда не найдена "," npm WARN pdfjs-dist@2.0.489 требуется одноранговый узел webpack@^2.0.0 ||^ 3.0.0 но ни один не установлен.Вы должны установитьсами по себе. "," npm WARN worker-loader@1.1.1 требует однорангового узла webpack@^2.0.0 ||^ 3.0.0 ||^ 4.0.0 но ни один не установлен.Вы должны установить одноранговые зависимости самостоятельно. "," Npm WARN jsreport-server @ No description "," npm WARN jsreport-server @ Нет поля репозитория. "," Npm WARN jsreport-server @ Нет поля лицензии. "," Npm WARN необязательноПропускание необязательной зависимости: fsevents@1.2.8 (node_modules / fsevents): "," npm WARN notsup Пропускание опциональной зависимости: неподдерживаемая платформа для fsevents@1.2.8: wanted {\ "os \": \ "darwin \", \ "arch \ ": \" any \ "} (текущий: {\" os \ ": \" linux \ ", \" arch \ ": \" x64 \ "})", "", "npm ERR!файл sh "," npm ERR!код ELIFECYCLE "," npm ERR!errno ENOENT "," npm ERR!вызов syscall "," npm ERR!puppeteer@1.12.2 установить: node install.js
"," npm ERR!spawn ENOENT "," npm ERR!"," npm ERR!Не удалось выполнить скрипт установки puppeteer@1.12.2. "," Npm ERR!Это, вероятно, не проблема с npm.Скорее всего, выше выводится логирование. "," "," Npm ERR!Полный журнал этого прогона можно найти в: "," npm ERR!/root/.npm/_logs/2019-04-23T08_12_46_089Z-debug.log "," (1)."," вызвано ошибкой (1) -> meta = {\ "kill \": false, \ "code \": 1, \ "signal \": null, \ "cmd \": \ "npm i -Sjsreport \ "}, stack = Error:", "at ChildProcess.exithandler (child_process.js: 275: 12)", "at emitTwo (events.js: 126: 13)", "
at ChildProcess.emit (events.js: 214: 7) "," at MaybeClose (internal / child_process.js: 925: 16) "," at Socket.stream.socket.on (internal / child_process.js: 346: 11) "," atemitOne (events.js: 116: 13) "," в Socket.emit (events.js: 211: 7) "," в Pipe._handle.close [as _onclose] (net.js: 557: 12) "], "stdout": "Установка jsreport не найдена, установка последней версии jsreport сейчас, подождите ...", "stdout_lines": ["Установка jsreport не найдена, установка последней версии jsreport сейчас, подождите ..."]}
EDIT2:
После удаления temp
и выполнения этих команд на локальном хосте:
sudo chmod 777 -R jsReport/
npm install puppeteer jsreport-chrome-pdf
И после запуска вашегоplaybook с sudo работал без ошибок.
Редактировать 3:
Добавление:
- name: install puppeteer
shell: |
. ~/.nvm/nvm.sh
npm install puppeteer -g
args:
creates: "~/.nvm/versions/node/v{{ node_version }}/lib/node_modules/puppeteer "
выдает следующую ошибку:
ЗАДАЧА [установить кукловода] ********************************************************************************************************************************************************************************************** роковой=> {"change": true, "cmd": ". ~ / .nvm / nvm.sh \ n npm install puppeteer -g", "delta": "0: 00: 04.178220", "end": "2019-04-23 11: 39: 44.413525 "," msg ":" ненулевой код возврата "," rc ": 1," start ":" 2019-04-23 11: 39: 40.235305 "," stderr ":"sh: node: команда не найдена \ nnpm ERR! файл sh \ nnpm ERR! code ELIFECYCLE \ nnpm ERR! errno ENOENT \ nnpm ERR! spyscall spawn \ nnpm ERR! puppeteer@1.14.0 install: node install.js
\ nnpm ERR!spawn ENOENT \ nnpm ERR! \ nnpm ERR! Сбой при установке сценария puppeteer@1.14.0. \ nnpm ERR! Вероятно, это не проблема с npm. Вероятно, имеется дополнительный вывод журнала выше. \ n \ nnpm ERR! Завершеножурнал этого прогона можно найти в: \ nnpm ERR!
/root/.npm/_logs/2019-04-23T09_39_44_391Z-debug.log "," stderr_lines ": [" sh: node: команда не найдена ",«npm ERR! file sh», «npm ERR! code ELIFECYCLE», «npm ERR! errno ENOENT», «npm ERR! syscall spawn», «npm ERR! puppeteer@1.14.0 install: node install.js
», «npmERR! Spawn ENOENT "," npm ERR! "," Npm ERR! Ошибка при установке сценария puppeteer@1.14.0. "," NpmERR!Это, вероятно, не проблема с npm.Скорее всего, выше выводится логирование. "," "," Npm ERR!Полный журнал этого прогона можно найти в: "," npm ERR!
/root/.npm/_logs/2019-04-23T09_39_44_391Z-debug.log "]," stdout ":" \ n> puppeteer @1.14.0 install /root/.nvm/versions/node/v8.11.3/lib/node_modules/puppeteer\n> узел install.js "," stdout_lines ": [" ","> puppeteer@1.14.0 install / root/.nvm/versions/node/v8.11.3/lib/node_modules/puppeteer ","> узелinstall.js "]}
EDIT4:
Я пробовал что-то вроде этого:
---
- hosts: localhost
vars:
node_version: 8.11.3
nvm_version: 0.33.11
tasks:
- name: Add the user 'jsreport'
user:
name: jsreport
system: true
- name: install wget
yum:
name: wget
state: latest
become: true
become_user: jsreport
- name: download nvm
get_url:
url: "https://raw.githubusercontent.com/creationix/nvm/v{{ nvm_version }}/install.sh"
dest: /opt/nvm-install.sh
become: true
become_user: jsreport
- name: Changing perm of "/opt/nvm-install.sh", adding "+x"
file:
dest: /opt/nvm-install.sh
mode: "a+x"
become: true
become_user: jsreport
- name: Execute the script
command: /opt/nvm-install.sh
args:
creates: ~/.nvm/nvm.sh
become: true
become_user: jsreport
- name: Changing perm of "~/.nvm/nvm.sh", adding "+x"
file:
dest: ~/.nvm/nvm.sh
mode: "a+x"
become: true
become_user: jsreport
- name: install node
shell: |
. ~/.nvm/nvm.sh
nvm install {{ node_version }}
args:
creates: "~/.nvm/versions/node/v{{ node_version }}"
become: true
become_user: jsreport
- name: install jsreport-cli
shell: |
. ~/.nvm/nvm.sh
npm install jsreport-cli -g
args:
creates: "~/.nvm/versions/node/v{{ node_version }}/lib/node_modules/jsreport-cli"
become: true
become_user: jsreport
- name: install jsreport-chrome-pdf
shell: |
. ~/.nvm/nvm.sh
npm install jsreport-chrome-pdf -g
args:
creates: "~/.nvm/versions/node/v{{ node_version }}/lib/node_modules/jsreport-chrome-pdf"
become: true
become_user: jsreport
- name: install puppeteer
shell: |
. ~/.nvm/nvm.sh
npm install puppeteer -g
become: true
become_user: jsreport
args:
creates: "~.nvm/versions/node/v{{ node_version }}/lib/node_modules/puppeteer "
- name: create jsreportapp directory
file:
path: ./jsreportapp
state: directory
become: true
become_user: jsreport
- name: init jsreportapp directory
shell: |
. ~/.nvm/nvm.sh
jsreport init
args:
chdir: ./jsreportapp
creates: ./package-lock.json
become: true
become_user: jsreport
потом, когда я нахожусь на пользователе jsreport
Я запускаю команду jsreport configure
Затем я отредактировал этот конфиг, чтобы установить:
"chrome": {"launchOptions": {
"args": ["--no-sandbox"]}}
Затем я запускаю jsreport start
и получаю сообщение об ошибке:
Не удалось найти установку jsreport, необходимую для проверки
команда доступна, если команда действительна, попробуйте установить
jsreport первый. (1). вызвано ошибкой (1) -> stack = Error:
на Promise (/home/jsreport/.nvm/versions/node/v8.11.3/lib/node_modules/jsreport-cli/lib/instanceHandler.js:55:21)
на новом Promise ()
в Object.find (/home/jsreport/.nvm/versions/node/v8.11.3/lib/node_modules/jsreport-cli/lib/instanceHandler.js:47:10)
в getInstance (/home/jsreport/.nvm/versions/node/v8.11.3/lib/node_modules/jsreport-cli/lib/commander.js:768:10)
в файле export.handler (/home/jsreport/.nvm/versions/node/v8.11.3/lib/node_modules/jsreport-cli/lib/commands/start.js:56:5)
в Commander.executeCommand (/home/jsreport/.nvm/versions/node/v8.11.3/lib/node_modules/jsreport-cli/lib/commander.js:389:28)
в Object.handler (/home/jsreport/.nvm/versions/node/v8.11.3/lib/node_modules/jsreport-cli/lib/commander.js:559:16)
в Object.self.runCommand (/home/jsreport/.nvm/versions/node/v8.11.3/lib/node_modules/jsreport-cli/node_modules/yargs/lib/command.js:170:22)
в parseArgs (/home/jsreport/.nvm/versions/node/v8.11.3/lib/node_modules/jsreport-cli/node_modules/yargs/yargs.js:920:28)
в Object.Yargs.self.parse (/home/jsreport/.nvm/versions/node/v8.11.3/lib/node_modules/jsreport-cli/node_modules/yargs/yargs.js:499:18)