playbook配置不同系统版本的yum源配置
环境说明:
主机IP | 系统平台 | |
---|---|---|
192.168.100.1 | 主控 | |
192.168.100.2 | redhat8 | 被控 |
192.168.100.3 | redhat7 | 被控 |
192.168.100.4 | centos8 | 被控 |
192.168.100.5 | centos7 | 被控 |
项目结构预览:
[root@ansible yum]# tree
.
├── ansible.cfg
├── inventory
└── yum.yml
0 directories, 3 files
本次环境YUM源(centos和epel)为:"阿里云官方镜像站"
准备工作:
//映射主机名
[root@ansible ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.1 ansible
192.168.100.2 redhat8
192.168.100.3 redhat7
192.168.100.4 centos8
192.168.100.5 centos7
//安装ansible
[root@ansible ~]# yum -y install ansible
//创建项目文件夹
[root@ansible ~]# mkdir ~/yum
//修改清单文件位置
[root@ansible ~]# vim /etc/ansible/ansible.cfg
inventory = ./inventory
[root@ansible ~]# cp /etc/ansible/ansible.cfg ~/yum/
//编写清单
[root@ansible ~]# vim ~/yum/inventory
[redhat]
redhat8
redhat7
[centos]
centos8
centos7
//使用ssh-keygen生成私钥和公钥
[root@ansible ~]# ssh-keygen -t rsa
//设置免密登录
[root@ansible ~]# ssh-copy-id root@redhat8
[root@ansible ~]# ssh-copy-id root@redhat7
[root@ansible ~]# ssh-copy-id root@centos8
[root@ansible ~]# ssh-copy-id root@centos7
编写配置yum的playbook
[root@ansible ~]# vim ~/yum/yum.yml
---
- hosts: all
vars:
baseurl_8: https://mirrors.aliyun.com/epel/8/Modular/x86_64/
baseurl_7: https://mirrors.aliyun.com/epel/7/x86_64/
tasks:
- name: yum config for 8
yum_repository:
name: "{{ item }}"
baseurl: https://mirrors.aliyun.com/centos/8/{{ item }}/x86_64/os/
enabled: yes
gpgcheck: no
mode: 0644
file: "{{ item }}"
description: "{{ item }}"
state: present
loop:
- BaseOS
- AppStream
when: >
( ansible_facts["distribution"] == "RedHat" and
ansible_facts["distribution_major_version"] == "8" )
or
( ansible_facts["distribution"] == "CentOS" and
ansible_facts["distribution_major_version"] == "8" )
- name: yum config for 7
yum_repository:
name: base
baseurl: https://mirrors.aliyun.com/centos/7/os/x86_64/
enabled: yes
gpgcheck: no
mode: 0644
file: base
description: base
state: present
when: >
( ansible_facts["distribution"] == "RedHat" and
ansible_facts["distribution_major_version"] == "7" )
or
( ansible_facts["distribution"] == "CentOS" and
ansible_facts["distribution_major_version"] == "7" )
- name: yum config epel for 8
yum_repository:
name: epel
baseurl: "{{ baseurl_8 }}"
enabled: yes
gpgcheck: no
mode: 0644
file: epel
description: epel
state: present
when: >
( ansible_facts["distribution"] == "RedHat" and
ansible_facts["distribution_major_version"] == "8" )
or
( ansible_facts["distribution"] == "CentOS" and
ansible_facts["distribution_major_version"] == "8" )
- name: yum config epel for 7
yum_repository:
name: epel
baseurl: "{{ baseurl_7 }}"
enabled: yes
gpgcheck: no
mode: 0644
file: epel
description: epel
state: present
when: >
( ansible_facts["distribution"] == "RedHat" and
ansible_facts["distribution_major_version"] == "7" )
or
( ansible_facts["distribution"] == "CentOS" and
ansible_facts["distribution_major_version"] == "7" )
执行剧本
[root@ansible ~]# cd ~/yum/
[root@ansible yum]# ansible-playbook yum.yml
验证
//redhat8
[root@redhat8 ~]# yum repolist
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
repo id repo name
AppStream CentOS-8 - AppStream - mirrors.aliyun.com
base CentOS-8 - Base - mirrors.aliyun.com
epel Extra Packages for Enterprise Linux 8 - x86_64
epel-modular Extra Packages for Enterprise Linux Modular 8 - x86_64
extras CentOS-8 - Extras - mirrors.aliyun.com
//redhat7
[root@redhat7 ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
base/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,492
extras/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 448
updates/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 1,155
repolist: 25,167
//centos8
[root@centos8 ~]# yum repolist
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
repo id repo name
AppStream CentOS-8 - AppStream - mirrors.aliyun.com
base CentOS-8 - Base - mirrors.aliyun.com
epel Extra Packages for Enterprise Linux 8 - x86_64
epel-modular Extra Packages for Enterprise Linux Modular 8 - x86_64
extras CentOS-8 - Extras - mirrors.aliyun.com
//centos7
[root@centos7 ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
base/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,492
extras/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 448
updates/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 1,155
repolist: 25,167