Ansible 如何复制以目标服务器名称命名的本地文件?
您将如何解决ansible剧本中的这个小脚本 要复制的文件名为Ansible 如何复制以目标服务器名称命名的本地文件?,ansible,Ansible,您将如何解决ansible剧本中的这个小脚本 要复制的文件名为[ServerName].[扩展名] 目标服务器是ServeName for file in $(ls /var/tmp) do ServerName=$(echo $file | awk -F. 'NF{NF--};1' scp /var/tmp/$file $ServerName:/var/tmp/ scp /var/tmp/pkg.rpm $ServerName:/var/tmp/ ssh $Se
[ServerName].[扩展名]
目标服务器是ServeName
for file in $(ls /var/tmp)
do
ServerName=$(echo $file | awk -F. 'NF{NF--};1'
scp /var/tmp/$file $ServerName:/var/tmp/
scp /var/tmp/pkg.rpm $ServerName:/var/tmp/
ssh $ServerName "cd /var/tmp; yum -y localinstall pkg.rpm "
done
谢谢你的帮助
我们的想法是有这样的东西(当然是工作的)
如果要在yaml中编写此代码,则应使用
ansible\u主机名
,因为ansible已经通过提供了有关主机的多个信息
有关复制的详细信息,请参见。
安装过程中收集的所有事实都可用。您是在尝试使用Ansible执行此脚本,还是在复制脚本并使用Ansible在目标服务器中执行?我想创建一个剧本,它可以执行脚本所执行的操作,而无需启动任何shell脚本。这样做的想法是(但这当然可以)name:main循环集_-fact:Servername:“{{item.split('/')[-1][:-5]}”copy:src:“{item}”dest:”/var/tmp/myfile.json”将_委托给:“{Servername}”和{fileglob“/var/temp/*json”ansible_hostname是目标主机的名称。在流中,我还不知道它的名称。“要复制的文件名为[ServerName].[extension]。目标服务器为ServeName。”“,这不是你的目标吗?你能说得更清楚吗?你想实现什么?ansible_hostname是目标主机的名称。在流中,我还不知道它的名称。在我们的配置服务器上,有一个文件系统,[ServerName].ext文件到达。当它存在时,必须将其复制到文件名中提到的服务器。我如何将ServerName(从文件名收集)分配给主机:?想法是这样做(但这当然会起作用)-名称:主循环集\u事实:服务器名:“{{item.split('/')[-1][:-5]}”copy:src:{item}}dest:“/var/tmp/myfile.json”委托给:{{Servername}”,并带有“{fileglob:-”/var/temp/*json”请在问题中添加格式化代码以提高可读性。
- name: main loop
copy:
src: "{{ item }}"
dest: "/var/tmp/myfile.json"
- name: Install package
yum:
name: "packageToInstall"
state: present
delegate_to: "{{ item.split('/')[-1][:-5] }}"
with_fileglob:
- "/var/temp/*json"
- name: copying files
copy:
src: /mine/file.ext
dest: /etc/{{ ansible_hostname }}.ext