Это старая версия документа!
Backup.yml
--- - name: "Удаляем старый архив" file: path: '{{ myService_path }}/../{{ myService_appname }}.tar.gz' state: absent register: remove_backup - name: "Архивируем папку приложения" shell: cmd: 'tar -czvf {{ myService_path }}/../{{ myService_appname }}.tar.gz --exclude={logs,properties} -C {{ myService_path }} . && echo OK' warn: false register: result failed_when: '"OK" not in result.stdout' changed_when: '"OK" in result.stdout' when: remove_backup is not failed any_errors_fatal: true
Stop_service.yml
--- - name: "Получаем информацию о сервисах в системе" ansible.builtin.service_facts: - name: "Останавливаем myService.service если он есть в ОС" systemd: name: 'myService.service' state: stopped register: myServiceInfo until: myServiceInfo.state == "stopped" retries: 5 delay: 10 when: "'myService.service' in services"
Download.yml
--- - name: "Скачиваем jar из Nexus" maven_artifact: group_id: 'com.gmware.applications' artifact_id: 'myService_group' version: '{{ myService_version | default(omit) }}' repository_url: '{{ "%s/myService-snapshots" | format(nexus_base_url) }}' username: '{{ nexus_username }}' password: '{{ nexus_password }}' dest: '{{ "%s/%s.jar" | format(myService_path, myService_appname) }}' owner: '{{ myService_user }}' group: '{{ myService_group }}' mode: '640' verify_checksum: 'always'
handler/main.yml
--- - name: "Запуск службы myService" systemd: name: myService state: restarted enabled: true daemon_reload: yes listen: "start_restart_myService"
Restart_and_check.yml
При запуске скрипта лучше сменить директорию, потом запустить, т.к. могут быть вские косяки из за системного каталога
--- - name: "Рестарт приложения" win_shell: | cd {{ myapp_path }} ./restartMyApp.ps1 async: 5 ignore_errors: yes register: start_app failed_when: start_app.started != 1 - name: "Ожидаем 5 сек" pause: seconds: 5 - name: "Проверяем запущен ли процесс" win_shell: "Get-Process -Id $(cat {{ myapp_path }}MyApp.pid) -ErrorAction SilentlyContinue | Format-Table -Property ProcessName register: check_pid failed_when: check_pid.rc < 0 - block: - name: "Процесс отсутствует, откат обновления" import_tasks: 70-rollback.yml when: check_pid.stdout == ''
--- - name: "Восстановливаем из бекапа" shell: cmd: "tar -xzvf {{ myService_path }}/backups/{{ myService_appname }}.tar.gz -C {{ myService_path }} && echo OK" warn: false register: result changed_when: '"OK" in result.stdout' failed_when: '"OK" not in result.stdout'
Бекап на винде
--- - name: "Создаем бекап" win_shell: | "Get-ChildItem -Path {{ myService_path }} -Exclude @('backups', 'logs') | Compress-Archive -Force -DestinationPath {{ myService_path }}'backups\\prev_version.zip'"