r3421555 发表于 2017-8-18 11:11:11

ansiable自动化运维工具

日常的运维工作任务
系统安装(物理机、虚拟机) --> 程序包安装、配置、服务启动 --> 批量操作 --> 程序发布 --> 监控

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>




页: [1]
查看完整版本: ansiable自动化运维工具