Ansible是一种自动化工具,基于Python写的,原理什么的就不过多再说了,详情参考:https://www.itwk.cc/post/403.html
https://blog.csdn.net/qq_34185638/article/details/131079320?spm=1001.2014.3001.5502
环境准备
HOSTNAME | IP | OS |
---|---|---|
master.example.com | 10.5.5.132 | CentOS Stream 8 Mini Install |
node1.example.com | 10.5.5.133 | CentOS Stream 8 Mini Install |
node2.example.com | 10.5.5.134 | CentOS Stream 8 Mini Install |
此次实验将会用到三台主机,一台作为控制节点,两台作为被管理节点(受控主机)
配置主机名
关闭SELINUX
bash
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
配置本地域名解析(管理节点执行)
在
/etc/hosts
文件中添加被管理节点的 ip+fqdn,直接用IP也可以,但是不易于管理,使用fqdn可以使用这些名称来标识和操作主机,而不必依赖于IP地址。
bash
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.5.5.133 node1 node1.example.com
10.5.5.134 node2 node2.example.com
配置免密登录
配置免密登录,实现控制节点无需输入密码的情况下通过SSH协议连接到被管理节点。
生成RSA密钥对
bash
ssh-keygen -t rsa
将公钥复制到远程服务器
bash
ssh-copy-id [username]@server
验证
安装Ansible
在控制节点安装Ansible
安装epel源,(官方仓库没有提供ansible相关rpm包)
bash
yum -y install epel-release
安装ansible
bash
yum -y install ansible
安装完成之后执行ansible --version
判断是否正常使用。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-47p6DJr8-1691378563875)(C:\Users\22065\AppData\Roaming\Typora\typora-user-images\image-20230730225130690.png)]
配置Ansible
安装完毕之后,默认的配置文件位置在/etc/ansible
目录下,其中含有ansible.cfg
配置文件,hosts
默认主机清单,roles
角色目录,接下来需要进行修改ansible,cfg
配置文件
使用文本编辑工具打开ansible.cfg
内容如下:
意思就是说,从 Ansible 2.12 版本开始,你可以使用 ansible-config init
命令生成一个示例的配置文件。使用 --disabled
参数将生成一个包含所有默认设置的注释文件,这意味着所有设置都被禁用并以注释形式显示。你可以将输出重定向到 ansible.cfg
文件中,以便稍后进行编辑和使用,也可以在Ansible的GitHub仓库中的stable
分支中查找示例。
以上仅供了解,推荐直使用GitHub的仓库上的ansible.cfg
配置文件,因为ansible-config init
命令生成的配置文件是一个示例文件,包含了所有默认设置,并将这些设置以注释的形式展示出来,生成的配置文件并不是一个完整的、可用的配置文件,因为它将所有的设置都禁用了(通过添加注释)。这样做是为了确保在生成的配置文件中没有任何潜在的影响或冲突。
而在 GitHub 上的 Ansible 仓库中的示例配置文件是一个更完整的配置文件,它包含了一些常用的配置选项和示例值。这个示例配置文件是为了给用户提供一个起点,可以根据自己的需求进行修改和定制。
下载配置文件:
bash
cd /etc/ansible
rm -rf ansible.cfg
wget https://github.com/ansible/ansible/blob/stable-2.9/examples/ansible.cfg
如果没有wget命令的话使用yum -y install wget
安装。
编辑示例配置文件,以下是我们要配置的地方;
ini
inventory = /etc/ansible/hosts
#指定 Ansible 的主机清单文件的路径。默认情况下,Ansible 使用 /etc/ansible/hosts 文件作为主机清单,其中包含了要管理的远程主机的列表
sudo_user = root
#指定在执行远程命令时要使用的 sudo 用户设置为 root,表示使用 root 用户执行命令
ask_pass = False
#指定是否询问密码,设置为 False,表示不询问密码,因为已经做了免密登录了
roles_path = /etc/ansible/roles
#指定 Ansible 角色的路径,Ansible 角色是一种组织和重用任务和变量的机制,后面会讲到,在这个示例中,默认为 /etc/ansible/roles
remote_user = root
#指定远程主机的登录用户名,设置为 root,表示使用 root 用户登录远程主机
become = True
#指定是否启用特权升级(become),特权升级允许 Ansible 在远程主机上以不同的用户身份执行命令。在这个示例中,设置为 True,表示启用特权升级
become_method = sudo
#指定特权升级的方法。这里设置为 sudo,表示使用 sudo 命令进行特权升级
become_user = root
# 指定特权升级后要切换到的用户,设置为 root,表示特权升级后切换到 root 用户
become_ask_pass = False
#指定是否询问特权升级密码, False,表示不询问特权升级密
配置文件修改完成之后,需要创建主机清单文件,Ansible inventory 主机清单写法详解请参考:https://www.itwk.cc/post/430.html
编辑主机文件/etc/ansible/hosts
ini
[servers]
node1.example.com
node2.example.com
测试ansible是否可以与被管理节点通信
使用ping模块检查与被管理节点连通性
使用adhoc方式执行临时命令