ансибле и не могу найти правильные ключевые слова для гуглинга.
Суть такова: у меня есть шесть тасков, которые нужно выполнять на всех серверах, но некоторые сервера нужно исключать из некоторых тасков. С этим я справился используя when: ansible_facts['nodename'] != "MY_VALUE".
Однако, все эти шесть тасков очень похожи, отличаются по сути только некоторыми переменными (имена файлов). Мне бы хотелось создать "шаблон" таска, по сути суб-таск, и вызывать его из главного плейбука с определенными значениями. Как это можно реализовать? Тоесть, мой суб-таск выглядит так:
tasks:
- set_fact:
sql_path: "/{{ workdir }}/scrub_{{ type }}_{{ ansible_date_time.date }}.sql"
- set_fact:
report_path: "/{{ workdir }}/scrub_report_{{ type }}_{{ ansible_date_time.date }}.txt"
- set_fact:
error_path: "/tmp/scrub_errors_{{ type }}_{{ ansible_date_time.date }}.txt"
- name: upload the sql file
copy:
src: "/{{ workdir }}/scrub_{{ type }}_{{ ansible_date_time.date }}.sql"
dest: "{{ sql_path }}"
tags: upload_sql
- name: start scrubbing script
shell:
cmd: screen -dmS scrub_{{ type }} bash -c "mysql dbname -u user -pPASS < {{ sql_path }} > {{ report_path }} 2> {{ error_path }} "
tags: run
- name: delete sql-file
file:
name: "{{ sql_path }}"
state: absent
tags: delete
ignore_errors: yes
И я бы хотел его запускать из главного плейбука шесть раз, просо задавая разные параметры workdir и type
не спорю, я ансибл только устанавливал и патчи накатвал, а что внутри по сути и не знал :(
Прям комбо из антипаттернов: * set_fact на пустом месте * теги * баш * перенаправление вывода вместо стандартного механизма register * ignore_errors
Ну, что вы придираетесь. Чел осилил дословную конвертацию shell скрипта в Ansible playbook.
ну тогда бы соль использовал :) или просто sh , а запускал в rundeck
rundeck - это Java и полумертвое поделие
jenkins то же java и то же для мертвые полумертвое поделие =)
Ты не хочешь гнать на рандек.
а что не так с jenkins и какие альтернативы ? только не надо про гитлаб, ни разу не альтернатива
Прежде , чем предлагать альтернативы, надо понять задачи и что не так с текущим решением =)
Обсуждают сегодня