本节内容:node
做为一个Linux运维人员,须要了解大量的运维工具,并熟知这些工具的差别,可以熟练运用这些工具去解决一些手动重复的劳动,一方面是避免人工操做失误,另外一方面也能够提升工做效率。同时还能将本身从这些重复的工做中解放出来,以便研究更新和更深的技术。shell
运维工具大致上能够分为3类:编程
而Ansible是一款较新的工具,能够实现OS Config、Task Excute和Deployment。vim
运维工具实现远程管理的两种方式:api
架构图:架构
ansible是Python编写的,Python有一个模块叫paramiko,paramiko组件可以实现并行地基于ssh协议远程链接至各主机的库。ansible就是用了paramiko。less
核心组件:运维
能够选择源码编译安装或者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
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