【Ansible】Ansible入门
文章目录
- 1. 安装Ansible
- 2. Ad-Hoc
- 3. Ansible 主配置文件
- 4. Ansible 主机清单(静态)
- 5. 指纹问题的解决方法
- 6. 推荐使用公钥认证(免密认证)的方式进行连接
1. 安装Ansible
[root@openEuler ~]# yum install -y ansible
...
[root@openEuler ~]# ansible --version
ansible 2.9.27config file = /etc/ansible/ansible.cfgconfigured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']ansible python module location = /usr/lib/python3.9/site-packages/ansibleexecutable location = /usr/bin/ansiblepython version = 3.9.9 (main, Dec 28 2023, 13:48:32) [GCC 10.3.1]
2. 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):传递给模块的参数
常用选项列表
选项 | 全称 | 作用 | 示例 |
---|---|---|---|
-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 |
-f <数量> | - -forks | 设置并行执行的主机数(默认 5) | -f 10 |
-l <主机模式> | - -limit | 限制执行的主机范围(支持通配符) | -l “web*” |
-v / -vv / -vvv | –verbose | 输出详细日志(-vvv 最详细) | -vv |
- -list-hosts | - | 仅列出匹配的主机,不执行命令 | - -list-hosts |
- -check | - | 模拟执行(Dry Run),不实际修改系统 | - -check |
- -diff | - | 显示文件变更的差异(常用于 copy/template 模块) | - -diff |
-e “<变量>” | - -extra-vars | 设置额外变量(支持 JSON/YAML 格式) | -e “user=admin” |
-o" | - -one-line | 简化输出为单行格式 | -o |
-B <秒数> | - -background | 后台异步执行任务(需配合 -P 轮询) | -B 3600 -P 60 |
-t <目录> | - -tree | 将输出结果保存到指定目录(按主机名分文件) | -t /tmp/ansible-logs |
类比
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
3. Ansible 主配置文件
[defaults] #通用配置项
# 默认Inventory文件路径(主机清单文件)
# inventory = /etc/ansible/hosts# 远程连接用户(默认当前用户)
# rem