ansible - Ansible 运行 Ad Hoc 命令的首选方式
问题描述
我对 Ansible 还是很陌生,刚出生一天,在尝试一些基本的临时命令时,我注意到为了在名为nodes的组上创建一个目录,以下两个命令都有效。
方法一
ansible nodes -a "mkdir /BYANSIBLE_2"
方法二
ansible nodes -m file -a "path=/BYANSIBLE_3 state=touch"
根据文档, -a 表示模块参数,那么为什么方法 1 有效?根据我的理解,仅提供模块的参数而不指定模块本身是行不通的(除非有一些隐含的默认值)。
另外,作为新手,我应该在使用临时命令时关注方法 1 还是方法 2?
解决方案
如果命令行中没有提供模块,Ansible 默认使用模块 ansible.builtin.command。该模块仅在远程节点命令行上运行命令,这就是“mkdir 路径”起作用的原因。为你。这个模块的参数是一个命令。
在方法 2 中,您实际上是在调用一个特定的模块“文件”,该模块具有自己的所需参数定义。该模块的参数只是需要创建的路径。
您使用的方法取决于具体情况。如果您在远程节点上测试命令,我会选择方法 1,因为它比显式添加模块名称要快。方法2在意图更明确的意义上更好。
但更重要的是,我尝试为非常小的测试和任务保留临时命令。Ansible 是关于自动化和扩展的,所以我尽可能地尝试创建剧本。
您可以在以下链接中阅读更多内容:
https://docs.ansible.com/ansible/latest/user_guide/intro_adhoc.html
推荐阅读
- mysql - 如何优化此 sql 中的“使用文件排序”
- rxjs - 如何在 Rx.Net 中使用 iteself 递归地执行打结/定义 observable?
- android - 我的 Android 应用程序在使用 Kotlin 的 recyclerview 中加载 JSON 数据时崩溃
- qt - QT创建者创建的可执行exe如何获取调试信息
- routes - WiFi接口UP时rmnet接口不添加默认路由
- python-3.x - 如何从另一个函数调用一个函数中的一个函数?
- python - 将列表元素作为函数参数传递
- oauth-2.0 - 使用 github OAuth2 时无法获取访问令牌
- javascript - 列表组件必须在内部使用
- 反应管理员 3.8.5 - postgresql - 在某些环境中,PostgreSQL 不会在(文本)连接列上使用索引