我想要一个 SFTP 命令将一个文件传输到两台机器。是否可以?
答案1
不会。SFTP 命令在单个连接上发生。
这听起来很像您想要一些简单的程序来获取目标计算机列表,并将文件复制到这些计算机或从中复制文件,执行命令,检查状态和成功,一致。
这样的工具还有很多!我通常使用的是安西布尔。
本质上,您将编写一个文件,为您的两台机器组提供一个名称。我们称它为inventory.ini
:
[karthiksmachines]
machine1
machine2
(当然,将machine1
和替换machine2
为您机器的主机名或 IP 地址)
然后您只需运行以下命令即可测试它是否有效:
ansible -i inventory.ini karthiksmachines -m ping
你应该得到一个很好的输出,表明machine1 | SUCCESS =>…
和 相同machine2
。 (如果没有,您可能没有正确设置 ssh 访问密钥。)
如果有效的话,那就太好了!现在我们来写一个剧本,即每台机器上要执行的任务的集合。我们称这个文件为playbook.yaml
。
- name: Maintain the machines of Karthik
hosts: karthiksmachines
tasks:
- name: Copy file over
ansible.builtin.copy:
src: /path/to/your/local/file.ext
dest: /path/where/the/file/should/end/file.ext
正如您所猜测的,您可以向列表中添加更多任务tasks:
;通常这些事情包括安装安全更新、下载日志文件或在服务器上设置服务。任何!
然后运行该剧本:
ansible-playbook -i inventory.ini playbook.yaml
所以,就这样了。一旦您将要管理的机器放入一个文件中,并将您希望这些机器执行的指令放入另一个文件中,您就需要运行一个命令:)
我发现这很容易,因此我尝试对所有服务器所做的所有事情都这样做,特别是软件安装、服务配置、用户创建等事情......。
这有一个很大的优点,如果我需要添加另一台服务器,我只需将其添加到清单中并让剧本运行即可。可复制的服务器!