前言
在RH294的学习时经常看到, ansible.builtin模块(like ansible.builtin.file) 和 ansible.posix模块(like ansible.posix.firewalld)出现,感觉firewalld也是个内置模块,怎么用在两个不同的模块中,所以查了一下区别。
在Ansible中,ansible.builtin
和 ansible.posix
是两个不同的模块集合(collections),对比如下。
ansible.builtin
ansible.builtin
是 Ansible 的核心集合(ansible core),包含了一些常用的、与平台无关的模块,这些模块在 Ansible 的大多数版本中都内置存在。
特点:
- 平台无关:内部模块大多与操作系统无关,可以在各种平台上工作。
- 核心功能:提供基本的文件操作、软件包管理、用户和组管理等常见功能。
示例模块:
ansible.builtin.copy
:将文件从控制节点复制到目标节点。ansible.builtin.file
:设置文件属性(如权限、所有权)。ansible.builtin.yum
:在 RPM 系统上安装或管理软件包。ansible.builtin.user
:在目标系统上管理用户。ansible.builtin.command
:在远程主机上执行命令。
示例:
yaml
- name: Copy a file from control node to managed nodes
ansible.builtin.copy:
src: /path/to/source/file
dest: /path/to/destination/file
- name: Ensure a package is installed using yum
ansible.builtin.yum:
name: httpd
state: present
- name: Create a user
ansible.builtin.user:
name: johndoe
state: present
ansible.posix
ansible.posix
是一个专注于 POSIX(Portable Operating System Interface)兼容系统的集合,包含了一些专门用于类 Unix 系统(如 Linux、BSD)的模块。
特点:
- 类 Unix 系统专用:模块专门设计用于处理 POSIX 兼容的操作系统。
- 特定功能加强:提供一些与系统核心功能相关的操作。
示例模块:
ansible.posix.acl
:设置文件系统 ACL(访问控制列表)。ansible.posix.mount
:管理 POSIX 文件系统的挂载。ansible.posix.sysctl
:管理内核参数。ansible.posix.seboolean
:管理 SELinux 布尔值。ansible.posix.sefcontext
:管理 SELinux 文件上下文。
示例:
yaml
- name: Set ACL for a file
ansible.posix.acl:
path: /path/to/file
entity: johndoe
etype: user
permissions: rwx
state: present
- name: Ensure /mnt is mounted
ansible.posix.mount:
path: /mnt
src: /dev/sda1
fstype: ext4
opts: defaults
state: mounted
- name: Set sysctl parameter
ansible.posix.sysctl:
name: net.ipv4.ip_forward
value: 1
state: present
sysctl_set: yes
主要区别总结:
-
模块范围与专注:
ansible.builtin
是 Ansible 的核心模块集合,提供通用的、跨平台的基础功能模块。ansible.posix
是专注于 POSIX 兼容类 Unix 系统的特定模块集合,主要涉及文件系统和内核等底层系统功能。
-
适用平台:
ansible.builtin
的模块多为平台无关,适用于多种不同的操作系统。ansible.posix
的模块针对类 Unix 系统如 Linux 和 BSD 进行优化,不适用于 Windows 系统。
选择合适的模块集合至关重要,这取决于你的任务需要以及目标系统的类型。
Good Good Study, Day Day UP!!