目录
一、 assert模块
三、at模块
四、blockinfile模块
五、command模块
六、copy模块
七、 cron模块
八、 firewalld模块
九、 fail模块
十、 file模块
十一、 fetch模块
十二、filesystem模块
十三、 get_url模块
十四、group模块
十五、known_hosts模块
十六、lineinfile模块
十七、lvg模块
十八、lvol模块
十九、mount模块
二十、nmcli模块
二十一、ping模块
二十二、package_facts模块
二十三、parted模块
二十四、register模块和debug模块
二十五、reboot模块
二十六、setup模块
二十七、shell模块
二十八、sefcontext模块
二十九、stat模块
三十、synchronize模块
三十一、script模块
三十二、systemd模块
三十三、template模块
三十四、user模块
三十五、uri模块
三十六、yum模块和service模块
三十七、yum_repository模块
三十八、 常用模块汇总:
查看所有模块:
ansible-doc -l
查看具体模块:
ansible-doc setup
查看具体模块的示例输出:
ansible-doc -s setup
=========================================================================
一、 assert模块
Ansible assert模块用于在任务执行期间对变量或表达式进行断言。如果断言失败,则任务将失败并停止执行。它可以用于确保在任务执行期间满足某些条件,以避免出现意外的结果。
assert模块的语法如下:
- name: Ensure that a variable is set to a specific value
assert:
that:
- variable_name == expected_value
其中,that参数是一个列表,包含要断言的变量或表达式。如果列表中的任何一个断言失败,则任务将失败。
除了基本的相等性检查之外,assert模块还支持其他比较运算符,如大于、小于、包含等。它还可以用于检查变量是否存在、是否为真或是否为假等。
例如,以下示例使用assert模块检查变量my_var是否为字符串类型:
- name: Ensure that a variable is a string
assert:
that:
- my_var is string
如果my_var不是字符串类型,则任务将失败。
二、 authorized_key模块
authorized_key模块是Ansible中用于管理SSH授权密钥的模块。它可以将公钥添加到远程主机的授权密钥列表中,也可以从远程主机的授权密钥列表中删除公钥。
以下是一些常见的用法:
添加公钥到远程主机的授权密钥列表中:
- name: Add SSH key to authorized_keys
authorized_key:
user: username
key: "{{ lookup('file', '/path/to/public/key') }}"
从远程主机的授权密钥列表中删除公钥:
- name: Remove SSH key from authorized_keys
authorized_key:
user: username
key: "{{ lookup('file', '/path/to/public/key') }}"
state: absent
从远程主机的授权密钥列表中删除所有公钥:
- name: Remove all SSH keys from authorized_keys
authorized_key:
user: username
state: absent
注意:在使用authorized_key模块之前,需要确保远程主机上已经安装了SSH服务,并且已经启用了SSH密钥认证。
三、at模块
四、blockinfile模块
ansible blockinfile模块用于在文件中添加或修改一个块(block)的内容。它可以在文件中查找一个特定的标记(marker),然后在该标记之前或之后添加或修改一个块的内容。
该模块的常用参数包括:
path:要修改的文件路径。
block:要添加或修改的块的内容。
marker:标记,用于定位要修改的块的位置。
state:状态,可选值为present(添加或修改)或absent(删除)。
例如,以下是一个使用blockinfile模块添加一个块的示例:
- name: Add a block to a file
blockinfile:
path: /etc/nginx/nginx.conf
block: |
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:8000;
}
}
marker: "# BEGIN NGINX BLOCK"
state: present
这个任务会在/etc/nginx/nginx.conf文件中查找标记# BEGIN NGINX BLOCK,如果找到了该标记,则在该标记之前添加一个块。如果没有找到该标记,则在文件末尾添加该块。
五、command模块
临时命令:
ansible all -m command -a 'tail /etc/passwd' -i inventory
模块内容:
Ansible command 模块是用于在远程主机上执行命令的模块。它可以在远程主机上执行任何命令,就像在本地终端上一样。使用 Ansible command 模块可以轻松地在远程主机上执行命令,而无需在远程主机上安装任何额外的软件。
六、copy模块
临时命令:
ansible all -m copy -a 'content="this server is managed by ansible\n" dest=/etc/motd' --become
模块内容:
Ansible的copy模块用于将文件或目录从控制节点复制到远程主机。它可以复制本地文件到远程主机,也可以复制远程主机上的文件到本地。
copy模块的基本语法如下:
- name: Copy file from local to remote
copy:
src: /path/to/local/file
dest: /path/to/remote/file
owner: user
group: group
mode: 0644
其中,src表示源文件路径,dest表示目标文件路径。owner、group和mode是可选参数,用于设置文件的所有者、组和权限。
如果要复制目录,可以使用递归选项:
- name: Copy directory from local to remote
copy:
src: /path/to/local/directory/
dest: /path/to/remote/directory/
owner: user
group: group
mode: 0755
recurse: yes
在复制文件或目录之前,Ansible会检查目标文件是否存在。如果存在,它会根据md5校验和检查文件是否相同。如果不同,Ansible会覆盖目标文件。如果相同,Ansible会跳过复制操作。
ansible copy模块常用参数:
src:指定源文件路径,可以是绝对路径或相对路径。
dest:指定目标文件路径,可以是绝对路径或相对路径。
backup:指定备份文件路径,可以是绝对路径或相对路径。
force:如果目标文件已经存在,是否强制覆盖。
mode:指定目标文件的权限模式,可以是数字或字符串形式。
owner:指定目标文件的所有者。
group:指定目标文件的所属组。
validate:指定一个命令或脚本,用于验证复制的文件是否正确。
content:指定要复制的文件内容,可以是字符串或文件路径。
remote_src:如果源文件在远程主机上,是否使用远程主机上的文件进行复制。
follow:如果源文件是符号链接,是否跟随符号链接进行复制。
selevel:指定目标文件的安全级别。
serole:指定目标文件的安全角色。
setype:指定目标文件的安全类型。
seuser:指定目标文件的安全用户。
七、 cron模块
八、 firewalld模块
运行playbook:
ansible-playbook site.yml
模块内容:
Ansible的firewalld模块用于管理firewalld防火墙。以下是一些常用的参数:
state:指定防火墙状态,可以是enabled、disabled或permissive。
immediate:如果设置为yes,则立即应用更改,否则需要重启firewalld服务才能生效。
service:指定要打开或关闭的服务。
port:指定要打开或关闭的端口。
rich_rule:指定要添加或删除的复杂规则
九、 fail模块
用于强制任务失败。
十、 file模块
使用file模块处理受管主机上的文件。其工作方式与touch命令类似,如果不存在则创建一个空文件,如果存在,则更新其修改时间。在本例中,除了处理文件之外,Ansible还确保将文件的拥有用户、组和权限设置为特定值。
ansible file模块常用参数如下:
path:指定文件或目录的路径。
state:指定文件或目录的状态,可选值为file、directory、link、hard、absent,默认为file。
mode:指定文件或目录的权限,可以使用数字或字符串表示,如0644或u=rw,g=r,o=r。
owner:指定文件或目录的所有者。
group:指定文件或目录的所属组。
src:指定源文件的路径,用于创建符号链接。
dest:指定符号链接的目标路径。
recurse:指定是否递归处理目录,默认为no。
force:指定是否强制覆盖已存在的文件或目录,默认为no。
backup:指定是否备份已存在的文件或目录,默认为no。
follow:指定是否跟随符号链接,默认为yes。
selevel:指定SELinux安全级别。
serole:指定SELinux安全角色。
setype:指定SELinux安全类型。
seuser:指定SELinux安全用户。
十一、 fetch模块
ansible fetch模块用于从远程主机上获取文件,将其复制到本地主机上。
常用参数:
src:远程主机上的文件路径。
dest:本地主机上的目标路径。
flat:是否将文件复制到目标路径的根目录下,而不是保留原有的目录结构。
validate:用于验证文件的哈希值,可选值为md5、sha1、sha224、sha256、sha384、sha512,默认为md5。
十二、filesystem模块
十三、 get_url模块
playbook示例:
模块内容:
get_url模块是Ansible中用于从远程URL下载文件的模块。它可以从HTTP、HTTPS、FTP等协议下载文件,并支持基本身份验证和代理服务器。
常用参数:
url:要下载的文件的URL。
dest:下载文件的目标路径。
url_username:用于身份验证的用户名。
url_password:用于身份验证的密码。
force:如果目标文件已经存在,则强制重新下载。
timeout:下载超时时间。
validate_certs:是否验证SSL证书。
proxy_host:代理服务器的主机名。
proxy_port:代理服务器的端口号。
headers:HTTP请求头。
十四、group模块
Ansible的group模块用于管理Linux系统中的用户组。它可以用来创建、修改和删除用户组,以及添加和删除用户组中的用户。
以下是group模块的一些常用参数:
name:指定用户组的名称。
gid:指定用户组的GID。
state:指定用户组的状态,可以是present(存在)、absent(不存在)或者hidden(隐藏)。
system:指定用户组是否为系统用户组。
append:指定是否将用户添加到用户组中。
下面是一个使用group模块创建用户组的例子:
- name: Create a new group
group:
name: mygroup
state: present
这个例子将创建一个名为“mygroup”的用户组。如果该用户组已经存在,则不会进行任何操作。如果该用户组不存在,则会创建该用户组。
下面是一个使用group模块添加用户到用户组的例子:
- name: Add a user to a group
group:
name: mygroup
state: present
append: yes
members: myuser
这个例子将把名为“myuser”的用户添加到名为“mygroup”的用户组中。如果该用户组不存在,则会创建该用户组。如果该用户组已经存在,则会将该用户添加到该用户组中。
十五、known_hosts模块
Ansible known_hosts模块用于管理SSH主机的known_hosts文件。该模块可以添加、删除或验证主机的公钥是否存在于known_hosts文件中。
以下是一些常见的用法:
添加主机公钥到known_hosts文件中:
- name: Add host key to known_hosts
known_hosts:
name: example.com
key: "{{ lookup('file', '/path/to/public/key') }}"
删除主机公钥:
- name: Remove host key from known_hosts
known_hosts:
name: example.com
state: absent
验证主机公钥是否存在于known_hosts文件中:
- name: Verify host key in known_hosts
known_hosts:
name: example.com
key: "{{ lookup('file', '/path/to/public/key') }}"
state: present
注意:known_hosts模块默认使用当前用户的known_hosts文件,如果需要使用其他用户的文件,可以使用remote_user参数指定。
十六、lineinfile模块
ansible lineinfile模块用于在文件中查找指定的行,并对其进行修改、添加或删除操作。
常用参数:
path:指定要操作的文件路径。
regexp:指定要查找的正则表达式。
line:指定要添加或修改的行内容。
state:指定要执行的操作,可选值为present(添加或修改)、absent(删除)。
backup:指定是否备份原文件,可选值为yes或no,默认为yes。
示例:
在/etc/hosts文件中添加一行记录:
- name: Add a line to /etc/hosts
lineinfile:
path: /etc/hosts
line: "192.168.1.100 host1.example.com"
state: present
在/etc/hosts文件中删除一行记录:
- name: Remove a line from /etc/hosts
lineinfile:
path: /etc/hosts
regexp: "^192.168.1.100.*"
state: absent
十七、lvg模块
Ansible的lvg模块用于管理Linux系统上的逻辑卷组(LVM)。它可以用于创建、删除、扩展和缩小逻辑卷组。
十八、lvol模块
十九、mount模块
Ansible的mount模块用于在Linux系统上挂载文件系统。它可以用于挂载本地文件系统、NFS共享、CIFS共享等。
下面是一个使用mount模块挂载本地文件系统的例子:
- name: Mount /dev/sdb1 to /mnt/data
mount:
path: /mnt/data
src: /dev/sdb1
fstype: ext4
state: mounted
这个例子将/dev/sdb1文件系统挂载到/mnt/data目录下,并指定文件系统类型为ext4。state参数指定挂载状态,这里设置为mounted表示挂载。
二十、nmcli模块
二十一、ping模块
临时命令:
ansible all -m ping -i inventory
模块内容:
ansible的ping模块用于测试主机是否可达的模块。它会向目标主机发送一个ping请求,如果目标主机能够响应,则返回pong,表示主机可达。
使用ping模块可以快速测试主机的连通性,以确保在执行其他任务之前,主机之间的网络连接是正常的。
二十二、package_facts模块
Ansible的package_facts模块是一个用于收集有关系统上已安装软件包的信息的模块。它可以收集有关软件包名称、版本、安装状态和依赖关系等方面的信息,并将其存储在Ansible变量中,以便在后续任务中使用。
使用package_facts模块可以方便地了解系统上已安装软件包的情况,从而更好地管理和维护系统。例如,可以使用它来检查系统上是否安装了特定的软件包,并根据需要执行安装或升级操作。
以下是一个使用package_facts模块的示例:
- name: Collect package facts
package_facts:
manager: apt
- name: Check if package is installed
debug:
msg: "Package is installed"
when: "'package-name' in ansible_facts.packages
二十三、parted模块
二十四、register模块和debug模块
playbook示例:
register模块内容:
Ansible的register模块用于将任务执行的结果保存到变量中,以便后续任务使用。register模块可以将任务执行的结果保存到变量中,这些结果可以是命令输出、文件内容、任务状态等等。
debug模块内容:
Ansible的debug模块用于在playbook执行期间打印调试信息。它可以打印变量、模块输出、任务状态等信息,帮助我们更好地理解playbook的执行过程。
二十五、reboot模块
Ansible的reboot模块用于在远程主机上执行重启操作。它可以在执行其他任务之前或之后重启主机。
常用参数:
msg:重启时显示的消息,默认为“Reboot initiated by Ansible”。
pre_reboot_delay:重启前的延迟时间,单位为秒,默认为0。
post_reboot_delay:重启后的延迟时间,单位为秒,默认为0。
test_command:用于测试是否需要重启的命令,默认为“/usr/sbin/shutdown -r -F now”。
connect_timeout:连接超时时间,单位为秒,默认为10。
reboot_timeout:重启超时时间,单位为秒,默认为600。
示例:
yaml
- name: Reboot the server
reboot:
msg: "Reboot initiated by Ansible"
pre_reboot_delay: 30
post_reboot_delay: 60
test_command: "/usr/sbin/shutdown -r -F now"
connect_timeout: 20
reboot_timeout: 300
这个示例将在远程主机上执行重启操作,并在重启前等待30秒,在重启后等待60秒。它将使用/usr/sbin/shutdown -r -F now命令测试是否需要重启,并在连接超时时间为20秒,重启超时时间为300秒。
二十六、setup模块
临时命令:
ansible localhost -m setup | grep ansible_python_version
模块内容:
Ansible的setup模块是一个特殊的模块,它可以收集有关远程主机的各种信息,并将其存储在Ansible变量中。这些变量可以在后续任务中使用,以便更好地管理和配置远程主机。
setup模块可以收集的信息包括:
系统信息,如操作系统类型、版本、主机名、内核版本等。
硬件信息,如CPU型号、内存大小、磁盘容量等。
网络信息,如IP地址、MAC地址、网卡信息等。
软件信息,如已安装的软件包、服务状态等。
使用setup模块可以方便地了解远程主机的状态和配置,从而更好地管理和维护它们。
二十七、shell模块
临时命令:
模块内容:
ansible shell模块用于在远程主机上执行命令,与command模块类似,但是可以使用shell语法。它不同于command模块的地方在于,它可以使用管道、重定向和其他shell特性。需要注意的是,由于shell模块可以使用shell语法,因此在编写命令时需要特别小心,以避免潜在的安全问题。
command模块和shell模块的区别:
Ansible中的command和shell模块都可以用于在远程主机上执行命令,但它们之间有一些区别:
command模块只能执行简单的命令,而shell模块可以执行复杂的命令,包括管道、重定向和变量替换等。
command模块不会启动一个shell,而shell模块会启动一个shell来执行命令。
command模块返回命令的退出状态码,而shell模块返回命令的标准输出和标准错误输出。
因此,如果要执行简单的命令,建议使用command模块;如果要执行复杂的命令,建议使用shell模块。
二十八、sefcontext模块
ansible sefcontext模块用于管理SELinux文件上下文。它可以用于添加、修改和删除文件上下文规则。
常用参数:
path:指定文件或目录的路径。
setype:指定文件或目录的SELinux类型。
serange:指定文件或目录的SELinux范围。
seuser:指定文件或目录的SELinux用户。
state:指定文件或目录的SELinux状态,可以是present(存在)、absent(不存在)或reset(重置)。
二十九、stat模块
Ansible的stat模块用于获取文件或目录的状态信息,例如文件的大小、权限、所有者、修改时间等。它可以用于检查文件或目录是否存在、是否具有特定的权限等。
使用示例:
检查文件是否存在:
- name: Check if file exists
stat:
path: /path/to/file
register: file_stat
- name: Print file size
debug:
var: file_stat.stat.size
检查目录是否存在:
- name: Check if directory exists
stat:
path: /path/to/directory
register: dir_stat
- name: Print directory owner
debug:
var: dir_stat.stat.uid
检查文件是否具有特定的权限:
- name: Check file permissions
stat:
path: /path/to/file
register: file_stat
- name: Print file permissions
debug:
var: file_stat.stat.mode
检查文件是否是软链接:
- name: Check if file is a symlink
stat:
path: /path/to/file
register: file_stat
- name: Print symlink target
debug:
var: file_stat.stat.link_target
注意事项:
stat模块返回的状态信息可以通过register关键字保存到变量中,以便后续使用。
stat模块支持的参数包括path、follow、get_checksum、get_md5、get_mime、get_attributes等,具体用法可以参考官方文档。
三十、synchronize模块
Ansible的synchronize模块用于将本地文件或目录与远程主机上的文件或目录同步。它使用rsync协议进行同步,可以在本地和远程主机之间复制文件和目录,并确保它们保持同步。
synchronize模块的语法如下:
- name: Synchronize local directory with remote directory
synchronize:
src: /path/to/local/directory
dest: /path/to/remote/directory
其中,src指定本地目录的路径,dest指定远程主机上的目录路径。除此之外,还可以使用其他选项来控制同步行为,例如:
mode:指定同步模式,可以是pull(从远程主机拉取文件)或push(将本地文件推送到远程主机)。
compress:指定是否启用压缩传输。
delete:指定是否删除目标目录中不存在于源目录中的文件。
rsync_opts:指定传递给rsync命令的其他选项。
例如,以下示例将本地目录/path/to/local/directory同步到远程主机上的/path/to/remote/directory目录,并启用压缩传输和删除目标目录中不存在于源目录中的文件:
- name: Synchronize local directory with remote directory
synchronize:
src: /path/to/local/directory
dest: /path/to/remote/directory
mode: push
compress: yes
delete: yes
需要注意的是,synchronize模块需要在远程主机上安装rsync命令。如果远程主机上没有安装rsync,则需要使用raw模块或其他方法来安装它。
三十一、script模块
Ansible的script模块允许在远程主机上执行本地脚本。它可以用于在远程主机上执行任何可执行文件,包括bash脚本、Python脚本、Perl脚本等。使用script模块时,需要将本地脚本文件复制到远程主机上,并在远程主机上执行该脚本。它可以用于在远程主机上执行任何可执行文件,包括bash脚本、Python脚本、Perl脚本等。
使用script模块时,需要将本地脚本文件复制到远程主机上,并在远程主机上执行该脚本。可以使用Ansible的copy模块将脚本文件复制到远程主机上,然后使用script模块执行该脚本。
以下是一个使用script模块执行本地脚本的示例:
- name: Execute local script on remote host
hosts: webserver
tasks:
- name: Copy script to remote host
copy:
src: /path/to/local/script.sh
dest: /tmp/script.sh
mode: 0755
- name: Execute script on remote host
script: /tmp/script.sh
在上面的示例中,首先使用copy模块将本地脚本文件复制到远程主机的/tmp目录下,并将其设置为可执行文件。然后使用script模块执行该脚本。
三十二、systemd模块
Ansible的systemd模块用于管理systemd服务。它可以启动、停止、重启、重新加载、启用和禁用systemd服务。
常用参数:
name:服务名称。
state:服务状态,可以是started(启动)、stopped(停止)、restarted(重启)、reloaded(重新加载)、enabled(启用)和disabled(禁用)。
enabled:是否在系统启动时自动启用服务,可以是yes或no。
masked:是否屏蔽服务,可以是yes或no。
daemon_reload:是否重新加载systemd守护进程配置文件,可以是yes或no。
示例:
启动服务:
- name: Start nginx service
systemd:
name: nginx
state: started
三十三、template模块
Ansible的template模块用于在远程主机上生成文件,它可以将本地主机上的模板文件渲染为目标主机上的文件。模板文件可以包含变量、条件语句、循环语句等,这样可以根据不同的情况生成不同的文件。
使用template模块的步骤如下:
在本地主机上创建模板文件,可以使用Jinja2模板语言编写模板文件。
在Ansible playbook中使用template模块,指定模板文件和目标文件的路径。
在模板文件中使用变量、条件语句、循环语句等,根据需要生成目标文件。
示例:
在本地主机上创建一个名为nginx.conf.j2的模板文件,内容如下:
worker_processes {{ nginx_worker_processes }};
pid /run/nginx.pid;
events {
worker_connections {{ nginx_worker_connections }};
}
http {
server {
listen {{ nginx_listen }};
server_name {{ nginx_server_name }};
root {{ nginx_root }};
index index.html;
}
}
在Ansible playbook中使用template模块,指定模板文件和目标文件的路径:
- name: Generate nginx configuration file
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
在模板文件中使用变量、条件语句、循环语句等,根据需要生成目标文件。在这个例子中,我们使用了一些变量,如nginx_worker_processes、nginx_worker_connections、nginx_listen、nginx_server_name和nginx_root,这些变量可以在Ansible playbook中定义。
三十四、user模块
命令行用法:
ansible all -i inventory -m user -a 'name=newbie uid=4000 state=present'
运行user模块之前:
运行user模块之后:
模块内容:
Ansible的user模块用于管理系统用户,可以创建、修改和删除用户。以下是user模块的一些常用参数:
name:指定用户的名称。
uid:指定用户的UID。
password:指定用户的密码。
group:指定用户所属的组。
groups:指定用户所属的附加组。
shell:指定用户的默认shell。
home:指定用户的主目录。
state:指定用户的状态,可以是present(存在)、absent(不存在)、locked(锁定)或unlocked(解锁)。
下面是一个使用user模块创建用户的例子:
- name: Create user
user:
name: john
password: "{{ 'password' | password_hash('sha512') }}"
state: present
这个例子创建了一个名为john的用户,密码为password,并将其状态设置为present(存在)。注意,密码使用了password_hash过滤器进行哈希处理,以保证安全性。
三十五、uri模块
运行playbook:
ansible-playbook site.yml
模块内容:
ansible uri模块用于发送HTTP、HTTPS、FTP、SCP、SFTP和FILE请求。它可以用于从远程服务器下载文件、上传文件、发送POST请求等。ansible URI模块常用参数如下:
url: 必需,指定要访问的URL。
method: 可选,指定HTTP请求方法,默认为GET。
headers: 可选,指定HTTP请求头。
body: 可选,指定HTTP请求体。
status_code: 可选,指定期望的HTTP响应状态码,默认为200。
timeout: 可选,指定HTTP请求超时时间,默认为30秒。
validate_certs: 可选,指定是否验证SSL证书,默认为True。
return_content: 可选,指定是否返回HTTP响应内容,默认为True。
follow_redirects: 可选,指定是否跟随重定向,默认为True。
user: 可选,指定HTTP基本认证的用户名。
password: 可选,指定HTTP基本认证的密码。
force_basic_auth: 可选,指定是否强制使用HTTP基本认证,默认为False。
client_cert: 可选,指定客户端SSL证书路径。
client_key: 可选,指定客户端SSL证书私钥路径。
client_cert_password: 可选,指定客户端SSL证书密码。
三十六、yum模块和service模块
运行playbook:
ansible-playbook site.yml --become
yum模块内容:
Ansible的yum模块是用于在远程主机上安装、升级、删除和查询软件包的模块。它使用yum包管理器来执行这些操作。以下是一些常用的yum模块的参数:
name:指定要安装的软件包名称。
state:指定软件包的状态,可以是present(已安装)、absent(未安装)、latest(安装最新版本)。
update_cache:是否更新缓存,默认为yes。
disable_gpg_check:是否禁用GPG检查,默认为no。
enablerepo:指定要启用的仓库。
disablerepo:指定要禁用的仓库。
installroot:指定安装软件包的根目录。
exclude:指定要排除的软件包。
skip_broken:是否跳过损坏的软件包,默认为no。
security:是否只安装安全更新,默认为no。
bugfix:是否只安装错误修复更新,默认为no。
enhancement:是否只安装增强更新,默认为no。
group_package_types:指定要安装的软件包类型,可以是mandatory、default、optional、conditional。
timeout:指定超时时间,默认为30秒。
service模块内容:
Ansible的service模块用于管理系统服务。它可以启动、停止、重启、重新加载、检查状态等等。以下是一些常用的参数:
name:服务名称。
state:服务状态,可以是started(启动)、stopped(停止)、restarted(重启)、reloaded(重新加载)等。
enabled:是否在系统启动时自动启动服务,可以是yes或no。
pattern:用于匹配服务的正则表达式。
sleep:在执行操作之前等待指定的秒数。
timeout:等待服务启动或停止的最长时间,以秒为单位。
arguments:启动服务时传递的参数。
runlevel:服务应该在哪个运行级别下启动。
三十七、yum_repository模块
ansible yum_repository模块用于管理yum仓库,可以添加、删除、修改yum仓库。
常用参数:
name:仓库名称,必填参数。
description:仓库描述。
baseurl:仓库地址,必填参数。
gpgcheck:是否检查GPG签名,默认为yes。
enabled:是否启用该仓库,默认为yes。
gpgkey:GPG密钥地址。
sslverify:是否验证SSL证书,默认为yes。
state:仓库状态,present表示存在,absent表示不存在。
示例:
添加一个yum仓库:
- name: Add yum repository
yum_repository:
name: epel
description: EPEL YUM repo
baseurl: https://dl.fedoraproject.org/pub/epel/7/x86_64/
gpgcheck: no
enabled: yes