zoukankan      html  css  js  c++  java
  • 自动化运维之Ansible入门

    Ansible简介

    Ansible是什么?

    Ansible 简单的说是一个配置管理系统(ConfiGuration Management System)。你只需要可以使用ssh访问你的服务器或设备。它也不同于其他工具,因为它使用推送的方式,而不是像 puppet 等 那样使用拉取安装agent的方式。你可以将代码部署到任意数量的服务器上!

    Ansible能做什么?

    ansible可以帮助我们完成一些批量任务,或者完成一些需要经常重复的工作。

    比如:同时在100台服务器上安装nginx服务,并在安装后启动它们。
    比如:将某个文件一次性拷贝到100台服务器上。
    比如:每当有新服务器加入工作环境时,你都要为新服务器部署某个服务,也就是说你需要经常重复的完成相同的工作。
    这些场景中我们都可以使用到ansible。

    Ansible 与 SaltStack的区别:

    最大的区别是 Ansible 无需在被监控主机部署任何客户端代理,默认通过 SSH 通道进行远程命令执行或下发配置。
    相同点是都具备功能强大、灵活的系统管理、状态配置,都使用 YAML 格式来描述配置,两者都提供丰富的模板及 API,对云计算平台、大数据都有很好的支持。

    Ansible特性

    ansible软件服务端(管理端):不需要启动任何服务 默认服务端不需要任何的配置
    ansible软件客户端(受控端):没有客户端软件安装

    1、模块化:调用特定的模块,完成特定任务
    2、有Paramiko,PyYAML,Jinja2(模板语言)三个关键模块
    3、支持自定义模块
    4、基于Python语言实现
    5、部署简单,基于python和SSH(默认已安装),agentless
    6、安全,基于OpenSSH
    7、支持playbook编排任务
    8、幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况
    9、无需代理不依赖PKI(无需ssl)
    10、可使用任何编程语言写模块
    11、YAML格式,编排任务,支持丰富的数据结构
    12、较强大的多层解决方案

    Ansible架构

    • 连接插件connectior plugins用于连接主机 用来连接被管理端
    • 核心模块 core modules 连接主机实现操作, 它依赖于具体的模块来做具体的事情
    • 自定义模块 custom modules,根据自己的需求编写具体的模块
    • 插件 plugins,完成模块功能的补充
    • 剧本 playbooks,ansible的配置文件,将多个任务定义在剧本中,由ansible自动执行
    • 主机清单 inventor,定义ansible需要操作主机的范围
      最重要的一点是 ansible是模块化的 它所有的操作都依赖于模块

    Ansible与其它服务器的关系:

    Ansible功能详解

    /etc/ansible/ansible.cfg
    主配置文件,配置ansible工作特性
    /etc/ansible/hosts
    主机清单
    /etc/ansible/roles/
    存放角色的目录
    /usr/bin/ansible
    主程序,临时命令执行工具
    /usr/bin/ansible-doc
    查看配置文档,模块功能查看工具
    /usr/bin/ansible-galaxy
    下载/上传优秀代码或Roles模块的官网平台
    /usr/bin/ansible-playbook
    定制自动化任务,编排剧本工具
    /usr/bin/ansible-pull
    远程执行命令的工具
    /usr/bin/ansible-vault
    文件加密工具
    /usr/bin/ansible-console
    基于Console界面与用户交互的执行工具

    Ansible命令参数

    ansible sa -m command -a "hostname"
    指令 主机组模块名 指定模块参数 模块名称 指定利用模块执行的动作参数 批量执行操作动作

    --version 显示版本
    -a 模块参数(如果有)
    -m module 指定模块,默认为command
    -v 详细过程 –vv -vvv更详细
    --list-hosts 显示主机列表,可简写--list
    -k, --ask-pass 提示连接密码,默认Key验证
    -K,--ask-become-pass 提示使用sudo密码
    -C, --check 检查,并不执行
    -T, --timeout=TIMEOUT 执行命令的超时时间,默认10s
    -u, --user=REMOTE_USER 执行远程执行的用户
    -U, SUDO_USER, --sudo-user 指定sudu用户
    -b, --become 代替旧版的sudo 切换
    ansible-doc: 显示模块帮助
    ansible-doc [options] [module...]
    -a 显示所有模块的文档
    -l, --list 列出可用模块
    -s, --snippet 显示指定模块的简要说明

  • 相关阅读:
    SVN的使用
    ajax 显示,删除,批量删除,修改反填功能实现
    Linux 安装软件的几种方式
    《面向对象软件开发实践》笔记一
    Entity Framework 新手入门友好实例
    MIT 计算机科学及编程导论 Python 笔记 1
    JetBrains套装免费学生授权申请(IntelliJ, WebStorm...)
    我的十月
    关于《未成年人网络保护条例(草案征求意见稿)》的意见
    C# 分隔字符串成为字符串数组的方法(保留分隔符)
  • 原文地址:https://www.cnblogs.com/jasonminghao/p/12256428.html
Copyright © 2011-2022 走看看