Ansible的安装及部署

  • 实验环境
  • 一、Ansible对于企业运维的重大意义
  • 二、Ansible的安装
  • 配置本地仓库
  • 三、构建Anisble清单
  • 1.直接书写受管主机名或ip,每行一个
  • 2.设定受管主机的组[组名称]
  • 清单查看:
  • 单层清单
  • 嵌套清单
  • 3.测试:
  • 三、主机规格的范围化操作#
  • 四、指定其他清单文件
  • 测试
  • 五、ansible命令指定清单的正则表达式
  • 测试
  • 六、Ansible配置文件参数详解
  • 1.配置文件的分类与优先级
  • 2.常用配置参数
  • 七、构建用户级Ansible操作环境


实验环境

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 部署cobbler ansible安装部署_vim

安装Ansible

ansible 部署cobbler ansible安装部署_配置文件_02

ansible 部署cobbler ansible安装部署_ansible 部署cobbler_03

ansible 部署cobbler ansible安装部署_Ansible_04

三、构建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

ansible 部署cobbler ansible安装部署_vim_05

ansible 部署cobbler ansible安装部署_linux_06

ansible 部署cobbler ansible安装部署_ansible 部署cobbler_07

[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

ansible 部署cobbler ansible安装部署_配置文件_08

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

#通过指定主机名称或IP的范围可以简化Ansible主机清单
#语法:
#[start:end]

[westos]
172.25.254.[10:18]

#测试:

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

ansible 部署cobbler ansible安装部署_vim_09

四、指定其他清单文件

vim inventory
[test]
172.25.19.1
172.25.19.10

ansible 部署cobbler ansible安装部署_配置文件_10

ansible 部署cobbler ansible安装部署_配置文件_11

测试

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

ansible 部署cobbler ansible安装部署_Ansible_12

五、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 部署cobbler ansible安装部署_vim_13

ansible 部署cobbler ansible安装部署_linux_14

六、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生成密匙,添加免密

ansible 部署cobbler ansible安装部署_Ansible_15

ansible 部署cobbler ansible安装部署_ansible 部署cobbler_16

ansible 部署cobbler ansible安装部署_linux_17

ansible 部署cobbler ansible安装部署_Ansible_18

ansible 部署cobbler ansible安装部署_Ansible_19

ansible 部署cobbler ansible安装部署_vim_20

ansible 部署cobbler ansible安装部署_配置文件_21


ansible 部署cobbler ansible安装部署_Ansible_22

ansible 部署cobbler ansible安装部署_linux_23

ansible 部署cobbler ansible安装部署_配置文件_24

ansible 部署cobbler ansible安装部署_linux_25

ansible 部署cobbler ansible安装部署_Ansible_26

ansible 部署cobbler ansible安装部署_配置文件_27

ansible 部署cobbler ansible安装部署_Ansible_28

ansible 部署cobbler ansible安装部署_Ansible_29

ansible 部署cobbler ansible安装部署_linux_30