一、Linux配置本地yum仓库

我的是Rocky Linux最小化版,这个版本的iso没有AppStream目录,无法配置,需要完整版。下面会记录完整版系统的配置和最小化版配置。

最小化配置

在vm虚拟机安装的时候选择的ISO是最小化的也没关系,将完整版的传到Linux目录里,然后将它挂载就好了

  1. 挂载ISO
    1
    2
    #loop是识别iso文件,ro是只读,iso文件本身就是只读
    mount -o loop,ro /opt/Rocky-9.6-x86_64-dvd.iso /media/yum_source
  2. 配置仓库repo文件,该文件路径为/etc/yum.repo.d/rocky.repo。在配置之前将源配置备份下
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    cp rocky.repo{,-bak}
    >rocky.repo #清空配置

    #repo的配置需要配置两个,AppStream和BaseOS,开头要以'[]'打头,里面不能有空格
    [AppStream]
    #仓库的描述信息,后面的名字可自定义
    name=Local DVD AppStream
    #软件放在哪个地方,file:///表示放在本地文件系统,因为我将iso挂在/media/yum_source下
    baseurl=file:///media/yum_source/AppStream
    #启用仓库配置
    enable=1
    #是否验证软件完整性,本地可以不验证,如果时远程仓库,最好开启验证
    gpgcheck=0

    [BaseOS]
    name=Local DVD BaseOS
    baseurl=file:///media/yum_source/BaseOS
    enable=1
    gpgcheck=0

  3. 验证。使用yum clean all && yum makecache测试清除缓存并重新加载

完整版配置

完整版配置和最小化差不多,唯一的区别就是挂载的对象不同,完整版因为本身系统的yum源就是存在的,所以,只需要挂在系统就好,这里为sr0
mount /dev/sr0 /media/yum_source
其他的配置是一样的

二、ansible

  • 这是一款自动化运维工具,基于Python开发的,主要用于unix/Linux系统的配置、代码、变革操作,去中心化管理,客户端无需部署插件即可管理。
  • 分为控制端和被控端,主要基于ssh协议管理

安装ansible

  1. 安装扩展软件包 dnf install -y epel-release
  2. 安装ansible dnf install -y ansible

配置

在此之前需要在/etc/hosts文件中配好控制端和被控端的ip映射,还需要配置免密

  1. 配置免密
    1
    2
    ssh-keygen #一路回车
    ssh-copy-id root@slave1 #将密钥发送给被控端,其他的也是循环操作,自己本身也需要发一下
  2. 配置ansible的主机映射,在/etc/ansible/hosts文件中将主机IP或者配置的映射名写入
    1
    2
    3
    4
    5
    6
    [mysvr] #将下面的主机归组
    slave1
    slave2

    [ansible]
    master
  3. 测试是否OK
    ansible all -m ping

拓展

ansible有两种执行方式,一种是在linux终端内执行,一种是通过写yaml文件执行

终端式

  1. ansible all -m ping ,这段的意思是对所有主机进行ping,-m是指定模块,他这个模块有很多,比如dnf/yum,默认为command模块,不过command不支持特殊符号,比如管道符,>,&&等,如果想用,就是有个shell模块
  • ansible mysvr -a ‘whoami’ #在mysvr组执行whoami命令
  • ansible mysvr -m dnf -a ‘name=nginx state=present’ #在mysvr组执行安装nginx,present是确保软件已安装,未安装则装,安装了就不管,与他相反的则是absent(确保未安装)
  1. ansible-doc yum 这是ansible自带的操作文档,遇到不会的模块,可以查询手册,直接找到EXMPALE就可以看到怎么使用了

Playbook剧本

上面的终端式一般不怎么用,最好用的应该就是这个剧本了,他是yaml格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- name: 部署nginx并配置服务
hosts: mysvr #主机组
remote_user: user
tasks:
- name: 安装nginx #这个name一般是给我们自己看的,能够让我们知道进行到哪一步,在干什么
dnf: #指定模块
name: nginx
state: present #这里的name和present是dnf的子配置,用于指定包名和执行方式
- name: 复制自定义配置文件
copy:
src: /etc/nginx/conf.d/xxxx.conf #这是控制端的文件路径
dest: /etc/nginx/coonf.d/ #这是被控端的路径
mode: 0644 #文件权限
- name: 启动nginx并设置开机自启
service:
name: nginx
state: started
enable: yes
  • 运行playbook,ansible-playbook deploy_nginx.yml