@WillireamAngel
2018-05-14T13:48:41.000000Z
字数 2461
阅读 2626
运维
Python自动化脚本
自动化运维:高效率、平台化、标准化、流程化
自动化运维工具:jenkins、ansible、zabbix
设计思想:管理体系化、工作流程化、人员专业化、任务自动化、环境定义自动化、部署自动化、监控自动化
主要函数:
os.system()
- 执行命令
- 返回命令值
- 命令输出到标准输出
raw_input()
- 暂停程序,等待输入
- 返回用户输入
云运维:资源数据共享、问题处理、同意标准、成本低。
自动化工具管理IT资源
功能:系统环境配置,安装软件,持续集成,热回滚。
SSH服务、推送式、丰富的module、基于YAML的Playbook、商业化支持
效率低、易挂起、并发性差
Salt整体性能比Ansible好。
工具:python、setuptools、pip / yum install ansible
Ansible --> ssh -->shell
配置(按照优先级读取):
- export ANSIBLE_CONFIG
- ./ansible.cfg
- ~/.ansible.cfg
- /etc/ansible/ansible.cfg
- 默认配置
配置文件:
/etc/ansible
github
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默认搜索模块路径
#ssh-keygen
添加免密登录(需要修改hosts):
ssh-copy-id {username}@node1
ansible命令
-a 制定传入模块的参数
-C -D 两个一起用,检查hosts规则文件修改
-I限制匹配规则主机
--list-hosts 显示所有匹配规则的主机数
-m -M指定所使用的模块和模块的路径
--syntax-check 检查语法
-v 显示详细的日志
分组
1.Inventory分组
[ansiblelist]
ansible02
ansible [组名] -m ping
2.自定义端口
编写hosts时ip后添加端口
别名:
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/
Patterns(类正则表达式)
Ad-Hoc
类似于shell命令
git模块
service模块
setup模块
Playbook
顺序控制、优化控制
优点:
简单
并行执行
基础成熟技术ZeroMQ、AES
Python API
缺点:
需要单独安装给客户端
安全隐患大(SaltStack客户端获取root权限)
Master--管理所有节点
Minion--节点服务
ZeroMQ--通信服务
- 队列
AES--数据加密方法
依赖:
python2.6-3.0
ZeroMQ or RAET
mako(可选)
gcc(可选)
master节点
minion节点配置master信息
节点测试