首页 > 解决方案 > 如何在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:”的输入。

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

标签: moduleansiblehost

解决方案


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

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

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

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


推荐阅读