本章内容主要介绍RHEL8中如何安装ansible
- ansible时如何工作的
- 在RHEL8中安装ansible
1.ansible工作原理
如果管理的服务器很多,如几十台甚至几百台,那么就需要一个自动化管理工具了,ansible就是这样的一种自动化管理工具。
1)ansible是通过ssh连接到被管理主机,然后执行相关操作的,如图
ansible主机通过ssh连接到被管理主机时,需要提前设置密钥登录,使得从ansible主机
可以无密码登录到被管理主机。
2.安装ansible
在nonde01上安装ansible步骤如下:
1)先安装系统的开发工具
[root@node01 ~]# yum -y groupinstall 开发工具
2) 挂载镜像
[root@node01 ~]# mount /dev/cdrom /mnt/
mount: /mnt: /dev/sr0 already mounted on /var/ftp/dvd.
[root@node01 ~]#
3)配置本地yum源
[root@node01 ~]# cat /etc/yum.repos.d/aa.repo
[aa]
name=aa
baseurl=file:///mnt/AppStream
enabled=1
gpgcheck=0
[bb]
name=bb
baseurl=///mnt/BaseOS
enabled=1
gpgcheck=0
[root@node01 ~]#
4)先使用root用户登录server,在其上配置epel源,命令如下
[root@node01 ~]# yum -y install https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
[root@node01 ~]# sed -i 's|^#baseurl=https://download.fedoraproject.org/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
[root@node01 ~]# sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
RHEL8默认的Python版本为3.6,不符合项目的需求。现在升级到3.12.1
5)下载Python3.12.1
[root@node01 ~]# wget https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tgz
[root@node01 ~]# tar -zxvf Python-3.12.1.tgz
6)安装必须的包
[root@node01 ~]# dnf -y install gcc zlib* libffi-devel
7)安装Python
[root@node01 Python-3.12.1]# cd Python-3.12.1/
[root@node01 Python-3.12.1]# ./configure --prefix=/usr/local/python3 --enable-optimizations
[root@node01 Python-3.12.1]# make
[root@node01 Python-3.12.1]# make install
8)删除远程的Python3和pip3
[root@node01 Python-3.12.1]# rm -rf /usr/bin/python3
[root@node01 Python-3.12.1]# ln -s /usr/local/python3/bin/python3 /usr/bin/python3
[root@node01 Python-3.12.1]# rm -rf /usr/bin/pip3
[root@node01 Python-3.12.1]# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
9)查看Python3和Pip3是否正确的被安装
[root@node01 ~]# python3 --version
Python 3.12.1
[root@node01 ~]# pip3 --version
pip 23.2.1 from /usr/local/python3/lib/python3.12/site-packages/pip (python 3.12)
[root@node01 ~]#
3.正式安装ansible
[root@node01 ~]# rpm -ivh ansible-2.9.11-1.el8ae.noarch.rpm
错误:依赖检测失败:
python3-cryptography 被 ansible-2.9.11-1.el8ae.noarch 需要
python3-jinja2 被 ansible-2.9.11-1.el8ae.noarch 需要
sshpass 被 ansible-2.9.11-1.el8ae.noarch 需要
[root@node01 ~]#
错误:依赖检测失败:
python3-cryptography 被 ansible-2.9.11-1.el8ae.noarch 需要
python3-jinja2 被 ansible-2.9.11-1.el8ae.noarch 需要
sshpass 被 ansible-2.9.11-1.el8ae.noarch 需要
需要解决依赖包问题前面两个使用本地yum源就可以解决了
1)安装依赖
[root@node01 ~]# yum -y install python3-cryptography
[root@node01 ~]# yum -y install python3-jinja2
[root@node01 ~]# rpm -ivh sshpass-1.06-3.el8ae.x86_64.rpm
2)再次安装ansible
[root@node01 ~]# rpm -ivh ansible-2.9.11-1.el8ae.noarch.rpm
Verifying... ################################# [100%]
准备中... ################################# [100%]
正在升级/安装...
1:ansible-2.9.11-1.el8ae ################################# [100%]
[root@node01 ~]#
3)使用命令检查ansible的安装结果
[root@node01 ~]# ansible --version
ansible 2.9.11
config file = /etc/ansible/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.6/site-packages/ansible
executable location = /usr/bin/ansible
python version = 3.6.8 (default, Sep 9 2021, 07:49:02) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)]
[root@node01 ~]# pip3 --version
pip 23.2.1 from /usr/local/python3/lib/python3.12/site-packages/pip (python 3.12)
[root@node01 ~]#
这里安装的ansible的版本是2.9.27,同时也显示ansible的默认配置是letc/ansible/ansible.cfgo还要确保ansible主机能够解析所有的被管理机器,这里通过配置/etc/hosts 来实现,l/etchosts的内容如下。
[root@node01 ~]# cat /etc/hosts | grep node
192.168.182.220 node02
192.168.182.210 node03
[root@node01 ~]#
在node02和 node03两台机器上确认已经创建好了blab 用户,如果没有请自行创建,然
后配置好sudo,命令如下。
[root@node02 ~]# cat /etc/sudoers.d/blab
blab ALL=(root) NOPASSWOD: ALL
[root@node02 ~]#
这样在这两台机器上,blab 用户通过sudo-i可以无密码切换到root用户。
使用blab 用户登录server,配置好ssh密钥登录,使得blab 用户可以无密码登录到
server2和 server3,命令如下
[root@node02 ~]# ssh 192.168.182.200
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: Thu Dec 14 08:23:08 2023 from 192.168.182.1
[root@node01 ~]# exit
注销
Connection to 192.168.182.200 closed.
[root@node02 ~]#