Ansible笔记(1)---基本概念
一、ansible的作用以及工作结构
1.1、ansible简介:
ansible
是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
连接插件connection plugins:负责和被监控端实现通信;
host inventory:指定操作的主机,是一个配置文件,里面定义监控的主机;
各种模块核心模块、command模块、自定义模块;
借助于插件完成记录日志邮件等功能;
playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
1.2、ansible的架构:
连接其他主机默认使用ssh协议!
二、ansible基本概念
2.1ansible安装
使用yum源的方式安装ansible,安装ansible需要epel源,我配置了ali的epel源和centos7镜像源,yum配置如下:
# pwd /etc/yum.repos.d # cat aliBase.repo [aliBase] name=aliBase baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/RPM-GPG-KEY-CentOS-$releasever # cat aliEpel.repo [aliEpel] name=aliEpel baseurl=https://mirrors.aliyun.com/epel/$releasever\Server/$basearch/ enabled=1 gpgcheck=0
安装ansible:
$ yum -y install ansible
查看生成的主要配置文件:
$ rpm -ql ansible | head 15
$ yum info ansible
2.2 ansible默认配置清单
如果想要通过ansible管理主机,需要将要管理的主机信息添加到ansible的“配置清单”中,在/etc/ansible/hosts文件,在文件最底部添加主机信息;
node11 ansible_host=10.1.1.60 ansible_port=20 ansible_user=root ansible_ssh_pass=123456
node11:给主机启一个别名
ansible_host:受控主机ip
ansible_port:ssh链接端口,根据实际端口填写,可不填写
ansible_user:用于链接对应主机的用户名
ansible_ssh_pass:用于链接对应主机的密码
注意:ansible2.0之前的版本,应该写为:
ansible_ssh_host
ansible_ssh_port
ansible_ssh_user
2.2.1清单配置详情:
(1)全部列表
192.168.1.1 192.168.1.2 192.168.2.1 182.168.2.2
# ansible all -m ping
(2)分组列表
[A] 192.168.1.2 192.168.1.3 [B] 192.168.2.1 192.168.2.2
# ansible A -m ping
# ansible B -m ping
(3)连续ip简写
192.168.1.1 192.168.1.2 192.168.1.[1:2] //连续IP简写
(4)域名解析简写
[A] dnsver-a.com dnsver-b.com dnsver-[a:b].com
(5)组内嵌套
[proA] 192.168.1.1 192.168.1.2 [porB] 192.168.2.1 192.168.2.2 [pro:children] proA proB
执行pro组时,会将proA、proB组的主机都执行。
2.3设置免密登录
在ansible主机生成秘钥,并进行相应的配置
首先,生成默认格式的密钥对,私钥与公钥:
# ssh-keygen
然后,将生成的公钥加入到受控主机的认证列表
# ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.1.1.60
设置免密登录后,配置清单就可以写简写为:
node11 ansible_host=10.1.1.60 ansible_port=20