自动化运维(八)Ansible 之核心模块

Ansible 的核心模块是 Ansible 默认提供的一组最基本和常用的模块。这些模块涵盖了各种常见的任务,如文件管理、包管理、系统配置等。以下是一些 Ansible 的核心模块:

1、命令执行模块:

  • command: 用于在远程主机上执行简单的命令。它不支持管道、重定向和通配符等 shell 功能。例如:
    - name: Execute a commandcommand: /usr/bin/hostname
    
  • shell: 与 command 类似,但支持管道、重定向和通配符等 shell 功能。例如:
    - name: Execute a shell commandshell: cat /etc/hosts | grep localhost
    
  • script: 用于在远程主机上运行本地脚本。例如:
    - name: Run a local script on remote hostsscript: /path/to/local/script.sh
    
  • raw: 用于执行低级别的 SSH 命令,通常用于在 Python 未安装的情况下执行命令。例如:
    - name: Execute a raw commandraw: apt-get install -y python
    

2、文件管理模块:

  • copy: 用于将文件从本地复制到远程主机。例如:
    - name: Copy a file to remote hostscopy:src: /path/to/local/filedest: /path/to/remote/file
    
  • file: 用于管理文件和目录的属性,如权限、所有权等。例如:
    - name: Create a directoryfile:path: /path/to/directorystate: directorymode: '0755'
    
  • lineinfile: 用于在文件中插入、更新或删除特定行。例如:
    - name: Add a line to a filelineinfile:path: /path/to/fileline: 'New line content'
    
  • blockinfile: 用于在文件中插入、更新或删除多行文本块。例如:
    - name: Add a block of text to a fileblockinfile:path: /path/to/fileblock: |Line 1Line 2Line 3
    
  • template: 用于使用 Jinja2 模板渲染文件并复制到远程主机。例如:
    - name: Render a template and copy to remote hoststemplate:src: template.j2dest: /path/to/remote/file
    

3、包管理模块:

  • yum: 用于管理 Red Hat 系列系统的软件包。例如:
    - name: Install a package using yumyum:name: httpdstate: present
    
  • apt: 用于管理 Debian 和 Ubuntu 系统的软件包。例如:
    - name: Install a package using aptapt:name: apache2state: present
    
  • pip: 用于管理 Python 软件包。例如:
    - name: Install a Python package using pippip:name: requestsstate: present
    

4、系统管理模块:

- name: Create a new cron jobcron:name: "Daily backup"minute: "0"hour: "1"job: "/path/to/backup/script.sh"- name: Modify an existing cron jobcron:name: "Daily backup"minute: "30"hour: "2"job: "/path/to/backup/script.sh"- name: Remove a cron jobcron:name: "Daily backup"state: absent- name: Comment out a cron jobcron:name: "Daily backup"disabled: yes

在上面的示例中:

cron 模块的其他一些常用参数包括:

  • user: 用于管理用户账号。例如:
    - name: Create a useruser:name: johndoepassword: "{{ 'password' | password_hash('sha512') }}"
    
  • group: 用于管理用户组。例如:
    - name: Create a groupgroup:name: developersstate: present
    
  • cron 模块用于管理目标主机上的 cron 任务。cron 是 Unix/Linux 系统中的一个定时任务调度器,允许用户在指定的时间间隔执行特定的命令或脚本。下面是一个使用 cron 模块的示例:

  • 第一个任务使用 cron 模块创建一个名为 "Daily backup" 的新 cron 任务,该任务将在每天凌晨 1 点运行 /path/to/backup/script.sh 脚本。

  • 第二个任务修改现有的 "Daily backup" cron 任务,将其执行时间更改为每天凌晨 2 点 30 分。

  • 第三个任务通过将 state 参数设置为 absent,删除名为 "Daily backup" 的 cron 任务。

  • 第四个任务通过将 disabled 参数设置为 yes,注释掉名为 "Daily backup" 的 cron 任务,使其不再执行。

  • user: 指定要为其创建 cron 任务的用户。
  • job: 指定要执行的命令或脚本。
  • minutehourdaymonthweekday: 指定 cron 任务的执行时间。
  • special_time: 指定特殊的时间表,如 rebootannually 等。
  • state: 指定 cron 任务的状态,可以是 present(默认)或 absent
  • disabled: 指定是否禁用 cron 任务,可以是 yes 或 no(默认)。

5、网络管理模块:

  • get_url: 用于从指定的 URL 下载文件到远程主机。例如:
    - name: Download a file from URLget_url:url: https://example.com/file.tar.gzdest: /path/to/save/file.tar.gz
    
  • uri: 用于与 HTTP/HTTPS REST API 进行交互。例如:
    - name: Make an HTTP GET requesturi:url: https://api.example.com/endpointmethod: GETreturn_content: yes
    

6、调试模块:

  • debug: 用于打印调试信息,可以输出变量的值或自定义消息。例如:
    - name: Print a debug messagedebug:msg: "The value of variable is {{ variable_name }}"
    
  • assert: 用于检查条件是否满足,如果不满足则中止 playbook 的执行。例如:
    - name: Assert that a condition is trueassert:that:- result.rc == 0- "'success' in result.stdout"
    

7、条件和控制模块:

  • wait_for: 用于等待特定条件满足后再继续执行。例如:
    - name: Wait for a port to become availablewait_for:port: 80timeout: 60
    
  • pause: 用于暂停 playbook 的执行,等待用户输入后再继续。例如:
    - name: Pause for user inputpause:prompt: "Press Enter to continue"
    
  • fail: 用于故意使 playbook 执行失败并显示错误信息。例如:
    - name: Fail with a custom messagefail:msg: "Something went wrong"
    
  • when: 用于根据条件决定是否执行某个任务。例如:
    - name: Execute a task conditionallycommand: /path/to/script.shwhen: ansible_os_family == 'Debian'
    

8、信息收集模块:

  • setup: 用于收集目标主机的系统信息,如 IP 地址、操作系统、硬件信息等。例如:
    - name: Gather facts about the target hostssetup:
    
  • gather_facts: 用于控制是否收集目标主机的系统信息。例如:
    - hosts: allgather_facts: no
    

9、变量管理模块:

  • set_fact: 用于在 playbook 中设置自定义变量。例如:
    - name: Set a custom factset_fact:custom_variable: "custom_value"
    
  • add_host: 用于在 playbook 运行时动态添加主机到 inventory 中。例如:
    - name: Add a new host to inventoryadd_host:name: new_hostgroups: web_servers
    

10、任务控制模块:

  • import_tasks: 用于在当前 playbook 中导入另一个 task 文件。例如:
    - name: Import tasks from another fileimport_tasks: tasks/common_tasks.yml
    
  • include_tasks: 与 import_tasks 类似,但是在运行时动态地包含 task 文件。例如:
    - name: Include tasks based on a conditioninclude_tasks: tasks/conditional_tasks.ymlwhen: some_condition

这些核心模块提供了 Ansible 的基础功能,可以满足大多数常见的自动化任务需求。除了这些核心模块,Ansible 还有许多其他模块,用于处理更具体的任务,如云平台管理、数据库管理、通知等。

你可以通过运行 ansible-doc -l 命令来查看 Ansible 中所有可用的模块列表。同时,你也可以使用 ansible-doc <module_name> 命令来查看特定模块的详细文档和用法。

  •  import_playbook: 用于在当前 playbook 中导入另一个 playbook 文件。例如:
    - name: Import another playbookimport_playbook: playbooks/another_playbook.yml
    
    •  include_playbook: 与import_playbook类似,但是在运行时动态地包含 playbook 文件。例如:
      - name: Include a playbook based on a variableinclude_playbook: "playbooks/{{ playbook_name }}.yml"
      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/795108.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django--admin 后台管理站点

Django最大的优点之一&#xff0c;就是体贴的提供了一个基于项目model创建的一个后台管理站点admin。这个界面只给站点管理员使用&#xff0c;并不对大众开放。虽然admin的界面可能不是那么美观&#xff0c;功能不是那么强大&#xff0c;内容不一定符合你的要求&#xff0c;但是…

dm8 备份与恢复

dm8 备份与恢复 基础环境 操作系统&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) 数据库版本&#xff1a;DM Database Server 64 V8 架构&#xff1a;单实例1 设置bak_path路径 --创建备份文件存放目录 su - dmdba mkdir -p /dm8/backup--修改dm.ini 文件…

非关系型数据库——Redis基本操作

目录 一、Redis数据库常用命令 1.Set——存放数据 2.Get——获取数据 3.Keys——获取符合条件的键值 4.Exists——判断键值是否存在 5.Del——删除指定键值 6.Type——获取键值对应的类型 7.Rename——对已有键值重命名&#xff08;覆盖&#xff09; 8.Renamenx——对…

【蓝桥杯嵌入式】13届程序题刷题记录及反思

一、题目分析 考察内容&#xff1a; led按键&#xff08;短按&#xff09;PWM输出&#xff08;PA1&#xff09;串口接收lcd显示 根据PWM输出占空比调节&#xff0c;高频与低频切换 串口接收&#xff08;指令解析&#xff09;【中断接收】 2个显示界面 led灯闪烁定时器 二…

SV学习笔记(六)

覆盖率类型 写在前面 覆盖率是 衡量设计验证完备性 的一个通用词。随着测试逐步覆盖各种合理的场景&#xff0c;仿真过程会慢慢勾画出你的设计情况。覆盖率工具会 在仿真过程中收集信息 &#xff0c;然后进行后续处理并且得到覆盖率报告。通过这个报告找出覆盖之外的盲区&…

动态属性的响应式问题和行内编辑的问题

动态属性的响应式问题 通过点击给目标添加动态数据&#xff0c;该数据不具备响应式特性 如下图&#xff1a; 点击编辑&#xff0c;前面的数据框会变成输入框&#xff0c;点取消会消失 // 获取数据 async getList () {const res await xxxthis.list res.data.rows// 1. 获…

【QT+QGIS跨平台编译】074:【libdxfrw跨平台编译】(一套代码、一套框架,跨平台编译)

点击查看专栏目录 文章目录 一、libdxfrw介绍二、QGIS下载三、文件分析四、pro文件五、编译实践一、libdxfrw介绍 libdxfrw是一个用于读取和写入DXF(Drawing Exchange Format)文件的开源C++库。DXF是一种由AutoCAD开发的文件格式,用于存储CAD(计算机辅助设计)图形数据,它…

使用 LLMLingua-2 压缩 GPT-4 和 Claude 提示

原文地址&#xff1a;Compress GPT-4 and Claude prompts with LLMLingua-2 2024 年 4 月 1 日 向大型语言模型&#xff08;LLM&#xff09;发送的提示长度越短&#xff0c;推理速度就会越快&#xff0c;成本也会越低。因此&#xff0c;提示压缩已经成为LLM研究的热门领域。 …

ensp华为AC+AP上线配置

AR1配置&#xff1a; <Huawei>system-view # 进入系统视图<Huawei>sysname R1 # 设备重命名[R1]dhcp enable # 开启DHCP功能[R1]interface GigabitEthernet0/0/0 # 进入接口 [R1-GigabitEthernet0/0/0]ip address 192.168.0.1 23 # 配置接口地址 [R1-GigabitE…

SpringBoot配置文件加载的优先级顺序

SpringBoot配置文件加载的优先级顺序 1.按文件类型2.按路径比较3.按命令行参数设置 1.按文件类型 SpringBoot的配置文件可以分为.properties .yml .yaml 在同一路径下&#xff08;比如都在classpath下&#xff09;三者的优先级顺序是.properties> .yml> .yaml 2.按路径…

基于tensorflow和kereas的孪生网络推理图片相似性

一、环境搭建 基础环境&#xff1a;cuda 11.2 python3.8.13 linux ubuntu18.04 pip install tensorflow-gpu2.11.0 验证&#xff1a;# 查看tensorflow版本 import tensorflow as tf tf.__version__ # 是否能够成功启动GPU from tensorflow.python.client import device_lib pr…

MySQL数据库——3、选择数据库

一、选择数据库 在 MySQL 中&#xff0c;要选择&#xff08;或称为切换到&#xff09;一个数据库&#xff0c;可以使用 SQL 命令 USE。 USE database_name; database_name 是你要切换到的数据库的名称。 例如&#xff0c;要切换到名为 my_database 的数据库&#xff0c;可以…

金融数据_PySpark-3.0.3梯度提升树(GBTClassifier)实例

金融数据_PySpark-3.0.3梯度提升树(GBTClassifier)实例 梯度提升树 (Gradient Boosting Tree): 梯度提升树是一种集成学习方法, 可以通过组合多个弱学习器提高模型性能。 对于分类问题, 可以使用梯度提升决策树。 在实际应用中, 你可能需要进行一些特征工程, 确保输入特征的…

mysql 常见数据处理 dml

学习完&#xff0c;mysql正则表达式查询&#xff0c;把常见的数据处理&#xff0c;做一个汇总&#xff0c;便于查看。 数据操纵语言&#xff08;Data Manipulation Language, DML&#xff09;。 1&#xff0c;新增数据&#xff1a; 1&#xff0c;单个插入&#xff1a; insert…

达梦数据库如何开启数据库审计

基础环境 操作系统&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) 数据库版本&#xff1a;DM Database Server 64 V8 架构&#xff1a;单实例1 官方文档 《DM8安全管理》 5 审计 2 开启审计 审计开关必须由具有数据库审计员SYSAUDITOR权限的管理员进行设…

Python学习之-深拷贝和浅拷贝

前言&#xff1a; Python中的拷贝主要分为浅拷贝&#xff08;shallow copy&#xff09;和深拷贝&#xff08;deep copy&#xff09;&#xff0c;它们在处理复杂对象&#xff08;例如包含其他对象的对象&#xff09;时的行为有明显差异。浅拷贝仅复制对象的第一层&#xff0c;而…

测试框架pytest学习与实践

pytest是一个专业的测试框架&#xff0c;可以帮助我们对python项目进行测试&#xff0c;提高测试的效率。 pytest官网手册&#xff1a;pytest: helps you write better programs — pytest documentation 中文手册&#xff1a;Pytest 教程 入门学习 安装pytest pip instal…

jvm基础三——类加载器

类加载器 在Java中&#xff0c;类加载器&#xff08;Class Loader&#xff09;是Java虚拟机&#xff08;JVM&#xff09;的一部分&#xff0c;负责将类文件&#xff08;.class文件&#xff09;加载到JVM中&#xff0c;使得程序能够使用这些类。类加载器在Java中具有重要的作用&…

6 种事件驱动的架构模式

事件驱动架构(Event-Driven Architecture)是一种基于事件和事件处理的软件架构&#xff0c;它的核心思想是将系统的行为和逻辑抽象成一系列事件&#xff0c;这些事件在系统中按照一定的规则和顺序产生和传播&#xff0c;并被相应的处理器处理。事件驱动架构具有高度的灵活性、可…

【数据结构】考研真题攻克与重点知识点剖析 - 第 3 篇:栈、队列和数组

前言 本文基础知识部分来自于b站&#xff1a;分享笔记的好人儿的思维导图与王道考研课程&#xff0c;感谢大佬的开源精神&#xff0c;习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析&#xff0c;本人技术…