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