module - 如何在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 指定的主机。
推荐阅读
- anaconda - 无法使用 conda 安装软件或自行更新?
- mysql - CircleCI 中具有多个数据库的 Docker 映像
- tensorflow - Tensorflow:虽然我的梯度为零,为什么我的损失却在下降?
- javascript - HTML / JS - 从 index.js onclick 调用函数
- python - 使用 CTE 语句创建具有特定列和值的表值
- spring - Spring Boot 启动失败
- javascript - 如何在 Angular 6 中使用带有打字稿的 Highcharts Solid Gauge?
- automated-tests - 断言该元素在赛普拉斯中不可操作
- javascript - Vue路由器链接不呈现
- html - 没有引导程序的 CSS 响应卡