我们知道,随着时代的发展,运维已逐渐向着自动化方向发展,那么,掌握一些自动化运维工具必不可少,这样我们才能更加快速,准确的完成任务,避免手动带来的失误
常用的自动化运维工具
- Ansible:Python,Agentless,中小型应用环境
- Saltstack:Python,一般需要部署agent端,执行效率更高
- Puppet:ruby,功能强大,配置复杂,重型,适用于大型环境
- Fabric:Python,Agentless
- Chef:ruby,国内应用少
- Cfengine
- func
特性
- 模块化:调用特定的模块,完成特定的任务
- 有Paramiko、PyYAML、Jinjia2(模板语言)三个关键板块
- 支持自定义模块
- 基于Python语言实现
- 部署简单,基于python和ssh(默认安装),agentless
- 安全,基于openssh
- 基于playbook编排任务
- 幂等性:一个任务执行一遍和执行n遍效果一样,不会因为重复执行带来意外情况
- 无需代理不依赖pki(无需ssl)
- 可使用任何编程语言写模块
- YAML格式,编排任务,支持丰富的数据结构
- 较强大的多层解决方案
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界面与用户交互的执行工具
主机清单inventory
- /etc/ansible/hosts 文件格式
- inventory文件遵循INI文件风格,中括号中的字符为组名。可以将同一个主机同事归纳并到多个不同的组中;此外,当如若目标主机使用了非默认的ssh端口,还可以在
- 主机名称之后使用冒号加端口来标明
如:
[wedserver]
10.0.194.81
10.0.194.83
[dbserver]
10.0.194.81
10.0.194.82
[nfs]
10.0.194.8[1:3]
aansible主配置文件详解
[defaults]
# some basic default values...
#inventory = /etc/ansible/hosts 主机存放位置,可以自定义修改
#library = /usr/share/my_modules/ 默认搜寻模块的位置
#module_utils = /usr/share/my_module_utils/
#remote_tmp = ~/.ansible/tmp ansible执行的原理,本地生成python脚本,然后
#local_tmp = ~/.ansible/tmp copy远端执行,最后删除脚本
#plugin_filters_cfg = /etc/ansible/plugin_filters.yml
#forks = 5 默认并行进程数,可自定义调节
#poll_interval = 15 拉取数据间隔
#sudo_user = root 默认sudo为root
#ask_sudo_pass = True 执行是否询问口令,命令体现为参数-k
#ask_pass = True
#transport = smart
#remote_port = 22 远程主机端口号
#module_lang = C
#module_set_locale = False
#host_key_checking = False 检查对应服务器host_key,建议取消注释
#log_path = /var/log/ansible.log 日志文件
另外,ansible配置文件修改即生效,不需要重启类的操作