-
运维工具的分类:
- 需要agent:puppet,func
- 无需agent:ansible,fabric (ssh service)
ansible架构
1、ansible:ansible的核心部分
2、host inventory:指明所管理的主机,如ip地址,掩码,端口号等信息
3、Core Modules:ansible的核心模块,ansible实现管理是通过调用模块去完成的。
4、Custom Modules:自定义模块(可以使用任何编程语言来编写该模块),核心模块能完成大部分的管理任务,但有时候我们还需要去定制一些任务。
5、Connection Plugins:ansible于hosts进行通信
6、Playbooks:使用YAML和jinjia2格式,多个任务可以定义在一个文件中进行统一调用。同一个playbook在同一各主机上调用多次结果是一样的。
ansible的特性:
1、基于python语言实现,有paramiko,PyYAML,jinjia2三个关键模块
2、部署简单,angentless,
3、默认使用ssh协议
(1)基于密钥认证
(2)在inventory文件中指定
4、主从模式:
master:ansible,ssh client
slave:ssh Server
5、支持自定义模块;支持各种编程语言
6、支持playbook
7、基于“模块“完成各种任务
安装ansible
我的系统为redhat6.5
根据官网提示先安装EPEL源,
直接点击EPEL,进入EPEL源安装教程
EPEL源安装完成后就可看到ansible的相关包了
安装ansible,这时报错需要安装两个依赖包PyYAML和python-six,而PyYAML依赖libyaml,所以在使用EPEL源安装之前需要安装以下三个包(包来源网站:pkgs.org)
ansible的主配置文件:/etc/ansible/ansible.cfg
inventory:/etc/ansible/hosts
如何查看模块帮助
[root@server1 .ssh]# ansible-doc -l 列出模块
[root@server1 .ssh]# ansible-doc -s yum 某个模块怎么用
ansible命令应用基础
ansible <host-pattern> [-f forks] [-m module_name] [-a args]
host-pattern:匹配对象,如inventory中的webserver,dbserver等
-f forks:启动的并发线程数(一次行控制多少个主机执行任务)
-m module_name:要使用的模块
-a args:模块特有的参数
常见模块:
1、command:命令模块,默认模块,用于远程执行命令
默认模块就是command模块
-
2、
corn:
-
state
present:安装. 默认为present
absent:移除
每十分钟运行一次 hello
changed表示对方是否发生改变,改变的结果为true
移除刚才的任务,直接使用名字移除
-
3、
user
-
name= :指明创建用户的名字
4、group
-
5、
copy
-
src=:定义本地源文件路径
dest=:定义远程目标文件路径
content=:取代src,表示直接用此处的信息生成目标文件内容
使用content生成文件内容
6、
file 设定文件的属性
-
path=:指定文件路径,可以用name或dest代替
创建连接文件,path指定链接文件,src指定源文件,state指定为link模式
7、ping 测试指定主机是否能连接
-
8、
service 指定运行状态
-
enabled=:是否开及子启动
name=:服务名称
state=:状态,取值有started,stopped,restarted
9、share模块:在远程主机上运行命令
尤其是用到管道等复杂功能时
要想修改一个用户密码,通过command模块修改看似运行成功,其实并没有修改
这里需要用到shell模块
script模块 在远程主机运行本地脚本 (仅支持使用相对路径)
-
10、
yum 安装程序包
-
name=指定安装的程序包,可以带上版本号
state=:present,latest表示安装,absent表示卸载,默认为latest
11、setup:收集远程主机的facts
ansible在管理客户端主机时,这些主机在被管理执行任务u之前,会首先向ansible汇报一下在管理自己时所用到的一些信息(操作系统版本,ip地址)