Ansible教程(1)Ansible的安装与基本使用
一、Ansible简介
Ansible是一个基于Python开发的轻量级自动化运维工具,有着其他自动化运维工具如puppet、cfengine、chef、func、fabric的优点,并且不需要单独安装客户端以及启动服务,只需要通过SSH就可以快速的对大量客户端实现批量系统配置、程序部署、批量运行命令等。而且Ansible的学习曲线也平缓,比puppet易学很多。
二、安装Ansible
方法1(推荐):配置EPEL YUM源后直接安装
yum install ansible -y #yum安装最新版 ansible --version #安装后查看版本以及模块路径等信息
方法2:通过python pip工具安装,不过需要先编译安装好python3,并且Ansible的命令也都会放在Python的目录中,需要做软连接
/usr/local/python3/bin/pip3 install ansible==2.7 #使用pip安装指定版本Ansible ln -s /usr/local/python3/bin/ansible /usr/local/bin
三、Ansible配置文件
· /etc/ansible/hosts:主机列表清单,也叫Inventory。所有被管理的主机都需要定义在该文件中。如果不想使用默认清单的话可以用-i选项指定自定义的清单文件,防止多人混合使用一个主机清单。如果没有定义在主机列表文件中,执行命令会提示“No hosts matched”
· /etc/ansible/ansible.cfg:Ansible服务主配置文件,可以自定义Inventory文件、并发数等,该配置文件的优先级实际是最低的,如果有定义其他配置文件,可以通过ansible --version查看实际有效路径
四、Inventory定义方法
方法1:为不同的主机组配置各自的主机IP、端口、用户名、密码信息
#编辑配置清单文件 vim /etc/ansible/hosts #组名为webserver,并且为该组下的主机配置了各自的端口、root信息 [webserver] 192.168.1.31 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456" 192.168.1.32 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456" 192.168.1.33 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456" 192.168.1.36 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456" #组名为dbserver,并且使用了表达式来表示连续的IP段 [dbserver] 192.168.1.4[1:3] ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456" [redis] 192.168.1.5[1:3] [redisserver:vars] #将信息定义为变量 ansible_ssh_pass="123456" [nginx] #推荐写法 nginx_1 ansible_ssh_host=192.168.1.61 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456" nginx_2 ansible_ssh_host=192.168.1.62 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456"
方法二:基于秘钥管理
基于秘钥管理客户端的话需要在管理端创建公钥和私钥,然后发送给被管理端的机器
#管理端创建秘钥并发送到每个被管理端 ssh-keygen ssh-copy-id -i $被管理端IP #管理端清单文件 vim /etc/ansible/hosts [webserver] #做好秘钥的机器只用写IP即可 192.168.1.31:22 192.168.1.32 192.168.1.33 192.168.1.36 [dbserver] #也可以通过别名方式进行配置 node1 ansible_ssh_host=192.168.1.31 ansible_ssh_port=22 node2 ansible_ssh_host=192.168.1.32 ansible_ssh_port=22 node3 ansible_ssh_host=192.168.1.33 ansible_ssh_port=22
方法三:自定义Inventory清单文件
#创建清单文件 vim /etc/ansible/dockers [dockers] 192.168.1.31 ansible_ssh_pass='123456' 192.168.1.32 192.168.1.33 #使用-i指定清单文件 ansible dockers -m ping -i /etc/dockers
五、Inventory内置参数
版权声明:本文章版权归数据库运维网(www.ywdba.cn)所有。如需引用本站内容,请注明来源及作者。
评论