文章目录
一、Ansible的安装
1.Ansible的安装
以下为epel源连接
https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm #搭建好的仓库即可进行安装
dnf install ansible -y #安装下载该软件
二、构建清单
1. 直接设定首管控的IP或是主机名
/etc/ansible/hosts #全局主机清单文件
/etc/ansible/ansible.cfg #默认配置文件(很少修改)
vim /etc/ansible/host #任意位置添加被控主机IP或是主机名
172.25.254.190
westoslinux.westos.org
ansible 172.25.254.190 -m ping -k #-k表示添加认证然后使用ssh服务时使用的密码即可的登陆受控主机
2. 设定首管控的主机组的名称
- 嵌套式清单
设定清单如下所示为
[westos:children]
westos1
westos2
[westos1]
172.25.254.190
[westos2]
172.25.254.91
ansible westos --list-hosts #查看名为westos嵌套清单
2. 单层清单
以下内容为单层清单的写法
[westos1]
172.25.254.190
ansible westos1 --list-hosts #显示名为westos1的清单
3. 主机规格范围优化
通过语法的方式指定清单中的主机名或是范围
示例如下
#[start:end] #注意此行需要注释掉才能进行生效
[westos3start] #这个清单名为westos3start
172.25.254.[90:92]
4. 指定其他清单文件
- 清单内容如下
172.25.254.1
[westos:children]
westos1
westos2
westos3
[westos1]
172.25.254.190
[westos2]
172.25.254.91
#[start:end]
[westos3]
172.25.254.[100:110]
- 查看命令如下所示
ansible ungrouped -i inventory --list-hosts #不再清单内的会直接显示出来
ansible westoslist -i inventory --list-hosts #显示指定清单内的内容
ansible all -i inventory --list-hosts #显示所有的内容
3. 正则表达式部分
* #表示匹配所有即172.25.254.下的所有ip
: #或表示两个条件满足一个就判定成立
:! #逻辑非即表示这来两个条件都不成立才可判定成功
:& #逻辑与即两个条件都满足才可成功判定
~ #表示以什么关键字开头
示例
四、配置参数文件
1. 配置参数内容解释
#[default] #基本信息设定
inventory= #指定清单路径
remote_user= #在受管主机上登陆的用户名称,未指定使用当前用户
ask_pass= #是否提示输入SSH密码,如果公钥登陆设定为false
library= #库文件存放目录
local_tmp= #本机临时命令执行目录
remote_tmp= #远程主机临时py命令文件存放目录
forks= #默认并发数量
host_key_checking= #第一次连接受管主机时是否要输入yes建立host_key
sudo_user= #默认sudo用户
ask_sudo_pass= #每次在受控主机执行ansible命令时是否询问sudo密码
module_name= #默认模块,默认使用command,可以修改为shell
log_path= #日志文件路径
[privilege_escalation] #身份信息设定
become= #连接后是否自动切换用户
become_method= #设定切换用户的方式,通常用sudo
become_user= #在受管主机中切换到的用户,通常为root
become_ask_pass= #是否需要为become_method提示输入密码,默认为false
2.配置文件的分集以及配置文件的级别
/etc/ansible/ansible.cfg #全局配置文件针对全局进行生效,一般不进行更改
~/.ansible.cfg #在该用户的家目录下进行配置没有全局配置文件时该文件生效
将sudo提权的更改为免密执行使得其可以进行免密执行全部的用户权限
%wheel ALL=(ALL) NOPASSWD: ALL
这一行会影响结果必须注释掉才能执行
Ansible实际上是将我们输入的命令转换为Pythone后发送到被控主机进行执行,执行过后在进行删除使得被控主机可以执行该命令。