Nano Hash - криптовалюты, майнинг, программирование

Как перезагрузить динамически вычисляемый хост в ansible

Как перезагрузить хост с помощью ansible, этот хост не является удаленным хостом, хранящимся в файле инвентаризации. IP-адрес хоста возвращается из сценария с именем get_active_host.sh. Я попытался перезагрузить активный хост из самого сценария, однако выполнение плейбука не удалось даже после использования wait_for_connection. хост, который следует перезагрузить, хранится в {{ active_host_location }}

---
# tasks file for GET_ACTIVE_HOST
 - name: GET ACTIVE HOST LOCATION
   script: get_active_host.sh
   args:
     executable: bash
   register: active_host_location
   async: 0
   poll: 0
   become: true

 - name: Wait for server to restart
   local_action:
     module: wait_for
       host={{ active_host_location }}
       port=22
       delay=1
       timeout=300



[my current machine] --->[ansible_host]---get_active_host.sh-->[active_host]
   1.2.3.4                   1.2.3.5                             1.2.3.6

Мне нужно перезагрузить 1.2.3.6, который динамически рассчитывается во время игры из скрипта. Можно ли этого добиться и как?

вывод скрипта:

./get_active_host.sh
1.2.3.6
01.04.2019

Ответы:


1

Если нужная вам переменная уже выводится из скрипта, вы должны быть довольно близки. Когда вы регистрируете выходные данные задачи, она сбрасывает целую кучу данных в объект results, в котором вам затем нужно покопаться, чтобы получить нужную вам переменную. Используйте модуль отладки на active_host_location, чтобы выяснить точную иерархию, но вы, вероятно, хотите что-то вроде {{ active_host_location.results.stdout }}.

02.04.2019

2

IP-адрес, возвращаемый скриптом, сохраняется в структуре переменной active_host_location, и, поскольку вывод представляет собой одну строку, вы можете получить доступ к IP-адресу с помощью active_host_location.stdout.

Поскольку скрипт возвращает IP, а не имя хоста, я думаю, вы не можете заранее заполнить все эти возможные результаты в своем инвентаре, чтобы можно было подключиться с предоставленным пользователем/паролем и запустить задачи перезагрузки. Итак, я бы попытался выполнить задачу restart с помощью локальной команды ssh, которая подключается через ssh к целевой машине и запускает перезагрузку.

Чтобы подключиться к машине, вы можете:

  1. обмен SSH привет
  2. установите sshpass на свой локальный хост.

если вы следуете 1, задача оболочки будет выглядеть так:

  - name: Run restart command
    shell: "ssh {{ remote_user }}{{ active_host_location.stdout }} 'sudo reboot'"
    delegate_to: localhost
    register: reboot_result

  - name: print result
    debug:
      var: reboot_result

если вы хотите использовать подход sshpass, командная задача может быть:

  - name: Run restart command
    shell: "sshpass -p \"{{ remote_pass }}\" ssh {{ remote_user }}@{{ active_host_location.stdout }} 'sudo reboot'"
    delegate_to: localhost
    register: reboot_result

  - name: print result
    debug:
      var: reboot_result

они предполагают, что этот пользователь может «sudo без запроса пароля».

надеюсь, что это поможет

02.04.2019
  • спасибо за вашу любезную помощь, я узнал, что active_host_location.stdout и active_host_location.stdout[0] сегодня разные! 03.04.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..