Как запустить задачу только тогда, когда первые 3 буквы имени хоста равны определенному слову в анзибле?

Я новичок в доступе и зависаю по следующей проблеме: Я написал задачу, которую следует запускать только тогда, когда первые три буквы имени удаленного хоста равны «abc». Я получил имя хоста, выполнив следующую задачу:

- name: register hostname
      slurp:
        src: /etc/hostname
      register: hostname

Теперь я хочу скопировать файл с удаленного компьютера на локальный:

 - name: copy backup
   fetch:
     src: /xxx/xxx/
     dest: /xxx/xxx/xxx/
     fail_on_missing: yes

Все, что я обрабатываю с помощью regex_search или разделяю, чтобы сохранить имя хоста в другой переменной, которую я бы сравнил с «abc», не работает. У тебя есть идеи?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
34
1

Ответы 1

Один простой способ - сравнить первые 3 символа из переменной имени хоста.

Вот мой фрагмент

  - name: register hostname
    set_fact:
      hostname: "abc-def-ghi"

  - name: copy backup (should skip)
    debug:
      msg: "it doesn't start with abc"
    when: hostname[0:3] == "def"

  - name: copy backup (should execute)
    debug:
      msg: "it starts with abc"
    when: hostname[0:3] == "abc"

И результаты

TASK [register hostname] *******************************************************************************
Tuesday 30 March 2021  08:01:39 -0400 (0:00:00.044)       0:00:00.044 ********* 
ok: [localhost]

TASK [copy backup (should skip)] ***********************************************************************
Tuesday 30 March 2021  08:01:39 -0400 (0:00:00.035)       0:00:00.080 ********* 
skipping: [localhost]

TASK [copy backup (should execute)] ********************************************************************
Tuesday 30 March 2021  08:01:40 -0400 (0:00:00.099)       0:00:00.180 ********* 
ok: [localhost] => {
    "msg": "it starts with abc"
}

Спасибо за ответ! Это работает, как вы сказали :) Но если я попытаюсь построить это в своей задаче копирования, я получаю сообщение об ошибке. Задача: - name: copy backup fetch: src: / etc / backuptest dest: / home / osboxes / testRundeck when: hostname [0: 3] == "3cx" `Я думаю, это из-за модуля выборки, но я не не знаю, где ошибка ... :( Ошибка: * фатальная: [server_debian]: FAILED! => {"changed": false, "module_stderr": "Общее соединение с 192.168.178.102 закрыто. \ r \ n", "module_stdout": "\ r \ nTraceback (последний вызов последним): \ r \ n [...]

Ambeth666 30.03.2021 15:23

Сложно сказать с этой информацией. Я бы проверил проблему с разрешениями для файла как локального, так и удаленного. Вы также можете использовать Ansible-playbook -v (или -vvvv), чтобы получить более подробное сообщение об ошибке.

Jerome V. 30.03.2021 15:41

Другие вопросы по теме