zoukankan      html  css  js  c++  java
  • Ansible

    1, Ansible 发展史

    1.1 Ansible

    • 创始人,Michael DeHaan(Cobbler 与 Func 的作者)
    • 2012-03-09,发布 0.0.1 版,红帽收购
    • 2015-10-17,Red Hat 宣布收购

    1.2 同类自动化工具 GitHub 关注程度(2016-07-10)

    2,Ansible 特性

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

    3,ansible 架构

    4,Ansible 工作原理

    5,Ansible 主要组成部分

    • ANSIBLE PLAYBOOKS:任务剧本(任务集),编排定义 Ansible 任务集的配置文件,有 Ansible 顺序依次执行,通常是 JSON 格式的 YML 文件
    • INVEVTORY:Ansible 管理主机的清单 /etc/ansible/hosts
    • MODULES:Ansible 执行命令的功能模块,多数为内置核心模块,也可自定义
    • PLUGINS:模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用
    • API:供第三方程序调用的程序编程接口
    • ANSIBLE:组合 INVENTORY、API、MODULES、PLUGINS 的绿框,可以理解为 ansible 命令工具,气味核心执行工具

    5.1 Ansible 命令执行来源:

    • USER,普通用户,即 SYSTEM ADMINISTRATOR
    • CMDB(配置管理数据库)API调用
    • PUBLIC/PRIVATE CLOUD API 调用
    • USER -> Ansible Playbook -> Ansible

    5.2 利用 ansible 实现管理的方式

    • Ad-Hoc 即 ansible 命令,主要用于临时命令使用场景
    • Ansible-playbook 主要用于长期规划好的,大型项目的场景,需要有提前的规划

    5.3 Ansible-playbook (剧本)执行过程

    • 将已有编排好的任务集写入 Ansible-Playbook
    • 通过ansible-playbook 命令分拆任务集逐条 ansible 命令,按预定规则逐条执行

    5.4 Ansible 主要操作对象:

    • HOSTS 主机
    • NETWORKING 网络设备

    5.5 注意事项

    • 执行 ansible 的主机一般称为主控端,中控,master 或堡垒机
    • 主控端 Python 版本需要 2.6 及以上
    • 被控端 Python 版本小于 2.4 需要安装 Python-simplejson
    • 被控端如开启 SELinux 需要安装 libselinux-python
    • windows 不能做为主控端

    6,安装

    • yum 安装信息
    # yum info ansible
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
     * base: mirrors.aliyun.com
     * extras: mirrors.aliyun.com
     * updates: mirrors.aliyun.com
    Installed Packages
    Name        : ansible
    Arch        : noarch
    Version     : 2.7.7
    Release     : 1.el7
    Size        : 60 M
    Repo        : installed
    From repo   : epel
    Summary     : SSH-based configuration management, deployment, and task execution system
    URL         : http://ansible.com
    License     : GPLv3+
    Description : Ansible is a radically simple model-driven configuration management,
                : multi-node deployment, and remote task execution system. Ansible works
                : over SSH and does not require any software or daemons to be installed
                : on remote nodes. Extension modules can be written in any language and
                : are transferred to managed machines automatically.
    
    • rpm 包安装: EPEL 源
    yum install -y ansible
    
    • 确认安装
    # ansible --version
    ansible 2.7.7
      config file = /etc/ansible/ansible.cfg
      configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
      ansible python module location = /usr/lib/python2.7/site-packages/ansible
      executable location = /usr/bin/ansible
      python version = 2.7.5 (default, Oct 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
    

    7, 相关文件

    7.1 配置文件

    /etc/ansible/ansible.cfg    # 主配置文件,配置 ansible 工作特性
    /etc/ansible/hosts    # 主机清单
    /etc/ansible/roles/    # 存放角色的目录
    

    7.2 程序

    /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 界面与用户交互的执行工具
    

    8,主机清单 inventory

    • Inventory 主机清单
      • ansible 的主要功能用在于批量主机操作,为了便捷地使用其中的部分主机,可以在inventory file 中将其分组命名
    • 默认的 inventory file 为 /etc/ansible/hosts
    • inventory file 可以有多个,且也可以通过 Dynamic Inventory 来动态生成
    • /etc/ansible/hosts 文件格式
    • inventory 文件遵循 INI 文件风格,中括号中的字符为组名。可以将同一个主机同时归并到多个不同的组中;此外,当如若目标主机使用了非默认的SSH端口,还可以在主机名称之后使用冒号加端口来表明
    ntp.example.com
    
    [webservers]
    www1.example.com:222
    www2.example.com
    
    [dbservers]
    db1.example.com
    db2.example.com
    
    [servers]
    192.168.1.100
    192.168.1.111
    
    • 如果主机名称遵循相似的命名模式,还可以使用列表的方式标识各主机
    [webservs]
    www[01:100].example.com
    
    [dbsrvs]
    db-[a:f].example.com
    
    [srvs]
    192.168.1.10[0:1]
    

    9, Ansible 配置文件

    • Ansible 配置文件 /etc/ansible/ansible.cfg (一般保持默认)
    • [defaults]
    # inventory    = /etc/ansible/hosts    # 主机列表配置文件
    # library    = /usr/share/my_modules/   # 库文件存放目录
    # remote_tmp    = $HOME/.ansible/tmp    # 临时py命令文件存放远程主机目录
    # loacl_tmp    = $HOME/.ansible/tmp    # 本机的临时命令执行目录
    # forks    = 5    # 默认并发数
    # sudo_user    = root    # 默认 sudo 用户
    # ask_sudo_pass     =  True    # 每次执行 ansible 命令是否询问 ssh 密码
    # ask_pass    = True
    # remote_port     = 22
    # host_key_checking    = False   # 检查对应服务器的host_key,建议取消注释
    # log_path    = /var/log/ansible.log    # 日志文件
    
  • 相关阅读:
    【AHOI2009】 维护序列
    Codeforces Hello 2019 F. Alex and a TV Show[bitset+莫比乌斯反演]
    Codeforces Hello 2019 D. Makoto and a Blackboard[DP+数论+概率期望]
    Codeforces Hello 2019 ABCDF题解
    [BZOJ1042][HAOI2008]硬币购物[容斥原理+背包]
    Codeforces Round #529 (Div. 3)题解
    [BZOJ4311]向量[线段树分治+计算几何+二分/三分]
    [BZOJ1076][SCOI2008]奖励关[状压DP+概率期望]
    [POJ3368][UVA11235] Frequent values[ST表]
    [USACO5.5]矩形周长Picture[扫描线+线段树]
  • 原文地址:https://www.cnblogs.com/xiaoqshuo/p/10468850.html
Copyright © 2011-2022 走看看