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

相关推荐
zylyehuo8 小时前
Linux 彻底且安全地删除文件
linux
用户805533698031 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式
用户034095297911 天前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点
linux
悠然南风3 天前
Ansible常见模块总结及LDAP Role 编写与调试
ansible
Web3探索者3 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo3 天前
Linux系统中网线与USB网络共享冲突
linux
Sokach10154 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux
AlfredZhao5 天前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone
zzzzzz3106 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode6 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏