使用 ansible 复制文件和 运行 特定命令?

copy file and run a particular command using ansible?

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

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

所以我决定为此使用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 命令。所以基本上

我可以使用 ansible 来做到这一点吗?我是 运行ning 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