日常的运维工作任务
系统安装(物理机、虚拟机) --> 程序包安装、配置、服务启动 --> 批量操作 --> 程序发布 --> 监控
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的模块:
查看doc帮助文档
ansible-doc -s command
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>
④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 [email protected]
ssh IP ‘ifconfig‘ ##测试是否连通
ansible all -m ping
时间: 2024-09-29 16:10:51