我需要复制一个文件到很多的服务器,然后复制后执行一个特定的命令。 以下是我需要为每台机器执行的步骤。
sudo restart tree
)。 对所有机器重复上述步骤。
所以我决定使用这个。 我能够复制文件,但我不知道如何执行命令后复制,然后睡觉。
我有一个hosts.txt
文件,它将hosts.txt
包含所有的机器。
我将login到machineA
,它将有我的function.py
文件和hosts.txt
文件,并从该机器我将运行下面的命令。
david@machineA:~$ 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
命令以及在每个服务器上复制该文件后。 所以基本上
我可以用这样做吗? 我正在运行1.5.4。
我建议使用ansible-playbook。 这里是我的例子,复制一个码头图像到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