一、Ansible介绍
Ansible
是一款基于Python
开发的开源自动化工具,主要用于配置管理、应用部署、任务自动化和持续交付。它由Red Hat
公司维护,采用无代理架构(无需在目标主机上安装客户端),通过SSH
进行通信,简化了大规模系统的管理。
使用传统的shell
命令一台台去操控服务器,固然可以完成目的。但是在目标服务器过多、配置过于繁杂的情况下使用Ansible
一定是更好的选择。
官方文档:https://docs.ansible.org.cn/ansible/latest/index.html
二、Ansible的特点
1. 无代理架构
通过避免在 IT 基础设施上安装额外软件来降低维护开销。
2. 简单性
自动化剧本使用简单的 YAML 语法,代码就像文档一样易于阅读。Ansible 也是分散式的,使用 SSH 和现有的操作系统凭据来访问远程机器。
3. 可扩展性和灵活性
通过模块化设计轻松快速地扩展您自动化的系统,该设计支持各种操作系统、云平台和网络设备。
4. 幂等性和可预测性
当系统处于您的剧本描述的状态时,即使多次运行剧本,Ansible 也不会更改任何内容。
什么是Ansible模块化?
Ansible
本身像是一个工具箱,工具箱里存放着许许多多的工具,这些工具就是Asnsible
的模块。根据不同场景,我们要选择最合适自己的工具(模块)。
三、Ansible执行过程
用户发出
Ansible
命令(Ad-Hoc
或Playbook
)Ansible
主程序加载自己的配置文件/etc/ansible/ansible.cfg
读取主机清单中的设备
IP
或域名及变量调用
Ansible
命令中指定的模块,通过Ansible
将模块参数生成对应的临时python
脚本,传输至目标服务器对应目标主机的执行用户的家目录中出现
.ansible/tmp/xxx/xxx.py
文件,给改文件赋予可执行权限。执行该脚本并返回结果
四、Ansible安装
yum install -y ansible
&&
[root@openEuler ~]# ansible --version
ansible 2.9.27
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.9/site-packages/ansible
executable location = /usr/bin/ansible
python version = 3.9.9 (main, Dec 28 2023, 13:48:32) [GCC 10.3.1]
五、基本语法
Ad-Hoc
Ad-Hoc
命令是Ansible
提供的一种快速执行简单任务的命令行工具,它允许用户在不编写完整playbook
的情况下直接执行单条命令,多用于测试及学习。
ansible <host-pattern> -m <module-name> -a "<module-arguments>" [options]
host-pattern
:指定目标主机或主机组(如:all
、webservers
、192.168.1.*
)模块(
-m
):指定要使用的Ansible
模块模块参数(
-a
):传递给模块的参数
常用选项列表
类比
ansible all -m yum -a "name=vim-enhanced state=present"
name:包的名称
state=present:表示安装(如果已安装则不做操作)
&&
yum install -y vim
ansible
命令中的-m yum
等同于shell
命令中的yum
命令ansible
命令中的-a state=present
等同于shell
命令中的install
ansible
命令中的-a name=vim-enhanced
等同于shell
命令中的vim