2017-01-17 22 views
1

1つのファイルをたくさんのサーバーにコピーし、コピーした後に特定のコマンドを実行する必要があります。以下は、各マシンで行う必要がある手順です。ファイルをコピーして、特定のコマンドを実行しますか?

  • ファイルをサーバーにコピーします。
  • コピー後にコマンド(sudo restart tree)を実行します。すべてのマシンのための手順上記
  • 数秒間スリープ

繰り返し。

私はこれを実行することに決めました。私はファイルをコピーすることができますが、コピーしてスリープした後にコマンドを実行する方法がわかりません。

私はすべてのマシンを1行ずつ含むhosts.txtファイルを持っています。

私はfunction.pyファイルとhosts.txtファイルを持っているであろうmachineAにログインし、そのマシンから、私は以下の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にコピーファイル。
  • その後、数秒間その睡眠の後にコマンド(sudoを再開木)
  • を実行して、他のマシン

のために同じことを行うには、私はansibleの使用でこれを行うことができますか?私は1.5.4を実行しています。

答えて

1

私は安全なプレイブックを使用することをお勧めします。ここでは4つのホストにドッキングウィンドウの画像をコピーし、私の例であり、tarファイルを削除し、それをロードし、多分それは

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それはあなたが役に立つ – dormi330

+0

を使用する場合は学習価値がありますが、あなたが私の答えを説明するのを助けることができれば、それはより良く理解するのに役立ちます。リンクも見ていきますが、今は初心者として理解する必要がないことがたくさんあります。 – john

関連する問題