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

相关推荐
萧鼎40 分钟前
Python调试技巧:高效定位与修复问题
服务器·开发语言·python
GodK7771 小时前
IP 数据包分包组包
服务器·网络·tcp/ip
梁诚斌1 小时前
VSOMEIP代码阅读整理(1) - 网卡状态监听
运维·服务器·网络
深情废杨杨1 小时前
服务器几核几G几M是什么意思?如何选择?
运维·服务器
康熙38bdc1 小时前
Linux 进程优先级
linux·运维·服务器
Web极客码1 小时前
常见的VPS或者独立服务器的控制面板推荐
运维·服务器·控制面板
hhzz1 小时前
Linux Shell编程快速入门以及案例(Linux一键批量启动、停止、重启Jar包Shell脚本)
android·linux·jar
只是有点小怂1 小时前
parted是 Linux 系统中用于管理磁盘分区的命令行工具
linux·运维·服务器
代码雕刻家2 小时前
数据结构-3.10.队列的应用
服务器·数据结构
三枪一个麻辣烫2 小时前
linux基础命令
linux·运维·服务器