作者信息: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 @   黄嘉波  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
历史上的今天:
2024-03-07 在Docker中,如何查看镜像支持的环境变量?
2024-03-07 在Docker中,如何清理后台停止的容器?
2024-03-07 在Docker中,如何退出一个镜像的bash,而不终止它?
2024-03-07 在Docker中,Dockerfile有哪些常见指令?
2024-03-07 在Docker中,Docker安全么?
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波
点击右上角即可分享
微信分享提示