首先安装ansible,这个程序包是由epel源提供的,所以要指定好源,然后yum install ansible就可以了
用172.16.249.195(centos7)做管理端,然后172.16.249.115(centos7)和172.16.249.36(centos6)做被管理端
配置文件在/etc/ansible/ansible.cfg
/etc/ansible/hosts主机清单,简单来说就是要管理的主机列表
简单应用:
使用主机密钥来进行连接其他主机,
使用ssh-keygen -t rsa -P’’生成一个密码,
然后把公钥提供给远程被管理的主机
一般也要管理自己,所以把这个公钥也复制一份给自己
然后测试下,不用密钥,就可以连接了
可以看到没问题了,这样就可以根据主机密码,来管理远程主机了
在装有ansible程的远程主机上运行一个命令:
ansible172.16.249.36 -m command -a 'ifconfig' 这个里的主机要在主机清单里,要不然会说找不到主机的
然后修改/etc/ansible/hosts文件(主机清单的配置文件),(首先复制一份,作为备份)
修改如下:
然后在执行命令
可以看到执行成功了
还可以让全部主机执行这个命令
ansible的常用模块
用172.16.249.195(centos7)做管理端,然后172.16.249.115(centos7)和172.16.249.159(centos7)做被管理端
ansible的命令格式:
ansible <host-pattern> [-f forks] [-m module_name] [-a args] args:key=value
ansible-doc �Cl :列出所有的模块
常用模块:
command:输入命令的模块(可以省略),不过都是简单的命令,复杂的带管道的需要使用shell模块
-a ‘COMMAND’
例:ansible all-a 'ifconfig'或者ansible all �Cm command -a 'ifconfig'
shell:
-a ‘COMMAND’
例:ansiblewebsrvs -m shell -a 'echo "<h1>Hello Word</h1>" > /tmp/test.tmp'
user:创建用户的
-a 'name=state={present|absent} system= uid='
例: ansibleall -m user -a 'name=user1 state=present'
group:创建组
-a 'name= gid= state=system='
cron:周期性任务
-a 'name=minute= hour= day= month= weekday= job= user= state='
copy:复制
-a 'dest= src= mode=owner= group='
file:文件相关的操作
-a 'path= mode= owner=group= state={directory|link|present|absent} src='
ping:探测主机是否在线
没有参数
yum:程序包管理
-a 'name=state={present|latest|absent}'
service:服务相关的操作
-a 'name=state={started|stopped|restarted} enabled='
script:脚本相关的
-a '/path/to/script'
setup:系统的详细信息
这些就不再演示了,
playbook的核心元素:
tasks: 任务
variables: 变量
templates: 模板
handlers: 处理器
roles: 角色
变量:
facts
--extra-vars "name=value name=value"
role定义
Inventory中的变量:
主机变量
hostname name=value name=value
组变量
[groupname:vars]
name=value
name=value
Inventory的高级用法:
Playbook的结构:
-host:
vars:
remote_user:
tasks:(可以有多个)
variables:(可以有多个)
handlers:(可以有多个)
- host:
- host:
下面以一个示例来演示ansible的使用,使用ansible安装一个高可用的nginx负载均衡集群(keepalived+nginx),
keepalived的实现使用ansible的角色加剧本实现(实现的过程不再说明,示例的代码在附件中)
首先要编辑/etc/ansible/hosts这个文件如下:
然后创建一个目录ansible_keepalived,然后在这个目录下创建一些目录
mkdir -pv ansible_keepalived/roles/{synctime,keepalived,nginx,}/{files,templates,vars,tasks,handlers,meta}
然后在这些目录里加入文件,具体不在演示,查看附件里的文件就可以了,配置都在里面。如果不理解的可以查看官网文档或者跟本人留言。