首页 > 代码库 > ansible安装和基本使用
ansible安装和基本使用
ansible是python开发的一款自动化运维工具,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量配置系统、批量部署程序、批量运行命令等功能。ansible是基于模块工作的,本身没有批量操作系统的能力。真正去安装批量工作的是ansible所运行的模块,ansible只是提供了一种框架
ansible的模块分为核心模块和自定义模块:
核心模块:实现了大多数的批量工作
自定义模块:更具用户自身的需求自行开发模块,ansible支持任何语言开发的模块,但都必须遵循ansible的调用规则
ansible连接是基于ssh连接远程主机的,需要客户端运行ssh服务,不需要在客户端安装agent
ansible主组成:(如图)
ansible本身复制调用各个模块进行协同工作,ansible默认情况下一次控制5台节点
主要组件:
Host Inventory:定义ansible能够管理的主机
Connection Plugins:用于连接ansible的插件,基于python的paramiko模块开发
playbooks:需要执行的命令
core model:核心模块
custom model:自定义模块
plugins:通过插件进行日志记录
工作过程:ansible读取Inventory获取列表,Connection Plugins连接主机,并且借助模块,读取playbooks获得需要执行的操作,向主机发送指令,运行指令,并返回结果
安装ansible vim /etc/yum.repos.d/ansibel.repo #配置网络yum源 [epel] nama=epel package baseurl=http://mirrors.aliyun.com/epel/6/x86_64/ #阿里云yum源 gpgcheck=1 enabled=1 gpgkey=http://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-6 注意:如果系统中没有安装python环境需要自己手动安装,centos默认安装python2.6 rpm -ivh libyaml-0.1.3-2.el6.art.x86_64.rpm #安装ansible依赖包,需要自己下载 rpm -ivh PyYAML-3.10-3.el6.x86_64.rpm rpm -ivh python-six-1.9.0-2.el6.noarch.rpm yum -y install ansibel #安装ansible ansible命令: -a #模块的参数,如果执行默认COMMAND的模块 -k #密码认证,默认使用秘钥认证 -K #提示密码使用sudo,sudo表示提权操作 -B #后台运行超时时间 -f #并行任务数。NUM被指定为一个整数,默认是5 -h #打开帮助文档API -i #指定库存主机文件的路径,默认为/etc/ansible/hosts -l #进一步限制所选主机/组模式 --limit=192.168.91.135 只对这个ip执行 -m #执行模块的名字,默认使用command模块 -M #要执行的模块的路径,默认为/usr/share/ansible/ -T #指定SSH默认超时时间, 默认是10S -u #远程用户,默认是root用户 --version #输出ansible的版本 ansible-doc -h #示命令参数API文档 -M #查询模块,--module-path=MODULE_PATH 指定模块的路径 -l #显示已存在的所有模块列表 -s #显示playbook制定模块的用法 ansible配置实例: vim /etc/ansible/hosts [abc] #定义主机组 192.168.0.40 192.168.0.60 192.168.0.70 ansible执行批量操作时默认使用秘钥验证,所有需要将服务器端的公钥拷贝到所有客户端 如果使用密码验证需要保证所有客户端的密码一致,客户端用户默认为root 服务器端生成秘钥对: ssh-keygen #生成秘钥对 ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.0.40 #将公钥拷贝到客户端 ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.0.60 ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.0.70 注意:需要保证客户端支持秘钥认证,如果不支持需要进行手动修改sshd服务并重启 ansible执行批量操作: ansible abc -a ‘date‘ #默认使用command模块,显示所有主机时间信息
本文出自 “自动化运维” 博客,请务必保留此出处http://hongchen99.blog.51cto.com/12534281/1921184
ansible安装和基本使用