如何复制以目标服务器名称命名的本地文件?

时间:2018-04-27 09:36:00

标签: ansible

你如何在ansible playbook中解决这个小脚本?

要复制的文件名为[ServerName].[extension] 目标服务器为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

感谢您的帮助

这个想法是有这样的东西(当然是工作)

- 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"

1 个答案:

答案 0 :(得分:0)

如果你用yaml写这个,你应该使用ansible_hostname,ansible已经通过setup提供了关于主机的几个信息。

- name: copying files
  copy:
    src: /mine/file.ext
    dest: /etc/{{ ansible_hostname }}.ext

有关module description复制的更多信息。 设置期间收集的所有事实均可here