第二十八章 ansible的使用

本文详细介绍了如何在RHEL系统中安装和配置Ansible,包括设置epel源、安装Python3.9、解决依赖问题,以及编写ansible.cfg和清单文件,展示了基本的用法和模块应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、理论讲解

本实验的拓扑图

二、安装ansible

三、编写ansible.cfg和清单文件

四、ansible的基本用法


一、理论讲解

  • 如果管理的服务器很多,如几十台甚至几百台,那么就需要一个自动化管理工具了,ansible就是这样的一种自动化管理工具。
  • ansible是通过ssh连接到被管理主机,然后执行相关操作的,如下图。

  • ansible主机通过ssh连接到被管理主机时,需要提前设置密钥登录,使得从ansible主机可以无密码登录到被管理主机。

本实验的拓扑图

  • 这里server是 ansible主机,以lduan用户登录。server2和server3是被管理主机,在这两台主机上创建lduan 用户并配置好sudo,使得这两台主机上的lduan用户通过sudo-i可以无密码切换到root,下面开始配置。

二、安装ansible

(1)先使用root用户登录server,在其上配置epel源,命令如下。

[root@rhel1 ~]# yum -y install https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
[root@rhel1 ~]# sed -i 's|^#baseurl=https://download.fedoraproject.org/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
[root@rhel1 ~]# sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*

(2)挂载镜像和配置本地yum源。

操作:略

(3)安装开发工具。

[root@rhel1 ~]# yum -y groupinstall 开发工具
  • RHEL8默认的Python版本为3.6,不符合项目的需求。现在升级到3.9

(4)下载Python3.9.5,有安装包可以用安装包就不用下载了。

[root@rhel1 ~]# wget https://www.python.org/ftp/python/3.9.5/Python‐3.9.5.tgz

(5)解压Python-3.11.7.tgz解压包。

[root@rhel1 ~]# tar zxvf Python-3.11.7.tgz

(6)安装Python。

[root@rhel1 ~]# cd Python-3.11.7/
[root@rhel1 Python-3.11.7]# ./configure ‐‐prefix=/usr/local/python3 ‐‐enable‐optimizations
[root@rhel1 Python-3.11.7]# make
[root@rhel1 Python-3.11.7]# make install

(7)删除原先的Python3和pip3。

[root@rhel1 ~]# rm -rf /usr/bin/python3
[root@rhel1 ~]# ln -s /usr/local/python3/bin/python3 /usr/bin/python3
[root@rhel1 ~]# rm -rf /usr/bin/pip3
[root@rhel1 ~]# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

(8)安装ansible。

[root@rhel1 ~]# rpm -ivh ansible-2.9.11-1.el8ae.noarch.rpm
 
警告:ansible-2.9.11-1.el8ae.noarch.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
错误:依赖检测失败:
	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 需要

(9)需要解决依赖包问题。

[root@rhel1 ~]# yum -y install python3-cryptography               本地yum源安装
[root@rhel1 ~]# yum -y install python3-jinja2                     本地yum源安装
[root@rhel1 ~]# rpm -ivh sshpass-1.06-3.el8ae.x86_64.rpm          软件包安装

(10)再次安装ansible。

[root@rhel1 ~]# rpm -ivh ansible-2.9.11-1.el8ae.noarch.rpm

(11)使用命令检查ansible的安装结果。

[root@rhel1 ~]# ansible --version
[root@rhel1 ~]# pip3 --version

(12)确保ansible主机能够解析所有的被管理机器,这里通过配置/etc/hosts 来实现。

[root@rhel1 ~]# vim /etc/hosts                在下面添加IP地址和主机名

192.168.112.70  rhel8  server1
192.168.112.71  rhel8  server2
192.168.112.72  rhel8  server3

(13)在server2和 server3两台机器创建bdqn用户,然后配置好sudo,命令如下。

[root@rhel8 ~]# useradd bdqn                    创建bdqn用户
[root@rhel8 ~]# passwd bdqn                     设置密码
[root@rhel8 ~]# vim /etc/sudoers.d/bdqn         

bdqn ALL=(root) NOPASSWD: ALL

(14)配置免密登录,在server主机上生成密钥。

[bdqn@rhel1 ~]$ ssh-keygen -f ~/.ssh/id_rsa -N ""          生成密钥
[bdqn@rhel1 ~]$ ssh-copy-id bdqn@192.168.112.71            把密钥发给71主机
[bdqn@rhel1 ~]$ ssh-copy-id bdqn@192.168.112.72            把密钥发给71主机
[bdqn@rhel1 ~]$ ssh server2                                登录测试

三、编写ansible.cfg和清单文件

  • 执行ansible或ansible-playbook命令时,优先使用当前目录中ansible.cfg的配置。如果当前目录中没有,则使用默认的/etc/ansible.cfg中的配置。

(1)下面的操作都是server上的blab用户操作的,先在家目录下创建ansible.cfg。

[bdqn@rhel1 ~]$ vim ansible.cfg                添加一下内容

[defaults]
inventory = ./hosts

[privilege_escalation]
become=True
become_method=sudo
become_user=root
  • 这里在[defaults]字段下只添加了一句inventory = ./hosts,表示把当前目录下名称为hosts的文件当作清单文件
  • become=True:登录到被管理主机时要切换到其他用户。
  • become_method=sudo:以 sudo的方式切换。
  • become_user=root:切换到root用户。

(2)所有的被管理机器都要写入清单文件中。了解清单的写法。

[bdqn@rhel1 ~]$ vim hosts
server2
server3
server[10:15]

[db1]
server2
server3

[db2]
server6
server7

[db3:children]
db1
db2
  • server[10:15]:表示server10到server15。
  • 这里定义了两个主机组db1和db2,db1组中包括的主机有server2到server3,db2组中包括的主机有server6和 server7。
  • 这里定义了一个主机组db3,但是后面加了“:children",则这个主机组下面的db1和db2就不再表示主机了,而是表示主机组。

(3)下面查看每个主机组中有多少主机。

[bdqn@rhel1 ~]$ ansible db1 --list-hosts            查看组db1
  hosts (2):
    server2
    server3
[bdqn@rhel1 ~]$ ansible db2 --list-hosts            查看组db2
  hosts (2):
    server6
    server7
[bdqn@rhel1 ~]$ ansible db3 --list-hosts            查看组db3
  hosts (4):
    server2
    server3
    server6
    server7

(4)了解了清单文件的写法之后,最终把清单文件写成如下内容。

[bdqn@rhel1 ~]$ vim hosts
server2
server3

[db]
server1
server2

四、ansible的基本用法

(1)ansible的基本格式如下。

ansible 主机名 -m 模块x -a "模块的参数"

(2)在server2上执行hostname命令。

[bdqn@rhel1 ~]$ ansible server2 -m shell -a "hostname"
server2 | CHANGED | rc=0 >>
rhel8
  • shell模块用于执行操作系统命令,执行的命令就作为shell模块的参数,这里在-a中写要执行的系统命令。所以,上面的命令就是在server2上执行hostname命令,显示的结果是server2.rhce.cc。
(3)查看所有的模块。
[root@rhel1 ~]# ansible-doc -l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值