在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文件,这会导致非常烦恼的用户体验。