Linux企业级——Ansible安装、配置及使用

116 篇文章 0 订阅
114 篇文章 0 订阅

Linux企业级——Ansible安装、配置及使用

1.实验环境:

虚拟机名称ip版本角色
server1172.25.1.17.5ansible主机
server2172.25.1.27.5远程主机hosts
server3172.25.1.37.5远程主机hosts
注:三台虚拟机均需连接网络

2.安装ansible

2.1 配置epel的yum源:
vim /etc/yum.repos.d/epel.repo		#编辑epel的yum源
[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
gpgcheck=0

在这里插入图片描述

yum clean all
yum repolist				#重新加载yum源
2.2 安装ansible
yum install ansible -y		#安装

在这里插入图片描述

注:ansible查找配置文件的顺序为

1)ANSIBLE_CONFIG:首先,Ansible命令会检查环境变量,及这个环境变量将指向的配置文件

2)./ansible.cfg:其次,将会检查当前目录下的ansible.cfg配置文件

3)~/.ansible.cfg:再次,将会检查当前用户home目录下的.ansible.cfg配置文件

4)/etc/ansible/ansible.cfg:最后,将会检查在用软件包管理工具安装Ansible时自动产生的配置文件

2.3 定义Inventory(主机列表)

在/etc/ansible/hosts中写入被管控主机

vim /etc/ansible/hosts  #编辑主机列表文件
[test]  		#定义组test,将server2和server3添加到组中
172.25.66.2
172.25.66.3

在这里插入图片描述

2.4 调用ping模块来检测网络是否可达
ansible test -m ping -k		 #-m是指定调用的模块,-k是指使用密码登陆,命令行会提示输入SSH密码
注:在此之前一定要使用ssh命令登陆远程主机

在这里插入图片描述

3.分发任务

3.1 创建普通用户

Linux机器都禁止使用root远程登陆,更安全的做法是用普通用户登陆,分发任务。

在三台虚拟机上均添加普通用户devops,并设置密码:
useradd devops
echo westos | passwd --stdin devops

在这里插入图片描述

3.2 设置devops用户的权限
在三台虚拟机上均执行:
visudo			#进入权限设置界面
devops   ALL=(ALL)     NOPASSWD: ALL			#添加devops用户权限

在这里插入图片描述

3.3 主机免密
在server1:
su - devops			#切换至devops用户
ssh-keygen  		#生成密钥 
ssh-copy-id 172.25.66.1  	#给server1发放密钥
ssh-copy-id 172.25.66.2  	#给server2发放密钥
ssh-copy-id 172.25.66.3		#给server3发放密钥

在这里插入图片描述
在这里插入图片描述

注:三台虚拟机中均要有解析
ssh 172.25.66.1			#尝试连接server1
ssh 172.25.66.2			#尝试连接server2
ssh 172.25.66.3			#尝试连接server3

在这里插入图片描述

3.4 建立ansible目录
mkdir ansible		#创建ansible目录
cd ansible/			#进入ansible目录
vim ansible.cfg		#编辑配置文件
[defaults]
inventory = ./hosts 	 #inventory文件路径
vim hosts			#编辑hosts文件
[test]			#定义组test
172.25.66.2		#定义组变量

[db]			#定义组db
172.25.66.3		#定义组变量

在这里插入图片描述

3.5 检测文件配置是否成功:
ansible test -m ping		#对test组内主机调用ping模块
ansible db -m ping			#对db组内主机调用ping模块
ansible all -m ping			#对所有组内主机调用ping模块
ansible '*' -m ping			#对所有组内主机调用ping模块

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.6 -b和-u参数
ansible test -m copy -a "src=test.sh dest=/mnt/test.sh" -b		#使用root(默认用户)拷贝文件
注:不使用-b进行模块copy时,会因权限问题报错,文件复制不过去,使用-b,文件传输到hosts主机上时切换身份,调用sudo,执行其权限。

在这里插入图片描述

在这里插入图片描述

ansible test -m copy -a “src=test.sh dest=/mnt/test.sh” -u devops -b		#使用指定用户(devops)拷贝文件
注:-u 指定ssh连接的用户名,连接到hosts主机后,身份为指定用户,指定用户必须存在。
3.7 修改配置文件
以上过程可以经过ansible.cfg配置文件进行统一处理:
remote_user=devops      #在远程主机上以devops用户身份执行任务
become: True              #是否允许身份切换
become_method=sudo   		#切换用户身份的方式,有sudo、su、pbrun等方式,默认为sudo,被控主机为centos的话需要设置become_method为su
become_user=root          #切换成什么用户身份,默认为root。设置为root账户,等于以普通账户登入到远程主机时,再使用su - root切换为root账户。
ansible_become_pass=False 	#使用root账户,则这里要写的就是root账户的密码,此处设置为Flase因为已经做过免密登陆

在这里插入图片描述

此时再次测试就无需使用用户和密码登陆了:
ansible test -m copy -a “src=test.sh dest=/mnt/test.sh”			#直接拷贝
附:ansible参数及其功能
-m	要执行的模块,默认为command
-a	指定模块的参数
-u	ssh连接的用户名,默认用root,ansible.cfg中可以配置
-b,–become	变成那个用户身份,不提示密码
-k	提示输入ssh登录密码,当使用密码验证的时候用
-s	sudo运行
-U	sudo到哪个用户,默认为root
-K	提示输入sudo密码,当不是NOPASSWD模式时使用
-C	只是测试一下会改变什么内容,不会真正去执行
-c	连接类型(default=smart)
-f	fork多少进程并发处理,默认为5个
-i	指定hosts文件路径,默认default=/etc/ansible/hosts
-I	指定pattern,对已匹配的主机中再过滤一次
-list-host	只打印有哪些主机会执行这个命令,不会实际执行
-M	要执行的模块路径,默认为/usr/share/ansible
-o	压缩输出,摘要输出
–private-key	私钥路径
-T	ssh连接超时时间,默认是10秒
-t	日志输出到该目录,日志文件名以主机命名
-v	显示详细日志

使用
-C 只是测试一下会改变什么内容,不会真正去执行
-c 连接类型(default=smart)
-f fork多少进程并发处理,默认为5个
-i 指定hosts文件路径,默认default=/etc/ansible/hosts
-I 指定pattern,对已匹配的主机中再过滤一次
-list-host 只打印有哪些主机会执行这个命令,不会实际执行
-M 要执行的模块路径,默认为/usr/share/ansible
-o 压缩输出,摘要输出
–private-key 私钥路径
-T ssh连接超时时间,默认是10秒
-t 日志输出到该目录,日志文件名以主机命名
-v 显示详细日志


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值