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.如果要修改已加密的变量文件,需要重新解密、加密

相关推荐
Percep_gan29 分钟前
Linux中安装gitea,很详细
linux·elasticsearch·gitea
Rabitebla9 小时前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
Android系统攻城狮14 小时前
Linux FFmpeg深度解析之avcodec_default_get_encode_buffer调用流程与实战(二十八)
linux·运维·服务器·ffmpeg·车载音视频·ffmpeg音视频
程序员初一14 小时前
8080 打不开的四层定位:监听地址、ufw、DOCKER 链、安全组
linux·ssh
程序开发阿元14 小时前
swappiness 60 和 10 差在哪:一台 1C1G 的三轮对比
linux·ssh
无足鸟ICT15 小时前
【RHCA+】mpstat命令(监控CPU)
linux
GeW16 小时前
新质生产力Linux和数据库为啥这么关键
linux
番茄啊16 小时前
linux 开启xftp连接
linux·运维·服务器
CodeYp201917 小时前
第1讲:Linux 基础指令
linux·指令
李松桃17 小时前
基于端口号的服务配置
linux·nginx-核心模块配置