ansible-playbook配置不同系统yum源

准备工作

环境

主机 ip 系统
yc 192.168323.132 RHEL8
yc1 192.168.23.133 RHEL8
yc2 192.168.23.134 CentOS7

yum任务目录结构

[root@yc yum]# tree .
.
├── ansible.cfg
├── inventory
├── scripts
│   ├── centos7yum.sh
│   └── rhel8yum.sh
└── yum.yml

配置

关闭防火墙和selinux

[root@yc ~]# systemctl stop firewalld
[root@yc ~]# setenforce 0

映射

[root@yc yum]# vim /etc/hosts

192.168.23.133 yc1
192.168.23.134 yc2

复制ansible配置文件到yum目录下

[root@yc yum]# cp /etc/ansible/ansible.cfg .
[root@yc yum]# vim ansible.cfg 


[defaults]
...
# some basic default values...

inventory      = ./inventory  //设定清单在当前目录下

创建清单文件

[root@yc yum]# cat inventory 

[yum]
yc1
yc2

公钥

root@yc yum]# ssh-keygen -t rsa //直接回车
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 	
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 			
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:8uEqvn1A0Ef392b9TJsW818mjZHhD5zHLHNhs1A0dOs root@ansible
The key's randomart image is:
+---[RSA 3072]----+
|     . .. .   o=.|
|    . . .. .  . +|
|     . .    ..o= |
|      .      ++B=|
|     .. S     XE@|
|      .+ .     /B|
|       .o     o+O|
|    .. ..     .oo|
|   .ooo.        .|
+----[SHA256]-----+

//复制公钥到受控机

[root@yc yum]# ssh-copy-id root@yc1
[root@yc yum]# ssh-copy-id root@yc2

查看清单
[root@yc yum]# ansible all --list-hosts
  hosts (2):
    yc1
    yc2

测试连接

[root@yc yum]# ansible yum -m ping
yc1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
yc2 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}

编写yum配置剧本

[root@yc yum]# cat yum.yml 
---
- name: yum config
  hosts: yum
  gather_facts: yes 
  tasks:
#判断distribution是否为CentOS,主版本是否为7。二者均满足则配置centos7源,否则跳过
    - name: get centos7 yum
      script: ./scripts/centos7yum.sh
      when: 
        - ansible_facts["distribution"] == "CentOS"
        - ansible_facts["distribution_major_version"] == "7" 
        
#判断distribution是否为RedHat,主版本是否为8。二者均满足则配置rhel8源,否则跳过
    - name: get rhel8 yum
      script: ./scripts/rhel8yum.sh
      when: 
        - ansible_facts["distribution"] == "RedHat"
        - ansible_facts["distribution_major_version"] == "8"

编写yum配置脚本

//CentOS7 yum配置

[root@yc yum]# cat scripts/centos7yum.sh 
#! /bin/bash
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all && yum makecache

//RHEL8 yum配置
[root@yc yum]# cat scripts/rhel8yum.sh 
#! /bin/bash
#yumconfig
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
#epel config
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
sed -i 's|^#baseurl=https://download.fedoraproject.org/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
#makecache
yum clean all && yum makecache

验证

运行剧本

[root@yc yum]# ansible-playbook yum.yml 

PLAY [yum config] ***************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************
ok: [yc1]
ok: [yc2]

TASK [get centos7 yum] **********************************************************************************************
skipping: [yc1]
changed: [yc2]

TASK [get rhel8 yum] ************************************************************************************************
skipping: [yc1]
changed: [yc2]

PLAY RECAP **********************************************************************************************************
yc1                      : ok=2    changed=1    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0   
yc2                      : ok=2    changed=1    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0 

查看yc1

[root@yc1 ~]# yum repolist all
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                                                                      status
AppStream                                      CentOS-8 - AppStream - mirrors.aliyun.com                                      enabled
PowerTools                                     CentOS-8 - PowerTools - mirrors.aliyun.com                                     disabled
base                                           CentOS-8 - Base - mirrors.aliyun.com                                           enabled
centosplus                                     CentOS-8 - Plus - mirrors.aliyun.com                                           disabled
extras                                         CentOS-8 - Extras - mirrors.aliyun.com                                         enabled

查看yc2

[root@yv2 ~]# yum repolist all
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
repo id                                   repo name                                                                    status
base/7/x86_64                             CentOS-7 - Base - mirrors.aliyun.com                                         enabled: 10,072
centosplus/7/x86_64                       CentOS-7 - Plus - mirrors.aliyun.com                                         disabled
contrib/7/x86_64                          CentOS-7 - Contrib - mirrors.aliyun.com                                      disabled
epel/x86_64                               Extra Packages for Enterprise Linux 7 - x86_64                               enabled: 13,492
epel-debuginfo/x86_64                     Extra Packages for Enterprise Linux 7 - x86_64 - Debug                       disabled
epel-source                               Extra Packages for Enterprise Linux 7 - x86_64 - Source                      disabled
extras/7/x86_64                           CentOS-7 - Extras - mirrors.aliyun.com                                       enabled:    448
updates/7/x86_64                          CentOS-7 - Updates - mirrors.aliyun.com                                      enabled:  1,155
repolist: 25,167
posted @ 2021-01-13 23:46  吻如雪上霜  阅读(1119)  评论(0编辑  收藏  举报