Ansible-在远程计算机中重做任务

Ansible-在远程计算机中重做任务,ansible,ansible-tower,Ansible,Ansible Tower,我是ansible/ansible tower的新手,几天来我一直在尝试它,试图复制文件,将软件安装到其他机器上,等等 我有一个疑问 假设我有一台控制机器和10台主机。 例如,我想将5个文件复制到每个主机中 我运行我的剧本。 例如,由于一些未知错误,我的ansible只能访问3个文件,因此它只能将3个文件复制到所有主机中。 现在我看了这个,在第一项工作完成后,我把所有的文件都准备好了。 我再次运行playbook,这次它将所有5个文件复制到所有主机中。 现在我可以做了吗,这样Ansible知道主

我是ansible/ansible tower的新手,几天来我一直在尝试它,试图复制文件,将软件安装到其他机器上,等等

我有一个疑问

假设我有一台控制机器和10台主机。 例如,我想将5个文件复制到每个主机中

我运行我的剧本。 例如,由于一些未知错误,我的ansible只能访问3个文件,因此它只能将3个文件复制到所有主机中。 现在我看了这个,在第一项工作完成后,我把所有的文件都准备好了。 我再次运行playbook,这次它将所有5个文件复制到所有主机中。 现在我可以做了吗,这样Ansible知道主机有前3个文件,在我第二次运行playbook时,它知道,因此,它只将剩余的文件复制到主机中?剩下的2个文件

如果主机无法访问,同样的事情也会在第一次不可用。在第二个作业中,它应该只将所有文件复制到该主机中。剩下的主机有3个文件,它应该只复制剩下的文件

现在,我可以制作它吗?这样Ansible就知道主机有前3个文件,在我第二次运行playbook时,它就知道了,因此,它只将剩余的文件复制到主机中

你不需要做什么。使用Ansible可以定义所需的状态

例如,对于复制模块,您不会告诉Ansible复制文件。相反,您请求Ansible以确保目标计算机上的某个文件具有所需的内容。如果Ansible已经执行了,则不会执行任何操作。如果文件不存在,或者目标上的文件具有不同的内容,Ansible将复制该文件

此功能称为幂等性,它允许您多次运行同一剧本,并且状态将始终与所需的时间保持一致

这也意味着,如果某个任务失败,根据定义,重新运行playbook将从失败的地方继续

有一小组Ansible模清楚地标记为非幂等, 它们不提供此功能,但大多数都提供

Ansible并不是万无一失的,人们可以编写不等幂的剧本,但这是程序员的权力和责任


除此之外,Ansible还有一个用于优化的“重试”机制。

您知道同步模块吗?对我想知道怎样才能使文件从控制中心复制到主机上时,不会使任何东西过度膨胀。我已经检查过了,事情是这样的。将文件从控制计算机复制到主机不会覆盖,除非在控制计算机中更改了文件。但如果我使用get_url,它会覆盖所有内容…谢谢。我理解我为什么会有这个问题。我正在使用unarchive module将文件下载并取消归档到主机中,然后使用copy module将一些文件从控制机器复制到主机中,所有这些都在一个剧本中。发生的事情是,每次我使用unarchive模块时,尽管每个文件都是相同的,但ansible正在覆盖主机中的文件。如果内容相同,如何使其不被覆盖?