一:ssh无密码登陆
1.安装sshpass包
yum install sshpass
2.## 配置文件/etc/ansible/ansible.cfg
[defaults]
inventory = /etc/ansible/hosts #主机清单读取文件
forks = 5 #允许并发数,即可同时执行5个任务
default_sudo_user = root #用户
remote_port = 22 #端口号
host_key_checking = False #主机检查
timeout = 20 #超时
log_path = /var/log/ansible.log #日志路径
vi /etc/ansible/ansible.cfg
1.生成一对密钥
#ssh-keygen -t rsa 在执行的过程中,对询问直接按回车
命令执行完毕,会在/root/.ssh下生成一对密钥,其中id_rsa为私钥,id_rsa.pub为公钥,公钥需要下发到远程主机用户的.ssd目录
ssh-keygen -t rsa
注意他也会让你输入两次密码
2.将公钥下发到远程主机
#ssh-copy-id root@192.168.126.13
ssh-copy-id root@192.168.126.132
注意这一步也会让你输入密码
3.保管私钥
ssh-agent bash
ssh-add /root/.ssh/id_rsa
4.完成配置后,用ping模块对节点进行ping操作,测试节点与管理机是否连通
ansible 192.168.126.130 -m ping
如果出现如下这个问题
注:192.168.126.131失败,是因为我没有创建这个IP地址的虚拟机
二:ad-hoc
Ad-hoc简而言之,就是“临时命令”
Ansible中有两种模式,分别是ad-hoc模式和playboook模式
使用场景:1.在多台机器上,查看某个进程是否启动
2.在多台机器上,拷贝指定日志文件到本地
Ad-hoc模式的命令使用格式:ansible [options]
1.Host-pattern:匹配主机名或者主机组名
例如:ansible 192.168.1.* -a ‘ls /tmp’ ansible group1 -a ‘ls /tmp’ ansible test1 -a ‘ls /tmp’
注意这里是填写主机二的IP地址
ansible 192.168.126.132 -a "ls /tmp"
这里报错了
利用
ls
查看文件列表
在进入hosts文件
然后再进入tmp文件
cd tmp
2.options:包括执行的模块和执行命令参数
#ansible 192.168.126.132 -a ‘ls /tmp’ -vvv #一个v显示详细执行过程信息,三个v可得到所有执行过程
ansible 192.168.126.132 -a 'ls /tmp' -vvv
3.ad-hoc模式常用模块
-l 展示出ad-hoc模式下所支持的模块名称以及作用
/usr/bin/ansible-doc -l
ansible 192.168.126.132 -m fetch -a "src=/etc/fstab dest=/testdir/ansible/"
4.假如我们想要将192.168.126.132组中所有主机的/etc/fstab文件拉取到本地,则可以使用如下命令
如上述命令所示,-m选项用于调用指定的模块,”-m fetch”表示调用fetch模块,-a选项用于传递模块所需要使用的参数, -a “src=/etc/fstab dest=/testdir/ansible/”表示我们在使用fetch模块时,为fetch模块传入了两个参数,src与dest。
发现输出为黄色,为什么呢?
再输入一次这个命令
ansible 192.168.126.132 -m fetch -a "src=/etc/fstab dest=/testdir/ansible/"
怎么又变绿了呢?
当返回信息为绿色时,”changed”为false,表示ansible没有进行任何操作,没有”改变什么”。
当返回信息为黄色时,”changed”为true,表示ansible执行了操作,”当前状态”已经被ansible改变成了”目标状态”。
5.setup模块
用于获取节点的详细信息,包括硬件和软件信息,如主机IP、环境变量等
ansible 192.168.126.132 -m setup
6.copy模块
该模块可以实现从管理机向节点复制静态文件,并且设置合理的文件权限
参数:dest:文件复制的目的地
Src:复制的源文件
Backup:是否备份源文件
Validate:复制前是否检验需要复制目的地的路径
例:将/etc/hosts文件复制到所有节点的/root目录下
ansible all -m copy -a 'dest=/root src=/etc/hosts'
登陆到132看一下是否成功
很明显是成功了
7.yum模块
该模块能够从指定的服务器自动下载安装RPM包,并且可以自动处理依赖性关系
参数:config_file:yum配置文件
Disable_gpg_check:是否开启GPG检查
Disablerepo:禁用仓库
Name:包名
State:选项:present:安装 latest:更新 absent:卸载
例如:使用yum模块在节点129上安装命令tree (注意这一步是在主机1上操作)
ansible 192.168.126.132 -m yum -a "name=tree state=present"
若已经安装,则为绿色
8.service模块
该模块用来管理节点上的服务,可以开启、关闭、重启等服务,如httpd、sshd、nfs、crond等服务
例如:启动firewalld服务
ansible 192.168.126.132 -m service -a "name=firewalld state=started"
恭喜完成,至此ansible配置2就已经完成了