af7e0628546448505b250cf2e95b5054.jpg#Ansible

简介

  • 特点 :Ansible 是基于 Python 开发的,以简单易用、免客户端安装(被管理节点无需额外软件)等特点受到广泛欢迎。它默认使用SSH 协议对远程主机进行配置管理,通过模块化的方式实现各种自动化任务。
  • 架构 :Ansible 的架构相对简单,主要由控制节点(Manage Node)和被管理节点(ManagedNode)组成。控制节点是运行 Ansible 命令的机器,被管理节点是需要被配置和管理的目标机器。

使用

  • 安装 :在官网https://www.ansible.com/获取安装包,或通过系统的包管理工具安装 Ansible。
  • 基本配置 :安装完成后,需要配置 Ansible的配置文件(通常位于/etc/ansible/ansible.cfg),以及定义被管理节点的清单文件(Inventory文件,通常位于/etc/ansible/hosts)。在清单文件中,可以按组的方式列出被管理的主机。
  • 基本命令 :Ansible 提供了大量的模块用于执行各种任务,如文件管理、包管理、服务管理等。可以通过ansible命令直接执行ad-hoc(一次性)任务。

例如,要查看被管理节点的主机名,可以执行以下命令:

ansible all -m ping

这里的all表示对所有被管理节点执行,-m ping表示使用 ping 模块测试连接。

要安装一个软件包(如 nginx),可以执行:

ansible all -m apt -a "name=nginx state=present"

这里-m apt指定使用 apt 模块(适用于 Debian 系列系统),-a后面是模块的参数,name=nginx指定软件包名称,state=present表示确保软件包已安装。

  • 编写 Playbook :Playbook 是 Ansible 的核心功能之一,它允许你定义一系列任务,按顺序执行以实现复杂的配置和部署。Playbook 使用 YAML 格式编写。

以下是一个简单的 Playbook 示例,用于安装并启动 Nginx:

---
 - name: Install and start Nginx
  hosts: all
  become: yes
  tasks:
    - name: Install Nginx
      apt:
        name: nginx
        state: present

    - name: Start Nginx service
      service:
        name: nginx
        state: started
        enabled: yes

将上述内容保存为nginx.yml文件,然后使用以下命令执行 Playbook:

ansible-playbook nginx.yml

Playbook 中的hosts指定对哪些组的主机执行任务,become: yes表示需要以管理员权限执行任务,tasks部分定义了具体的任务列表。

Ansible 的其他功能

  • 模板 :Ansible 提供模板功能,允许你使用变量来生成配置文件。可以使用 Jinja2 模板引擎来创建动态配置文件。
  • 角色 :角色是一种组织 Playbook 和相关文件的方式,它允许你将 Playbook 分解为可重用的模块,便于管理和共享。
  • 回调插件 :Ansible 提供了回调插件机制,可以自定义任务执行时的输出格式,或者在任务执行过程中触发其他操作。

Puppet

简介

Puppet 是一款开源的自动化配置管理工具,它使用声明式语言来定义系统配置,用户只需描述系统应有的状态,Puppet 会自动处理如何将系统配置达到该状态。

使用

  • 安装 :在官网https://puppet.com/下载适合操作系统的安装包,按指引完成安装。
  • 架构部署 :通常采用主从架构,Master 节点负责存储配置定义和编译配置,Agent 节点安装在被管理机器上,定期向 Master发起连接请求,获取配置并应用。
  • 定义配置(Manifests) :使用 Puppet 的配置语言编写 Manifests 文件,以 .pp为后缀。这些文件定义了系统资源的配置,如文件、包、服务等。例如,要确保 nginx 已安装且服务已启动,可编写如下代码:
package { 'nginx':
  ensure => installed,
}

service { 'nginx':
  ensure => running,
  enable => true,
  subscribe => Package['nginx'],
}
  • 应用配置 :在 Agent 节点执行 puppet agent --test 命令,即可应用配置,使系统达到预期状态。Master节点通过 HTTP 或 HTTPS 与 Agent 节点通信,定期推送配置更新。

Chef

简介 :

Chef 使用纯 Ruby 编写的配方(Recipes)和食谱(Cookbooks)来定义基础设施配置和应用程序部署,具有灵活、强大的自动化能力,能实现复杂配置任务的自动化。

使用 :

  • 安装 :https://www.chef.io/获取安装包,根据操作系统选择并安装 Chef Development Kit(Chef DK)。
  • 架构搭建 :一般有 Chef Server、Workstation 和 Node 组成。Chef Server 存储 Cookbooks、节点配置等信息; Workstation 是管理配置的中心,用于开发、测试和上传 Cookbooks;Node 是被管理的机器,安装 Chef Client,定期与 Chef Server 通信获取配置。
  • 编写 Cookbooks 和 Recipes:创建一个 Cookbook,包含多个 Recipes。Recipe是具体的配置脚本,例如,安装 Apache 并启动服务的 Recipe:
package 'apache2'

service 'apache2' do
  action [:enable, :start]
end
  • 上传和应用配置:将 Cookbook 从 Workstation 上传至 Chef Server,使用 knife cookbook upload <cookbook_name> 命令。在 Node 上执行 Chef Client,运行 chef-client 命令,它会从 Chef Server 获取分配的 Cookbooks 并应用配置。