日常的运维工作任务
系统安装(物理机、虚拟机) --> 程序包安装、配置、服务启动 --> 批量操作 --> 程序发布 --> 监控
OS Provisioning
物理机:PXE(预引导程序)、Cobbler
PXE(网卡支持网络引导、dhcp、filename、next-server、tftp-server(UDP69端口监听))
-->pxelinux.0
-->vmlinux、initrd.img
-->menu.c32
-->pxelinux.cfg/default
虚拟机:Image Templates
Configration
程序包、用户管理、配置文件、服务管理、cron任务等
puppet (ruby研发的)
saltstack (python研发)
chef
cfengine(C/C++研发)
管理完成配置的安装和批量的管理
Command and Control
fabric
func
进入正题:
ansiable自动化运维工具 ①ansible优点:
1、configuration:(cfengine、chef、puppet) 服务的配置
2、Deployment(Capistrano、Fabric) 应用程序的部署
3、Ad-Hoc Tasks(Func) 批量命令执行
4、Multi-Tier ORCHEHESTRATION 多层次的任务编排
②ansible特性:
上手方便简单
NO bootstrapping
No DAG ordering
NO agent
No server
No additional PKL
模块化,调用特定的模块,完成特定的任务
基于Python语言实现由Paramiko、Pyyaml(标记语言)jinja2三个关键模块
部署简单,agenless
支持自定义模块
支持Playbook
幂等性:允许重复执行多次
③ansible -playbooks的核心元素 ->Tasks任务 ->Variables变量 ->Templates模板 ->Handlers处理器 ->Roles角色
④配置文件: /etc/ansible/ansible.cgf 角色列表 /etc/ansible/hosts 主机清单
⑤ansible 源码安装配置 解决依赖: yum -y install python-jinja2 PyYAML python-paramiko python-babel python-crypto 克隆到主机: git clone git://github.com/ansible/ansible.git --recursive 安装文件: source ./ansible/hacking/env-setup 创建配置文件: mkdir -p /etc/ansible cp ./examples/ansible.cfg /etc/ansible/ cp ./examples/hosts /etc/ansible/ 创建公钥传递给要管理的主机: ssh-keygen -t rsa -P '' ##一路回车 ssh-copy-id -i ~/.ssh/id_rsa.pub root@IP ssh IP 'ifconfig' ##测试是否连通 ansible all -m ping
⑥ansible的模块:
查看doc帮助文档
ansible-doc -s command
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| command
-a 'command'
ansible all -m command -a 'echo Centos | passwd --stdin Centos' 赋予Centos用户密码但是这
样是只打印出整体
user
-a 'name= state={present|absent} system= uid='
ansible 主机名 -m user -a 'name=cluster state=present '
group
-a 'name= gid= state= system='
cron
-a 'name= minute= hour= day= month= job= user= state='
ansible 主机名 -m cron -a 'name="sync time from ntpserver" state=present minute=*/10
job="/sbin/ntpdate 要同步的主机IP &>/dev/null"'
ansible all -m cron -a 'name="sync time from ntpserver" state=absent' 删除计划
copy
-a 'src=\'#\'" /etc/fstab dest=/tmp/fstab.tmp mode=600'
file
-a 'path= mode= owner= group= state={directory|link|present|absent} src=\'#\'" /pre><p><br></p><p><br></p>
|
|