ansible的部署

ansible的部署

  • 1 ansible的安装
    • 1.1 实验环境
    • 1.2 epel镜像的下载
      • 1.2.1 rhrl8的配置
      • 1.2.2 rhel7的配置
    • 1.3 ansible的下载
    • 1.4 ansible的基本信息
  • 2 构建ansible的清单
    • SSH分发
  • ansible配置文件参数详解
    • 1 配置文件的分类及优先级
    • 2 常用的配置参数

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。

控制节点(Control node):指安装了Ansible的主机,也叫Ansible服务器端,管理机。 Ansible控制节点主要用于发布运行任务,执行控制命令。Ansible的程序都安装在控制节点上,控制节点需要安装Python和Ansible所需的各种依赖库。注意:目前Ansible还不能安装在Windows下。

受控节点(Managed nodes):也叫客户机,就是想用Ansible执行任务的客户服务器。

1 ansible的安装

1.1 实验环境

部署ansible的主机可以上网,真机充当路由器

  • 编辑dns解析文件 /etc/resolv.conf ,加入权威dns:114.114.114

在这里插入图片描述

  • 在虚拟机中添加真机的网关:ip route add default via 172.25.254.44

ansible的部署_第1张图片

1.2 epel镜像的下载

进入阿里云——>开发者——>镜像站——>epel源
ansible的部署_第2张图片

ansible的部署_第3张图片

1.2.1 rhrl8的配置

进入epel后根据相应的版本进行配置(我的虚拟机是rhel8的版本)

ansible的部署_第4张图片

##安装 epel 配置包
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
##将 repo 配置中的地址替换为阿里云镜像站地址
sed -i 's|^#baseurl=https://download.fedoraproject.org/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*

ansible的部署_第5张图片
在这里插入图片描述

1.2.2 rhel7的配置

	wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
	wget -O /etc/yum.repos.d/epel.repo h
	wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-5.repottp://mirrors.aliyun.com/repo/epel-6.repo

ansible的部署_第6张图片
ansible的部署_第7张图片
ansible的部署_第8张图片
在这里插入图片描述

  • 编写软件仓库:vim rhel7.6.repo
[Aliyun]
name=Aliyun
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
gpgcheck=0
enable=1

在这里插入图片描述
ansible的部署_第9张图片

1.3 ansible的下载

ansible的部署_第10张图片

1.4 ansible的基本信息

ansible的部署_第11张图片
ansible的配置文件

默认配置文件	    /etc/ansible/ansible.cfg
默认清单配置文件	/etc/ansible/hosts

2 构建ansible的清单

清单就是ansible控制主机的列表
/etc/ansible/hosts
2 直接受控主机的域名或ip

/etc/ansible/hosts
在这里插入图片描述
列出ansible的所有清单:ansible all --list-host
在这里插入图片描述
2设定受管主机的组【组名称】

在这里插入图片描述
ansible的部署_第12张图片
(3)主机规格的范围化操作

在这里插入图片描述

在这里插入图片描述

默认清单配置文件位于/etc/ansible/hosts中,但是通过ansible.cfg配置文件中修改此位置。也
可以通过-i指定读取hosts清单的文件路径

ansible命令指定清单的正则表达式

符号 含义
* 所有
:& 逻辑与
:! 逻辑或
以关键字开头

ansible的部署_第13张图片

在这里插入图片描述

SSH分发

部署三台客户机:nod1,nod2,nod3
一台管理机:ansible

(1)使用交互式密码批量检测主机时必须指定登陆的密码,否则无法成功执行主机的检测

 ansible all -m ping -u root 
         ## all 清单中的所有客户机
         ## -m 指定模块
         ## -u 指定用户

ansible的部署_第14张图片

 ansible all -m ping -u root -k
         ## all 清单中的所有客户机
         ## -m 指定模块
         ## -u 指定用户
         ## -k 使用交互式密码

ansible的部署_第15张图片
(2)key 方式认证

每次交亏输入密码比较麻烦,使用 key 方式认证,是一个不错的选择
在管理机(ansible用户)生成SSH密钥,然后将SSH公钥发送到到所有客户机,第一次需要输入客户机的密码,以后就可以直接用证书登陆
在部署之前需要保证管理主机和受控主机能够基于ssh密钥的方式进行远程连接管理主机生成SSH密钥(私钥和公钥),分发公钥到每台受控主机:

ssh-keygen ##生成SSH密钥
cd /root/.ssh/
for i in 1 2 3; do  ssh-copy-id -i id_rsa.pub  [email protected].$i; done
ansible all -m ping -u root  ##将SSH公钥发送到到客户机1,2,3

ansible的部署_第16张图片

ansible的部署_第17张图片

ansible配置文件参数详解

格式
ansible 清单中组名称 -m 模块 -u remote_user

1 配置文件的分类及优先级

  • /etc/ansible/ansible.cfg :基本配置文件,找不到其他配置文件此文件生效
  • ~/.ansible.cfg:用户当前目录中没有ansible.cfg,此文件生效
  • ./ansible.cfg:优先级最高

2 常用的配置参数

	inventory     ##指定清单路径
	remote_user     ##是ansible使用/usr/bin/ansible-playbook连接的默认用户名. 注意如果不指定,/usr/bin/ansible默认使用当前用户名称
	local_tmp  =  ##本机临时命令执行目录
	remote_tmp =  ##远程主机临时py文件存放的目录
	ask_pass=    ##是否提示输入SSH密码,如果公钥登陆设定为false
	library =  ##库文件存放目录
	forks     = 5 ##默认并发数量
	sudo_user  =  ##默认sudo用户
	ask_sudo_pass =    ##每次受控主机执行ansible命令时是否询问sudo密码
	model_name =  ##默认模块,默认使用command,可以修改为shell
	log_path = ##日志文件存放路径
	
	privilege_escalation]  ##身份信息设定
	#become=True   ##连接后是否自动切换用户
	#become_method=sudo  ##设定切换用户的方式,通常用sudo
	#become_user=root  ##在受控主机中切换到的用户,通常为root
	#become_ask_pass=False ##是否需要为become_method提示输入木马,默认为false

(1)指定清单路径
在这里插入图片描述
在这里插入图片描述
(2)ansible 命令执行时本机的命令执行目录和远程主机的py文件存放目录

ansible的部署_第18张图片

ansible 命令执行过程

	加载自己的配置文件,默认/etc/ansible/ansible.cfg;
	查找对应的主机配置文件,找到要执行的主机或者组;
	加载自己对应的模块文件,如 command;
	通过ansible将模块或命令生成对应的临时py文件(python脚本), 并将该文件传输至远程服务器;
	对应执行用户的家目录的.ansible/tmp/XXX/XXX.PY文件;
	给文件 +x 执行权限;
	执行并返回结果;
	删除临时py文件,退出

ansible的部署_第19张图片
ansible的部署_第20张图片

是否提示输入SSH密码,如果公钥登陆设定为false

在这里插入图片描述

#在受管主机上登陆的用户名称

在这里插入图片描述

在这里插入图片描述

file1的所有者是root用户
在这里插入图片描述

你可能感兴趣的:(ansible)