nvm требует, чтобы пользователь вышел из системы / снова вошел в систему после установки, чтобы изменения вступили в силу. Как я могу разрешить это в недоступной задаче, выполняемой через бродягу. вот что я пробовал:
- name : Install nvm
shell: curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.30.1/install.sh | bash
failed_when: False
register: nvm_installed
- name: Kill open ssh sessions - ansible should log back in on next task
shell: "ps -ef | grep sshd | grep `whoami` | awk '{print \"kill -9\", $2}' | sh"
when: nvm_installed | changed
failed_when: false
- name : Install Node.js v 4.2.x
command : nvm install v4.2
Но я получаю сообщение об ошибке:
fatal: [default] => SSH Error: ssh_exchange_identification: Connection closed by remote host
while connecting to 127.0.0.1:2222
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.
TASK: [check if rpmforge installed] *******************************************
FATAL: no hosts matched or all hosts have already failed -- aborting
команда vagrant ssh
теперь также не работает с ошибкой:
ssh_exchange_identification: Connection closed by remote host
Я основывал это на ответе, приведенном здесь - https : //stackoverflow.com/questions/26677064/create-and-use-group-without-restart
Я думаю, может быть, команда kill убивает самого демона sshd?
ps -ef | grep sshd | grep `whoami`
root 2621 1247 0 11:30 ? 00:00:00 sshd: vagrant [priv]
vagrant 2625 2621 0 11:30 ? 00:00:00 sshd: vagrant@notty
root 3232 1247 4 11:34 ? 00:00:00 sshd: vagrant [priv]
vagrant 3235 3232 0 11:34 ? 00:00:00 sshd: vagrant@pts/0
vagrant 3252 3236 0 11:34 pts/0 00:00:00 grep sshd
UPDATE
Я также пробовал следующее : (файл myscript.sh содержит множество функций и запускает / останавливает все пары / ...
Пожалуйста, сначала внимательно прочтите проблему, а затем дайте решение ... ........... .....
у нас есть 3 файла в каталоге
для функции start (): его проверка, является ли arg2 парным или одиночным Затем его запускает пара IP.
для функции stop (): она проверяет, является ли arg2 парой или парой одиночных IP-адресов, а затем останавливает его.
для функции rules (): проверяет, является ли arg3 new-rules или same-rules затем скопируйте на него
для функции put_files (): он использует с arg2 и проверяет, является ли arg2 парой или парой с одним IP
like: ./myscript.sh put_files all-pair
or ./myscript.sh put_files 192.168.20.13-192.168.20.21
2. Файл deployment_function: файл deploymet_function извлекает IP-пару из файла server_list.txt в виде PAIR.
server_list.txt conatin host ip в форме IP-Pair (Сервер C ++ - сервер базы данных), например это.
192.168.20.13-192.168.20.21
192.168.20.22-192.168.20.34
192.168.20.42-192.168.20.45
Базовый синтаксис моего скрипта:
./ myscript.sh arg1 arg2 arg3
где, arg1 = запуск, остановка или файлы размещения
arg2 = все пары или одна пара IP
arg3 = новые правила или одинаковые правила
Мы выполняем наш сценарий следующим образом:
Проблема: На самом деле он выполняется нормально, но для выполнения на всех парах IP требуется больше времени, поскольку он выполняется последовательно. сначала он переходит на 192.168.20.21, затем на 192.168.20.13, затем на 192.168.20.34 и 192.168.20.22 ..... при получении ошибки он останавливается на этом сервере. и не выполнять дальше на остальной IP-паре.
Я хочу выполнять myscript на всех серверах параллельно, и при возникновении ошибки вывести список этого сервера и выполнить furtur. Итак, есть ли какое-либо решение, в котором я могу выполнять один и тот же сценарий параллельно без изменения в myscript. так что, пожалуйста, помогите мне найти правильный способ сделать это ....
Вы можете попробовать использовать pdsh (Parallel Distributed Shell - параллельная распределенная оболочка). Pdsh - эффективный многопоточный клиент удаленной оболочки, выполняющий команды на нескольких удаленных хостах параллельно. Хотя он не обновлялся уже довольно давно, он все еще отлично работает, когда я запускаю скрипты на 700 машинах.