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
相关推荐
生活爱好者!7 分钟前
哇!影视新玩法!docker部署NEOWATCH NAS
运维·docker·容器
一技安身34 分钟前
【信创】银河麒麟V10、统信UOS解压7Z文件
linux·运维·服务器
迷途呀1 小时前
CI/CD 自动化部署实践:让代码提交后自动上线
linux·运维·nginx·ci/cd·自动化
闲云自留地2 小时前
动手玩 Nova:Hypervisor、主机聚合、可用分区、虚拟机生命周期实操
运维·架构·openstack
binqian2 小时前
【linux】OpenSSH升级文档
linux·运维·网络
吴声子夜歌2 小时前
Shell编程——if条件语句
linux·运维·shell
和裕2 小时前
蜂窝板 vs 七层瓦楞重型纸箱:大件工业设备运输性能与成本全对比
大数据·运维·网络·人工智能·算法
Dawn-bit3 小时前
Linux 运维基础扩展:跳板机、堡垒机与物理服务器全流程
linux·运维·服务器·云计算·运维开发
xhbh6663 小时前
主流系统备份软件横向评测:从大型集群到终端备份选型
自动化·数据备份·文件备份·系统备份·同步备份·备份软件
新时代牛马3 小时前
Linux 定时任务:crontab、anacron 与systemd timer
linux·运维·服务器