Все это работает в 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 на одном хосте.
Любые идеи?