Инструменты пользователя

Инструменты сайта


ansible:playbooks

Это старая версия документа!


Разные примеры

:!: CICD Работа с приложением

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'"
:!:
 
:!:
 
:!:
 
ansible/playbooks.1701746839.txt.gz · Последнее изменение: 2023/12/05 03:27 — admin