Ansible的安装及部署

1 实验环境

  • Ansible是新出现的自动化运维工具,主要适用于一台主机同时控制多台主机,实现了批量系统配置、批量程序部署、批量运行命令等功能。需要注意的是ansible是基于模块工作的,本身没有批量部署的功能,真正具有批量部署的是ansible所运行的模块
  • ansible的实验可以使用三台主机,可使真机作为ansible服务器,也就是作为主控机。再使用两台虚拟机作为被控机,三台主机之间是可以实现网络互通的。两台受控主机不需要做环境设定。

2 Ansible的安装

  • 镜像文件是不提供ansible服务的,所以需要使用epel源安装该服务,可以使用阿里云的epel源或者官方提供的epel源。注意如果之前安装过阿里云的epel源而后删除了,那么再去重新安装时,就会出现提示安装包已经安装过,但是却仍然无法下载服务的情况,此时可以输入“rpm -qa | grep epel”命令找到epel的软件包,再输入“rpm -e 软件包”将软件包删除后再重新下载即可。

  • 输入“dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y”命令安装官方提供的epel源:
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 输入“dnf install ansible.noarch -y”命令安装ansible服务:
    在这里插入图片描述

  • 输入“ansible --version”,命令可以查看ansible版本:
    在这里插入图片描述

3 Ansible的基本信息

可以输入 “rpm -qc ansible”命令查看ansible的配置文件:
在这里插入图片描述

文件含义
/etc/ansible/ansible.cfg全局配置文件,默认情况很少修改
/etc/ansible/hosts全局清单文件

4 构建Ansible清单

清单就是ansible控制主机的列表

4.1 全局清单

编辑/etc/ansible/hosts全局清单文件,加入受控主机清单列表。可以直接书写受控主机名或ip,每行一个:
在这里插入图片描述

4.2 设定受控主机的组

可以将一些主机设定到一个组中,再查看所有列表、查看westos列表中的清单、查看linux列表中的清单:
在这里插入图片描述

4.2.1 清单查看

命令含义
ansible 清单中组名称 [-i 清单文件] - -list-hosts查看某个组列表中的清单,加上中括号的内容表示列出某个文件中的所有主机
ansible ungrouped - -list-hosts查看全局清单文件中,不属于任何组的主机
ansible all - -list-hosts查看全局清单文件中的全部主机列表

添加一个主机ip,不在任何组中,然后查看:
在这里插入图片描述

4.2.2 单层清单

注意,上面所写的组都是单层清单,也就是指不同的组之间有各自的主机列表:
在这里插入图片描述

4.2.3 嵌套清单

使用了嵌套清单后,嵌套清单里就会包含该嵌套清单中所有的单层清单里的主机。
在这里插入图片描述在这里插入图片描述

5 主机规格的范围化操作

使用上面的方式添加主机都是手动单个的添加,但实际上如果主机数量较多而且有序,此时就可以采用范围化的方法将主机写入清单中。如下图所示,其中 [1:10],表示从1号到10号主机:
在这里插入图片描述在这里插入图片描述

6 指定其他清单文件

1)在/mnt建立一个书写主机清单的文件:
在这里插入图片描述

此时查看清单,默认列的是全局清单文件中的主机清单:
在这里插入图片描述

可以输入“ansible -i /mnt/westos all --list-hosts”列出该清单文件中的所有主机:
在这里插入图片描述

2)在/mnt/westos自定义清单文件列表外加了一个主机:
在这里插入图片描述

查看清单中的主机:
在这里插入图片描述

使用“ansible -i /mnt/westos ungrouped --list-hosts”命令列出不再列表中的主机:
在这里插入图片描述

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

符号含义
*所有
:逻辑或
:&逻辑与
:!逻辑非
以关键字开头
~(str1 |str2)以条件1或条件2开头

1)查看以172.25.254开始的所有主机:
在这里插入图片描述

2)查看/mnt/westos文件中以node开始,以.westos.org结尾的所有主机:
在这里插入图片描述

3)查看/mnt/westos文件中以node开始或者名为westos.westos.org的主机:
在这里插入图片描述

4)查看/mnt/westos文件中以node开始或者以westos开始以westos.org的主机:
在这里插入图片描述

5)编辑/etc/ansible/hosts文件,将某个111主机分别年加入两个组中:
在这里插入图片描述

查看在westos组而且在linux组中的主机:
在这里插入图片描述

查看在westos组而且不在linux组中的主机:
在这里插入图片描述

6)编辑/mnt/westos文件,添加几个以westos开始的主机名:
在这里插入图片描述

查看以node关键字开头的主机:
在这里插入图片描述

查看以node或以c开头的主机,注意这里需要加单引号转译,否则会被识别为shell命令:
在这里插入图片描述

7 Ansible配置文件参数详解

  • 使用方法:ansible 清单中组名称 -m 模块 -u remote_user。模块就相当于命令
  • -k参数表示输入密码;-a参数表示shell的命令
  • ansible运行方式:将命令转化成pythom语言,然后上传到被控主机,执行完后,再删除
  • 注意:ansible控制主机时,使用的用户身份是什么 ,登陆被控主机时,默认使用的身份就是什么

7.1 配置文件的分类与优先级

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

7.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_path=默认模块,默认使用command,可以修改为shell
log_path=日志文件路径
[privilege_escalation]身份信息设定
become=连接后是否自动切换用户
become_method=设定切换用户的方式,通常sudo
become_user=在受控主机中切换到的用户,通常为root
become_ask_pass=是否需要为become_method提示输入密码,默认为false

1)编辑/etc/ansible/hosts 文件,里面是两个受控主机的ip:
在这里插入图片描述

2)输入“ansible westos --list”命令查看该组中的清单:
在这里插入图片描述

3)输入“ansible westos -m ping”,此处直接输入该命令,会红色报错,因为没有输入密码的步骤,所以是无法登陆的:
在这里插入图片描述

4)编辑/etc/ansible/ansible.cfg 主配置文件,在71行处取消注释,表示主控机登陆被控机时,不进行输入yes这个步骤:
在这里插入图片描述

5)输入“ansible westos -m ping -k”命令,-k参数表示输入密码,输入密码后可成功登陆被控主机且执行-m后面的模块。注意这里两台被控机的密码需要一致:
在这里插入图片描述

6)输入“ansible westos -m shell -a ‘hostname’ -k ”命令,-a参数表示shell要执行的命令,此时就可以把被控主机的主机名抓取出来:
在这里插入图片描述

7)输入“ansible westos -m shell -a ‘useradd test’ -k”命令,表示建立用户:
在这里插入图片描述

在被控主机上查看,用户建立成功:
在这里插入图片描述在这里插入图片描述

8)输入“ansible westos -m shell -a ‘userdel test’ -k”命令,表示删除用户:
在这里插入图片描述

9)编辑/etc/ansible/ansible.cfg主配置文件,内容为inventory = /etc/ansible/hosts,/mnt/westos ,表示在指定清单路径处,再加一个路径:
在这里插入图片描述

此时使用“ansible all --list-hosts”命令产看清单,就不止去默认路径找,也会去指定的新路径下找:
在这里插入图片描述

10)切换到普通用户,执行“ansible westos -m shell -a “whoami” -k”命令,可以看到ansible控制主机时,使用的用户身份是什么 ,登陆被控主机时,默认使用的身份就是什么:
在这里插入图片描述
输入“ansible westos -m shell -a “whoami” -k -u root”命令,表示指定登陆的用户为root:
在这里插入图片描述

11)切换回root用户,编辑/etc/ansible/ansible.cfg 主配置文件,写入内容为remote_user =qjw,表示在受控主机上登陆的用户名称为指定使用当前用户:
在这里插入图片描述

输入“ansible westos -m shell -a ‘id’ -k”,表示指定登陆用户之后,查看id,发现当前asible主机是root用户,但是登陆被控主机时,使用的是qjw用户:
在这里插入图片描述

输入“ansible westos -m shell -a ‘useradd test’ -k”命令,表示此时已经设定了登陆用户为qjw,使用该普通用户身份去建立用户,权限被限制:
在这里插入图片描述

12)编辑/etc/ansible/ansible.cfg 主配置文件,写入内容如下,
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=Ture
表示,虽然登陆的是westos身份,但是可以执行sudo命令,也就是主控机登陆被控机使用的是被控机的普通用户,这样对被控机来说,安全性较高。但是主控机登陆后,想使用超级用户权限,就需要做上面所示改变,使得主控机有超级用户的所有权力:
在这里插入图片描述

此时输入“ansible westos -m shell -a ‘useradd test1’ -k”命令,依旧无法建立用户,因为没有在受控主机上做用户权力下放,输入visudo命令,在100行处输入以下内容:
在这里插入图片描述

在这里插入图片描述

输入“ansible westos -m shell -a ‘useradd test1’ -k”命令,此时虽然是普通用户登陆,但经过设定后,仍然可以建立用户:
在这里插入图片描述
在受控主机查看:
在这里插入图片描述

8 免密登陆以及构建用户级Ansible操作环境

8.1 免密登陆

1)输入“ssh-keygen”命令,在主控机里面获得密钥:
在这里插入图片描述

2)进入“.ssh/”目录,查看有公钥和私钥:
在这里插入图片描述

3)输入“ssh-copy-id -i id_rsa.pub qjw@172.25.254.136/236”命令,分别将密钥给两台受控主机的qjw用户:
在这里插入图片描述

4)在被控主机中做权力下放的免密登陆,直接输入visudo命令,然后在100行写入如下内容,将下面的“%wheel ALL=(ALL) ALL”行注释掉,因为qjw用户属于默认是属于wheel组的:
在这里插入图片描述

5)编辑主配置文件,将become_ask_pass=False改为False,表示不要需要输入权力转换时的密码;默认登陆用户仍然为qjw,不做更改:
在这里插入图片描述

6)测试,输入“ansible westos -m shell -a ‘id’ ”命令,直接免密,不需要任何密码:
在这里插入图片描述

8.2 用户级ansible环境设置

1)首先将配置文件恢复成之前的样子,做过的设定都注释掉。
2)进入家目录,建立一个.ansible目录,若目录存在则不用建立:
在这里插入图片描述
3)进入该目录,将配置文件复制到该目录下;再将主机清单复制到该目录下建立的inventory文件中:
在这里插入图片描述

4)编辑该目录下的配置文件内容如下,注意不要将参数写在[defaults]上面,否则无法识别会报错:
在这里插入图片描述

5)将该目录下的配置文件的module_name参数设定为shell,表示模块默认设定成shell,此时就不用再输入-m shell 了,因为默认就是shell模块;原始默认模块是command:
在这里插入图片描述

此时输入“ansible westos -a ‘hostname’”命令,免密且不需要写-m参数,因为默认是shell:
在这里插入图片描述

看完实验效果后,将该目录下的配置文件的module_name参数改回command模块。
注意:做完前面四个步骤后,用户级ansible环境设定就完成了。原来是root或westos用户或其他用户登陆都可以执行ansible命令,但可行使的权力不同。此时root做了该设定后,表示root用户可以使自己的ansible设定独立起来;同样的westos用户也可以做一些ansible设定使自己的ansible独立起来。总的来说用户级ansible环境设定主要是为了使ansible主机上的不同用户独立,实现不同的操作

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值