ansible快速学习(二)

本文详细介绍了如何使用Ansible中的roles进行Nginx的远程部署和配置,包括目录结构设置、任务编写、配置文件管理、变量和处理程序编写,以及常见错误的解决方法。
摘要由CSDN通过智能技术生成

ansible快速学习(二)

Role-角色扮演

简介

roles是在ansible中,playbooks的目录组织结构;将代码或文件进行模块化,成为roles的文件目录组织结构

易读,代码可重用,层次清晰

案例实战演练

通过role远程部署并配置nginx
(各部分使用方法见ansible快速学习(一))

1、准备目录结构

yum install -y nginx && cp /etc/nginx/nginx.conf roles/nginx/templates/nginx.conf.j2

在这里插入图片描述

2、编写主任务

---
- name: install epel-release packge
  yum: name=epel-release state=latest

- name: install nginx packge
  yum: name=nginx state=latest

- name: copy index.html
  copy: src=index.html dest=/usr/share/nginx/html/index.html

- name: copy nginx.conf template
  template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
  notify: restart nginx

- name: make sure nginx service running
  service: name=nginx start=started enabled=yes

3、准备配置文件

templates目录下放置个性化模板文件,可以根据需要自定义配置后,批量发送配置

vim /root/roles/nginx/templates/nginx.conf.j2
#worker_processes auto;  #改为变量
worker_processes {{ ansible_processor_cores }};# 已有ansible变量自动替换

#worker_connections 1024;
worker_connections {{ worker_connections }};# 没有的变量去变量文件寻找

4、编写变量

vim /root/roles/nginx/vars/main.yaml
worker_connections: 10240   #存放变量

5、编写处理程序

vim /root/roles/nginx/handlers/main.yaml
---
- name: restart nginx
  service: name=nginx start=restarted

6、编写剧本

vim /root/roles/site.yaml
- hosts: server  #编写剧本对象
  roles:
  - nginx

7、实施

cd /root/roles  #进入剧本执行目录
ansible-playbook site.yaml --syntax-check #整体剧本语法校验,***若对前几步单独的yaml文件语法校验均会失败***
ansible-palybook site.yaml  #执行剧本

报错情况一:
fatal: [host1]: FAILED! => {"changed": false, "msg": "Unsupported parameters for (systemd) module: start Supported parameters include: daemon_reexec, daemon_reload, enabled, force, masked, name, no_block, scope, state, user"}

解决方法:
在对应报错任务里,再次检查代码,语法格式没问题,但一些单词可能写错了

报错情况二:
fatal: [host1]: FAILED! => {"changed": false, "msg": "Unable to start service nginx: Job for nginx.service failed because the control process exited with error code. See \"systemctl status nginx.service\" and \"journalctl -xe\" for details.\n"}

解决方法:
进入一台问题目标主机,systemctl status nginx.service查看异常
可能是端口冲突或是其他问题
如果是nginx文件本身问题,可yum remove -y nginx 卸载重装

以上以nginx为例,可以以相同目录结构在roles下构建其他软件目录,如apache、mysql、docker等

只需修改roles目录下site.yaml文件,调整执行的剧本对象即可

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值