Ansible运行特别命令的首选方式

Ansible运行特别命令的首选方式,ansible,Ansible,我是Ansible的新手,刚开始一天,在尝试一些基本的即席命令时,我注意到为了在名为nodes的组上创建目录,以下两个命令都有效 方法1 ansible nodes -a "mkdir /BYANSIBLE_2" 方法2 ansible nodes -m file -a "path=/BYANSIBLE_3 state=touch" 根据文档,-a表示模块参数,那么为什么方法1可以工作呢? 根据我的理解,仅仅提供模块的参数而不指定模块本身是不应该工作的

我是Ansible的新手,刚开始一天,在尝试一些基本的即席命令时,我注意到为了在名为nodes的组上创建目录,以下两个命令都有效

方法1

ansible nodes -a "mkdir /BYANSIBLE_2"
方法2

ansible nodes -m file -a "path=/BYANSIBLE_3 state=touch"
根据文档,-a表示模块参数,那么为什么方法1可以工作呢? 根据我的理解,仅仅提供模块的参数而不指定模块本身是不应该工作的(除非有一些隐含的默认值)


另外,作为一名新手,在使用临时命令时,我应该关注方法1还是方法2?

如果命令行中没有提供模块,Ansible默认使用模块Ansible.builtin.command。此模块仅在远程节点命令行上运行命令,这就是“mkdir path”工作的原因。为你。这个模块的参数是,一个命令

在方法2中,您实际上是在调用一个特定的模块“文件”,该模块具有自己所需参数的定义。此模块的参数只是需要创建的路径

您使用的方法取决于具体情况。如果您在远程节点上测试命令,方法1将是我的选择,因为它比显式添加模块名更快。方法2在意图更明确的意义上更好

但更重要的是,我尝试为非常小的测试和任务保留特别的命令。Ansible对我来说是关于自动化和扩展的,所以我尽可能地创建剧本

您可以在以下链接中阅读更多内容: