Ansible

内容纲要

什么是 Ansible ?

  • 是一种 IT 自动化工具
  • 依赖现有的操作系统的凭证来访问控制远程机器
  • 简单易用、安全可靠

Ansible 可以完成哪些任务?

  • 系统配置
  • 开发软件
  • 编排高级的 IT 任务(持续集成等)

Ansible 的优点

  • 轻量级
  • 易学习
  • 操作灵活
  • 无客户端
  • 推送式
  • Module 丰富
  • 商业化支持(Tower)

Ansible 的缺点

  • 效率低(串行执行)
  • 易挂起

与其他类似项目对比

项目 客户端 通信方式 Web 页面 效率 易用 实现语言 API 开源社区
Ansible ssh 有(Tower) Python 40.8 K
Puppet socket 一般 Ruby 5.6 K
Chef ssh 一般 Python 6.1 K
Salt RabbitMQ Python 10.5 K

使用

安装

  • Mac: pip install ansible

配置

  • Host 配置: /etc/ansible/hosts
  • ssh 配置: ssh-copy-id -i .ssh/[公钥文件] [用户]@[远程主机]

Ad-Hoc & Playbook

  • 类似 shell & shell script,但 Playbook 更加强大
  • Playbook 是对 Ad-Hoc 的编排
  • Ad-Hoc 适合简单快速的任务
  • Playbook 适合复杂异步的任务
  • Playbook 解决 shell script 的编写复杂、操作繁琐、跨平台问题

Ad-Hoc

语法

ansible [远程主机 | 分组] -m [模块] -a '模块参数'

Playbook

什么是 Playbook ?
  • 由 YAML 编写
  • 算是一门编程语言
  • 命令集合
功能
  • 声明配置
  • 编排复杂任务
  • 控制任务执行
语法
  • 变量(Inventory & Playbook)
    • vars
  • 流程控制
    • 循环
    • with_items
    • with_nested (嵌套)
    • 判断
    • when [true, false, not]
基本结构
  • host: 被操作的机器
  • remote_user: 登录机器的用户
  • tasks: 需要执行的任务
注意 ↓
如果语句以 "{" 开头,需要用**引号**包起来

例子
$ vim test.yml

---
- hosts: 192.168.1.111                      // 指定主机
  remote_user: root                       // 指定在被管理的主机上执行任务的用户
  tasks:                                  // 任务列表
  - name: disable selinux                // 任务名
    command: '/sbin/setenforce 0'        // 调用command模块 执行关闭防火墙命令
  - name: start nginx                    // 任务名
    service: name=nginx state=started    // 调用service模块 开启 nginx 服务

$ ansible-playbook test.yml

Tags:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注