云计算运维学习day22——Ansible-Roles
2026/8/23 7:02:37 网站建设 项目流程

目录

一.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完成项目初始化

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

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

1.3.2安装apache角色

ansible-galaxy role init apache #创建apache角色 ansible-galaxy role list #查看角色列表

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

1.3.3完成tasks的编辑

cd tasks #进入tasks目录 vim main.yml #编辑任务.yml文件

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

1.3.4完成handlers的编辑

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

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

1.3.5完成defaults的编辑

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

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

1.3.6调用角色执行剧本

cd ~/ansible #返回项目目录 vim main.yml #编辑playbook ansible-playbook main.yml

1.3.7测试

curl server2 #能够访问,说明测试成功

1.4配置防火墙

1.4.1下载ansible.poixy模块

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

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

1.4.2编辑playbook剧本

vim main.yml #编辑playbook

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

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

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

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

1.4.3执行playbook

ansible-playbook main.yml

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

1.5.1安装系统角色

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

完成roles的角色路径配置:

vim ansible.cfg

1.5.2编写playbook剧本

vim timesync.yml #编写剧本

说明:

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

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

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

1.5.3执行playbook

ansible-playbook timesync.yml #执行剧本

1.5.4测试

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文件

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

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

1.6.2编写playbook剧本

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

selinux.yml:

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

selinux_1.yml:

1.6.3执行文件

ansible-playbook selinux_1.yml

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

1.6.4测试

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

修改前:

修改后:

1.7安装nginx

1.7.1安装nginx角色

ansible-galaxy role install geerlingguy.nginx

1.7.2编写playbook剧本

vim nginx.yml

1.7.3执行剧本

ansible-playbook nginx.yml

1.7.4测试

curl node1

二仓库上传gitee

2.1查看密钥

cd .ssh cat id_rsa.pub #查看密钥

2.2添加密钥

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

2.3新建一个仓库

2.4查看创建git仓库的步骤

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

git config --global user.name "www" git config --global user.email "你的邮箱"

2.进入你的项目目录下

3.完成git初始化

git init

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

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

5.测试能否连通

git commit -m "first commit"

6.创建远程仓库

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

git remote add origin git@gitee.com:gitee的用户名/项目名.git

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

sudo git push -u origin "master"

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询