linux——ansible实验

要求

0.进入servera进行准备工作,做一些清理

1)停止httpd服务,清除httpd软件包、配置文件、主页文件

2)清理/etc/hosts文件中的内容,只保留最上面默认的两行

(127.0.0.1和::1这两行)

1.根据之前的剧本改造

0)还在之前的/work工作目录下

1)清单

确保servera在newweb组

2)项目文件目录

建立目录/work/files,存放ansible工作相关文件

提前编辑好httpd.conf放到files目录里

3)变量目录和文件

在工作目录中,建立变量目录varfile

在varfile目录中新建变量文件vars

4)变量文件vars内容

包含以下变量和对应值:

|----------|----------------------------|
| web_pkg | httpd |
| fw_pkg | firewalld |
| web_svc | httpd |
| fw_svc | |
| cfg_src | files/httpd.conf |
| cfg_dest | /etc/httpd/conf/httpd.conf |
| web_root | /var/www/html/ |

5)编写剧本(使用刚定义好的变量)

5.1)使用dnf模块,确保web_pkg和fw_pkg指定的软件包被安装

5.2)将cfg_src指定的文件,放到客户机的cfg_dest位置

并确保文件属于root账户组,权限644

5.3)在web_root指定的客户机目录,创建index.html文件

index.html中包含:客户机的主机名和IP地址

(获取客户机的facts信息并写入)

5.4)确保服务启动

web_svc和fw_svc

立刻启动,并开机自动启动

5.5)配置防火墙

确保防火墙放行web_svc指定的服务

立即生效,且写入配置文件(永久生效)

6)对变量文件加密

使用ansible-vault对变量文件var加密,使用密码redhat

密码写入密码文件files/pwd,确保文件仅root账户可读写

7)执行剧本

8)探索

刚才清除了客户机/etc/hosts文件内容

是否可以让ansible读取客户机facts,并填充hosts文件

把客户机的IP和对应主机名,填充进去

实验过程

0.工作目录

ansible的配置文件

files,要给客户机的文件,全放里头

varfile,变量文件房里头

host,是清单inventory

其他

facts.yml,查看客户机的所有facts,留着,回头有用

1.变量文件

web的软件包和服务名一样,web_pkg_svc赋值httpd

防火墙的软件包,fw_pkg

防火墙要放行的服务名,web_fw_svc

web的配置文件源,cfg_src

web的配置文件,放到客户机的哪里,cfg_dest

web的工作目录,web_root

web配置文件所属用户、组、权限

cfg_own,cfg_grp,fmode

2.变量文件需要加密

2.1)先建立密码文件

2.2)用这个密码文件,去加密刚才的变量文件

命令ansible-vault,选项

encrypt,加密

--vault-password-file,指定密码文件

2.3)加密后的变量文件,vim或cat看一下

打开以后,或者cat以后,只能看到一堆加密后的字符

看不到源文件内容的

如果要看源文件,需要解密......

用于加密的密码文件,看情况,是否要再加密后删除

密码文件需要限制权限,如果自己记住密码,也可以删了......

而且,之后,执行playbook的时候,可以使用交互式输入密码

可以不指定密码文件

3.准备要给web的配置文件

4.看剧本

开头,剧本名字

操作的主机

指定变量文件

开始tasks

第一个task

用了dnf模块,装软件包

用变量指定俩包,httpd,firewalld

第二个task

用copy模块

把web的配置文件复制到客户机指定目录

并且改所属和权限

第三个task

还是用copy模块

但是,是生成一个文件,index.html主页文件,在指定的目录产生

不需要提前先创建这个文件,会自动新建

content部分,和书里参考不太一样

在咱自己这个环境里,有可能default_ipv4这个fact是空的

需要从别的位置,去取IP地址

于是用了:

ansible_facts

ens160

ipv4

address

第四个task

启用防火墙服务

没干别的......

第五个task

并没有继续启动web服务

配置防火墙

放行web服务的端口

防火墙,是否放行服务,和目标服务本身的状态配置没关系

最后一个task

最后拉起web服务

5.执行这个剧本

要用vault的选项,使用了交互式提供密码,没使用密码文件

如果要详细过程,加选项 -v、-vv、-vvv

6.看一下web主页内容

所以,上面剧本里,fact外面的( ),就只是括号......

7.如果要修改已加密的变量文件,需要重新解密、加密

相关推荐
WI8LbH78813 分钟前
Ubuntu 部署Harbor
linux·运维·ubuntu
researcher-Jiang1 小时前
高性能计算之MPI:第一次MPI并行程序设计练习
linux·运维·服务器
Wireless_wifi61 小时前
Why Choose IPQ9574 for Your WiFi 7 Solution
linux·人工智能·5g
MYMOTOE62 小时前
国内对标腾讯 WorkBuddy 的桌面 AI 智能体软件大全
linux
小c君tt2 小时前
linux学习笔记1
linux·笔记·学习
RisunJan2 小时前
Linux命令-read(Bash 内建读取输入)
linux
normanhere3 小时前
浪潮云国产化超融合规划和部署案例
服务器·网络
CCPC不拿奖不改名4 小时前
Redis 工程化部署深度解析
linux·服务器·数据库·redis·深度学习·缓存·rag
QWEDDRFTG4 小时前
运维长期经验总结:从故障倒推服务器电源线选购标准
运维·服务器
Mr.wangh4 小时前
聊天模型--流式传输
运维·服务器