目录node
模块化:python
用户经过ansible去管理各个主机,那么ansible就是咱们所说的主控端,后面的Host为被控端。linux
在控制主机时,ansible是如何知道哪些主机是被本身控制的呢?web
这就须要一个Host Inventory(主机清单),用于记录ansible能够控制网络中的哪些主机。另外,要配置和管理这些主机,能够采用两种方式,一种是单一的命令实现,另一种也可使用palybook实现。单一的命令模式是采用不一样的模块进行管理,一个模块相似于一些管理的命令,如top,ls,ping等等,适用于临时性的操做任务。若是须要执行一些例行性或常常性的操做,则须要采用playbook的方式,playbook相似于一个脚本,将多个模块按必定的逻辑关系进行组合,而后执行。ansible还支持一些插件,如邮件、日志等,在和远程主机通讯时,也会采用相似的链接插件,这里使用则是SSH协议的插件进行通讯。编程
ansible官网json
主机名称 | IP地址 | 角色 | 系统版本 |
---|---|---|---|
ansible | 192.168.56.11 | 主控端 | Centos 7.x |
node01 | 192.168.56.12 | 被控端 | Centos 7.x |
node02 | 192.168.56.13 | 被控端 | Centos 7.x |
[root@ansible ~]# yum install -y ansible [root@ansible ~]# ansible --version ansible 2.7.10 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/site-packages/ansible executable location = /usr/bin/ansible python version = 2.7.5 (default, Oct 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
/etc/ansible/ansible.cfg #主配置文件,配置ansible工做特性 /etc/ansible/hosts #主机清单 /etc/ansible/roles/ #存放角色的目录 /usr/bin/ansible #主程序,临时命令执行工具 /usr/bin/ansible-doc #查看配置文档,模块功能查看工具 /usr/bin/ansible-galaxy #下载/上传优秀代码或Roles模块的官网平台 /usr/bin/ansible-playbook #定制自动化任务,编排剧本工具 /usr/bin/ansible-pull #远程执行命令的工具 /usr/bin/ansible-vault #文件加密工具 /usr/bin/ansible-console #基于Console界面与用户交互的执行工具
[root@ansible ~]# ansible --help #查看ansible使用帮助 Usage: ansible <host-pattern> [options] #使用方法,ansible+主机+选项 [root@ansible ~]# ansible 192.168.56.12 -m ping #检测主机的存活,返回pong则是正常,这里使用了-m参数,采用ping模块进行检测目标主机的存活性 192.168.56.12 | SUCCESS => { "changed": false, "ping": "pong" } [root@ansible ~]# ansible -m ping 192.168.56.13 #链接另外1台被控端,提示没法匹配 [WARNING]: Could not match supplied host pattern, ignoring: 192.168.56.13 [WARNING]: No hosts matched, nothing to do #这里就须要在主机清单中增长被控端主机,须要注意的是,主机清单也支持分组模式,这里将三台主机分为web组 [root@ansible ~]# vim /etc/ansible/hosts [web] 192.168.56.11 192.168.56.12 192.168.56.13 [root@ansible ~]# ansible web -m ping #经过对一组服务器进行存活性检测 192.168.56.13 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.56.12 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.56.11 | SUCCESS => { "changed": false, "ping": "pong" } #PS:这里须要注意的是,远程链接采用的不是单纯的ping命令,若是没有作ssh密钥认证,是会出现没法ping通的错误,此时能够采用-k参数,默认执行使用root用户进行链接远程主机。 [root@ansible ~]# ansible 192.168.56.13 -m ping -k SSH password: 192.168.56.13 | SUCCESS => { "changed": false, "ping": "pong"
在使用ansible时,咱们会发现ssh连接较慢的现象,这里则须要修改sshd服务的两个参数来解决该问题:vim
UseDNS no GSSAPIAuthentication no
配置文件大部分都是注释,只须要保持默认配置便可。这里须要开启日志记录以及关闭远程首次链接的ssh认证检查。windows
[root@ansible ~]# vim /etc/ansible/ansible.cfg [defaults] 默认配置 # some basic default values... #inventory = /etc/ansible/hosts #主机列表配置文件 #library = /usr/share/my_modules/ #库文件存放目录 #module_utils = /usr/share/my_module_utils/ #模块存放目录 #remote_tmp = ~/.ansible/tmp #临时py命令文件存放在远程主机目录 #local_tmp = ~/.ansible/tmp #本机的临时命令执行目录 #forks = 5 #默认并发数 #poll_interval = 15 #时间间隔 #sudo_user = root #默认sudo用户 #ask_sudo_pass = True #每次执行ansible命令是否询问sudo用户密码 #ask_pass = True #每次执行ansible命令是否询问ssh密码 #transport = smart #传输方式 #remote_port = 22 #远程端口号 #module_lang = C #module_set_locale = False ... ... host_key_checking = False #检查对应服务器的host_key,建议取消注释. log_path=/var/log/ansible.log #记录日志及位置,默认不记录 建议取消注释