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
相关推荐
亚空间仓鼠2 小时前
Ansible之Playbook(六):实例部署实战
linux·网络·ansible
雨墨✘2 小时前
SAP硬件选择详解:服务器、存储与网络的全面解析
运维·服务器·网络
终端行者2 小时前
Jenkins 流水线 Pipeline 声明式语法基础 入门----上
运维·jenkins
七七powerful2 小时前
Nginx 日志切割完全指南:从原理到生产实战
运维·nginx
黑蛋同志2 小时前
KVM虚拟化热迁移
运维·虚拟化·kvm
爱学习的小囧2 小时前
ESXi CPU 使用率高怎么排查?esxtop 一键定位占用高的虚拟机与进程
java·linux·运维·服务器·网络·虚拟化
Fanfanaas2 小时前
Linux 进程篇 (四)
linux·运维·服务器·开发语言·c++·学习
终端行者2 小时前
Jenkins流水线Pipeline声明式语法基础入门----下
运维·jenkins·cicd