1.高效运维之Ansible的安装及部署

  • Post author:
  • Post category:其他




实验环境

3台虚拟机Ansible、node1、node2(可以相互连接)

真机 172.25.19.254

node1 172.25.19.119

node2 172.25.19.219

Ansible 172.25.19.19



一、Ansible对于企业运维的重大意义

Ansible一款开源运维自动化工具,通过它可以实现运维自动化,提高运维工程师的工作效率,减少人为失误。

Ansible 通过本身集成的非常丰富的模块可以实现各种管理任务,其自带模块超过上千个。

简单概括:

操作非常简单,轻松上手,功能丰富,在运维领域,无所不能。



二、Ansible的安装

epel源

dnf install ansible -y

ansible –viersion

ansible的基本信息:

/etc/ansible/ansible.conf ##全局配置文件,默认很少修改

/etc/ansible/hosts ##全局主机清单清单文件



配置本地仓库

vim /etc/yum.repo.d/westos.repo

在这里插入图片描述
安装Ansible

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



三、构建Anisble清单

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

/etc/ansible/hosts ##全局清单文件



1.直接书写受管主机名或ip,每行一个

node1.westos.org

node2.westos.org

172.25.19.119



2.设定受管主机的组[组名称]



清单查看:

ansible 清单中组名称 [-i 清单文件] –list-hosts

ansible ungrouped –list-hosts

ansible all –list-hosts



单层清单

[list1]

node1.westos.org

node2.westos.org

[list2]

node2.westos.org

[list3]

172.25.254.240



嵌套清单

[westos:children]

list1

list3



3.测试:

vim /ansible.cfg
开启路径
vim /etc/ansible/hosts #结尾书写清单
[westos1]
172.25.19.119
[westos2]
172.25.19.219
[westos:children]
westos1
westos2

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

[root@ansible ansible]# ansible all --list-hosts
[root@ansible ansible]# ansible westos2 --list-hosts
[root@ansible ansible]# ansible westos2 --list
[root@ansible ansible]# ansible '~westos' --list

在这里插入图片描述



三、主机规格的范围化操作#

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

#语法:

#[start:end]

[westos]
172.25.254.[10:18]

#测试:

[root@ansible ansible]# ansible westos --list-hosts

在这里插入图片描述



四、指定其他清单文件

vim inventory
[test]
172.25.19.1
172.25.19.10

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



测试

ansible all -i inventory  --list-hosts
ansible westos -i inventory  --list-hosts

在这里插入图片描述



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

*		##所有
		##172.25.254.*
		##westos*

:		##逻辑或
		##westos1:linux
		##172.25.254.100:172.25.254.200

:&		##逻辑与
		##westos1:&linux
		##主机即在westos1清单也在linux清单中

:!		##逻辑非
		##westos1:!linux
		##在westos1中不在linux中

~		##以关键字开头

~(str1|str2)	##以条件1或者条件2开头		



测试

vim inventory
[westos1]
node1.westos.org
[westos2]
172.25.19.119
192.25.19.219
[westos:children]
westos1
westos1
[*]:
ansible 'westos*' -i inventory --list
ansible '172.*'   -i inventory --list
[:]:
ansible 'westos1:westos2' -i inventory --list
[:&]
ansible 'westos1:&westos2' -i inventory --list
[:!]
ansible 'westos1:!westos2' -i inventory --list
[~]
ansible '~westos' -i inventory --list

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



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

[privilege_escalation]			##身份信息设定
become=					##连接后是否自动切换用户
become_method=				##设定切换用户的方式,通常用sudo
become_user=				##在受管主机中切换到的用户,通常为root
become_ask_pass				##是否需要为become_method提示输入密码,默认为false



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

在ansible虚拟机上

useradd devops	#创建用户devops
su - devops	#切换用户为devops
mkdir .ansible	#创建文件夹.ansible
cd .ansible	#进入目录
cp /etc/ansible/ansible.cfg . 	#复制/etc/ansible/ansible.cfg 文件到当前目录(.代表当前)
ls	#查看文件,复制一份进行修改,构建自己的ansible操作环境
vim ansible.cfg	#编辑文件ansible.cfg
 10 [defaults]
 11 
 12 # some basic default values...
 13 inventory      =~/.ansible/inventory 	#开启
 14 #library        = /usr/share/my_modules/
 15 #module_utils   = /usr/share/my_module_utils/
 16 #remote_tmp     = ~/.ansible/tmp
 17 #local_tmp      = ~/.ansible/tmp
 18 #plugin_filters_cfg = /etc/ansible/plugin_filters.yml
 19 #forks          = 5
 20 #poll_interval  = 15
 21 #sudo_user      = root
 22 #ask_sudo_pass = True
 23 #ask_pass      = True
 24 #transport      = smart
 25 #remote_port    = 22
 26 #module_lang    = C
 27 #module_set_locale = False
 28 host_key_checking = False	#打开
 29 remote_user = westos	#打开
 30 # plays will gather facts by default, which contain information about
# default module name for /usr/bin/ansible
114 module_name = shell		#打开
115 
116 # use this shell for commands executed under sudo

338 #unparsed_is_failed=False
339 
340 [privilege_escalation]	#打开
341 become=True
342 become_method=sudo
343 become_user=root
344 become_ask_pass=False
345 
346 [paramiko_connection]
保存退出
vim inventory	#添加ip
[westos1]
172.25.19.119
[westos2]
172.25.19.219
[westos:children]
westos1
westos2
保存退出
ansible westos -m shell -a "whoami" -k 	#查看连接用户,指定输入密码
ssh -keygen	#生成密匙
ssh-copy-id -i ~/.ssh/id_rsa.pub westos@172.25.19.119	#加密
ssh-copy-id -i ~/.ssh/id_rsa.pub westos@172.25.19.219	#加密

在node1和node2上分别
 visudo	#添加免密
 100 root    ALL=(ALL)       ALL
 101 westos  ALL=(ALL)       NOPASSWD: ALL

ansible westos -m shell -a "whoami"	#未指定密码
ansible westos -m shell -a "touch /mnt/file{1..10}"	#给连接的机器同步创建文件
在node2 中
ls /mnt	#查看创建的文件
在node1中
ls /mnt	#查看创建的文件
ansible westos -m shell -a "rm -rf  /mnt/*"
在node2 中
ls /mnt	#查看是否删除文件
在node1中
ls /mnt	#查看是否删除文件

用户级操作环境部署完成

总结:1复制原始配置文件

2自己配置编写连接ip

3生成密匙,添加免密

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

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



版权声明:本文为qq_44060147原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。