目录
一.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"




