如何在ansible中执行模块之前添加一个变量主机?

How to add a host that is a variable before executing a module in ansible?

这是我要执行的任务

- hosts: variable-vm
  become: yes
  tasks:
   - name: Transfer file from local to remote
     copy:
       src: /tmp/file
       dest: /home/ansible/

现在,在用户执行我的剧本之前,我希望他输入

--extra-vars "server=variable-vm"

在其他任务中,这是在 yml 文件的开头定义的,如下所示:

- hosts: webservers
  vars:
    my_server: "{{ server }}"
  become: yes
  tasks:

当我需要时,我会将任务委托给那个变量 vm

 delegate_to: '{{ my_server }}'

请记住,我已经在 "webservers"

下的清单中定义了 variable-vm

基本上我的机器通过 ssh 密钥连接到几十台服务器,这些服务器在 /etc/hosts 下定义。我只希望用户输入在 /etc/hosts 中定义的服务器名称,并在复制任务之前将该变量用作 "hosts:" 的输入。

据我所知,没有其他方法可以指定我要将文件复制到的远程机器。

@CzipO2,可以使用extra_vars发送主机到ansible-playbook命令如下图,

ansible-playbook -i hosts main.yml -e new_host=192.168.10.10

并且可以将任务委托给这个宿主。

据我所知,不可能将主机放在一个变量中然后 运行 其上的任务,您始终可以将任务委托给使用 extra_vars 指定的主机。