ansible基础配置和ansible模块

Ansible基础

登录成功:

复制代码
# Yum源更换为国内阿里源
[root@ansi-manager ~]# yum install wget --y  //有wget,可以不执行
[root@ansi-manager ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
[root@ansi-manager ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
​
# 添加阿里的epel源
[root@ansi-manager ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
​
# yum重新建立缓存
[root@ansi-manager ~]# yum clean all
[root@ansi-manager ~]# yum makecache
复制代码
yum install -y ansible  //安装ansible,其中yum install指软件安装,后面的ansible是安装的软件名,-y如果安装过程中出现询问语句是否操作(yes/no)默认都选择yes
ansible --version //查看软件版本

配置免密登录:

复制代码
ssh-keygen -t rsa
ssh-copy-id root@192.168.79.131
ssh-copy-id root@192.168.79.132

实验环境图:

资产Inventory(被管理节点):被管理主机的清单

默认:静态INI格式的文件(/etc/ansible/hosts)

作用:可以定义主机或主机组

在Inventory(/etc/ansible/hosts)中定义主机和主机组,然后就可以通过命令来操作和管理定义好的主机或主机组。

VIM编辑器

https://www.runoob.com/linux/linux-vim.html

复制代码
192.168.79.131   #单独定义一个主机,免密登录已经配置,所以不需要ssh登录密码
192.168.79.132   #同上
192.168.79.133 ansible_ssh_pass='root' #单独定义一个主机,但是使用内置变量定义ssh登录密码
192.168.79.134 ansible_ssh_pass='root' #同上

[webservers]     #用中括号定义主机组,webservers是主机组名
192.168.79.131
192.168.79.132

[db]   
192.168.79.[135:137]   #135-137三台主机

[db:vars]      #通过变量(vars)的方式定义主机组的ssh登录密码
ansible_ssh_pass='root'

[docker:children]   #定义一个docker组,他有两个子组,分别是db和webservers
db
webservers

查看资产文件中的所有主机

查看资产的主机组的主机

资产变量

主机变量:针对单个主机

下面定义了两个主机变量user和port,这两个变量只针对192.168.79.139这台服务器有效

复制代码
vim hostvars

验证主机变量:(通过-i指定自定义的资产文件)

复制代码
ansible 192.168.79.139 -i hostvars -m debug -a "msg='{{user}} {{port}}'"

变量只针对主机192.168.79.139,对192.168.79.140主机无效

通过对组的操作。我们得到相同的结果:

组变量:针对主机组

复制代码
vim groupvars

定义一个组变量home,此变量只针对webservers这个主机组中的所有主机有效

验证:home是webservers的组变量,针对组中的所有主机有效

Ansible模块

  • ansible核心:ansible

  • 核心模块(Core Modules):ansible自带的模块。

  • 扩展模块(Custom Modules):如果核心模块不足以完成某一些功能,可以添加扩展模块。

  • 插件(Plugins):完成模块功能的补充

  • 剧本(Playbook):ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动执行

  • 连接插件(Connectior Plugins):ansible基于连接插件连接到各个主机上,虽然ansible使用ssh连接到各个主机的,但是他还不支持其他的连接方式,所以就需要有连接插件

    ansible-doc -l //显示所有的自带模块

Ansible执行命令

ad-hoc命令:

ad-hoc命令是指ansible执行一条命令,并且不会保存命令。

复制代码
ansible 192.168.79.139 -m command -a date
ansible 192.168.79.139 -m command -a pwd
ansible 192.168.79.139 -m command -a ifconfig
代表ad-hoc命令

-m 模块名: 指定要执行的模块的名称,如果不指定-m选项,默认是command模块
-a 命令:指定执行模块对应的参数选项
-k:提示输入SSH登录的密码而不是基于密钥的验证,小写
-K:用于输入执行su或者sudo操作时候需要的认证密码,大写
-b:表示提升权限操作。
--become-method:指定提升权限的方法,常用的有sudo和su,默认是sudo
--become-user:指定执行sudo或su命令时候要切换到哪一个用户下,默认是root用户
-B SECONDS:后台运行超时时间
-C:测试一下改变什么内容,不会真正去执行,主要用来测试一些可能发生的变化
-f FORKS:设置ansible并行的任务数。默认值是5
-i INVENTORY:指定主机清单文件的路径,默认为/etc/ansible/hosts
-h:查看帮助,关于ad-hoc的一些选项的详细参数

ansible命令执行格式:

复制代码
ansible 主机或组 -m 模块名 -a '模块参数'  ansible参数
  • 主机和组:在/etc/ansible/hosts 里面定义或者-i参数进行指定的部分
  • 模块名:默认使用command。
  • 模块参数:具体根据各个模块用法指定
  • ansible参数:是否输入密码,是否sudo
相关推荐
用户0328472220707 小时前
如何搭建本地yum源(上)
运维
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工3 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智3 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_3 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉3 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
dayuOK63073 天前
写作卡壳怎么办?我的“5分钟启动法”
人工智能·职场和发展·自动化·新媒体运营·媒体
AC赳赳老秦3 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw