我是ansible / ansible塔的新手,我已经尝试了几天并尝试复制文件,将软件安装到其他机器等等。
我有疑问。
假设我有1台控制机器和10台主机。 我想将5个文件复制到每个主机中。
我运行我的剧本。 我的ansible只能访问3个文件(例如 - 由于某些未知错误),因此它只将3个文件复制到所有主机中。 现在我看这个,在第一个工作完成后,我将所有文件都可用。 我再次运行我的剧本,这次它将所有5个文件复制到所有主机中。 现在我可以创建它,以便Ansible知道主机有前3个文件,并且在第二次运行playbook时,它知道它,因此,它只将剩余的文件复制到主机中?剩下的两个文件。
如果主机无法访问,同样的事情是第一次无法访问。在第二个作业中,它应该只将所有文件复制到该主机中。其余有3个文件的主机应该只复制剩余的文件。
答案 0 :(得分:1)
现在,我可以创建它,以便Ansible知道主机有前3个文件,并且在第二次运行playbook时,它知道它,因此,它只将剩余的文件复制到主机中吗? / p>
您无需做任何事情。使用Ansible,您可以定义所需的状态。
例如,使用copy
模块,您不会告诉Ansible复制文件。相反,您请求Ansible确保目标计算机上的某个文件具有所需的内容。如果已经这样做,Ansible不会执行任何操作。如果文件不存在,或者目标上的文件具有不同的内容,Ansible将复制该文件。
幂等,因为这个功能被调用,允许你多次运行同一个剧本,状态将始终与所需的状态保持一致。
这也意味着如果某项任务失败,重新运行该剧本将根据定义从其失败的地方“继续”。
有一小部分Ansible模块明确标记为“非幂等”, 它不提供此功能,但大多数都是。
Ansible并非万无一失,人们可以编写非幂等的剧本,但这是程序员的权力和责任。
最重要的是,Ansible有一个“重试” - 机制用于优化目的。