ansible简介
ansible是一款,自动化运维管理工具。顾名思义是用于批量去管理及安装服务及批量管理主机。
ansible与saltstack对比
ansible优点:配置简单,部署容易除主管理机外不需要多余配置。使用ssh进行传输管理。安全性高。语法简单,学习入门块。支持sudo。
ansible缺点:只支持分组最多265个主机。传输使用ssh,传输速度慢。
salt优点:使用zeroMQ进行传输速度快。主机数量无上限。密码容易保管,命令容易审计。
salt缺点:主进程进行守护,被管理段需要安装客户端。传输及连接不加密。配置复杂,语法相对繁琐。
ansible安装部署
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1.确保机器上安装的是 Python 2.6 或者 Python 2.7 版本以上: 2.添加yum 源 a、 vim /etc/yum.repos.d/ansible b、 添加如下内容: [epel] name = all source for ansible baseurl = https://mirrors.aliyun.com/epel/7/x86_64/ enabled = 1 gpgcheck = 0 [ansible] name = all source for ansible baseurl = http://mirrors.aliyun.com/centos/7.3.1611/os/x86_64/ enabled = 1 gpgcheck = 0 yum clean all 3 安装ansible:yum install ansible -y (如使用centos7.0以上python版本会默认2.7以上,云服务yum源也不用管,可以使用yum list ansible查看是否存在ansible)
ansible配置文件详解
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 [defaults] #通用默认配置 2 inventory = /etc/ansible/hosts #被控制端IP或者DNS列表 3 library = /usr/share/my_modules/ ##默认搜寻模块的位置 4 remote_tmp = ~/.ansible/tmp #远程执行临时文件 5 local_tmp = ~/.ansible/tmp 6 plugin_filters_cfg = /etc/ansible/plugin_filters.yml 7 forks = 5 ##并行线程数 8 poll_interval = 15 ##回频率或轮询间隔时间 9 sudo_user = root ##sudo远程执行用户名 10 ask_sudo_pass = True ##使用sudo,是否需要输入密码 11 ask_pass = True ##是否需要输入密码 12 transport = smart ##通信机制 13 remote_port = 22 ##远程SSH端口 14 module_lang = C ##模块和系统之间通信的语言 15 module_set_locale = False 16 gathering = implicit ##控制默认facts收集(远程系统变量) 17 gather_subset = all 18 gather_timeout = 10 19 roles_path = /etc/ansible/roles ##使用playbook搜索Ansible roles 20 host_key_checking = False ##是否检查远程主机密钥 21 sudo_exe = sudo ##sudo远程执行命令 22 sudo_flags = -H -S -n ##传递sudo之外的参数 23 timeout = 10 ##SSH超时时间 24 remote_user = root ##远程登录用户名 25 log_path = /var/log/ansible.log ##日志文件存放路径 26 module_name = command ##Ansible命令默认执行的模块 27 executable = /bin/sh ##执行的shell环境,用户shell模块 28 hash_behaviour = replace ##特定的优先级覆盖变量 29 jinja2_extensions = jinja2.ext.do,jinja2.ext.i18 ##允许开启jinja2扩展模块 30 private_key_file = /path/to/file ##私钥文件存储位置 31 display_skipped_hosts = True ##显示跳过任何任务的状态 32 system_warnings = True ##禁用系统运行Ansible潜在问题警告 33 deprecation_warnings = True ##PlayBook输出禁用“不建议使用”警告 34 command_warnings = False ##command模块Ansible默认发出警告 35 nocolor = 1 ##输出带上颜色区别,0表示开启,1表示关闭 36 pipelining = False ##开启pipe SSH通道优化 37 38 [accelerate] ##accelerate缓存加速 39 accelerate_port = 5099 ##加速连接端口5099 40 accelerate_timeout = 30 ##命令执行超过时间,单位为s 41 accelerate_connect_timeout = 5.0 ##上一个活动连接的时间,单位为min 42 accelerate_daemon_timeout = 30 ##允许多个私钥被加载到daemon 43 accelerate_multi_key = yes ##任何客户端想要连接daemon都要开启这个选项
ansile配置文件常用配置:
1 inventory 该参数表示资源清单inventory文件的位置,资源清单就是一些Ansible需要连接管理的主机列表 inventory = /root/ansible/hosts 2 library Ansible的操作动作,无论是本地或远程,都使用一小段代码来执行,这小段代码称为模块,这个library参数就是指向存放Ansible模块的目录 library = /usr/share/ansible 3 forks 设置默认情况下Ansible最多能有多少个进程同时工作,默认设置最多5个进程并行处理。具体需要设置多少个,可以根据控制主机的性能和被管理节点的数量来确定。 forks = 5 4 sudo_user 这是设置默认执行命令的用户,也可以在playbook中重新设置这个参数 sudo_user = root //注意:新版本已经作了修改,如ansible2.4.1下已经为: default_sudo_user = root 5 remote_port 这是指定连接被关节点的管理端口,默认是22,除非设置了特殊的SSH端口,不然这个参数一般是不需要修改的 remote_port = 22 6 host_key_checking 这是设置是否检查SSH主机的密钥。可以设置为True或False host_key_checking = False 7 timeout 这是设置SSH连接的超时间隔,单位是秒。 timeout = 20 8 log_path Ansible系统默认是不记录日志的,如果想把Ansible系统的输出记录到人i治稳健中,需要设置log_path来指定一个存储Ansible日志的文件 log_path = /var/log/ansible.log 另外需要注意,执行Ansible的用户需要有写入日志的权限,模块将会调用被管节点的syslog来记录,口令是不会出现的日志中的 9 private_key_file 默认 private_key_file=/path/to/file.pem 在使用ssh公钥私钥登录系统时候,需要修改密钥路径。 private_key_file = /root/.ssh/id_rsa 10 deprecation_warnings #deprecation_warnings = True 注释: 以上使用的默认的,配置会提示警告信息,我们需要修改为 False,关闭警告 [DEPRECATION WARNING]: DEFAULT_SUDO_USER option, In favor of Ansible Become, which is a generic framework. See become_user. , use become instead. This feature will be removed in version 2.8. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. deprecation_warnings = False