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
相关推荐
为思念酝酿的痛1 小时前
POSIX信号量
linux·运维·服务器·后端
专业白嫖怪1 小时前
什么是docker
运维·docker·容器
weixin_468466851 小时前
工业相机成像原理新手入门指南
人工智能·自动化·机器视觉·工业相机·光学·光学系统·成像原理
U盘失踪了2 小时前
claude code 用 Playwright + “webapp-testing” 技能包,编写前端自动化
自动化
人还是要有梦想的2 小时前
linux下用搜狗输入法,中英文切换
linux·运维·服务器
北京智和信通2 小时前
某部队IT基础设施及机房动环统一运维建设实例
运维·网管平台·网管软件·网络管理系统·网络运维平台·网络运维系统
乐维_lwops2 小时前
从 “救火运维” 到 “自动驾驶”:运维智能体到底解决了什么?
运维·人工智能·运维智能体
bush42 小时前
嵌入式linux学习记录二
linux·运维·学习
weixin_468466853 小时前
MoneyPrinterTurbo 短视频自动化生产实战指南
运维·人工智能·自动化·大模型·音视频·moneyprinter
難釋懷3 小时前
Nginx自签名-图形化工具 XCA
运维·nginx