目录
5.ansible四大组件
host inventory(主机清单) --》可以去操作哪些主机
modules(模块) --》实现某个功能的库
plugins(插件) --》完成某些功能的模块
playbook --》告诉主机清单里的服务器做什么事情
#如果把ansible看成一步电影,那么host inventory可以看做演员,modules和plugins是道具师,playbook则是剧本。
6.host inventory配置
写明控制的机器的信息,例如ip地址、ssh端口号、域名、用户名和密码
7.playbook使用
hosts : playbook配置文件作用的主机tasks: 任务列表variables: 变量 templates:包含模板语法的文本文件handlers :由特定条件触发的任务roles :用于层次性、结构化地组织playbook。roles 能够根据层次型结构自动装载变量文件、tasks以及handlers等
playbook是Ansible的配置,部署和编排的语言,是基于YAML语言格式配置。
7.1playbook的核心元素
hosts : playbook配置文件作用的主机
tasks: 任务列表
variables: 变量
templates:包含模板语法的文本文件
handlers :由特定条件触发的任务
roles :用于层次性、结构化地组织playbook
roles 能够根据层次型结构自动装载变量文件、tasks以及handlers等
7.2playbook命令
7.2.1ansible-playbook --syntax-check playbook.yaml 语法检测
7.2.2ansible-playbook playbook.yaml 运行
7.3使用playbook安装redis
7.3.1使用命令安装
[root@hzw playbooks]# cat redis_first.yaml
- hosts: all #对所有主机起作用
remote_user: root #用root用户连接
tasks: #任务列表
- name: install redis # 第一步、安装redis
yum: name=redis state=latest#yum安装或卸载,name=要操作的软件,state=latest/absent/present/removed
- name: start redis # 第二步、启动redis
service: name=redis state=started#service服务,name=要操作的对象,state=started/stoped/restarted/reloaded
#注意缩进
7.3.2在web机器上验证
7.3.3总结
此次操作只是安装redis并启动redis服务,并不能符合实际工作中的定制,当然用来用来一些简单的操作足矣。
7.4带配置文件安装redis
7.4.1先从刚安装了redis的web端fetch一个redis.conf文件过来
修改bind为web端本机ip
7.4.2创建一个yaml文件
[root@hzw playbooks]# cat redis_second.yaml
- hosts: all #对在hosts中添加的所有主机起作用
remote_user: root
tasks: #任务列表
- name: install redis #任务1安装redis
yum: name=redis state=latest
- name: copy config file #任务2 将ansible服务器上的redis.conf文件分发覆盖两台web的redis.conf文件
copy: src=/lianxi/playbooks/redis.conf dest=/etc/redis.conf owner=redis
notify: restart redis #notify做标记触发通知,下面的handlers处理通知
tags: configfile #可以在命令中直接跳到这一步执行
- name: start redis #任务3 启动redis
service: name=redis state=started
- name: echo #任务4 打印一个字符串
shell: echo "start sc redis"
handlers: #是一个特殊的task,在notify处的tesk中如果配置文件发生了变化会触发
- name: restart redis
service: name=redis state=restarted
7.4.3使用ansible-playbook命令
#tag的使用
7.4.4验证效果
使用命令前
使用命令后
#我们修改的配置文件redis.conf修改了bind为0.0.0.0,并且覆盖了两台web机器,所以两台web机器中redis监听的ip变为了0.0.0.0.
7.5ansible-playbook深入学习
7.5.1创建一个redis.conf.j2文件并在其中修改两行
#第一行中第一个[]是你自己的网卡类型,使用ip add查看
#第一行表示修改ip文本机ip
#第二行表示修改redis服务监控端口
[root@hzw playbooks]# cat redis_third.yaml
- hosts: all
remote_user: root
vars: #添加变量
scredis: /lianxi/playbooks/redis.conf.j2 #自定已变量scredis
redis_port: 2000 #系统自带变量
tasks:
- name: install redis
yum: name=redis state=latest
- name: copy config file
template: src={{scredis}} dest=/etc/redis.conf owner=redis #使用模板,变量{{scredis}}
notify: restart redis
tags: configfile
- name: start redis
service: name=redis state=started
- name: echo
shell: echo "start sc redis"
handlers:
- name: restart redis
service: name=redis state=restarted
7.5.2使用ansible-playbook命令
7.5.3验证