gpt4 book ai didi

linux - 复制文件并使用ansible运行特定命令?

转载 作者:太空狗 更新时间:2023-10-29 11:12:32 25 4
gpt4 key购买 nike

我需要将一个文件复制到许多服务器中,然后在复制后执行特定命令。以下是我需要为每台机器执行的步骤。

  • 将文件复制到服务器。
  • 复制后执行命令(sudo restart tree)。
  • 睡几秒钟

并对所有机器重复上述步骤。

所以我决定为此使用ansible。我可以复制文件,但我不确定如何在复制后执行命令然后休眠。

我有一个 hosts.txt 文件,它将逐行包含所有机器。

我将登录到 machineA,其中将包含我的 function.py 文件和 hosts.txt 文件,然后从该机器我将在下面运行ansible 命令。

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 命令。所以基本上

  • 将文件复制到机器B。
  • 然后执行命令(sudo restart tree)
  • 在那之后休眠几秒钟,然后对其他机器做同样的事情

我可以使用 ansible 来做到这一点吗?我正在运行 ansible 1.5.4。

最佳答案

我建议使用 ansible-playbook。这是我的示例,将一个 docker 镜像复制到 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

关于linux - 复制文件并使用ansible运行特定命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41708348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com