ansible是开源工具,底层是用python写的python
ansible也有web界面,能够直接鼠标点就能够,可是web界面收费web
因此大部分企业不会用web界面安全
Ansible:Ansible的核心程序服务器
Host Lnventory:记录了每个由Ansible管理的主机信息,信息包括ssh端口,root账号密码,ip地址等等。能够经过file来加载,能够经过CMDB加载并发
Playbooks:YAML格式文件,多个任务定义在一个文件中,使用时能够统一调用,“剧本”用来定义那些主机须要调用那些模块来完成的功能.ssh
Core Modules:Ansible执行任何管理任务都不是由Ansible本身完成,而是由核心模块完成;Ansible管理主机以前,先调用core Modules中的模块,而后指明管理Host Lnventory中的主机,就能够完成管理主机。工具
Custom Modules:自定义模块,完成Ansible核心模块没法完成的功能,此模块支持任何语言编写。学习
Connection Plugins:链接插件,Ansible和Host通讯使用测试
Ansible的优势:spa
Ansible的环境搭建:
须要2+台虚拟机,我是用三台虚拟机为你们讲解;
一台为ansible端,其他为client,测试使用。
前提关闭防火墙,在一个网段,能够互相ping通。
ansible端:
1.安装扩展软件包源和ansible软件包:
# yum -y install epel-release
# yum clean all
# yum makecache
# yum -y install ansible
2.编辑ansible配置文件:(设置无密码登陆)
3.在三台虚拟机上执行建立密钥命令
# ssh-keygen
会生成两个文件,公钥和私钥
4.而后将公钥文件拷贝在测试机上并指定路径(路径是规定,就得这么写)
# scp id_rsa.pub root@192.168.29.138:/root/.ssh/authorized_keys
测试:ssh链接客户机ip,不须要输入密码就成功!
# ssh 客户机ip
# ssh 192.168.29.139
5.配置文件:/etc/ansible/hosts:记载着须要管理的主机的信息
添加组:
[xxxx] ——能够随意命名,可是后期要调用,尽可能有象征性的命名;
192.168.29.137 ——须要管理的客户机的IP(也能够写域名)
192.168.29.138 ——须要管理的客户机的IP
6.测试:查看管理的两个主机通不通
# ansible group -m ping
7.ansible的简单命令使用:
·ansible-doc -l #查看支持的模块(命令)
·ansible-doc -s yum #查看yum模块用法
·nsible命令应用基础
ansible <host-pattern> [options]
-f forks:启动并发线程数
-m model_name:要使用的模块
-a args:特有的参数
·查看client端是否正常ping通
ansible all -m ping
·查看客户端信息
ansible group -m setup
格式:ansible 组名/all -m 指定模块 -a '操做'
·copy服务器的1.sh文件到cient端的指定路径下
ansible group -m copy -a 'src=/root/1.sh dest=/root/test'
·建立test用户
ansible group -m user -a "name=test state=present"
·删除test用户
ansible group -m user -a "name=test state=absent"
·yum安装
ansible group -m yum -a 'name=tree state=latest'
·中止httpd服务
ansible group -m service -a 'name=httpd state=stopped enabled=no'
·运行脚本
ansible group -m script -a '/tmp/test.sh'
·查看时间,是ansible默认模块,能够不指定模块。
ansible group -m command -a 'date'
playbook剧本:
playbook是运用ansible的一种很是强大的方式,是由多个play组成。
简单来讲,playbooks 是一种简单的配置管理系统与多机器部署系统的基础.与现有的其余系统有不一样之处,且很是适合于复杂应用的部署.
一下范例中的格式必须严格遵照,必须的必。
例一:基础
例二:变量
定义变量: vars
变量名=变量
调用变量:{{ 变量名 }}
例三:迭代
whith_item:要写在当前name的最下面
例四:触发器notify
例五:模板文件templates
先复制一个httpd.conf文件在主server任意目录下,
修改配置文件,调用变量,将端口号改成 {{ port }}
修改配置文件:/etc/ansible/hosts,指定两个客户机的端口
在两个客户端 ss -tnl 查看端口:
例六:单个任务执行tags
调用:ansible xxx.yml tags='add_user'
例七:角色roles:代码复用
mkdir -pv ansible_playbooks/roles/{webservers,dbservers}/{tasks,files,templates,meta,handlers,vars}
拓展:epel源 EPEL 是yum的一个软件源,里面包含了许多基本源里没有的软件了,但在咱们在使用epel时是须要安装它才能够了,EPEL,即Extra Packages for Enterprise Linux的简称,是为企业级Linux提供的一组高质量的额外软件包,
安装以前:yum repolist
安装后:软件包多了不少