自动化任务简介
假设我们要在10台linux服务器上安装一个nginx服务,手动是如何做的?
# 第一步, ssh登录NUM(1,n)服务器 # 第二步,输入对应服务器密码 # 第三步,执行命令: yum install nginx 循环操作n=10 # 第四步,执行命令: service nginx start # 第五步,退出登录自动化任务执行的意义
# 意义一, 提升运维工作效率,减少一份工作成本 # 意义二, 提高准确度.自动化任务执行的应用
# 应用一, 批量命令执行 # 应用二, 定时程序任务执行 # 应用三, 批量程序应用服务安装 # 应用四, 批量配置文件同步 # 应用五, 批量代码部署 ansible配置ansible是python中的一套模块,系统中的一套自动化工具,可以用作系统管理,自动化命令等任务
ansible优势 # 1.ansible是python中的一套完整的自动化执行任务模块 # 2.ansible的play_book模式,不用yaml配置,对于自动化任务执行一目了然. # 3.自动化场景支持丰富 ansible配置文件 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系统的输出记录到指定地方,需要设置log_path来指定一个存储Ansible日志的文件 9. private_key_file # 在使用ssh公钥私钥登录系统时使用的秘钥路径 # private_key_file=http://www.likecs.com/path/to/file.pem ansible.cfg [defaults] inventory = /tmp/hosts forks = 5 default_sudo_user = root remote_port = 22 host_key_checking = Falsetimeout = 20 log_path = /var/log/ansible.log #private_key_file=http://www.likecs.com/tmp/file.pemansible安装
# 1. 通过系统的方式,yum,apt,get等 # 2. 通过python的方式 # (推荐)python ./setup.py install easy_install ansible pip install ansible Ansible基础操作当我们将Ansible安装好以后,可以通过一些命令开始深入了解Ansible了.
我们最先展示的并非那强大的集配置,部署,自动化于一身的playbook.而是如何初始化.
在我们开始前要先理解Ansible如何通过SSH与远程服务器连接是很重要的.
Ansible1.3及之后的版本默认会在本地的OpenSSH可用时会尝试用其远程通讯,这会启用ControlPersist(一个性能特性),Kerberos,和在~/.ssh/config中的配置选项如 Jump Host setup.然而,当你使用Linux企业版6作为主控机(红帽企业版及其衍生版如CentOS),其OpenSSH版本可能过于老旧无法支持ControIPersist,在这些操作系统中,Ansible将会退回并采用paramiko(由Python实现的高质量OpenSSH库).如果你希望能够使用像是Kerberized SSH之类的特性,烦请考虑使用Fedora,OS X,或Ubuntu作为你的主控机直到相关平台上有更新版本的OpenSSH可供使用,或者启用Ansible的"accelerated mode".
在Ansible1.2及之前的版本,默认将会使用paramiko,本地OpenSSH必须通过-c ssh或者配置文件中设定.
我们偶尔会遇到不支持SFTP的设备,虽然很少见,但有概率中奖,可以通过ansible配置文件切换至scp模式来与之连接.
说起远程设备,Ansible会默认假定你使用SSH key(当然也推荐这种)但是密码一样可以,通过在需要的地方添加-ask-pass选项来启用密码验证,如果使用了sudo特性,当sudo需要密码时,也同样适当的提供了-ask-sudo-pass选项.
也许这是常识,但也值得分享:任何管理系统受益于被管理的机器在主控机附近运行.如果在云中运行,可以考虑在使用云中的一台机器来运行Ansible.