playbook
playbook
list? together? nested with_items
Templates 模版
jinja模版架构,通过模版可以实现向模版文件传参(python转义)把占位符参数传到配置文件中去。
生成一个目标文本文件,传递变量到需要配置文件当中(web开发)。
httpd.conf.j2 在文件当中配置的是占位符(声明的变量)
/etc/ansible/hosts 配置了主机的占位符名称和j2文件中的占位符一致(定义参数:占位符的参数的参数声明好)
playbook当中,template模块来把参数传给目标主机的配置文件。
httpd
nginx的
cp httpd.conf /opt/http.conf.j2
vim httpd.conf.j2
42行 Listen {{http_port}}
95行 ServerName? {{server_name}}
119行 DocumentRoot {{root_dir}}
vim /etc/ansible/hosts
[webservers]
20.0.0.180 http_port=20.0.0.180:80 server_name=www.guoqi.com:80? root_dir=/etc/httpd/htdocs
[dbservers]
20.0.0.181?http_port=20.0.0.181:80 server_name=www.wdf.com:80? root_dir=/etc/httpd/htdocs
vim httpd.yml
- hosts: all
? remote_user: root
? vars:
? ? ? -? package:? httpd
? ? ? -? service :? ?httpd
tasks:
? ?-? name:? install? httpd
? ??? yum:? name={{package}}
? ?-? name:? install? configure? file
? ? ? template:? src=/opt/httpd.conf.j2? dest=/etc/httpd/conf/httpd.conf
#使用template的模版
? ? notify:
? ? ? ? -? restart? httpd
? ?-? name? create? root_dir
? ? ? file:
? ? ? ? path:? /etc/httpd/hdocs
? ? ? ? state:? directory
? ?-? name:? start? httpd
? ? ? service:? name={{service}}? enabled=true? state=started
handlers:
? ? -? name:? restart? httpd
? ? ? ?service:? name={{service}}? state=restarted
执行:ansible-playbook httpd.yml
ansible? -a? 192.168.233.20 'cat /etc/httpd/conf/httpd.conf'
到test2查看
vim /etc/httpd/conf/httpd.conf
查看42行:Listen 192.168.233.20:80
查看95行:ServerName? www.guoqi.com:80
查看119行: DocumentRoot? "/etc/httpd/htdocs"
vim /etc/ansible/hosts
yum -y install nginx
题:
vim nginx.html
server {
? ? listen? ? ? ? 80;
? ? #listen? ?8080
? ? server_name? ?;
? ? server_name改为www.guoqi.com
? ? root? ? /usr/share/nginx/html;? ?
? ? #root 改为/opt/nginx/html
}
.j2文件占位?
template传参
host文件定义
解答:vim nginx.conf
cp nginx.conf /opt/nginx.conf.j2
cd /opt/
vim nginx.conf.j2
server {
? ? listen? {{port}};
? ? server_name? {{server_name}};
? ? root? ? ? ? ? ? ? ? ?{{root_dir}};
}
vim /etc/ansible/hosts
tages模块:
模块标签,可以在playbook当中为任务设定标签(tages),我们在运行playbook时,可以通过指定任务标签,来实现只允许设定的标签的任务
-name:
tages:
? debug
--tags debug
--statr-at-task='wdf'
任务标签的种类:
always:不管你是否指定了运行标签,任务都会执行
never:即使运行了指定标签,该任务也不会执行
debug:调试任务
setup:收集主机信息
自定义标签
per_tasks:运行指定标签之前的任务
post_tasks:运行指定标签之后的任务
Roles模块
角色:
ansible层次化,结构化的组件playbook,使用了roles(角色)
可以根据层次的结构,自动装载变量文件,task任务,以及handlers等等
rolse:分别把变量 文件 任务 模块以及处理器,放在单独的目录当中,使用rolse模块来一键调用这些文件。
roles:
? --------web---总目录,角色
? files? ?存放copy和script模块调用的文件
? templates? 存放j2的模版文件
? tasks 包含任务的目录(子目录)
? -----------main.yml? 角色运行的任务
? handlers? 包含处理器的目录
? -----------main.yml
? vars? 存放变量的目录
? -----------main.yml
? defaults? 包含默认变量的目录
? -----------maim.yml
? meta? 包含元信息的目录
? -----------main.yml
site.yml用来统筹调用所有的配置文件。
如何来实现?
三个服务(创建三个角色)
httpd
mysql
php
分别在每个角色里面创建目录
touch {}
mysql
pkg:
? ? mariadb
? ? mariadb-server
svc:? mariadb
- name:? install php
? yum:? name={{pkg}}
- name:? start? php=fpm
? service:
pkg:
svc:
vim site.yml
分配要运行的主机、用户
运行
每个角色都要有自己的目录
技术能力,学习能力,解决问题的能力,抗压能力
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!