LINUX.ORG.RU
ФорумAdmin

Ansible

 ,


0

2

Добрый день. У меня есть сервер ансибл, на котором я написал плайбук который будет на удаленном сервера запускать bash скрипт. command: /home/user/build-project.sh /bin/bash Пробовал так запустить, не помогло.

Подскажите пожалуйста как запустить скрипт на удаленном сервера с помощью Ansible.

Спасибо

показывай свой плейбук полностью, показывай как запускаешь.

v9lij ★★★★★ ()

который будет на удаленном сервера
скрипт на удаленном сервера

задавая вопрос желательно дважды его перечитать.

В host_vars/ пожно задать хостнейм целевой машины. Также, насколько помню, это можно сделать в файле inventory.ini.

thomasbug ()

только сейчас понял твой вопрос. там вроде бы было что-то вроде «delegate». пару раз делал такое. не помню, давно было.

thomasbug ()

command: /home/user/build-project.sh /bin/bash

А зачем там /bin/bash? Или если вы хотите shell указать то как минимум это надо делать перед именем скрипта. А вообще лучше модуль shell тогда использовать.

Ну и вообще

Пробовал так запустить, не помогло.

Что "не помогло"? Не запустилось, нет изменений на хосте, таск проигнорирован, не удалось к хосту подключиться, в чем проблема то? Не знаете сами - давайте полный вывод ansible.

micronekodesu ★★ ()
Ответ на: комментарий от micronekodesu

насколько я понял ТСа (со второй попытки), он хочет, чтобы данный таск (command в данном случае) выполнился на другом хосту, и насколько я помню, я делал такое с delegate. но спорить не буду.

thomasbug ()
Ответ на: комментарий от micronekodesu

Вот такой плайбук: --- - hosts: all become: yes

tasks: - name: Install prerequisites apt: name={{item}} update_cache=yes with_items: - apt-transport-https - ca-certificates - curl - software-properties-common - docker-ce - docker-compose

- name: Add Docker GPG key apt_key: url=https://download.docker.com/linux/ubuntu/gpg

- name: Add Docker APT repository apt_repository: repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ansible_distribution_release}} stable

- name: Download Repo from Git git: repo: "https://github.com/path/server.git" dest: «/home/ruslan/glpi» clone: yes update: yes

- name: Loop until example command: /home/path//build-project.sh /bin/bash

В файле hosts прописан сервер.

Вот такая ошибка: fatal: [Test]: FAILED! => {«changed»: false, «module_stderr»: «Shared connection to 192.168.175.10 closed.\r\n», «module_stdout»: "", «msg»: «MODULE FAILURE\nSee stdout/stderr for the exact error», «rc»: 1}

Dev1989 ()
Ответ на: комментарий от Dev1989

Оформите сообщение нормально - www.linux.org.ru/help/lorcode.md

Ошибка у вас есть - «module_stderr»: «Shared connection to 192.168.175.10 closed.\r\n» - подключение к хосту отваливается. Модулем ping проверьте что вообще подключение есть. Это на каком таске падение происходит?

micronekodesu ★★ ()
Ответ на: комментарий от Dev1989

я правильно понял:

(controlling machine) -> (managed host) -> (еще какой-то хост)

(controlling machine) - откуда ты выполняешь запускаешь

(managed host) - машина где плейбук выполняется

(1.2.3.4) - машина где надо запустить скрипт

?

кстати у команды ansible вроде были опции вербозные вроде -vvv, может больше инфо даст тебе.

я плохо помню ансибль

тут вроде два варианта, если я правильно помню.

1) запустить на (managed host) скрипт который сделает «ssh 1.2.3.4 /script.sh» или сразу в таске command «ssh 1.2.3.4 /script.sh». по данному подходу советую добиться сначала нормально запуска на (managed host) просто холостого скипта sh, потом уже добавь в этот скрипт команду типа «ssh 1.2.3.4 uname»

2) подход с delegate

thomasbug ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.