2017-01-17 2 views
1

Мне нужно скопировать один файл на множество серверов, а затем после копирования выполнить определенную команду. Ниже приведены шаги, которые я должен выполнить для каждой машины.скопировать файл и запустить определенную команду с помощью ansible?

  • копию файла на сервер.
  • выполнить команду (sudo restart tree) после копирования.
  • сна в течение нескольких секунд

и повторите описанные выше шаги для всех машин.

Так что я решил использовать для этого. Я могу копировать файлы, но я не уверен, как выполнить команду после копирования, а затем спать.

У меня есть файл hosts.txt, который будет содержать все машины по строкам.

Я залогиниться в machineA который будет иметь свой function.py файл и hosts.txt файла и с этой машиной я побегу ниже ansible команды.

[email protected]:~$ ansible -i hosts.txt -m copy -a "src=function.py dest=/treepot/function.py owner=goldy" -u david --ask-pass --sudo -U root --ask-sudo-pass all 

При использовании вышеуказанной команды, он будет копировать function.py файл, но я хочу, чтобы выполнить команду sudo restart tree, а после копирования этого файла на каждом сервере. Таким образом, в основном

  • копировать файл в машинуB.
  • затем выполнить команду (Судо рестарт дерево)
  • после этого сна в течение нескольких секунд, а затем сделать то же самое для других машин

Могу ли я сделать это с использованием анзибля? Я бегу без проблем 1.5.4.

ответ

1

Я предлагаю использовать игрушечную игрушку. Вот мой пример, скопируйте Docker изображение 4 хостами, и загрузить его затем удалить архивный файл, может быть, это поможет

cat /etc/ansible/hosts 
#------------centos----------- ip is ok(instead of hostname) 
[centos] 
centos-1 
centos-2 
centos-3 
centos-4 

[centos:vars] 
ansible_user="root" 

написать сборник пьес

cat load-tar.yaml 
- hosts: centos 

    tasks: 
    - name: copy-image 
     copy: src=./elasticsearch.tar dest=/root/elasticsearch.tar 

    - name: start docker 
     shell: systemctl start docker 

    - name: load-image 
     shell: docker load < /root/elasticsearch.tar 

    - name: delete-file 
     file: path="/root/elasticsearch.tar" state=absent 

и запустить его

ansible-playbook load-tar.yaml 
+0

Как это будет выглядеть в моем случае? Я очень новичок в таких вещах, поэтому не знаю многого. – john

+0

http://docs.ansible.com/ansible/playbooks.html. это стоит изучить, если вы используете ansible – dormi330

+0

уверен, но если вы можете помочь мне объяснить с моим ответом, это поможет мне лучше понять. Я тоже пойду по ссылке, но будет много вещей, которые теперь мне не нужно понимать как новичок. – john

Смежные вопросы