Я использую ansible в качестве инструмента для оркестровки системы. Прежде всего, позвольте мне описать мою конечную цель.Группировка нескольких заданий под одним условием
Я хочу создать playbook или два, которые пойдут захват solr из Интернета, настройте себя, а затем запустите индекс, основанный на некоторой конфигурации. Если что-то из этого до сих пор звучит подозрительно, пожалуйста, остановите меня здесь.
Теперь я не хочу захватывать solr tarball, если мне это не нужно, поэтому у меня сейчас есть задача/игра, которая выглядит так.
- stat: path="path to solr home/solr/bin/init script"
register: solr_script
- name: getting solr
when: solr_script.stat.exists == False
shell: mkdir -p "path to download dir"
get_url: url="download url" dest= "path to download dir"
shell: tar zxvf "path to download dir/tgz file" -C "path to solr home"
shell: rm -rf "path to download dir"
- name: start solr
shell: "path to solr home/solr/bin/solr init script" start
sudo: yes
Я пытаюсь проверить, был ли уже запущен скрипт инициализации solr, прежде чем идти и хватать его.
Когда я запустил этот сценарий, как есть, я получаю ошибку,
multiple actions specified in task: 'shell' and 'getting solr'
Это кажется разумным иш, возможно форматирование не так? Я пробовал это
- name: getting solr
when: solr_script.stat.exists == False
shell: mkdir -p "path to download dir"
get_url: url="download url" dest= "path to download dir"
shell: tar zxvf "path to download dir/tgz file" -C "path to solr home"
shell: rm -rf "path to download dir"
Получил ошибку синтаксиса.
На дополнительной странице документации я вижу этот бит информации.
Note that if you have several tasks that all share the same conditional statement, you can affix the conditional to a task include statement as below. All the tasks get evaluated, but the conditional is applied to each and every task:
Это похоже на то, что мне нужно.
Но затем они следуют этому примеру.
- include: tasks/sometasks.yml
when: "'reticulating splines' in output"
Я действительно не понимаю «включить», и этот пример, похоже, не иллюстрирует то, что я хочу. Итак, если мои первоначальные предположения верны, и это действительно то, как я хотел бы получить получение solr, как бы я написал бы важную задачу, которая условно выполнила бы группу задач.
благодарит за любезный совет. В основном я просто придерживался той же «когда» оговорки по всем моим задачам, которые чувствовали себя взломанными, но в итоге работали. Я не знал о создании/удалении, хотя, похоже, делает то, что я хочу, без дополнительной проверки, чтобы увидеть, существует ли файл. Принимая ответ, ваш список должен помочь другим. – Zack