ансибле и не могу найти правильные ключевые слова для гуглинга. 
                  
                  
                  Суть такова: у меня есть шесть тасков, которые нужно выполнять на всех серверах, но некоторые сервера нужно исключать из некоторых тасков. С этим я справился используя 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 и какие альтернативы ? только не надо про гитлаб, ни разу не альтернатива
Прежде , чем предлагать альтернативы, надо понять задачи и что не так с текущим решением =)
Обсуждают сегодня