Kubernetes/CICD/Ansible/Docs/Ansible模块参数解释以及常用命令.md
offends 7a2f41e7d6
All checks were successful
continuous-integration/drone Build is passing
synchronization
2024-08-07 18:54:39 +08:00

17 KiB
Raw Blame History

本文作者:丁辉

Ansible模块参数解释以及常用命令

太多了,只记少数吧,累~

Ansible 基础命令

  • 查看 Ansible 的可用模块

    ansible-doc -l
    
  • 测试主机的连通性

    ansible all -m ping
    
  • 查看组下所有的IP

    ansible all --list
    

使用 -i 指定 hosts 文件位置

-i /etc/ansible/hosts 

Ansible-Playbook 命令

  • 执行 Playbook

    ansible-playbook demo.yml
    
  • 指定任务执行 Playbook

    ansible-playbook demo.yml --start-at-task="指定任务"
    

Ansible 常用模块 Command

常用参数

参数 解释
command 要在远程主机上执行的命令。
creates 如果指定的文件或目录存在,则命令不会被执行。
removes 如果指定的文件或目录不存在,则命令不会被执行。
chdir 在执行命令之前,将当前工作目录更改为指定的目录。
executable 用于执行命令的可执行文件的路径。
warn 控制命令失败时的错误消息显示方式。
stdin 将输入发送到命令的标准输入。
stdin_add_newline 在发送到标准输入之前是否添加新行。
strip_empty_ends 控制在输出中删除空行的方式。
free_form 允许直接传递要执行的命令,无需使用command关键字。
  • 先切换目录,执行命令

    ansible all -m command -a 'chdir=/mnt ls -la'
    
  • 检查节点的内存情况

    ansible -m command -a "free -m " 'all'
    

Ansible 常用模块 Shell

常用参数

参数 解释
cmd 要在远程主机上执行的命令。
creates 如果指定的文件或目录存在,则命令不会被执行。
removes 如果指定的文件或目录不存在,则命令不会被执行。
chdir 在执行命令之前,将当前工作目录更改为指定的目录。
executable 用于执行命令的可执行文件的路径。
warn 控制命令失败时的错误消息显示方式。
stdin 将输入发送到命令的标准输入。
stdin_add_newline 在发送到标准输入之前是否添加新行。
strip_empty_ends 控制在输出中删除空行的方式。
free_form 允许直接传递要执行的命令,无需使用cmd关键字。
executable 用于执行命令的可执行文件的路径。
creates 如果指定的文件或目录存在,则命令不会被执行。
removes 如果指定的文件或目录不存在,则命令不会被执行。
  • 使用 /bin/bash 执行命令

    ansible all -m shell -a 'executable=/bin/bash ls -la /mnt'
    

Ansible 常用模块 Script

常用参数

参数 解释
script 要在远程主机上执行的脚本文件的路径。
creates 如果指定的文件或目录存在,则脚本不会被执行。
removes 如果指定的文件或目录不存在,则脚本不会被执行。
chdir 在执行脚本之前,将当前工作目录更改为指定的目录。
warn 控制脚本失败时的错误消息显示方式。
executable 用于执行脚本的解释器的路径。
stdin 将输入发送到脚本的标准输入。
stdin_add_newline 在发送到标准输入之前是否添加新行。
strip_empty_ends 控制在输出中删除空行的方式。
free_form 允许直接传递要执行的脚本路径,无需使用script关键字。
  • 编写一个脚本

    cat << EOF > demo.sh
    date
    EOF
    
  • 执行脚本

    ansible all -m script -a "/etc/ansible/demo.sh"
    

Ansible 常用模块 Copy

常用参数

参数 解释
src 源文件路径。
dest 目标文件路径。
backup 是否备份目标文件。
remote_src 如果为true则从控制节点的文件系统复制文件到远程主机。
checksum 控制是否使用校验和来判断文件是否需要复制。
content 如果为true则在Ansible控制节点上生成文件内容并将其传输到远程主机上。
directory_mode 在创建目录时设置权限模式。
force 强制复制文件,即使目标文件存在。
owner 设置目标文件的所有者。
group 设置目标文件的所属组。
mode 设置目标文件的权限模式。
seuser 设置目标文件的SELinux用户。
serole 设置目标文件的SELinux角色。
setype 设置目标文件的SELinux类型。
selevel 设置目标文件的SELinux等级。
follow 是否跟随符号链接。
  • 拷贝文件

    ansible all -m copy -a "src=/etc/ansible/demo.sh owner=root mode=777 dest=/mnt/demo.sh backup=yes"
    

Ansible 常用模块 File

常用参数

参数 解释
path 文件或目录的路径。
state 文件或目录的状态。可选值包括file、directory、link、hard、absent。
owner 设置文件或目录的所有者。
group 设置文件或目录的所属组。
mode 设置文件或目录的权限模式。
dest 用于创建符号链接的目标文件路径。
src 用于创建硬链接的源文件路径。
state 设置文件或目录的状态。
follow 是否遵循符号链接。
recurse 是否递归操作,用于目录。
directory_mode 用于设置目录的权限模式。
force 是否强制执行。
selevel 设置目标文件的SELinux等级。
serole 设置目标文件的SELinux角色。
setype 设置目标文件的SELinux类型。
seuser 设置目标文件的SELinux用户。
  • 创建文件

    ansible all -m file -a 'path=/mnt/demofile state=touch'
    
  • 创建目录

    ansible all -m file -a 'path=/mnt/demodir state=directory'
    
  • 修改文件的所有人

    ansible all -m file -a 'path=/mnt/demofile owner=docker'
    
  • 删除文件或目录

    ansible all -m file -a 'path=/mnt/demofile state=absent'
    ansible all -m file -a 'path=/mnt/demodir state=absent'
    

Ansible 常用模块 Archive

常用参数

参数 解释
path 要打包的文件或目录的路径。
dest 打包文件的目标路径,包括文件名和扩展名。
format 打包格式可选值包括tar、gz、bz2、tar.gz、tar.bz2。
owner 设置打包文件的所有者。
group 设置打包文件的所属组。
mode 设置打包文件的权限模式。
remote_src 如果为true则从控制节点的文件系统打包文件到远程主机。
remove_path 在归档中排除的路径的前缀。
exclude 排除指定的文件或目录。
extra_opts 传递给归档命令的额外选项。
  • 打包文件

    ansible all -m archive -a "path=/mnt/demo.sh dest=/mnt/demo.gz format=gz"
    

    解压使用

    gzip -d demo.gz
    

Ansible 常用模块 Cron

常用参数

参数 解释
name Cron任务的名称。
minute 设置分钟字段。可接受数字0-59、星号*表示每分钟或范围例如0-30表示0到30分钟之间
hour 设置小时字段。可接受数字0-23、星号*,表示每小时)或范围。
day 设置天字段。可接受数字1-31、星号*,表示每天)或范围。
month 设置月份字段。可接受数字1-12、星号*,表示每月)或范围。
weekday 设置星期字段。可接受数字0-60代表星期日、星号*,表示每天)或范围。
job Cron任务要执行的命令或脚本。
state 设置Cron任务的状态。可选值包括present存在或absent不存在
disabled 是否禁用Cron任务。如果设置为yes则Cron任务将被禁用。
user 设置Cron任务的所有者。
minute 设置分钟字段。
hour 设置小时字段。
day 设置天字段。
month 设置月份字段。
weekday 设置星期字段。
special_time 设置特殊时间值,如@reboot重启时运行或@daily每天运行
  • 生成定时任务

    ansible all -m cron -a 'job="echo hello" name=demo minute=*/2'
    
  • 禁止该定时任务

    ansible all -m cron -a 'job="echo hello" name=demo minute=*/2 disabled=yes'
    
  • 重新开启该定时任务

    ansible all -m cron -a 'job="echo hello" name=demo minute=*/2 disabled=no' 
    
  • 删除定时任务

    ansible all -m cron -a 'job="echo hello" name=demo minute=*/2 state=absent'
    

Ansible 常用模块 Yum

常用参数

参数 解释
name 指定要安装或删除的软件包名称。
state 指定软件包的状态。可选值包括present、latest、absent。
enablerepo 指定要启用的存储库。
disablerepo 指定要禁用的存储库。
disable_excludes 指定要禁用的软件包类型。
update_cache 是否更新缓存。
disable_gpg_check 是否禁用GPG检查。
installroot 安装软件包的根目录。
security 是否仅安装安全更新。
bugfix 是否只安装修复错误的更新。
enhancement 是否只安装增强更新。
ts 是否使用指定的事务ID。
  • 安装软件

    ansible all -m yum -a "name=wget state=present"
    
  • 卸载软件

    ansible all -m yum -a "name=wget state=absent"
    

Ansible 常用模块 Dnf

常用参数

参数 解释
name 指定要安装或删除的软件包名称。
state 指定软件包的状态。可选值包括present、latest、absent。
enablerepo 指定要启用的存储库。
disablerepo 指定要禁用的存储库。
disable_excludes 指定要禁用的软件包类型。
update_cache 是否更新缓存。
disable_gpg_check 是否禁用GPG检查。
installroot 安装软件包的根目录。
security 是否仅安装安全更新。
bugfix 是否只安装修复错误的更新。
enhancement 是否只安装增强更新。
ts 是否使用指定的事务ID。

Ansible 常用模块 Service

常用参数

参数 解释
name 指定要管理的服务名称。
state 指定服务的状态。可选值包括started、stopped、restarted、reloaded、enabled、disabled。
enabled 是否设置服务开机自启动。
pattern 用于匹配要操作的服务的模式。
sleep 在重新启动服务之前等待的时间(以秒为单位)。
arguments 传递给服务启动脚本的额外参数。
runlevel 设置服务在特定运行级别下的启用状态。
daemon_reload 在重启或重新加载服务之后是否重新加载守护程序。
force 是否强制执行操作。
  • 重启服务

    ansible all -m service -a "name=docker state=restarted"
    

Ansible 常用模块 User

常用参数

参数 解释
name 用户名。
state 用户的状态。可选值包括present、absent。
uid 用户的UID。
password 用户的密码。
group 用户所属的主组。
groups 用户所属的其他组。
append 是否追加用户到附加的组中。
shell 用户的登录Shell。
home 用户的主目录。
move_home 是否移动用户的主目录。
createhome 是否创建用户主目录。
system 是否创建系统用户。
update_password 是否更新密码。
expire 设置用户的账号过期日期。
remove 是否删除用户的主目录。
  • 创建用户

    ansible all -m user -a "name=demo state=present"
    
  • 删除用户

    ansible all -m user -a "name=demo state=absent"