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

397 lines
17 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

> 本文作者:丁辉
# Ansible模块参数解释以及常用命令
> 太多了,只记少数吧,累~
## Ansible 基础命令
- 查看 Ansible 的可用模块
```bash
ansible-doc -l
```
- 测试主机的连通性
```bash
ansible all -m ping
```
- 查看组下所有的IP
```bash
ansible all --list
```
> 使用 -i 指定 hosts 文件位置
>
> ```bash
> -i /etc/ansible/hosts
> ```
## Ansible-Playbook 命令
- 执行 Playbook
```bash
ansible-playbook demo.yml
```
- 指定任务执行 Playbook
```bash
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`关键字。 |
- 先切换目录,执行命令
```bash
ansible all -m command -a 'chdir=/mnt ls -la'
```
- 检查节点的内存情况
```bash
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 执行命令
```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`关键字。 |
- 编写一个脚本
```bash
cat << EOF > demo.sh
date
EOF
```
- 执行脚本
```bash
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 | 是否跟随符号链接。 |
- 拷贝文件
```bash
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用户。 |
- 创建文件
```bash
ansible all -m file -a 'path=/mnt/demofile state=touch'
```
- 创建目录
```bash
ansible all -m file -a 'path=/mnt/demodir state=directory'
```
- 修改文件的所有人
```bash
ansible all -m file -a 'path=/mnt/demofile owner=docker'
```
- 删除文件或目录
```bash
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 | 传递给归档命令的额外选项。 |
- 打包文件
```bash
ansible all -m archive -a "path=/mnt/demo.sh dest=/mnt/demo.gz format=gz"
```
> 解压使用
>
> ```bash
> 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每天运行。 |
- 生成定时任务
```bash
ansible all -m cron -a 'job="echo hello" name=demo minute=*/2'
```
- 禁止该定时任务
```bash
ansible all -m cron -a 'job="echo hello" name=demo minute=*/2 disabled=yes'
```
- 重新开启该定时任务
```bash
ansible all -m cron -a 'job="echo hello" name=demo minute=*/2 disabled=no'
```
- 删除定时任务
```bash
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。 |
- 安装软件
```bash
ansible all -m yum -a "name=wget state=present"
```
- 卸载软件
```bash
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 | 是否强制执行操作。 |
- 重启服务
```bash
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 | 是否删除用户的主目录。 |
- 创建用户
```bash
ansible all -m user -a "name=demo state=present"
```
- 删除用户
```bash
ansible all -m user -a "name=demo state=absent"
```