Fra*_*ona 5 command module ansible
我从Ansible开始,我发现有一个名为的模块command,可以让我在远程节点中执行任何命令。
我看到了几个示例,其中使用command而不是特定的模块来解决初始设置。例如,据我所知,这两个都完成相同的任务:
- name: Install git using apt module
apt:
name: git
state: present
- name: Install git using command
command: apt-get install git
Run Code Online (Sandbox Code Playgroud)
因此,我的问题是:使用模块而不是命令有任何区别或任何原因吗?
简而言之,不同之处在于使用特定模块将使您具有剧本的幂等性,并提供更好的可移植性和可读性。
幂等是什么意思?运行时:
- name: Install git using apt module
apt:
name: git
state: present
Run Code Online (Sandbox Code Playgroud)
仅当尚未在目标系统上安装git软件包时,它才会安装git软件包,并且在playbook运行后,此任务将以绿色报告(OK)。
command模块的第二种方法:
- name: Install git using command
command: apt-get install git
Run Code Online (Sandbox Code Playgroud)
changed当实际上没有任何更改时(假设已经安装了git软件包),上述命令将始终将状态报告为(黄色)。也有一些方法可以使任务使用command模块幂等,但是这会花费更多的工作。
最佳做法是始终command在剧本之前使用特定的模块。
Ansible就是关于描述和管理系统状态的全部。当您在某个目标系统上运行剧本时,看到一项任务报告changed状态可能很容易产生误导,而实际上没有任何更改。声明式地考虑描述所需的状态,而不是使系统达到此状态所需的低级命令。
下面的文章还将提供有关使用commandvs特定模块的差异和后果的一些解释:
| 归档时间: |
|
| 查看次数: |
812 次 |
| 最近记录: |