[关闭]
@WillireamAngel 2018-05-14T13:48:41.000000Z 字数 2461 阅读 2626

Python自动化运维

运维


前言—自动化脚本编写

Python自动化脚本
自动化运维:高效率、平台化、标准化、流程化
自动化运维工具:jenkins、ansible、zabbix
设计思想:管理体系化、工作流程化、人员专业化、任务自动化、环境定义自动化、部署自动化、监控自动化
主要函数:

os.system()
- 执行命令
- 返回命令值
- 命令输出到标准输出

raw_input()
- 暂停程序,等待输入
- 返回用户输入

云运维:资源数据共享、问题处理、同意标准、成本低。

一、ansible教程

1. 简介

自动化工具管理IT资源
功能:系统环境配置,安装软件,持续集成,热回滚。
SSH服务、推送式、丰富的module、基于YAML的Playbook、商业化支持
效率低、易挂起、并发性差
Salt整体性能比Ansible好。

2. 安装运行

工具:python、setuptools、pip / yum install ansible
Ansible --> ssh -->shell
配置(按照优先级读取):
- export ANSIBLE_CONFIG
- ./ansible.cfg
- ~/.ansible.cfg
- /etc/ansible/ansible.cfg
- 默认配置
配置文件:
/etc/ansible
github

3. 配置

gather_subnet:all\network\hardware\virtual\facter\ohai

客户机设置:remote_port & remote_tmp & remote_user

sudo命令设置:sudo_exe & sudo_flags&sudo_user

插件:action_plugins&callback_plugins&connection_plugins&filter_plugiins&lookup_plugins&vars_plugins(激活事件、回调、连接、过滤器、加载路径、任何地方加载)

forks:最大开辟的进程数,过大性能耗费高,过小并发性能低,一般设置:CPU核数*2

module_name:/usr/bin/ansible默认模块名(-m),不支持shell变量、管道、配额。

vault_password_file:脚本,可以执行,密码标准输出

pattern:playbook要通信的默认主机组,默认对所有主机通信。

inventory&library:可通信主机的目录和Ansible默认搜索模块路径

3. 初步使用环境准备

  1. ssh免密登录
    生成公钥
  1. #ssh-keygen

添加免密登录(需要修改hosts):

  1. ssh-copy-id {username}@node1
  1. 测试机器运行状态
    ansible all -m ping
  2. ansible命令
    -a 制定传入模块的参数
    -C -D 两个一起用,检查hosts规则文件修改
    -I限制匹配规则主机
    --list-hosts 显示所有匹配规则的主机数
    -m -M指定所使用的模块和模块的路径
    --syntax-check 检查语法
    -v 显示详细的日志

  3. 分组

1.Inventory分组

  1. [ansiblelist]
  2. ansible02

ansible [组名] -m ping
2.自定义端口
编写hosts时ip后添加端口
别名:

  1. jumper ansible_ssh_port=*** ansible_ssh_host=*** ansible_ssh_user=****

3.连续指定分组
[a-z]等
4.Inventory参数
ansible_ssh_host
ansible_ssh_port
ansible_ssh_user
ansible_sudo_pass
ansible_sudo_exe
ansible_connection 与主机的连接类型(local、ssh、paramiko)
ansible_ssh_private_key_file
ansible_shell_type
5.分文件管理/分文件夹管理
/group_vars/
/hosts_vars/

  1. Patterns(类正则表达式)

    • 所有hosts机器:"*"
    • 指定一组连续机器:"*"
    • 指定一组不相关机器:":"
    • 分区支持patterns:":"多组分隔、!(非)、&(与)(从左到右依次匹配)
  2. Ad-Hoc
    类似于shell命令
    git模块
    service模块
    setup模块

  3. Playbook
    顺序控制、优化控制

四、Ansible API

  1. API
    调用ansible模块、开发inventory源
  2. 调用ansible模块
    引入ansible runner库、初始化runner对象,传入相关参数、运行runner对象的run函数。
  3. 调用ansible 2.0+
    定义结果对象,初始化ansible节点对象,初始化结果对象,创建一个任务,运行ansible节点

二、saltstack教程

1.简介

优点:
简单
并行执行
基础成熟技术ZeroMQ、AES
Python API
缺点:
需要单独安装给客户端
安全隐患大(SaltStack客户端获取root权限)

2.服务架构

Master--管理所有节点
Minion--节点服务
ZeroMQ--通信服务
- 队列
AES--数据加密方法

3.安装

依赖:
python2.6-3.0
ZeroMQ or RAET
mako(可选)
gcc(可选)

4.启动

master节点
minion节点配置master信息
节点测试

三、nagios教程

四、buildbot教程

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注