ansible - 如何确保 ansible playbook 使用来自不同文件的主机名或从命令行使用它?
问题描述
我有一个从命令行下面运行的 ansible 剧本,它工作正常。
ansible-playbook -e 'host_key_checking=False' -e 'num_serial=10' test.yml -u golden
它适用于/etc/ansible/hosts
文件中指定的主机。但是有什么方法可以直接在命令行上传递主机名或在其中逐行生成带有主机名的新文件,以便我的 ansible 可以处理该主机名而不是使用默认/etc/ansible/hosts
文件?
下面是我的ansible文件:
# This will copy files
---
- hosts: servers
serial: "{{ num_serial }}"
tasks:
- name: copy files to server
shell: "(ssh -o StrictHostKeyChecking=no abc.host.com 'ls -1 /var/lib/workspace/data/*' | parallel -j20 'scp -o StrictHostKeyChecking=no abc.host.com:{} /data/holder/files/procs/')"
- name: sleep for 3 sec
pause: seconds=3
现在我想生成一个新文件,该文件将逐行包含所有服务器,然后我的 ansible play book 代替该文件工作?这可能吗?
我正在运行 ansible 2.6.3 版本。
解决方案
这个问题可能已经回答了,但只会再次回答以增加更多点。
始终在命令行中寻找与参数相关的帮助或所需的任何信息。
ansible-playbook --help | grep inventory
-i INVENTORY, --inventory=INVENTORY, --inventory-file=INVENTORY
specify inventory host path or comma separated host
list. --inventory-file is deprecated
对文件格式的 ansible 库存的支持有两个扩展:
- yml
- ini --> 指定 ini 扩展名不是强制性的。
清单链接提供了有关格式的更多信息,在选择要实施的任何格式之前应参考。
添加@HermanTheGermanHesse 答案,以便涵盖所有可能的点。
如果没有使用上述内容/您不想使用。Ansible 最后将引用 ansible.cfg 的主机和变量定义。
[defaults]
inventory = path/to/hosts
From here:
ansible.cfg 文件将按以下顺序选择:
- ANSIBLE_CONFIG 环境变量
- /ansible.cfg
- ~/.ansible.cfg
- /etc/ansible/ansible.cfg
推荐阅读
- flask - 是什么导致我尝试创建用户模型和相应表时出现“未提供密码”错误?
- c++ - 尽管参数正确,但简单的字符串替换给出错误
- java - 直接访问泛型数组不起作用
- symfony - 使用 Sonata 和 FosUser 进行安全登录
- typescript - 在打字稿中获取类的键
- html - 如何用 BS 刮掉这段 HTML
- javascript - 用是的反应在formik中重定向?
- java - 为什么我在分页的 recyclerview 上收到 ANR(应用程序无响应)?
- django - “必须提供查询字符串。” 石墨烯-蟒蛇
- ansible - 关于大规模部署环境下ansible的forks配置