ansible入门一(Ansible介绍及安装部署)

本节内容:node

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

1、运维工具

做为一个Linux运维人员,须要了解大量的运维工具,并熟知这些工具的差别,可以熟练运用这些工具去解决一些手动重复的劳动,一方面是避免人工操做失误,另外一方面也能够提升工做效率。同时还能将本身从这些重复的工做中解放出来,以便研究更新和更深的技术。shell

运维工具大致上能够分为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。vim

运维工具实现远程管理的两种方式:api

  1. 有agent:puppet、saltstack、func
  2. agentless:ansible、fabric

 

2、Ansible特性

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

 

3、Ansible架构图和核心组件

架构图:架构

 ansible是Python编写的,Python有一个模块叫paramiko,paramiko组件可以实现并行地基于ssh协议远程链接至各主机的库。ansible就是用了paramiko。less

 

核心组件:运维

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

 

4、安装Ansible

能够选择源码编译安装或者yum安装。ansible的rpm包在epel源中,事先安装好epel源。我这里实验环境是CentOS 7。ssh

安装:编程语言

# yum install ansible -y

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

# rpm -ql ansible | more

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

 

5、演示使用示例

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主机上执行以下命令:

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

 

3.定义主机

每个主机可使用主机名,也可使用ip地址。也能够把多个主机定义到一个组里。好比:

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

 

4.使用模块

Ansible是依赖模块进行工做的,里面有大量的模块帮助咱们去完成任务。好比使用command模块:

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

如上,在执行任务时,能够指定IP,也能够指定组名,ansible有个默认的组叫all,表明/etc/ansible/hosts文件里的全部主机。

 

列出当前主机可使用的ansible模块:

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

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

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

相关文章
相关标签/搜索