作者信息:https://home.cnblogs.com/u/huangjiabobk

在运维工作中,Ansible都有什么模块?

Ansible 是一个强大的自动化运维工具,它通过模块来执行各种任务。Ansible 的模块库非常丰富,涵盖了系统管理、文件操作、软件包管理、网络配置、云服务等多个领域。以下是 Ansible 中常见的模块分类及具体模块的详细介绍:

1. 系统管理模块

这些模块用于管理主机的系统配置、用户、服务等。

1.1 service
  • 功能:管理服务的状态(启动、停止、重启、查询状态)。

  • 示例

    - name: 确保 Apache 服务正在运行
      service:
        name: httpd
        state: started
    
1.2 user
  • 功能:管理用户账户(创建、删除、修改用户)。

  • 示例

    - name: 创建用户
      user:
        name: newuser
        password: "{{ 'password' | password_hash('sha512') }}"
        state: present
    
1.3 group
  • 功能:管理用户组(创建、删除、修改组)。

  • 示例

    - name: 创建用户组
      group:
        name: newgroup
        state: present
    
1.4 systemd
  • 功能:管理 systemd 服务单元。

  • 示例

    - name: 重启 systemd 服务
      systemd:
        name: myservice
        state: restarted
    
2. 文件操作模块

这些模块用于管理文件、目录、模板等。

2.1 file
  • 功能:管理文件和目录的属性(创建、删除、设置权限等)。

  • 示例

    - name: 创建目录
      file:
        path: /path/to/directory
        state: directory
        mode: '0755'
    
2.2 copy
  • 功能:将文件从控制节点复制到目标节点。

  • 示例

    - name: 复制文件
      copy:
        src: /local/path/to/file
        dest: /remote/path/to/file
        owner: newuser
        group: newgroup
        mode: '0644'
    
2.3 template
  • 功能:将 Jinja2 模板文件渲染后复制到目标节点。

  • 示例

    - name: 渲染模板文件
      template:
        src: /local/path/to/template.j2
        dest: /remote/path/to/file
        owner: newuser
        group: newgroup
        mode: '0644'
    
2.4 lineinfile
  • 功能:在文件中插入或修改特定行。

  • 示例

    - name: 修改配置文件
      lineinfile:
        path: /etc/config/file
        regexp: '^option='
        line: 'option=value'
        state: present
    
3. 软件包管理模块

这些模块用于管理软件包的安装、更新和卸载。

3.1 apt
  • 功能:管理 Debian 系统中的软件包。

  • 示例

    - name: 安装软件包
      apt:
        name: nginx
        state: present
        update_cache: yes
    
3.2 yum
  • 功能:管理 RedHat 系统中的软件包。

  • 示例

    - name: 安装软件包
      yum:
        name: httpd
        state: present
    
3.3 pip
  • 功能:安装和管理 Python 包。

  • 示例

    - name: 安装 Python 包
      pip:
        name: requests
        state: present
    
4. 网络配置模块

这些模块用于管理网络设备和配置。

4.1 netconf
  • 功能:通过 Netconf 协议管理网络设备。

  • 示例

    - name: 配置网络设备
      netconf:
        host: 192.168.1.1
        port: 830
        username: admin
        password: secret
        commands: "show version"
    
5. 云服务模块

Ansible 提供了大量与云平台交互的模块,支持 AWS、Azure、GCP 等。

5.1 ec2
  • 功能:管理 AWS 的 EC2 实例。

  • 示例

    - name: 启动 EC2 实例
      ec2:
        instance_type: t2.micro
        image: ami-123456
        key_name: my-key
        region: us-east-1
        state: running
    
5.2 azure_rm
  • 功能:管理 Azure 资源。

  • 示例

    - name: 创建 Azure 虚拟机
      azure_rm_virtualmachine:
        resource_group: myResourceGroup
        name: myVM
        vm_size: Standard_DS2_v2
        image:
          offer: CentOS
          publisher: OpenLogic
          sku: '7.5'
          version: latest
    
6. 其他常用模块

这些模块用于执行通用任务。

6.1 ping
  • 功能:测试目标主机是否可达。

  • 示例

    - name: 测试主机
      ping:
    
6.2 setup
  • 功能:收集目标主机的系统信息。

  • 示例

    - name: 收集主机信息
      setup:
    
6.3 shellcommand
  • 功能:执行系统命令。

  • 示例

    - name: 执行命令
      shell: echo "Hello, World!" > /tmp/output.txt
    
7. 自定义模块

Ansible 支持用户自定义模块,可以根据实际需求开发新的模块来扩展功能。自定义模块可以使用 Python、PowerShell 等语言编写。

8. 我的总结

综上所述,Ansible 的模块库非常强大,涵盖了运维工作中几乎所有的常见任务。通过合理使用这些模块,可以实现高效的自动化运维。同时,Ansible 的模块库也在不断更新和扩展,用户可以通过 Ansible Galaxy 获取更多社区开发的模块。

posted @ 2025-03-07 12:47  黄嘉波  阅读(68)  评论(0)    收藏  举报
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波