云计算运维学习day22——Ansible-Roles

目录

一.Roles介绍

1.1简单介绍

1.2roles结构框架

1.3使用apache角色安装Apache并修改端口号

1.3.1完成项目初始化

1.3.2安装apache角色

1.3.3完成tasks的编辑

1.3.4完成handlers的编辑

1.3.5完成defaults的编辑

1.3.6调用角色执行剧本

1.3.7测试

1.4配置防火墙

1.4.1下载ansible.poixy模块

1.4.2编辑playbook剧本

1.4.3执行playbook

1.5使用系统角色配置时间同步

1.5.1安装系统角色

1.5.2编写playbook剧本

1.5.3执行playbook

1.5.4测试

1.6修改selinux的状态

1.6.1获取selinux.yml文件

1.6.2编写playbook剧本

1.6.3执行文件

1.6.4测试

1.7安装nginx

1.7.1安装nginx角色

1.7.2编写playbook剧本

1.7.3执行剧本

1.7.4测试

二仓库上传gitee

2.1查看密钥

2.2添加密钥

​编辑

2.3新建一个仓库

2.4查看创建git仓库的步骤


一.Roles介绍

1.1简单介绍

1.说明:Ansible Roles(角色) 是官方推荐的代码组织和复用机制。简单来说,它把一个完整的运维任务(比如"部署一个LNMP环境")拆解成一套标准的"文件目录结构",让原本散落在大剧本(Playbook)中的任务、变量、文件、模板和处理器各归其位。

1.2roles结构框架

|-------------|-------------------------|
| 文件/目录 | 作用 |
| ansible.cfg | 项目级的ansible配置文件 |
| defaults | 默认变量(生效的优先级最低,便于修改) |
| vars | 固定变量(优先级高高于默认变量,不利于修改) |
| tasks | 存放着Role要执行的playbook(必存) |
| files | 存放静态文件 |
| handles | 存放触发器 |
| meta | 存放元数据(依赖关系、说明、平台) |
| templates | 存放模板文件.j2 |
| tests | 测试该Role的示例Playbook |
| ReadME.md | 说明文档(可选) |

说明:除了files和templates两个存放文件的目录外, 其他目录下,都要有一个main.yml文件,才可执行对应的内容

1.3使用apache角色安装Apache并修改端口号

1.3.1完成项目初始化

bash 复制代码
cd ansible    #进入项目目录
ansible-config init --disable > ansible.cfg
vim ansible.cfg    #添加角色路径

**说明:**默认是全局角色,需要将他更改到本地路径下

1.3.2安装apache角色

bash 复制代码
ansible-galaxy role init apache    #创建apache角色
ansible-galaxy role list    #查看角色列表

安装的apache角色的结构如下:

1.3.3完成tasks的编辑

bash 复制代码
cd tasks    #进入tasks目录
vim main.yml    #编辑任务.yml文件

**说明:**该任务会安装httpd服务,并将部署的远程客户机的域名放到Apache的默认发布目录中,并修改对应的httpd服务的端口号。同时,修改完端口号后,重启httpd服务,使文件内容生效

1.3.4完成handlers的编辑

bash 复制代码
cd handlers    #进入到触发器目录下
vim main.yml    #编辑触发器的.yml文件

**说明:**匹配条件与tasks中定义的匹配条件一致,这个案例中匹配条件是name: restart httpd service

1.3.5完成defaults的编辑

bash 复制代码
cd vars    #进入变量目录下
vim main.yml    #定义playbook的全局变量

说明: 这里我们定义defaults默认变量,而不是vars固定变量,是因为defaults的优先级较低,方便我们在playbook中进行二次修改 。如果采用vars固定变量,需要明确不会修改变量

1.3.6调用角色执行剧本

bash 复制代码
cd ~/ansible    #返回项目目录
vim main.yml    #编辑playbook
ansible-playbook main.yml

1.3.7测试

bash 复制代码
curl server2    #能够访问,说明测试成功

1.4配置防火墙

1.4.1下载ansible.poixy模块

bash 复制代码
cd ansible    #进入项目目录当中
ansible-galaxy collection install ansible.posix    #安装ansible.posix模块

说明: ansible.posix模块用于扩展 Ansible 在 Linux/Unix 系统上的管理能力,这里我们需要用它去 管理我们的防火墙,后续需要管理selinux

1.4.2编辑playbook剧本

bash 复制代码
vim main.yml    #编辑playbook

**说明:**相信大家也看到了,我这里有三种tasks:pre_tasks,tasks,post_tasks

**pre_tasks:**在所有任务包含角色之前,执行的任务(优先执行)

**taksks:**普通任务,按照所放置的位置顺序执行

**post_tasks:**在其他任务执行完成后,最后执行该任务(最后执行)

1.4.3执行playbook

bash 复制代码
ansible-playbook main.yml

1.5使用系统角色配置时间同步

1.5.1安装系统角色

bash 复制代码
yum install -y rhel-system-roles
sudo chown devops.devops ansible.cfg    #确保文件权限

完成roles的角色路径配置:

bash 复制代码
vim ansible.cfg

1.5.2编写playbook剧本

bash 复制代码
vim timesync.yml    #编写剧本

说明:

hostname:指定公共的NTP服务器地址

pool:NTP池,DNS解析时会返回多个IP,客户端会从中选择最优的,避免单点故障

iburst:启用爆发式同步,让服务器在几秒钟内完成时间同步

1.5.3执行playbook

bash 复制代码
ansible-playbook timesync.yml    #执行剧本

1.5.4测试

bash 复制代码
vim /etc/chrony.conf

1.6修改selinux的状态

1.说明:将selinux的状态从disabled修改到enforcing,同时开设82端口号通过selinux和firewall。

2.注意:这里只允许CentOS7从disabled一步到enforcing;Rocky Linux必须要先从disabled状态转到premissive状态,再转到enforcing状态,因为Rocky Linux的版本selinux功能升级了,一步转到enforcing状态,会破坏selinux的上下文结构,导致虚拟机启动不了

1.6.1获取selinux.yml文件

bash 复制代码
cd /usr/share/doc/rhel-system-roles/selinux 
cp example-selinuxplaybook.yml /home/devops/ansible/selinux.yml    #复制官方角色的.yml文件

**说明:**由于我们之前下载过系统角色,这里我们直接在selinux的模板案例中进行修改

1.6.2编写playbook剧本

bash 复制代码
cd ansible    #进入项目目录
vim selinux.yml    #编写selinux.yml文件
vim selinux_1.yml    #编写防火墙firewall放行82端口

selinux.yml:

说明:这里仅针对CentOS 7版本,同时文件的下面不用做修改

selinux_1.yml:

1.6.3执行文件

bash 复制代码
ansible-playbook selinux_1.yml

注意:不要在ansible剧本的执行端,执行sleinux.yml,这会导致你的虚拟机重启,剧本会中断

1.6.4测试

bash 复制代码
#等待剧本执行完成后,进入被控虚拟机
getenforce    #查看当前的selinux状态
semange port -l | grep http    #查看82端口是否允许访问
curl node1:82    #使用82端口访问

修改前:

修改后:

1.7安装nginx

1.7.1安装nginx角色

bash 复制代码
ansible-galaxy role install geerlingguy.nginx

1.7.2编写playbook剧本

bash 复制代码
vim nginx.yml

1.7.3执行剧本

bash 复制代码
ansible-playbook nginx.yml

1.7.4测试

bash 复制代码
curl node1

二仓库上传gitee

2.1查看密钥

bash 复制代码
cd .ssh
cat id_rsa.pub    #查看密钥

2.2添加密钥

进入gitee,输入标题,并粘贴密钥

2.3新建一个仓库

2.4查看创建git仓库的步骤

1.创建你的名字和你的邮箱

bash 复制代码
git config --global user.name "www"
git config --global user.email "你的邮箱"

2.进入你的项目目录下

3.完成git初始化

bash 复制代码
git init

4.创建说明文档并加入git中

bash 复制代码
touch ReadME.md    #使用vim命令输入编写文件
git add ReadME.md    #加入仓库

5.测试能否连通

bash 复制代码
git commit -m "first commit"

6.创建远程仓库

说明:为当前 Git 仓库添加一个名为 origin 的远程仓库地址,指向 Gitee上的一个项目。

bash 复制代码
git remote add origin git@gitee.com:gitee的用户名/项目名.git

7.将本地仓库上传到gitee上

bash 复制代码
sudo git push -u origin "master"
相关推荐
HiDev_1 小时前
【非标自动化】2、认识元器件(数字量输入输出模块)
运维·自动化
minglie11 小时前
espidf的esp32版的websocketServer
学习
j7~1 小时前
【C++】《C++二叉搜索树(BST)从入门到精通:概念、实现与Key/Value模型全解析》
开发语言·c++·学习·二叉搜索树
qq_349447951 小时前
在ollama下部署DeepSeek-r1模型(linux机器)
linux·运维·服务器
白猫不黑1 小时前
AI Agent自动化渗透测试实战:从原理到红队实践
运维·人工智能·web安全·网络安全·信息安全·渗透测试·自动化
七夜zippoe1 小时前
DolphinDB 2.x 集群监控运维平台实战:从指标采集到告警自愈
运维·集群·监控·告警·dolphindb·指标采集
Lucky09282 小时前
codex 安装前置软件
linux·运维·macos
mengge.cloud2 小时前
0823Keepalived + LVS(DR) + MariaDB主主 小白完整实战教程
linux·运维·网络·oracle·负载均衡·mariadb·lvs
kk”10 小时前
Linux的组和权限管理
linux·运维·服务器