🐇明明跟你说过:个人主页
🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅
🔖行路有良友,便是天堂🔖
目录
一、引言
1、Centos 7.9简介
2、Ansible简介
二、安装Ansible
1、服务器准备
2、添加yun源
3、安装Ansible
三、配置Ansible
1、配置Ansible主机清单
2、配置 SSH 免密登录
3、配置 Ansible 配置文件(可选)
4、测试 Ansible 配置
5、使用 Ansible 执行任务
四、常用命令
1、ansible — 执行单条命令
2、ansible-playbook — 执行剧本
3、ansible-galaxy — 管理 Ansible 角色
4、ansible-inventory — 查看库存文件
5、ansible-vault — 加密敏感数据
6、ansible-doc — 查看模块文档
一、引言
1、Centos 7.9简介
CentOS 7.9 是基于 Red Hat Enterprise Linux (RHEL) 7.9 源代码构建的稳定、可靠的企业级 Linux 发行版,提供了最新的安全更新和性能改进,适用于服务器和桌面环境。它支持广泛的硬件平台,并集成了多种网络服务和虚拟化技术,如 KVM 和 Docker,适合用于部署 Web 服务器、数据库和其他企业应用。通过 yum 包管理器和 systemd 系统和服务管理器,CentOS 7.9 提供了简便的软件包管理和系统配置体验,是构建和管理稳定 IT 基础设施的理想选择。
2、Ansible简介
Ansible 是一个简单而强大的自动化工具,用于配置管理、应用部署和任务编排,它通过 SSH 连接远程主机,默认使用基于 YAML 的易读 playbook 来定义自动化任务,无需在客户端安装额外的代理软件,支持广泛的模块和插件以扩展功能,适用于大规模 IT 基础设施的自动化操作。
二、安装Ansible
1、服务器准备
这里准备了三台服务器,一台作为control节点,两台作为node节点
2、添加yun源
在三台机器上分别执行
wget -O /etc/yum.repos.d/CentOs-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
3、安装Ansible
只在control节点执行
[root@control ~]# sudo yum install -y ansible
版本检查
[root@control ~]# ansible --version
三、配置Ansible
1、配置Ansible主机清单
Ansible 需要配置目标主机的清单,默认情况下,Ansible 会使用 /etc/ansible/hosts 作为清单文件。
编辑该文件,定义被管理的节点(目标主机)。
[root@control ~]# vim /etc/ansible/hosts
在该文件中,添加类似以下内容来配置目标主机(你可以根据实际情况修改主机名或 IP 地址):
[test]
192.168.40.101
192.168.40.102
- [test] 是主机组的名称,可以根据实际需要进行命名。
- 在每个组下,列出被管理的主机或 IP 地址。
2、配置 SSH 免密登录
Ansible 与目标主机通过 SSH 协议进行通信。为了避免每次操作时输入密码,通常配置 SSH 免密登录。
在控制节点上,使用 ssh-keygen 生成 SSH 公私钥对:
一路回车即可
[root@control ~]# ssh-keygen -t rsa -b 2048
然后,将生成的公钥复制到目标主机:
[root@control ~]# ssh-copy-id root@192.168.40.101
[root@control ~]# ssh-copy-id root@192.168.40.102
完成后,测试免密登录是否成功:
[root@control ~]# ssh 192.168.40.101
[root@control ~]# ssh 192.168.40.102
如果能够成功登录并无需输入密码,则 SSH 免密登录配置成功。
3、配置 Ansible 配置文件(可选)
Ansible 的配置文件 /etc/ansible/ansible.cfg 是可选的,可以根据需要进行定制化配置。常见的配置项包括:
- inventory:指定清单文件的路径。
- remote_user:指定默认的远程用户。
- become:是否启用 sudo 提权。
例如,编辑配置文件来设置默认的远程用户:
[root@control ~]# vim /etc/ansible/ansible.cfg
添加如下内容
[defaults]
inventory = /etc/ansible/hosts
remote_user = root
become = yes
become_method = sudo
4、测试 Ansible 配置
安装和配置完成后,可以运行一个简单的命令来测试 Ansible 是否能够正确与目标主机通信。
运行 ping 模块,检查目标主机的连接:
[root@control ~]# ansible all -m ping
如果一切配置正确,应该返回类似以下的输出:
5、使用 Ansible 执行任务
使用 Ansible 可以执行简单的命令,比如在所有目标主机上查看系统时间:
[root@control ~]# ansible all -m command -a "date"
四、常用命令
1、ansible — 执行单条命令
用于在单个主机或一组主机上执行简单的命令或任务。
ansible <host-pattern> -m <module> -a "<module-args>"
- <host-pattern>:目标主机或主机组。
- -m <module>:指定 Ansible 模块(如 ping、shell、copy 等)。
- -a "<module-args>":传递给模块的参数。
示例:
Ping 主机:
ansible all -m ping
- 该命令会在所有目标主机上执行 ping 测试,确保它们可以正常访问。
执行命令:
ansible web_servers -m shell -a "uptime"
- 在 web_servers 主机组上的所有主机执行 uptime 命令。
2、ansible-playbook — 执行剧本
用于执行定义好的 剧本(Playbook),剧本是由一组任务组成的 YAML 文件。
ansible-playbook <playbook.yml>
- <playbook.yml>:指定要执行的 Playbook 文件。
示例:
执行 Playbook:
ansible-playbook site.yml
- 这会执行 site.yml 文件中定义的所有任务。
指定变量文件:
ansible-playbook -i inventory.ini site.yml --extra-vars "@vars.json"
3、ansible-galaxy — 管理 Ansible 角色
用于管理 Ansible 角色和集合。可以用来从 Ansible Galaxy 下载角色、创建新角色等。
ansible-galaxy <command> <role-name>
常用子命令:
安装角色:
ansible-galaxy install <role-name>
创建角色:
ansible-galaxy init <role-name>
4、ansible-inventory — 查看库存文件
用于查看 Ansible 的库存文件(即目标主机列表),或动态生成目标主机清单。
ansible-inventory --list
查看 JSON 格式的库存:
ansible-inventory -i inventory.ini --list
查看主机组列表:
ansible-inventory -i inventory.ini --host <hostname>
5、ansible-vault — 加密敏感数据
用于加密、解密文件或变量,常用于保护敏感信息(如密码、密钥等)。
ansible-vault <command> <file>
常用子命令:
- 创建加密文件:
ansible-vault create <file>
- 编辑加密文件:
ansible-vault edit <file>
- 加密现有文件:
ansible-vault encrypt <file>
- 解密文件:
ansible-vault decrypt <file>
- 查看加密文件内容:
ansible-vault view <file>
6、ansible-doc — 查看模块文档
用于查看 Ansible 模块的文档,获取模块的使用说明和参数。
ansible-doc <module-name>
示例:
- 查看 copy 模块的文档:
ansible-doc copy
💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于Linux的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺
🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!