设为首页 收藏本站
查看: 1526|回复: 0

[经验分享] Ansible介绍及安装部署

[复制链接]

尚未签到

发表于 2018-1-2 21:29:44 | 显示全部楼层 |阅读模式
  本节内容:


  • 运维工具
  • Ansible特性
  • Ansible架构图和核心组件
  • 安装Ansible
  • 演示使用示例

一、运维工具
  作为一个Linux运维人员,需要了解大量的运维工具,并熟知这些工具的差异,能够熟练运用这些工具去解决一些手动重复的劳动,一方面是避免人工操作失误,另一方面也可以提高工作效率。同时还能将自己从这些重复的工作中解放出来,以便研究更新和更深的技术。
  运维工具大体上可以分为3类:


  • OS Provisioning:提供操作系统安装的。PXE,Cobbler(repository,distritution,profile)。
  • OS Config:cfengine、puppet、saltstack、chef、func、Task Excute工具(fabric、func、saltstack)
  • Deployment:capistranoc、fabric
  而Ansible是一款较新的工具,可以实现OS Config、Task Excute和Deployment。
  运维工具实现远程管理的两种方式:


  • 有agent:puppet、saltstack、func
  • agentless:ansible、fabric

二、Ansible特性


  • 学习曲线平缓;
  • 不需要agent;
  • 没有有线状态图,没有次序,我们自己定义动作间的依赖关系就行,任何一个任务出错会很快出错,你可以立即进行修改;
  • 没有代理;
  • 没有服务端;
  • 依赖ssh来工作,无需ssl,也就无需证书等功能;
  • 模块可以使用任何编程语言来编写,包括shell脚本;
  • 默认使用ssh工作;
  • 支持多级的解决方案。

三、Ansible架构图和核心组件
  架构图:
DSC0000.png

  ansible是Python编写的,Python有一个模块叫paramiko,paramiko组件能够实现并行地基于ssh协议远程连接至各主机的库。ansible就是用了paramiko。
  核心组件:


  • ansible core:ansible核心。
  • host inventory:主机池,或叫主机列表,主机归档文件。
  • core modules:ansible核心模块。
  • custom modules:用户可以自定义模块
  • playbook:将多个任务写在一个yaml格式的配置文件中。支持使用Python的jinjia2来定义模板。同一个playbook应用带同一台主机上,无论你应用多少次,他们的结果都是相等的,不会重复执行。这种特性我们称为幂等性。
  • connect plugins:连接插件
  • plugins:其他的一些插件,比如email、logging等等。

四、安装Ansible
  可以选择源码编译安装或者yum安装。ansible的rpm包在epel源中,事先安装好epel源。我这里实验环境是CentOS 7。
  安装:
  

# yum install ansible -y  

  查看安装的rpm包里有哪些文件:
  

# rpm -ql ansible | more  

DSC0001.png

  ansible配置文件:/etc/ansible/ansible.cfg
  inventory文件:/etc/ansible/hosts

五、演示使用示例
  1.环境信息

主机名
操作系统版本
IP地址
安装软件
node1
CentOS 7.0
172.16.7.151
ansible-noarh-2.2.0.0-4.el7
node2
CentOS 7.0
172.16.7.152

node3
CentOS 7.0
172.16.7.153
无  2.配置Ansible主机登录其他主机使用密钥登录
  由于Ansible默认使用ssh管理主机,所以首先需要配置Ansible所在主机登录其他被管理主机不需要输入密码。在node1主机上执行如下命令:
  

[iyunv@node1 ~]# ssh-keygen -t rsa -P ''  
[iyunv@node1
~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.7.151  
[iyunv@node1
~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.7.152  
[iyunv@node1
~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.7.153  

  3.定义主机
  每一个主机可以使用主机名,也可以使用ip地址。也可以把多个主机定义到一个组里。比如:
  

[iyunv@node1 ~]# vim /etc/ansible/hosts  

DSC0002.png

  4.使用模块
  Ansible是依赖模块进行工作的,里面有大量的模块帮助我们去完成任务。比如使用command模块:
  

[iyunv@node1 ~]# ansible 172.16.7.152 -m command -a "date"  

DSC0003.png

  如上,在执行任务时,可以指定IP,也可以指定组名,ansible有个默认的组叫all,代表/etc/ansible/hosts文件里的所有主机。
  列出当前主机可以使用的ansible模块:
  

[iyunv@node1 ~]# ansible-doc -l  

DSC0004.png

  常用的模块有:user、yum、copy、command等。如果想知道某个模块怎么使用的,比如想知道yum怎么用:
  

[iyunv@node1 ~]# ansible-doc -s yum  

DSC0005.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-430948-1-1.html 上篇帖子: 集中化管理平台 下篇帖子: Ansible基础配置与常用模块使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表