Ansible的安装和部署

文章目录

    • 一、环境搭建
    • 二、Ansible的作用
    • 三、安装
      • 1、方法一
      • 2、方法二
      • 3、Ansible的基本信息
    • 四、构建Ansible清单
    • 1、直接书写
      • 2、设置受控主机的指定用户
      • 3、设定受控主机的组
        • (1)、清单查看
        • (2)、单层清单
        • (3)、嵌套清单
        • (4)、主机规格的范围化操作
        • (5)、指定其他清单文件
    • 五、Ansible配置文件参数详解
      • 1.配置文件的分类与优先级
      • 2.常用配置参数
    • 六、构建用户级Ansible操作环境

一、环境搭建

两台可以通信的主机ansible和node1,都具有完整的软件仓库。

主控机	ansible	172.25.254.107
受控机	node1	172.25.254.207

二、Ansible的作用

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

三、安装

1、方法一

epel源
在浏览器中搜索epel for linux,下载安装包到本地,安装即可。(此方法不建议,下载速度过慢)

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm /mnt	##下载epel源
yumdoenloader ansible --destdir=/mnt --resolve		##安装ansible
dnf install sshpass-1.06-9.el8.x86_64.rpm -y		##下载依赖性
dnf install ansible-2.9.11-1.el8.noarch.rpm -y
ansible --version

2、方法二

直接下载镜像中不存在的依赖性软件。即复制两个安装包到本地某一目录中。
在这里插入图片描述
复制文件到主控机ansible下的/mnt目录中;
在这里插入图片描述查看是否下载完成;
在这里插入图片描述使用ansible --version查看ansible版本测试是否安装成功。
Ansible的安装和部署_第1张图片

3、Ansible的基本信息

信息 意义
/etc/ansible/ansible.conf 全局配置文件,默认很少修改
/etc/ansible/hosts 全局主机清单文件

在这里插入图片描述

四、构建Ansible清单

清单就是Ansible所控制的主机的列表
其中/etc/ansible/hosts即为全局清单文件

1、直接书写

直接书写受控主机名或ip,每行一个

node1.westos.com
172.25.254.207

未书写时不能列出清单内容,会显示清单内容为空的提示;
Ansible的安装和部署_第2张图片/etc/ansible/hosts清单文件的最后添加受控主机ip,保存后退出;
Ansible的安装和部署_第3张图片再次列出清单内容,显示207主机,但不能够ping通
Ansible的安装和部署_第4张图片当要控制207主机时首先会在控制主机中生成py脚本,然后远程通过sshd服务传输到被控主机中在传文件过程中需要后者的认证通过才能访问和管理(访问成功会显示与ping相对应的pong)
Ansible的安装和部署_第5张图片

2、设置受控主机的指定用户

(1)、在受控主机添加用户

注意要为新添用户设置密码,否则之后设置密匙时会报错
Ansible的安装和部署_第6张图片(2)、在控制主机建立密钥和密匙
Ansible的安装和部署_第7张图片(3)、在控制主机测试用户权限是否设置成功
Ansible的安装和部署_第8张图片直接访问207主机显示权限有问题,使用用户devops用户访问成功,说明可以使用控制主机管理以devops用户身份运行的207主机
(4)、设置受控主机用户权限和免密访问
使用devops用户完成shell模块的内容会失败,原因是当前在207主机中运行指令是以devops这个普通用户的身份来执行的,权力会很小,需要在207受控主机下方权力
Ansible的安装和部署_第9张图片权力下放并设置免密访问
Ansible的安装和部署_第10张图片完成shell模块指令
在这里插入图片描述在这里插入图片描述

序号 意义
1 指定devops在执行命令时用sudo调用
2 询问sudo密码
文件创建成功
在这里插入图片描述

3、设定受控主机的组

(1)、清单查看

ansible 清单中组名称  [-i 清单文件] --list-hosts
ansuible ungrouped --list-hosts
ansible all --list-hosts 

Ansible的安装和部署_第11张图片在这里插入图片描述
Ansible的安装和部署_第12张图片

在这里插入图片描述

(2)、单层清单

各个清单相互独立,不会有相互重叠的ip或主机名称

[list1]
node1.westos.com
node2.westos.com
[list2]
node2.westos.com
[list3]
172.25.254.240

Ansible的安装和部署_第13张图片列出指定组中的主机
Ansible的安装和部署_第14张图片Ansible的安装和部署_第15张图片

(3)、嵌套清单

一个主清单会包含另外一个或多个子清单

[westos:children]
list1
list3

Ansible的安装和部署_第16张图片Ansible的安装和部署_第17张图片

(4)、主机规格的范围化操作

通过指定主机名称IP范围可以简化Ansible主机清单

语法:
[start:end]
[westostest]
172.25.254.[100:108]


[root@ansible ansible]# ansible westostest --list-hosts
hosts (9):
172.25.254.100
172.25.254.101
172.25.254.102
172.25.254.103
172.25.254.104
172.25.254.105
172.25.254.106
172.25.254.107
172.25.254.108

Ansible的安装和部署_第18张图片Ansible的安装和部署_第19张图片

Ansible的安装和部署_第20张图片
Ansible的安装和部署_第21张图片
Ansible的安装和部署_第22张图片Ansible的安装和部署_第23张图片Ansible的安装和部署_第24张图片

(5)、指定其他清单文件

vim inventory
172.25.254.240
[westostest]
172.25.254.100
172.25.254.200

测试:
ansible all -i inventory --list-hosts
ansible westostest -i inventory --list-hosts
ansible ungrouped -i inventory --list-hosts

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

符号 意义
* 所有
: 逻辑或
:& 逻辑与
:! 逻辑非
~ 以关键字开头
~(str1 str2)
172.25.254.*
westos*

westos1:linux
172.25.254.100:172.25.254.200

westos1:&linux
主机即在westos1清单也在linux清单中:! 

westos1:!linux
在westos1中不在linux中

Ansible的安装和部署_第25张图片Ansible的安装和部署_第26张图片在这里插入图片描述在这里插入图片描述在这里插入图片描述Ansible的安装和部署_第27张图片

举例:
vim /mnt/inventory
172.25.0.250
192.25.0.250
[westos_list1]
node1.westos.com
[westos_list2]
172.25.0.2
172.25.0.1
[westos_list3]
172.25.0.1
172.25.0.3
[westos_all:children]
westos_list2
westos_list3

五、Ansible配置文件参数详解

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

1.配置文件的分类与优先级

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

2.常用配置参数

[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=			##日志文件路径

六、构建用户级Ansible操作环境

1、创建操作目录并编写文件
本操作需要先切换到107主机的普通用户
Ansible的安装和部署_第28张图片
Ansible的安装和部署_第29张图片2、复制ssh钥匙到当前用户
Ansible的安装和部署_第30张图片3、生成密钥和密匙分别为107主机和207主机
Ansible的安装和部署_第31张图片

Ansible的安装和部署_第32张图片Ansible的安装和部署_第33张图片4、测试是否安装ansible环境成功
Ansible的安装和部署_第34张图片

你可能感兴趣的:(linux,运维,ansible)