Назад | Перейти на главную страницу

Невозможно запустить локальную часть игры на AWX

Все это работает в AWX, который размещается локально. Я пытаюсь управлять несколькими экземплярами EC2 в AWS. Я настроил прыжок с бастиона и могу заставить все мои другие игры работать правильно.

Однако есть один простой шаблон вакансии, который я хочу предоставить нескольким разработчикам. По сути, когда они вносят изменения в код, это позволяет очистить opcache и делает недействительными определенные файлы в CloudFront.

Я хочу, чтобы вызов API CloudFront (модуль cloudfront_invalidations) выполнялся локально с AWX, а затем, если это будет удачно, уведомить два экземпляра веб-серверов о перезапуске их процесса PHP и Apache.

---
- name: Restart httpd and php-fpm
  remote_user: ec2-user
  hosts: all
  become: true

  tasks:
    - name: Invalidate paths in CloudFront
      cloudfront_invalidation:
        distribution_id: "{{ distribution_id }}"
        aws_access_key: "{{ aws_access_key }}"
        aws_secret_key: "{{ aws_secret_key }}"
        target_paths: "{{ cloudfront_invalidations.split('\n') }}"
      delegate_to: 127.0.0.1
      notify:
        - Restart service httpd
        - Restart service php-fpm
  
  handlers:
    - name: Restart service httpd
      service:
        name: httpd
        state: restarted

    - name: Restart service php-fpm
      service:
        name: php-fpm
        state: restarted

Однако при запуске воспроизведения кажется, что оно игнорирует действие «delegate_to» и вместо этого выполняет аннулирование дважды для каждого хоста. Я не уверен, действительно ли он работает локально. Я пробовал добавить флаг run_once, но это только тогда перезапустил httpd + PHP на одном хосте.

Любые идеи?