特性

  • 模块化: 调用特定的模块,完成特定的任务.
  • 有 Paramiko, PyYAML , Jinja2 (模板语言) 三个关键模块
  • 支持自定义模块
  • 基于 Python 语言实现
  • 部署简单, 基于 python 和 SSH (默认已安装),agentless
  • 安全,基于OpenSSH
  • 支持 playbook 编排任务
  • 幂等性
  • 无需代理不依赖 PKI (无需 ssl)
  • 可以使用任何编程语言写模块
  • Yaml格式,编排任务,支持丰富的数据结构
  • 较强大的多层解决方案

Ansible 主要组层部分

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
  • Ansible Playbooks: 任务剧本(任务集) ,编排定义 Ansible 任务集的配置文件, 由 Ansible 顺序依次执行,桐城市 Json格式的 YML文件
  • Inventory: Ansible 管理主机的清单 /etc/anaible/hosts
  • Modules: ansible 执行命令的功能模块,多数为内置的核心模块,也可自定义
  • Plugins: 模块功能的补充,如链接类型插件,循环插件,变量插件,过滤插件等,不常用
  • API: 提供第三方程序调用的应用程序编程接口
  • Ansible: 组合Inventopy,API,modules,plugins的绿框,可以理解为是 ansible 命令工具,其为核心执行工具
  • Ansible 命令执行来源:
    • User, 普通用户, 即 system administrator
    • CMDB(资产管理系统) API 调用
    • PUBLIC/PRIVATE Cloud API调用
    • USER - Ansible Playbook - Ansibile
  • 利用ansible 管理的方式
    • Ad-Hoc 即 ansible命令,主要用于临时命令使用场景
    • Ansible-Playbook 主要用于长期规划好的,大型项目的场景,需要有前提的规划

 相关文件

  • 配置文件
    • /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  文件加密工具
    • /ust/bin/ansible-console  基于Console界面与用户交互的执行工具

Ansible 文件配置

  ansible 通过 ssh 实现配置管理,应用部署,任务执行等功能,因此,需要实现配置 ansible 端能基于秘钥认证的方式联系各被管理节点

  ansible 命令用法

ansible <host-pattern> [-m module_name] [-a args]
        --version #显示版本
        -m module  # 指定模块,默认为 command
        -v     # 详细过程 -vv -vvv 更详细的
        --list-hosts  # 显示主机列表,可简写 --list
        -k, --ask-pass    # 显示连接密码,默认key验证
        -C,--check        # 检查,并不执行
        -T, --timeout=TIMEOUT  # 执行命令的超时时间,默认10s
        -u, --user = REMOTE_USER    # 执行远程执行的用户
        -b, --become     # 代替旧版的 sudo 切换

主配置文件ansible.cfg 配置

[default]
inventory  = /etc/ansible/host        # 主机列表配置文件
library = /usr/share/my_modules    # 哭文件存放目录
remote_tmp = $HOME/.ansible/tmp    # 临时py命令文件存放在运城主机目录
local_tmp    =  $HOME/.ansible/tmp     # 本机的临时命令执行目录
forks = 5        # 默认并发数
sudu_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  # 默认日志 建议开启

主机清单 hosts 配置

# 分组配置,一台主机可以再多个组内, 默认 分组 all 全部主机
[web]
172.16.0.40

[db]
172.16.0.40
172.16.0.41

# 
www[001:006].example.com

  

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄