在Azure上安装Ansible到RHEL8(无需RHAAP)

在企業的IT部門裡,越是高級的人越容易誤解一件事情:只要擁有Red Hat Enterprise Linux的訂閱,就能輕鬆使用Ansible。這其實是Red Hat可能故意進行的市場誤導,因為RHEL8並沒有附帶由Red Hat支援的Ansible。在RHEL8的安裝光碟中也不包含Ansible的rpm套件。如果想要使用由Red Hat支援的Ansible,就只能購買Red Hat Ansible Automation Platform(RHAAP)的訂閱。

如果你没有RHAAP的订阅,那么你将无法获得Red Hat支持的Ansible。换句话说,如果你不需要Red Hat的支持,那么使用Ansible开发社区提供的Ansible也不会有支持上的差别。因此,如果你没有RHAAP的订阅,我们建议在任何情况下都使用Ansible社区版。还可以考虑使用EPEL。

嗯,subscription-manager repos –enable ansible-2.9-for-rhel-8-x86_64-rpms 这个命令在没有订阅的情况下是无法安装Ansible的,只会浪费时间,非常低效。就像使用Docker时也遇到过类似的陷阱,这也是我认为Red Hat并不是一种十分清洁和可信赖的发行版的原因之一。

环境

在Azure上创建一个RHEL8虚拟机。我认为大小无所谓,但由于推荐,我选择了RHEL 8.2作为操作系统。
我注意到在Azure上,无论是Ubuntu还是RHEL,虚拟机的价格都没有差别,所以我想到了RHEL何时变成免费的了,但在AWS EC2上,价格差异仍然存在。嗯? (5/12附注:Azure上仍然会收取RHEL操作系统费用,这是虚拟机创建界面的错误)。

在微软Azure上的红帽

在中国本土,On-Demand映像由Microsoft提供支持,并且Red Hat的订购不会被消耗掉。哦,明白了。嗯,如果可以免费使用,那更好了。

安装Ansible

创建一个操作系统实例,并通过SSH进行连接。

我試著只需要一個選項以中文將以下內容重新表達:
突然間嘗試運行yum install ansible,但當然失敗了。

$ sudo -i
# yum install ansible
Red Hat Enterprise Linux 8 for x86_64 - BaseOS   11 MB/s |  38 MB     00:03
Red Hat Enterprise Linux 8 for x86_64 - AppStre 6.5 MB/s |  23 MB     00:03
Microsoft Azure RPMs for RHEL8 Extended Update  1.7 kB/s | 2.2 kB     00:01
Last metadata expiration check: 0:00:01 ago on Mon 09 May 2022 07:51:15 AM UTC.
No match for argument: ansible
Error: Unable to find a match: ansible

是的,对,是这样的。根据/etc/yum.repos.d/中的yum存储库,将引用由Microsoft维护的基础操作系统和应用程序流的存储库,而没有找到Ansible的存储库。

既然如此,我们可以按照与现在已经不存在的CentOS 8相同步骤,从EPEL安装Ansible。
不知道EPEL会保持多久呢。
https://docs.ansible.com/ansible/2.9_zh_CN/installation_guide/intro_installation.html#rhelcentos-fedora-ansible

引用时说道:“目前支持的 RHEL RPM 可以从 releases.ansible.com 和 EPEL 获取。”

 

包含启用「codeready-builder」订阅的步骤,但这只是红帽公司成见的恶作剧,只要能执行下面的「dnf install ~epel~」就可以了。

# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

使用这个,就能够安装Ansible。

# yum install ansible
...
================================================================================
 Package          Arch   Version       Repository                          Size
================================================================================
Installing:
 ansible          noarch 2.9.27-1.el8  epel                                17 M
Installing dependencies:
 libsodium        x86_64 1.0.18-2.el8  epel                               162 k
 python3-bcrypt   x86_64 3.1.6-2.el8.1 epel                                44 k
 python3-jmespath noarch 0.9.0-11.el8  rhel-8-for-x86_64-appstream-eus-rhui-rpms
                                                                           45 k
 python3-pynacl   x86_64 1.3.0-5.el8   epel                               100 k
 sshpass          x86_64 1.06-9.el8    epel                                27 k
Installing weak dependencies:
 python3-paramiko noarch 2.4.3-2.el8   epel                               290 k

Transaction Summary
================================================================================
Install  7 Packages

Total download size: 18 M
Installed size: 99 M
Is this ok [y/N]: y
...

确认能否在本地主机上执行ansible命令。

$ ansible localhost -a "echo hello world"
localhost | CHANGED | rc=0 >>
hello world

制作SSH密钥并验证公钥。

$ ssh-keygen -f ~/.ssh/id_rsa -N ""
$ cat ~/.ssh/id_rsa.pub

使用该公钥创建另一台受管的RHEL8机器。
一旦虚拟机创建成功,从Ansible机器尝试通过ssh访问受管机器,并执行ansible命令。

$ ssh managed
The authenticity of host 'managed (10.0.0.5)' can't be established.
ECDSA key fingerprint is SHA256:1ph6SLdRn7yctUpvygT065iCD710OUVTZ4wXEiXGiAE.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'managed' (ECDSA) to the list of known hosts.
Activate the web console with: systemctl enable --now cockpit.socket

This system is not registered to Red Hat Insights. See https://cloud.redhat.com/
To register this system, run: insights-client --register

Last login: Mon May  9 09:48:25 2022 from 10.0.0.4
[azureuser@managed ~]$ exit

$ echo managed>inventory
$ ansible -i ./inventory managed -a "hostname"
managed | CHANGED | rc=0 >>
managed

唉,Azure+RHEL+Ansible真麻烦。

另外,尽管将来我想付费获得Red Hat支持,但目前由于公司的原因,无法使用RHAAP的订阅。开源软件也行不通,我一定需要支持。所以,可以暂时使用60天的评估版来推迟解决问题。

如果使用Azure VM,将在/home/azureuser的磁盘空间不足无法展开大小为800MB左右的tar.gz文件,这会导致非常烦恼的用户体验。

 

广告
将在 10 秒后关闭
bannerAds