Похоже, вы хотите загрузить скрипт, а затем запустить его как команду против нескольких серверов.
Концепция «хостов» в книге «Ansible playbook» охватывает концепцию «серверов» - вам нужно будет заполнить инвентарь, который Ansible может прочитать для хостов, или даже, возможно, передать хосты в виде переменной при запуске playbook (позволяет вызывать эту переменную «серверы»).
wget и запуск различных команд - все стандартные модули Ansible (get_url - это обобщенное имя для wget).
Итак, пример сборник пьес:
- hosts: "{{ servers }}"
tasks:
- name: get a file
get_url:
url: "https://bootstrap.pypa.io/ez_setup.py"
dest: "/usr/ez_setup.py"
- name: run a command
command: "python /usr/ez_setup.py"
Вы бы затем вызвать над сборником пьес (назовем его shipit.yaml
), как это:
ansible-playbook /usr/shipit.yaml --extra-vars "servers=10.0.0.1"
Можно также использовать модуль add_hosts и пользовательский имя группы, чтобы динамически считывать серверы из вашей базы данных, а затем заполнять настраиваемую группу, а затем запускать следующий набор команд с этой настраиваемой группой как элемент hosts
.
Вы можете изменять размеры в зависимости от того, требуется ли поддержка sudo (sudo: yes
) или нет, и может быть лучший способ запуска вашего сценария python, чем использование команды (команда будет запускаться каждый раз, независимо от того, был запущен - не идемпотент, другими словами).
Надеюсь, вышесказанное даст вам хорошую отправную точку.
Это хорошее начало. Я думаю, что модуль add_hosts - лучший выбор. Сначала нужно проверить его, а затем принять ответ –
В get_url есть синтаксическая ошибка. Это должно быть get_url: url = URL dest = PATH –
Итак, вы просто запускаете код из Интернета на своем компьютере! – jpic