ansible模块示例及说明

  1. 文件操作:

复制文件到目标主机:

  • name: Copy a file

ansible.builtin.copy:

src: /path/to/source/file

dest: /path/to/destination/file

创建目录:

  • name: Create a directory

ansible.builtin.file:

path: /path/to/directory

state: directory

删除文件或目录:

  • name: Remove a file or directory

ansible.builtin.file:

path: /path/to/file_or_directory

state: absent

  1. 软件包管理:

安装软件包:

  • name: Install a package

ansible.builtin.package:

name: package_name

state: present

卸载软件包:

  • name: Remove a package

ansible.builtin.package:

name: package_name

state: absent

  1. 服务管理:

启动服务:

  • name: Start a service

ansible.builtin.service:

name: service_name

state: started

停止服务:

  • name: Stop a service

ansible.builtin.service:

name: service_name

state: stopped

重新启动服务:

  • name: Restart a service

ansible.builtin.service:

name: service_name

state: restarted

  1. 用户管理:

创建用户:

  • name: Create a user

ansible.builtin.user:

name: username

state: present

修改用户密码:

  • name: Change user password

ansible.builtin.user:

name: username

password: "{{ 'new_password' | password_hash('sha512') }}"

删除用户:

  • name: Remove a user

ansible.builtin.user:

name: username

state: absent

  1. 远程命令执行:

执行 Shell 命令:

  • name: Run a shell command

ansible.builtin.shell: ls -l /path/to/directory

执行远程脚本:

  • name: Run a remote script

ansible.builtin.script:

src: /path/to/script.sh

  1. 系统信息:

获取主机信息:

  • name: Gather system facts

ansible.builtin.setup:

显示主机名:

  • name: Display hostname

ansible.builtin.debug:

var: ansible_hostname

  1. 网络配置:

配置网络接口:

  • name: Configure network interface

ansible.builtin.interface:

name: eth0

state: up

配置静态路由:

  • name: Configure static route

ansible.builtin.route:

dest: 10.0.0.0

netmask: 255.255.255.0

gateway: 192.168.1.1

  1. 文件压缩和解压:

压缩文件或目录:

  • name: Compress a file or directory

ansible.builtin.archive:

path: /path/to/source

dest: /path/to/destination/file.tar.gz

format: gz

解压文件或目录:

  • name: Extract an archive

ansible.builtin.unarchive:

src: /path/to/source/file.tar.gz

dest: /path/to/destination

remote_src: yes

  1. 数据库操作:

执行 SQL 查询:

  • name: Execute SQL query

ansible.builtin.mysql_db:

login_user: db_user

login_password: db_password

database: db_name

state: query

query: "SELECT * FROM table_name;"

创建数据库:

  • name: Create a database

ansible.builtin.mysql_db:

login_user: db_user

login_password: db_password

name: new_db_name

state: present

  1. 日志记录和输出:

记录日志:

  • name: Log a message

ansible.builtin.debug:

msg: "This is a log message."

打印变量值:

  • name: Print variable value

ansible.builtin.debug:

var: my_variable

  1. 添加主机
  • name: 添加主机到 Ansible 清单

hosts: localhost

tasks:

  • name: 添加新主机

ansible.builtin.add_host:

hostname: "{{ dynamic_hostname }}" # 新主机的主机名

ansible_ssh_host: "{{ dynamic_ip }}" # 新主机的 IP 地址

delegate_to: localhost # 在本地主机上执行此任务

  • name: 在新主机上执行命令

hosts: "{{ dynamic_hostname }}" # 使用新添加的主机

tasks:

  • name: 执行命令

command: echo "Hello from the new host"

  1. ansible.builtin.archive:

说明:该模块用于创建和提取存档文件,支持常见的存档格式如 tar 和 zip。

示例用法:创建一个 tar 存档文件。

  • name: 创建 tar 存档文件

ansible.builtin.archive:

src: /path/to/source

dest: /path/to/destination/archive.tar

format: tar

13.ansible.builtin.assert:

说明:此模块用于添加断言,以验证任务的状态或条件。如果断言失败,任务将失败。

示例用法:验证文件是否存在。

  • name: 验证文件存在

ansible.builtin.assert:

that:

  • "ansible_facts['file_exists'] == True"

vars:

ansible_facts:

file_exists: true

14.ansible.builtin.async_status:

说明:用于检查异步任务的状态。

示例用法:检查异步任务的状态。

  • name: 检查异步任务状态

ansible.builtin.async_status:

jid: "{{ async_result.ansible_job_id }}"

register: async_check

  • debug:

var: async_check

15.ansible.builtin.at:

说明:用于在特定时间执行任务的模块。

示例用法:使用 at 模块执行命令。

  • name: 使用 at 模块执行命令

ansible.builtin.at:

command: "echo 'Hello, world' > /tmp/hello.txt"

count: 1

units: hours

value: 1

job_file: /tmp/at_job.txt

16.ansible.builtin.atd:

说明:用于启用或禁用远程主机上的 at 服务。

示例用法:启用 at 服务。

  • name: 启用 at 服务

ansible.builtin.atd:

state: started

相关推荐
运维李哥不背锅2 小时前
K8S集群节点负载无故飙升:CPU软死锁解决方案
linux·运维
佟晖4 小时前
KGDB调试Linux内核与模块
linux·系统编程
cosX+sinY5 小时前
ubuntu 20.04 编译和运行A-LOAM
linux·ubuntu·bash
会飞的土拨鼠呀6 小时前
vim 清除文件所有行
linux·编辑器·vim
Brandon汐6 小时前
Linux第四章练习
linux·运维·服务器
Jayin_chan6 小时前
ragflow本地部署(WSL下Ubuntu)
linux·ubuntu·ai大模型·rag·ragflow
ab_dg_dp7 小时前
解决Ubuntu系统鼠标不流畅的问题
linux·ubuntu·计算机外设
理智的煎蛋7 小时前
es 原生linux部署集群
大数据·linux·服务器·elasticsearch
nzxzn8 小时前
linux第三次作业
linux·运维·服务器
海风极客8 小时前
怎样读懂top命令?
linux·后端·程序员