侧边栏壁纸
  • 累计撰写 73 篇文章
  • 累计创建 23 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

【Ansible】Ansible简介及基本语法

Administrator
2025-06-26 / 0 评论 / 0 点赞 / 23 阅读 / 8821 字 / 正在检测是否收录...

一、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执行过程

  1. 用户发出Ansible命令(Ad-HocPlaybook

  2. Ansible主程序加载自己的配置文件/etc/ansible/ansible.cfg

  3. 读取主机清单中的设备IP或域名及变量

  4. 调用Ansible命令中指定的模块,通过Ansible将模块参数生成对应的临时python脚本,传输至目标服务器

  5. 对应目标主机的执行用户的家目录中出现.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:指定目标主机或主机组(如:allwebservers192.168.1.*

  • 模块(-m):指定要使用的Ansible模块

  • 模块参数(-a):传递给模块的参数

常用选项列表

选项

全称

作用

示例

-i <路径>

- -inventory

指定自定义 Inventory 文件

-i /etc/ansible/my_hosts.ini

-m <模块名>

- -module-name

指定要使用的模块(如 command, shell, copy 等

-m shell

-a "<参数>"

- -args

传递给模块的参数

-a "ls -l /tmp"

-u <用户名>

- -user

指定 SSH 连接用户

-u root

-k

- -ask-pass

提示输入 SSH 密码(默认密钥认证失败时使用)

-k

-b

- -become

使用特权升级(如 sudo)

-b

-K

- -ask-become-pass

提示输入特权密码(如 sudo 密码)

-K

- -become-user=<用户>

-

指定特权升级的目标用户(需配合 -b)

- -become-user=postgres

-v / -vv / -vvv

--verbose

输出详细日志(-vvv 最详细)

-vv

- -list-hosts

-

仅列出匹配的主机,不执行命令

- -list-hosts

类比

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

0
博主关闭了所有页面的评论